[PATCH] D32450: [libunwind] Add 64-bit SPARC support
Mark Kettenis via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 24 12:42:35 PDT 2017
kettenis created this revision.
Herald added a subscriber: jyknight.
This adds unwinder support for 64-bit SPARC (aka SPARCv9). The implementation was done on OpenBSD/sparc64, so it takes StackGhost into account:
https://www.usenix.org/legacy/publications/library/proceedings/sec01/full_papers/frantzen/frantzen_html/index.html
Since StackGhost xor's return addresses with a random cookie before storing them on the stack, the unwinder has to do some extra work to recover those. This is done by introducing a new kRegisterInCFADecrypt "location" type that is used
to implement the DW_CFA_GNU_window_save opcode. That implementation is SPARC-specific, but should work for 32-bit SPARC as well. DW_CFA_GNU_window_save is only ever generated on SPARC as far as I know.
https://reviews.llvm.org/D32450
Files:
libunwind/include/__libunwind_config.h
libunwind/include/libunwind.h
libunwind/src/DwarfInstructions.hpp
libunwind/src/DwarfParser.hpp
libunwind/src/Registers.hpp
libunwind/src/UnwindCursor.hpp
libunwind/src/UnwindRegistersRestore.S
libunwind/src/UnwindRegistersSave.S
libunwind/src/libunwind.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D32450.96444.patch
Type: text/x-patch
Size: 15218 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170424/4bf35f58/attachment.bin>
More information about the llvm-commits
mailing list