[libunwind] Fix cfi_register for float registers.
authorDaniel Kiss <daniel.kiss@arm.com>
Fri, 1 Oct 2021 14:49:37 +0000 (16:49 +0200)
committerDaniel Kiss <daniel.kiss@arm.com>
Fri, 1 Oct 2021 14:51:51 +0000 (16:51 +0200)
Fixes D110144.
registers.getFloatRegister is not const in ARM therefor can't be called here.

Reviewed By: mstorsjo, #libunwind

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

libunwind/src/DwarfInstructions.hpp

index 53baf6a..b58c51b 100644 (file)
@@ -115,10 +115,12 @@ double DwarfInstructions<A, R>::getSavedFloatRegister(
     return addressSpace.getDouble(
         evaluateExpression((pint_t)savedReg.value, addressSpace,
                             registers, cfa));
-  case CFI_Parser<A>::kRegisterInRegister:
-    return registers.getFloatRegister((int)savedReg.value);
   case CFI_Parser<A>::kRegisterUndefined:
     return 0.0;
+  case CFI_Parser<A>::kRegisterInRegister:
+#ifndef _LIBUNWIND_TARGET_ARM
+    return registers.getFloatRegister((int)savedReg.value);
+#endif
   case CFI_Parser<A>::kRegisterIsExpression:
   case CFI_Parser<A>::kRegisterUnused:
   case CFI_Parser<A>::kRegisterOffsetFromCFA: