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-