This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
__ffssi2 not exported in libgcc_s.so
- From: Andreas Krebbel <Andreas dot Krebbel at de dot ibm dot com>
- To: gcc at gcc dot gnu dot org
- Date: Wed, 2 May 2007 16:52:52 +0200
- Subject: __ffssi2 not exported in libgcc_s.so
Hi,
java is currently not bootstrapping on s390. The problem appears
to be that the __ffssi libgcc function is not exported since it is
not listed in libgcc-std.ver.
Here are the details:
Building the gcj-dbtool linking against libgcj.so the following error
is reported:
/build2/gcc-4.3-build/gcc/gcj -B/build2/gcc-4.3-build/s390-ibm-linux-gnu/libjava/ -B/build2/gcc-4.3-build/gcc/ -g -O2 -o .libs/gcj-dbtool --main=gnu.gcj.tools.gcj_dbtool.Main -shared-libgcc gnu/gcj/tools/gcj_dbtool/natMain.o gnu/gcj/tools/.libs/gcj_dbtool.o -L/build2/gcc-4.3-build/s390-ibm-linux-gnu/libjava -L/build2/gcc-4.3-build/s390-ibm-linux-gnu/libjava/.libs ./.libs/libgcj.so -L/build2/gcc-4.3-build/s390-ibm-linux-gnu/libstdc++-v3/src -L/build2/gcc-4.3-build/s390-ibm-linux-gnu/libstdc++-v3/src/.libs -lpthread -lrt -ldl -lz -L/build2/gcc-4.3-build/./gcc -lgcc_s -lc -lgcc_s -Wl,--rpath -Wl,/build2/gcc-4.3-install/lib
/usr/bin/ld: .libs/gcj-dbtool: hidden symbol `__ffssi2' in /build2/gcc-4.3-build/./gcc/libgcc.a(_ffssi2.o) is referenced by DSO
/usr/bin/ld: final link failed: Nonrepresentable section on output
The symbol __ffssi2 is used by closure.o in libffi_convenience.a. Which is linked into
libgcj.so as well as the shared version of libgcc.
Compared to the __ffsdi2 variant __ffssi2 is not exported in libgcc_s.so:
14: 000023cc 176 FUNC GLOBAL DEFAULT 11 __ffsdi2@@GCC_3.0
200: 00002334 152 FUNC LOCAL DEFAULT 11 __ffssi2
212: 000023cc 176 FUNC GLOBAL DEFAULT 11 __ffsdi2
To solve this I would simply add that symbol to libgcc-std.ver to have it exported in libgcc_s.so.
What I'm curious about is why this didn't occur earlier?! The symbol is available since 2003 and
I can hardly imagine that no platform was ever in need of it till now.
If it is ok to simply add that symbol to libgcc-std.ver in which category it would belong?
I see "# libgcc1 integer symbols" in that file. Would that be appropriate?
Bye,
-Andreas-