Catching C++ std::exception in D

deadalnix via Digitalmars-d digitalmars-d at puremagic.com
Thu Nov 12 02:17:28 PST 2015


On Thursday, 12 November 2015 at 10:09:10 UTC, Iain Buclaw wrote:
> On 12 November 2015 at 07:50, Walter Bright via Digitalmars-d < 
> digitalmars-d at puremagic.com> wrote:
>
>>
>> I really appreciate the offers, and here's what will really 
>> help:
>>
>> Writing the druntime end of things, which is really providing 
>> just two functions: d_throw (d_dwarf_throw to distinguish it) 
>> and the libunwind personality function: __dmd_personality_v0. 
>> The tricky part with the personality function will likely be 
>> recognizing std::exception* exceptions. I wonder if forwarding 
>> the call to __gxx_personality_v0 will work.
>>
>>
> I'll have to check, but I'm pretty certain that libunwind will 
> call the C++ personality for you if you return `nothing found` 
> from D personality function.

The personality function is in the landingpad metadata. Why would 
libunwind call the C++ one out of nowhere ?


More information about the Digitalmars-d mailing list