Re: GC symbols no longer exported (on Debian) from libgcj 8 and up

Andrew Haley <[email protected]>
Newsgroups gmane.comp.gcc.java.devel
Message-ID <[email protected]>
Erik Groeneveld wrote:

> I have an application that uses libgcj (on Debian) and which needs to
> have access to the garbage collector to fine tune things.  Up to
> libgcj 7, it was possible to create a extern/forward declaration for
> e.g. GC_free, and when the application is linked, the symbol would be
> resolved correctly.
> 
> Starting with libgcj 8 and up, the symbols of libgcj are no longer
> exported it seems. On Linux, 'nm' reports that the symbols are of type
> 't', which means local, while up to libgcj 7, it reported them as 'T',
> which means global.  Symbols of type 't' are not used for resolving
> external symbols, and hence my program does not link anymore.
> 
> I dived into the package build for Debian (by Mattias Klose) and found
> that lot of things could have caused this behavior.  However, what I
> can not find out is if this change was intentional or that is is
> caused by newer versions of the build tools.
> 
> If it was intentional, my question is how I can get access to the GC?

The symbols exported are controlled by:

if ANONVERSCRIPT
extra_ldflags_libjava += -Wl,--version-script=$(srcdir)/libgcj.ver
endif

Which is:

# Anonymous GNU ld version script to hide boehm-gc, libffi and fdlibm
# symbols in libgcj.so.

{
  global: Jv*; _Jv_*; __gcj_personality_v0; __gcj_personality_sj0; _Z*;
  local: *;
};

Andrew.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.