[PATCH] D38110: [libunwind][MIPS]: Add support for unwinding in O32 and N64 processes.
Simon Dardis via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Oct 12 08:24:39 PDT 2017
sdardis added a comment.
I have tested this on one of my machines after removing the checks for soft float (my debian install doesn't have the necessary headers for soft-float). With the patch you've pointed out and my inline comments addressed (bar the HI / LO register comments), it passes the supplied test suite.
Can you change the checks for ABI from '_MIPS_SIM == $ABI' to 'defined($ABI)'? I mistakenly assumed they were always defined and that _MIPS_SIM was defined to be one of them but they are only defined when that particular ABI is being used.
================
Comment at: include/libunwind.h:584
+ UNW_MIPS_R31 = 31,
+};
+
----------------
Requires HI / LO registers.
================
Comment at: src/Registers.hpp:2014
+ uint32_t __pc;
+ };
+
----------------
This appears to be missing the HI / LO registers.
================
Comment at: src/Registers.hpp:2039
+ return true;
+ // FIXME: Hard float
+ return false;
----------------
FIXME: Hard float, DSP accumulator registers, MSA registers
================
Comment at: src/UnwindRegistersSave.S:120-122
+ jr $31
+ # fp (in delay slot)
+ sw $30, (4 * 30)($4)
----------------
Move the last store out of the delay slot and put 'or $2, $zero, $zero' in the delay slot to return UNW_ESUCCESS.
================
Comment at: src/UnwindRegistersSave.S:155-157
+ jr $31
+ # fp (in delay slot)
+ sd $30, (8 * 30)($4)
----------------
Move the last store out of the delay slot and put 'or $2, $zero, $zero' in the delay slot to return UNW_ESUCCESS.
https://reviews.llvm.org/D38110
More information about the cfe-commits
mailing list