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