http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46914
Paolo Carlini <paolo.carlini at oracle dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bkoz at redhat dot com --- Comment #12 from Paolo Carlini <paolo.carlini at oracle dot com> 2011-01-28 10:22:27 UTC --- I'm making some progress: using --with-arch-32=i586 is fine, and the reason is, in that case the _GLIBCXX_ATOMIC_BUILTINS_* are *all* true (in the i486 case, _GLIBCXX_ATOMIC_BUILTINS_8 is false). Now, the testcase only uses ints, but in atomic_base.h we require either all true, or the special case of at least _GLIBCXX_ATOMIC_BUILTINS_1 true, that is _GLIBCXX_ATOMIC_PROPERTY == 1, or none true, that is _GLIBCXX_ATOMIC_PROPERTY == 0. Given that, I suppose, Ubuntu and Debian have been using -i486 only because of the crazyness old GCCs defaulting to i386 and now everything is different finally (essentially the current default is a bit more than pentium4), I don't consider this issue particularly serious. Still, it would be nice to understand why both _GLIBCXX_ATOMIC_PROPERTY == 1 (as this PR shows) and _GLIBCXX_ATOMIC_PROPERTY == 0 (as trying --with-arch-32=i386 shows), both don't work. Maybe Benjamin has ideas... Note: the command line per se doesn't seem to matter, is the way the *.so is built that matters.