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.