llvm-project/libunwind
John Baldwin c3f240f7dc [libunwind][MIPS] Support MIPS floating-point registers for hard-float ABIs.
Summary:
For MIPS ABIs with 64-bit floating point registers including newabi
and O32 with 64-bit floating point registers, just save and restore the
32 floating-point registers as doubles.

For O32 MIPS with 32-bit floating-point registers, save and restore the
individual floating-point registers as "plain" registers.  These registers
are encoded as floats rather than doubles, but the DWARF unwinder
assumes that floating-point registers are stored as doubles when reading
them from memory (via AddressSpace::getDouble()).  Treating the
registers as "normal" registers instead causes the DWARF unwinder to
fetch them from memory as a 32-bit register.  This does mean that for
O32 with 32-bit floating-point registers unw_get_fpreg() and
unw_set_fpreg() do not work.  One would have to use unw_get_reg()
and unw_set_reg() instead.  However, DWARF unwinding works
correctly as the DWARF CFI emits records for individual 32-bit
floating-point registers even when they are treated as doubles stored
in paired registers.  If the lack of unw_get/set_fpreg() becomes a pressing
need in the future for O32 MIPS we could add in special handling to
make it work.

Reviewers: sdardis, compnerd

Reviewed By: sdardis

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

llvm-svn: 332414
2018-05-15 22:44:56 +00:00
..
cmake build: use POSITION_INDEPENDENT_CODE instead of -fPIC 2017-10-03 20:22:26 +00:00
docs Update docs version to 7.0 2018-01-03 15:58:08 +00:00
include [libunwind][MIPS] Support MIPS floating-point registers for hard-float ABIs. 2018-05-15 22:44:56 +00:00
src [libunwind][MIPS] Support MIPS floating-point registers for hard-float ABIs. 2018-05-15 22:44:56 +00:00
test [libunwind] Permit additional compiler and linker flags to be passed to tests. 2018-02-27 18:40:04 +00:00
.arcconfig [libunwind] Set up .arcconfig to point to new Diffusion UNW repository 2018-01-10 22:20:03 +00:00
.clang-format unwind: add a .clang-format 2015-05-07 19:50:18 +00:00
CMakeLists.txt [CMake] Support for monorepo layout 2018-04-04 17:57:15 +00:00
LICENSE.TXT Fix the project name in the license file. 2017-02-27 17:47:58 +00:00