This is the mail archive of the
archer@sourceware.org
mailing list for the Archer project.
Re: PR 2488 status and some unwinder questions
Daniel Jacobowitz wrote:
On Fri, Nov 21, 2008 at 11:39:31AM +0000, Phil Muldoon wrote:
FWIW, I would be a lot happier if you could do this using the
ABI-defined names. uw_install_context is an internal detail of the
GCC implementation. Other vendor compilers using the C++ ABI will
still have _Unwind_RaiseException, but will not have
uw_install_context.
Sorry for the delay in replying.
Yeah, I was looking at _Unwind_RaiseException. The last (non returning)
call there is to uw_install_context. The struct with the context change
is actually sourced within _Unwind_RaiseException but I'm not sure if it
was being frobbed in uw_install_context. I'll take a newer, more
detailed look. But you are totally right I should not wander into the
weeds and stick within the ABI-defined names
We ought to be able to step until the exit of _Unwind_RaiseException.
Well the last call in _Unwind_RaiseException, is into
uw_install_context which does not return. If you step until the exit of
uw_install_context, then after that you end up back in the inferior's
own code.
That's what we tried to do for longjmp but unfortunately we ran into
some problems keeping track of the frame once we start restoring.
Yes, this is horribly complex to keep track off.
Pedro might have more ideas... I was thinking we could detect some
"epilogue-like" sequences when stepping out of a function.
I flirted with this idea several times (normally in moments of utter
frustration at trying to do above ;). It is an intriguing idea. However
epilogue detection code seems fraught with difficulties with different
architectures and GCC optimization hurdles. But I've not really
explored it beyond this thought. Do you (or anyone else) have any
pointers or previous work to start from? I'm willing to spend the time
looking to see if this a good approach
Regards
Phil