Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 Jan 2013 12:54:03 +0000
From:      David Chisnall <theraven@freebsd.org>
To:        Stefan Farfeleder <stefanf@freebsd.org>
Cc:        freebsd-current@freebsd.org
Subject:   Re: Unbreaking gdb's catch throw
Message-ID:  <8FA4D44F-0D32-4374-810F-5630E995F61F@freebsd.org>
In-Reply-To: <20130104124927.GB1430@mole.fafoe.narf.at>
References:  <20130104123424.GA1430@mole.fafoe.narf.at> <FC255095-1EFB-4713-887E-E79C53C9F193@FreeBSD.org> <20130104124927.GB1430@mole.fafoe.narf.at>

next in thread | previous in thread | raw e-mail | index | archive | help


On 4 Jan 2013, at 12:49, Stefan Farfeleder wrote:

> On Fri, Jan 04, 2013 at 12:38:44PM +0000, David Chisnall wrote:
>> Is this on 9.1?  In -CURRENT and 9.1, libstdc++ is a filter library, and libsupc++ or or libcxxrt are the filtee.  This means that the __cxa_throw symbol appears to be in libstdc++ (for symbol versioning purposes), but is actually in the ABI library.  If you tell gdb to put the breakpoint on __cxa_throw itself, then it should tell you that there are multiple definitions and ask which one you want (if it doesn't, it's a gdb bug).  
>> 
> 
> This is on 10.0-CURRENT r244738 amd64. The commands 'b __cxa_throw' and
> 'catch throw' seemd to be identical, and gdb does not ask about multiple
> versions of __cxa_throw.
> 
> To be honest, I don't care exactly whose bug it is, I want it to work again :D

As a work-around, you can put the breakpoint on _Unwind_RaiseException instead.  This will work for any language, not just C++ (e.g. it will notice Objective-C or gcj-compiled Java exceptions).

David


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8FA4D44F-0D32-4374-810F-5630E995F61F>