[PATCH] D32450: [libunwind] Add 64-bit SPARC support

Mark Kettenis via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 25 00:04:41 PDT 2017


kettenis added a comment.

In https://reviews.llvm.org/D32450#736079, @joerg wrote:

> You are missing the first loop in https://nxr.netbsd.org/xref/src/sys/lib/libunwind/DwarfParser.hpp#489


While that loop indeed describes part of the effect of a SAVE instruction, this is potentially dangerous as it may cause the unwinder to believe that a certain register is still "live" when in reality it has been clobbered already. This is because the unwinder doesn't recursively apply its location logic, but instead returns the raw register contents for a kRegisterInRegister location.   The GCC unwinder doesn't have this loop. What happens instead is that it explicitly issues DWARF instructions that say that the return address now lives in i7 instead of o7. Other compilers, including clang, do this too.


https://reviews.llvm.org/D32450





More information about the llvm-commits mailing list