[patch] Don't encode the minor version in the gcj abi version

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[patch] Don't encode the minor version in the gcj abi version

Matthias Klose-6
Bumping the version from from 6.0.0 to 6.1.0 broke gcj, because the minor
version is still encoded in the gcj abi, not seen during development of the 6
series until it was bumped for the final release.

The gcc-5-branch needs a slightly different approach, because we froze the abi
version only with the 5.3.0 release.

--- gcc/java/decl.c (Revision 235458)
+++ gcc/java/decl.c (Arbeitskopie)
@@ -561,9 +561,10 @@
    else /* C++ ABI */
      {
        /* Implicit in this computation is the idea that we won't break the
- old-style binary ABI in a sub-minor release (e.g., from 4.0.0 to
- 4.0.1).  */
-      abi_version = 100000 * major + 1000 * minor;
+ old-style binary ABI in a sub-minor release (e.g., from 5.0 to
+ 5.1).  Freeze the ABI on the gcc-5-branch with the value of the
+ GCC 5.3 release.*/
+      abi_version = 100000 * major + 1000 * 3;
      }
    if (flag_bootstrap_classes)
      abi_version |= FLAG_BOOTSTRAP_LOADER;

Ok for the 6 branch and the trunk?

Matthias

gcj-abi-version.diff (646 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [patch] Don't encode the minor version in the gcj abi version

Andrew Haley
On 28/04/16 08:55, Matthias Klose wrote:
> Ok for the 6 branch and the trunk?

OK,

Andrew.

Reply | Threaded
Open this post in threaded view
|

Re: [patch] Don't encode the minor version in the gcj abi version

Rainer Orth-2
In reply to this post by Matthias Klose-6
Matthias Klose <[hidden email]> writes:

> Bumping the version from from 6.0.0 to 6.1.0 broke gcj, because the minor
> version is still encoded in the gcj abi, not seen during development of the
> 6 series until it was bumped for the final release.

This is PR java/70839.

        Rainer

--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
Reply | Threaded
Open this post in threaded view
|

Re: [patch] Don't encode the minor version in the gcj abi version

Rainer Orth-2
Rainer Orth <[hidden email]> writes:

> Matthias Klose <[hidden email]> writes:
>
>> Bumping the version from from 6.0.0 to 6.1.0 broke gcj, because the minor
>> version is still encoded in the gcj abi, not seen during development of the
>> 6 series until it was bumped for the final release.
>
> This is PR java/70839.

I just noticed that your patch is incomplete: it leaves the now unused
minor around and incorrectly talks about sub-minor versions...

Here's what I had in the PR instead:

2016-04-28  Rainer Orth  <[hidden email]>

        PR java/70839
        * decl.c (parse_version): Remove minor handling.


# HG changeset patch
# Parent  acf979f160547bd8b9b207525f97c29f6c9a9a6e
Don't include minor version in GCJ ABI version

diff --git a/gcc/java/decl.c b/gcc/java/decl.c
--- a/gcc/java/decl.c
+++ b/gcc/java/decl.c
@@ -507,7 +507,7 @@ static void
 parse_version (void)
 {
   const char *p = version_string;
-  unsigned int major = 0, minor = 0;
+  unsigned int major = 0;
   unsigned int abi_version;
 
   /* Skip leading junk.  */
@@ -525,13 +525,6 @@ parse_version (void)
   gcc_assert (*p == '.' && ISDIGIT (p[1]));
   ++p;
 
-  /* Extract minor version.  */
-  while (ISDIGIT (*p))
-    {
-      minor = minor * 10 + *p - '0';
-      ++p;
-    }
-
   if (flag_indirect_dispatch)
     {
       abi_version = GCJ_CURRENT_BC_ABI_VERSION;
@@ -540,9 +533,9 @@ parse_version (void)
   else /* C++ ABI */
     {
       /* Implicit in this computation is the idea that we won't break the
- old-style binary ABI in a sub-minor release (e.g., from 4.0.0 to
- 4.0.1).  */
-      abi_version = 100000 * major + 1000 * minor;
+ old-style binary ABI in a minor release (e.g., from 6.1.0 to
+ 6.2.0).  */
+      abi_version = 100000 * major;
     }
   if (flag_bootstrap_classes)
     abi_version |= FLAG_BOOTSTRAP_LOADER;


        Rainer

--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
Reply | Threaded
Open this post in threaded view
|

Re: [patch] Don't encode the minor version in the gcj abi version

Matthias Klose-6
On 28.04.2016 12:52, Rainer Orth wrote:

> Rainer Orth <[hidden email]> writes:
>
>> Matthias Klose <[hidden email]> writes:
>>
>>> Bumping the version from from 6.0.0 to 6.1.0 broke gcj, because the minor
>>> version is still encoded in the gcj abi, not seen during development of the
>>> 6 series until it was bumped for the final release.
>>
>> This is PR java/70839.
>
> I just noticed that your patch is incomplete: it leaves the now unused
> minor around and incorrectly talks about sub-minor versions...
>
> Here's what I had in the PR instead:
>
> 2016-04-28  Rainer Orth  <[hidden email]>
>
> PR java/70839
> * decl.c (parse_version): Remove minor handling.

yes, that looks good. Can't approve it myself.

Reply | Threaded
Open this post in threaded view
|

Re: [patch] Don't encode the minor version in the gcj abi version

Andrew Haley
On 04/28/2016 12:45 PM, Matthias Klose wrote:
> yes, that looks good. Can't approve it myself.

OK.

Andrew.