This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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: [patch] [java] bump libgcj soname


On 21.04.2015 16:37, Jakub Jelinek wrote:
On Tue, Apr 21, 2015 at 04:29:52PM +0200, Matthias Klose wrote:
On 04/21/2015 04:19 PM, Jakub Jelinek wrote:
On Tue, Apr 21, 2015 at 04:16:18PM +0200, Matthias Klose wrote:
On 04/21/2015 04:11 PM, Jakub Jelinek wrote:
On Tue, Apr 21, 2015 at 04:07:13PM +0200, Matthias Klose wrote:
bump the libgcj soname on the trunk, as done for every release cycle,

Is that really needed though these days?
Weren't there basically zero changes to libjava (both libjava and
libjava/classpath) in the last 2 or more years?
The few ones were mostly updating Copyright notices, minor configure
changes, but I really haven't seen anything ABI changing for quite a while.

yes, the GCC version is embedded in the GCJ_VERSIONED_LIBDIR

which is defined as

gcjsubdir=gcj-$gcjversion-$libgcj_soversion
dbexecdir='$(toolexeclibdir)/'$gcjsubdir

But why is that an argument for bumping it?  If both GCC 5 and GCC 6 will
(likely) provide the same ABI in the library, there is no reason not to use
the same directory for those.

but currently there are different directories used (gcjversion already changed
on the trunk) and compiled into the library.  Do you mean that gcjsubdir should
be just defined as gcj?

What depends on BASE-VER sure, that is bumped automatically and should track
the gcc version.  But the soname, which is an unrelated number, there is no
point to bump it.  If you have a packaging issue, just solve it on the
packaging side, but really there is no point to yearly bump a soname of
something that doesn't change at all (and is really dead project for many
years).

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?

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?

Matthias


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