[Patch RFC] N2179: Exception Propagation
Sebastian Redl
sebastian.redl@getdesigned.at
Sun Jun 1 12:20:00 GMT 2008
Hi,
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:
http://www.codesourcery.com/archives/cxx-abi-dev/msg01924.html
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.
Sebastian
-------------- 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