[Patch RFC] N2179: Exception Propagation

Sebastian Redl sebastian.redl@getdesigned.at
Sun Jun 1 12:20:00 GMT 2008


The attached patch modifies libsupc++ to implement std::exception_ptr. 
It should apply cleanly to the trunk as of two days ago. No regressions 
on x86-64 and i686 targets. A small number of test cases for 
exception_ptr is included.

A write-up of what I changed is here:
This is also the formal description of the necessary extension of the 
C++ ABI.

The following backward compatibility statements apply:

1) Code that links dynamically against libsupc++ should continue to work 
without changes.

2) Object files generated by different compiler versions can be linked 
together freely. (Barring restrictions from other places.)

3) Code that links statically against libsupc++ need only be relinked to 
use the new library.

4) Code consisting of multiple dynamic modules, some of which are 
statically linked against libsupc++, needs to be consistent in the 
version it links to. Having both an old and a new version of libsupc++ 
in a single loaded process is not supported; throwing exceptions between 
modules will lead to crashes and even silent misbehavior.

It is my understanding that throwing exceptions between modules that 
statically link against libsupc++ was never actually supported in the 
first place, even if they were all the same version, so #4 should not be 
a concern.

The adds a source file to libsupc++, so you'll have to run automake in 
the libstdc++-v3 directory. The Makefile.in diffs are not included in 
the patch, because my automake 2.62 modified a lot of them.

Comments are welcome.

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: n2179.patch
URL: <http://gcc.gnu.org/pipermail/libstdc++/attachments/20080601/c9570740/attachment.ksh>

More information about the Libstdc++ mailing list