Re: [patch] [java] bump libgcj soname
Matthias Klose <[email protected]> Sat, 2 Jan 2016 15:40:24 +0100
| Newsgroups | gmane.comp.gcc.java.patches,gmane.comp.gcc.patches |
|---|---|
| Message-ID | <[email protected]> |
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