On 02.01.2016 16:39, Andrew Haley wrote:
On 02/01/16 14:40, Matthias Klose wrote:

preparing for a test rebuild of the archive, and trying to run gcj-dbtool (from
GCC 5) with libgcj16 (from GCC 6):

$ gcj-dbtool -n /tmp/foo.db
libgcj failure: gcj linkage error.
Incorrect library ABI version detected.  Aborting.

Aborted (core dumped)

natClassLoader.cc:_Jv_CheckABIVersion checks the ABI version, which is defined 
as

libjava/include/jvm.h:#define GCJ_CXX_ABI_VERSION (__GNUC__ * 100000 +
__GNUC_MINOR__ * 1000)

so this will be seen with everything directly linked to libgcj with a libgcj16
upgraded to GCC 6. So what to do? Bump the soname, or discard this check?

I'd bump the soname.

In any case, GCJ_CXX_ABI_VERSION should be changed to not include __GNUC_MINOR__
anymore.  Maybe for the gcc-5-branch, set it unconditionally to 3 so that it
won't change anymore with future releases from the gcc-5 branch?

That's safe only if Classpath and libgcj are not changed at all.

why?  __GNUC_SUBMINOR__ wasn't encoded either for releases up to 4.9.x.

Matthias

Reply via email to