This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libgcj/38804] libgcj multilib fails if not able to exec "non" native programs
- From: "rob1weld at aol dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 15 Jan 2009 22:03:55 -0000
- Subject: [Bug libgcj/38804] libgcj multilib fails if not able to exec "non" native programs
- References: <bug-38804-13830@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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