Re: [cxx-abi-dev] ABI modification for exception propagation
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [cxx-abi-dev] ABI modification for exception propagation
- To: cxx-abi-dev@xxxxxxxxxxxxxxxx
- Subject: Re: [cxx-abi-dev] ABI modification for exception propagation
- From: David Vandevoorde <daveed@xxxxxxx>
- Date: Mon, 26 May 2008 22:15:01 -0400
On May 26, 2008, at 9:26 PM, Mark Mitchell wrote:
Sebastian Redl wrote:
Mark Mitchell wrote:
Ideally, it should be possible to freely mix old and new object
files in a single application. It should be possible to throw an
exception in an old file and catch it in a new one, and vice versa.
Hmm, I think that's not possible. Definitely not in the separation
model.
If true, that's very unfortunate. C++ has gotten a somewhat well-
deserved black eye by not maintaining binary compatibility over
time. If you've needed about long-term binary compatibility, C has
been a better choice for a long time. The C++ ABI was designed in
part to put an end to that problem. I would hope that we could
extend the ABI in a way that would permit old code to continue to
work, without
Is the issue that current_exception may need additional information
in order to locate the copy constructor for the thrown object. Is
that the issue?
Note that it doesn't have to copy the thrown object: It can
essentially return a smartptr<__cxa_exception> (which is what
std::exception_ptr would be) for the top exception. The constructor
for this smart pointer must behave a bit like __cxa_rethrow() in that
it must avoid having __cxa_end_catch destroy the exception. Instead,
that destruction must now be handled by the destructor of
smartptr<__cxa_exception> (when the reference count goes to zero).
Daveed