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-

Reply via email to