This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: libgcj missing symbol __data_start


Hard to say; I have no idea why s/390 should be any different from any
of the other systems.  We have a s/390 here at Red Hat but it might be
easier if there's a way I could log onto your system and have a look.
No. It is unfortunately impossible to give you access to one of our systems for various reasons. But I tried to track it down:

On x86_64 the __data_start is declared weak:
[boehm-gc]$ readelf -s .libs/libgcjgc_convenience.a | grep __data_start
    80: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND __data_start

On s390x the symbol is declared global. The difference seem to come from
boehm-gc/include/private/gcconfig.h which uses pragma weak for x86 but not for S/390.


Since the symbol is weak on x86 the __data_start symbol missing in the main executable does not lead to an error.

The following patch fixes all the failures on s390x. But I'm not sure if that's the right thing to do:

Index: boehm-gc/include/private/gcconfig.h
===================================================================
*** boehm-gc/include/private/gcconfig.h.orig 2008-12-02 14:08:42.000000000 +0100
--- boehm-gc/include/private/gcconfig.h 2009-08-26 17:07:12.000000000 +0200
***************
*** 1826,1831 ****
--- 1826,1832 ----
# define OS_TYPE "LINUX"
# define LINUX_STACKBOTTOM
# define DYNAMIC_LOADING
+ # pragma weak __data_start
extern int __data_start[];
# define DATASTART ((ptr_t)(__data_start))
extern int _end[];



Bye,


-Andreas-


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]