This is the mail archive of the gcc@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: GCC 3.3, GCC 3.4




--On Thursday, January 30, 2003 04:52:41 PM -0800 Zack Weinberg <zack@codesourcery.com> wrote:

I'm relaying this to the LSB working group in charge of C++ and also
to the Debian gcc team -- Debian is presently in the process of
transitioning to the 3.2 ABI and I am pretty sure they also were
operating under the assumption that it would not change ever again.
I know that we will change the C++ ABI a little bit more.  Here are
the two areas that I know are buggy, and are buggy in ways that affect
correctness:

- Name mangling

 Due to not being able to know exactly what's a dependent name and
 what's not, there are some (obscure) cases involving templates where
 we cannot really produce the right name given what we have now.

 These cases are sufficiently odd that I'm not sure anyone will ever
 run into them in real code.  For example, I doubt they come up in
 V3.

- Object layout

 For the most part, these are bugs involving empty class conflicts.  As
 far as I know, we've fixed all of these -- I do not know of any more
 and I know we've looked pretty hard, in various ways.  There is also at
 least one bug involving virtual bases that might be somewhat more common.

I think the thing to do is wait until we are very confident that we've
finally nailed the name mangling issues and until the V3 people they've
nailed the runtime issues and then change the defaults.  I don't know
much about the runtime side, but on the compiler side, I expect that
few people will notice.

To some extent, I think there's a communication issue.  We (rightly) take
seriously *any* ABI change, but some are a lot more serious than others.
These are more like "If you have more than 32 parameters to a
function, and 14 of them are floats, and 18 are long doubles, and you
use varargs, then we quite match the spec" than "the size of int
will be now be 5" or "floating point values will now be passed on the
stack."

If we just said "this new version fixes a bug where two empty classes
of the same type can end up at the same address", people probably
wouldn't worry much -- but saying "we're breaking the C++ ABI" makes
them worry.  Both perspectives are correct: they should worry, but not
*too* much.

--
Mark Mitchell                mark@codesourcery.com
CodeSourcery, LLC            http://www.codesourcery.com


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