C++ standard library ABI
Christophe de Dinechin
ddd at cup.hp.com
Thu Jun 10 16:43:30 UTC 1999
My suggestion was actually to separate the 'ABI' from the 'API'.
That is: try to agree on the support library (all the functions
beginning with __, typically), but not necessarily on the standard
library, iostream, and so on. So you could reuse the support library,
but you would need, say, the "RogueWave" library if you want to run
code that included it, and the "Sun" library if you want to run code
that included it.
For various reasons, EH format needs not be identical between
compilers, but a few other things in EH processing need to if we want
to pass exceptions around. We can discuss that also.
Regards
Christophe.
> Christophe suggested that the way around the C++ standard library ABI
> problem is to move the C++ runtime support library (which includes the
> standard library, as well as compiled code support routines) along with
> the binaries for the application, when moving from one system to
another.
>
> This would mean that multiple C++ RTS libraries might be present on a
> system at once (I guess you could refer to them as one "native" and
> zero or more "foreign" libraries).
>
> I think that if we have the C++ RTS travel with the C++ generated
code,
> this might allow us to duck a lot of complicated areas - for
instance there's
> no need to specify in the ABI exactly what EH tables look like.
The same
> for some other things like array new/delete, ctor/dtor
registration, etc.
> Interfaces between compiled code and the RTS in general don't have
to be
> specified, but rather just compiled code -> compiled code interfaces
> (the basic object model stuff) and some RTS -> RTS interfaces
(e.g. memory
> management from multiple systems has to coexist together) and some
> RTS -> OS interfaces (e.g. iostreams has to work on top of libc, rather
> than depending on anything within it).
>
> I think you could see this as a quasi-OO setup: generated code
has "objects"
> which carry with them "methods" in the RTS. Some objects would be
fully
> specified in the ABI, while the rest can be overridden in any
particular
> implementation.
>
> Jonathan Schilling SCO, Inc. jls at sco.com
>
>
More information about the cxx-abi-dev
mailing list