On 07/30/2012 03:18 PM, Julian Brown wrote:
> There are two issues in play here:
> 
> 1. Exception-handling is handled in a target-specific way for ARM,
> defined in the EHABI document ("Exception handling ABI for the ARM
> architecture", IHI 0038A). However, no mention of "forced unwinding" is
> made in this document.
> 
> 2. Backtracing in particular isn't even the "normal" use case for
> forced unwinding: e.g.,
>
> http://www.ucw.cz/~hubicka/papers/abi/node25.html#SECTION00923200000000000000
> 
> suggests that forced unwinding is "a single-phase process (phase 2 of
> the normal exception-handling process)", whereas for producing a
> backtrace, something more like a phase 1 lookup is done (no cleanup
> handlers are called -- we're merely observing the state of the stack).

That's right.  I wrote that code.  I think I didn't realize that
forced unwinding was a single-phase process.

It looks to me like checking for _US_VIRTUAL_UNWIND_FRAME and
_US_FORCE_UNWIND, as you have done, is right.

Andrew.


P.S.  The ARM unwinder data was never intended for all the things we
do with it, and it's pretty much a matter of luck that it works.  I
don't really know why we didn't adopt DWARF unwinder data for ARM,
given that the ARM unwinder data is really only intended for
exceptions, and we need a lot more.

Reply via email to