C++ standard library ABI
Jonathan Schilling
jls at sco.com
Thu Jun 10 09:52:00 UTC 1999
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