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