printing exceptions?
Bryce McKinlay
bryce@waitaki.otago.ac.nz
Tue Mar 5 19:50:00 GMT 2002
Alexandre Oliva wrote:
>What is the link command you get in
>each case (please add -Wl,-v to the gcj command lines and compare the
>printed link commands)
>
The actual "gcj" command run by libtool to generate gij in my build is:
/home/bryce/cvs/gcc/build/gcc/gcj
-B/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava/
-B/home/bryce/cvs/gcc/build/gcc/ -ffloat-store -g -O2 -o .libs/gij
-shared-libgcc gij.o
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libstdc++-v3/src
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libstdc++-v3/src/.libs
-ldl
/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/boehm-gc/.libs/libgcjgc.so
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava/../boehm-gc/.libs
/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/zlib/.libs/libzgcj.so
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava/../zlib/.libs
-L/home/bryce/cvs/gcc/build/gcc
-L/home/bryce/gcc31/lib/gcc-lib/i686-pc-linux-gnu/3.2
-L/home/bryce/gcc31/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../.. -lgcc_s
-lc -lgcc_s ./../boehm-gc/.libs/libgcjgc.so -lpthread
./../zlib/.libs/libzgcj.so
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava/.libs -Wl,--rpath
-Wl,/home/bryce/gcc31/lib
Note the "-lgcc_s -lc -lgcc_s" which is redundant, but like you say
shouldn't cause problems. This causes gcj to link using the following
command:
/usr/bin/ld -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o .libs/gij
/usr/lib/crt1.o /usr/lib/crti.o /home/bryce/cvs/gcc/build/gcc/crtbegin.o
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libstdc++-v3/src
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libstdc++-v3/src/.libs
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava/../boehm-gc/.libs
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava/../zlib/.libs
-L/home/bryce/cvs/gcc/build/gcc
-L/home/bryce/gcc31/lib/gcc-lib/i686-pc-linux-gnu/3.2
-L/home/bryce/gcc31/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../..
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava/.libs
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava
-L/home/bryce/cvs/gcc/build/gcc
-L/home/bryce/gcc31/lib/gcc-lib/i686-pc-linux-gnu/3.2
-L/home/bryce/gcc31/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../.. gij.o
-ldl
/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/boehm-gc/.libs/libgcjgc.so
/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/zlib/.libs/libzgcj.so
-lgcc_s -lc -lgcc_s ./../boehm-gc/.libs/libgcjgc.so -lpthread
./../zlib/.libs/libzgcj.so --rpath /home/bryce/gcc31/lib -v -lgcc_s
-lgcc -lgcj -lm -lgcjgc -lpthread -lzgcj -ldl -lgcc_s -lgcc -lc -lgcc_s
-lgcc /home/bryce/cvs/gcc/build/gcc/crtend.o /usr/lib/crtn.o
The resulting "gij" does not work.
When I edit libtools link command, removing the "-lgcc_s -lc -lgcc_s"
like so:
/home/bryce/cvs/gcc/build/gcc/gcj
-B/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava/
-B/home/bryce/cvs/gcc/build/gcc/ -ffloat-store -g -O2 -o .libs/gij
-shared-libgcc gij.o
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libstdc++-v3/src
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libstdc++-v3/src/.libs
-ldl
/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/boehm-gc/.libs/libgcjgc.so
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava/../boehm-gc/.libs
/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/zlib/.libs/libzgcj.so
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava/../zlib/.libs
-L/home/bryce/cvs/gcc/build/gcc
-L/home/bryce/gcc31/lib/gcc-lib/i686-pc-linux-gnu/3.2
-L/home/bryce/gcc31/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../..
./../boehm-gc/.libs/libgcjgc.so -lpthread ./../zlib/.libs/libzgcj.so
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava/.libs -Wl,--rpath
-Wl,/home/bryce/gcc31/lib
It results in the following link command:
/usr/bin/ld -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o .libs/gij
/usr/lib/crt1.o /usr/lib/crti.o /home/bryce/cvs/gcc/build/gcc/crtbegin.o
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libstdc++-v3/src
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libstdc++-v3/src/.libs
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava/../boehm-gc/.libs
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava/../zlib/.libs
-L/home/bryce/cvs/gcc/build/gcc
-L/home/bryce/gcc31/lib/gcc-lib/i686-pc-linux-gnu/3.2
-L/home/bryce/gcc31/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../..
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava/.libs
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava
-L/home/bryce/cvs/gcc/build/gcc
-L/home/bryce/gcc31/lib/gcc-lib/i686-pc-linux-gnu/3.2
-L/home/bryce/gcc31/lib/gcc-lib/i686-pc-linux-gnu/3.2/../../.. gij.o
-ldl
/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/boehm-gc/.libs/libgcjgc.so
/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/zlib/.libs/libzgcj.so
./../boehm-gc/.libs/libgcjgc.so -lpthread ./../zlib/.libs/libzgcj.so
--rpath /home/bryce/gcc31/lib -v -lgcc_s -lgcc -lgcj -lm -lgcjgc
-lpthread -lzgcj -ldl -lgcc_s -lgcc -lc -lgcc_s -lgcc
/home/bryce/cvs/gcc/build/gcc/crtend.o /usr/lib/crtn.o
And the "gij" produced by this command works perfectly. Maybe it has
something to do with -lpthread?
regards
Bryce.
More information about the Java
mailing list