llvm-project/libunwind/src
John Baldwin 0594aee52f [libunwind][MIPS]: Add support for unwinding in N32 processes.
Summary:
N32 uses the same register context as N64.  However, N32 requires one
change to properly fetch addresses from registers stored in memory.
Since N32 is an ILP32 platform, getP() only fetches the first 32-bits
of a stored register.  For a big-endian platform this fetches the
upper 32-bits which will be zero.  To fix this, add a new
getRegister() method to AddressSpace which is responsible for
extracting the address stored in a register in memory.  This matches
getP() for all current ABIs except for N32 where it reads the 64-bit
register and returns the low 32-bits as an address.  The
DwarfInstructions::getSavedRegister() method uses
AddressSpace::getRegister() instead of AddressSpace::getP().

Reviewers: sdardis, compnerd

Reviewed By: sdardis

Differential Revision: https://reviews.llvm.org/D39074

llvm-svn: 326250
2018-02-27 21:24:02 +00:00
..
AddressSpace.hpp [libunwind][MIPS]: Add support for unwinding in N32 processes. 2018-02-27 21:24:02 +00:00
CMakeLists.txt [cmake] [libunwind] LLVM_FOUND isn't always set, so just test if 2018-01-27 19:31:44 +00:00
CompactUnwinder.hpp Fix up the places where AddressSpace.hpp is included. 2017-03-09 08:04:07 +00:00
DwarfInstructions.hpp [libunwind][MIPS]: Add support for unwinding in N32 processes. 2018-02-27 21:24:02 +00:00
DwarfParser.hpp [libunwind] Remove dubious template function. NFC. 2017-12-25 21:08:41 +00:00
EHHeaderParser.hpp GNU: do not read the FDE count if omitted 2017-10-20 18:47:35 +00:00
RWMutex.hpp Abstract rwlocks into a class, provide a SRW lock implementation for windows 2017-10-23 19:29:36 +00:00
Registers.hpp [PPC64] Added vector registers. 2018-01-16 20:54:10 +00:00
Unwind-EHABI.cpp Change unw_word_t to always have the same size as the pointer size 2017-10-30 19:06:34 +00:00
Unwind-EHABI.h [libunwind] Clean up macro usage. 2017-03-31 15:28:06 +00:00
Unwind-sjlj.c SjLj: Fix building after SVN r314632 2017-10-01 20:22:40 +00:00
UnwindCursor.hpp [libunwind][MIPS]: Rename Registers_mips_n64 to Registers_mips_newabi. 2018-01-09 17:07:18 +00:00
UnwindLevel1-gcc-ext.c Change unw_word_t to always have the same size as the pointer size 2017-10-30 19:06:34 +00:00
UnwindLevel1.c Change unw_word_t to always have the same size as the pointer size 2017-10-30 19:06:34 +00:00
UnwindRegistersRestore.S [libunwind][MIPS]: Add support for unwinding in N32 processes. 2018-02-27 21:24:02 +00:00
UnwindRegistersSave.S [libunwind][MIPS]: Add support for unwinding in N32 processes. 2018-02-27 21:24:02 +00:00
Unwind_AppleExtras.cpp SjLj: make the SjLj implementation more portable 2017-10-01 20:06:48 +00:00
assembly.h [PPC64] Added vector registers. 2018-01-16 20:54:10 +00:00
config.h Don't enable _LIBUNWIND_BUILD_ZERO_COST_APIS if building the SJLJ APIs 2018-01-26 06:50:07 +00:00
dwarf2.h
libunwind.cpp [libunwind][MIPS]: Add support for unwinding in N32 processes. 2018-02-27 21:24:02 +00:00
libunwind_ext.h [libunwind] Clean up macro usage. 2017-03-31 15:28:06 +00:00