[Patch RFC] N2179: Exception Propagation

Sebastian Redl sebastian.redl@getdesigned.at
Mon Jul 7 22:21:00 GMT 2008


Sebastian Redl wrote:
> 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

I mailed my copyright assignment to the FSF today (will take a few days 
to travel over the pond), so I decided to celebrate this by updating the 
patch to the current trunk and sending it again.

Sebastian

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


More information about the Libstdc++ mailing list