------- Comment #9 from rob1weld at aol dot com 2009-01-15 22:03 ------- (In reply to comment #4) > Hmm, automake should have done the correct thing ...
(In reply to comment #5) > # Even if the default multilib is not a cross compilation, > # it may be that some of the other multilibs are. > if test $cross_compiling = no && test $multilib = yes \ > && test "x${with_multisubdir}" != x ; then > cross_compiling=maybe > fi Along the same lineage of problems (do you want a new report) we have trouble checking for features in libgomp (and probably elsewhere). The logic is actually 'backward'; 64 bit is available and 32 bit is not available (on a 32 bit boot): OK : gcc_build/i386-pc-solaris2.11/amd64/libgomp/config.log : configure:18855: checking whether the target supports __sync_*_compare_and_swap configure:18877: /usr/share/src/gcc_build/./gcc/xgcc -B/usr/share/src/gcc_build/./gcc/ -B/usr/local/i386-pc-solaris2.11/bin/ -B/usr/local/i386-pc-solaris2.11/lib/ -isystem /usr/local/i386-pc-solaris2.11/include -isystem /usr/local/i386-pc-solaris2.11/sys-include -m64 -o conftest -g -O2 -pthread -pthread -Wall -Werror conftest.c >&5 configure:18883: $? = 0 configure:18887: test -z || test ! -s conftest.err configure:18890: $? = 0 configure:18893: test -s conftest configure:18896: $? = 0 configure:18908: result: yes Broken : gcc_build/i386-pc-solaris2.11/libgomp/config.log : configure:18855: checking whether the target supports __sync_*_compare_and_swap configure:18877: /usr/share/src/gcc_build/./gcc/xgcc -B/usr/share/src/gcc_build/./gcc/ -B/usr/local/i386-pc-solaris2.11/bin/ -B/usr/local/i386-pc-solaris2.11/lib/ -isystem /usr/local/i386-pc-solaris2.11/include -isystem /usr/local/i386-pc-solaris2.11/sys-include -o conftest -g -O2 -pthread -Wall -Werror conftest.c >&5 /var/tmp//cc80a43R.o: In function `main': /usr/share/src/gcc_build/i386-pc-solaris2.11/libgomp/conftest.c:43: undefined reference to `__sync_val_compare_and_swap_4' collect2: ld returned 1 exit status configure:18883: $? = 1 configure: failed program was: | /* confdefs.h. */ | | #define PACKAGE_NAME "GNU OpenMP Runtime Library" | #define PACKAGE_TARNAME "libgomp" | #define PACKAGE_VERSION "1.0" | #define PACKAGE_STRING "GNU OpenMP Runtime Library 1.0" ... | #define LIBGOMP_GNU_SYMBOL_VERSIONING 1 | /* end confdefs.h. */ | | int | main () | { | int foo, bar; bar = __sync_val_compare_and_swap(&foo, 0, 1); | ; | return 0; | } configure:18908: result: no So ./configure will set us to use compare_and_swap() in 64 bit mode (when I or someone else boot to that mode) but in 32 bit mode (which I am currently in) the compare_and_swap() is not available - hmmm ... I'll bet configure never _tested_ that the 64 bit code links. hehe Rob -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38804