[LLVMdev] GCC/LLVM frame pointer incompatibility on ARM

Renato Golin renato.golin at linaro.org
Fri Jul 18 14:11:42 PDT 2014


On 18 July 2014 17:49, Jim Grosbach <grosbach at apple.com> wrote:
> Having a different code path for prologue just for the sanitizers sounds pretty risky to me. That code is already strewn with conditional and modal stuff. Adding another variable to the permutations scares me.

Same here.


> Is there really no alternative? Conditional code in the sanitizers that figure things out? LLDB and GDB have a very similar sort of problem for backtraces, including when debug info isn’t available. How do they solve it?

The alternative is to use the unwind tables that both GCC and LLVM
generate even on C code, and that the ABI tells us to use, but their
argument is that's too slow. I don't know LLDB, but GDB uses tables,
but also the hidden logic (for faster unwinding), so I guess that with
code produced by LLVM, it just uses the tables.

GDB has a lot of hidden context with GCC that only works because their
development roadmaps are tied together and it's more scaring than
that, but I don't know how they chose to use magic or not.

cheers,
--renato




More information about the llvm-dev mailing list