[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