[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