[RFC] C++1x breaking the ABI in one more place :(

Jason Merrill jason@redhat.com
Wed May 19 18:27:00 GMT 2010


On 05/19/2010 02:18 PM, Paolo Carlini wrote:
> so I was finally getting around to adding the new C++1x member functions

It's still C++0x until we have a final number.

> to std::time_get (also needed in order to implement the std::get_time
> free function) when I noticed that we should also add a new *virtual*
> function, do_get, and that breaks of course the ABI because, eg, on
> x86_64, the size of the object itself grows from 80 to 88...
>
> Off the top of my head, I can't imagine any trick we can play to avoid
> breaking the ABI when adding an additional virtual, but I admit not
> being such an expert in this area, and I'm looking for advice...

It already has virtual functions, so it shouldn't affect the size of the 
object.  Adding an additional function to the end of the vtable should 
be backward binary compatible except for derived classes that add 
virtual functions (and therefore append them to the vtable, clashing 
with do_get).

I would bring this up with the library WG, though.

Jason



More information about the Libstdc++ mailing list