This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libgcj/38804] libgcj multilib fails if not able to exec "non" native programs



------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]