--On Thursday, January 30, 2003 04:52:41 PM -0800 Zack Weinberg <[EMAIL PROTECTED]> 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 [EMAIL PROTECTED] CodeSourcery, LLC http://www.codesourcery.com