This is the mail archive of the
mailing list for the GCC project.
Re: gcc 3.0.1 & C++ ABI issues
- To: Benjamin Kosnik <bkoz at redhat dot com>, "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>, "nathan at codesourcery dot com" <nathan at codesourcery dot com>, "jason at redhat dot com" <jason at redhat dot com>
- Subject: Re: gcc 3.0.1 & C++ ABI issues
- From: Mark Mitchell <mark at codesourcery dot com>
- Date: Mon, 06 Aug 2001 09:31:03 -0700
--On Monday, August 06, 2001 09:24:45 AM -0700 Benjamin Kosnik
>> I think we should fix this on the mainline, but not on the branch.
>> Our current working assumption is that the ABI for the library is
>> going to change wildly on the mainline, forcing recompilation for most
>> people in 3.1 anyhow, and so we can hide minor core ABI changes
>> beneath that cover. This case seems precisely analagous to the
>> overloaded operator delete stuff that I found.
> I'm planning on checking in a patch today that officialy breaks the
> library ABI, and bumps the version of the library to 3.1.0 on mainline.
> In all fairness, this should have been done a month ago. I'm using the
> following metric for changing the library ABI: The first change that
> either adds, deletes, or changes a mangled symbol get a minor version
> bump from the previous, stable version. I use this metric because I
> know of no other, and it seems sensible: please correct me if I'm wrong.
> Also, testing of this seems completely straightforward.
That seems reasonable to me, although there are of course other things
you could do that would change the ABI -- for example change the type
of a non-static data member, which would not change any mangled name,
but would change the size of some data structure. I think you should
make the version 3.1 on the mainline; let's keep them in sync with the
GCC release numbering scheme.
> I remain curious as to what the criteria for changing the compiler ABI
> will be: there seem to be lots of little things going in, and I'm not
> quite sure people are really testing for ABI breakage, or even really
> looking at this. Am I wrong? Can somebody please elaborate on what is
> going on? Is it just assumed that the mainline g++ ABI is 3.1.x?
Yes. There are, unfortunately, a few minor bugs in the 3.0 implementation
that will require incompatible changes in 3.1. So far, these have all
been corner cases which probably will not affect much real code, and
there have only been two of them; that's life. (There have been other
bugs, but ones which did not require ABI-incompatible changes; we
filled vtables somewhat incorrectly, but the layout of the vtables
was correct, for example.)
Mark Mitchell firstname.lastname@example.org
CodeSourcery, LLC http://www.codesourcery.com