Module Name:    src
Committed By:   joerg
Date:           Tue Feb 23 15:07:32 UTC 2021

Modified Files:
        src/sys/lib/libunwind: DwarfParser.hpp

Log Message:
The return address register entry is the DWARF register. On PowerPC,
this is not the same as the internal encoding, since the Link Register
is deliberately non-continous from the other general purpose register
values. To handle this, always translate the value into the internal
format.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/lib/libunwind/DwarfParser.hpp

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/lib/libunwind/DwarfParser.hpp
diff -u src/sys/lib/libunwind/DwarfParser.hpp:1.5 src/sys/lib/libunwind/DwarfParser.hpp:1.6
--- src/sys/lib/libunwind/DwarfParser.hpp:1.5	Sat May  3 23:19:56 2014
+++ src/sys/lib/libunwind/DwarfParser.hpp	Tue Feb 23 15:07:32 2021
@@ -239,7 +239,7 @@ bool CFI_Parser<A, R>::parseCIE(A &addre
   // Parse data alignment factor
   cieInfo->dataAlignFactor = addressSpace.getSLEB128(p, cieContentEnd);
   // Parse return address register
-  cieInfo->returnAddressRegister = (uint8_t)addressSpace.getULEB128(p, cieContentEnd);
+  cieInfo->returnAddressRegister = R::dwarf2regno((uint8_t)addressSpace.getULEB128(p, cieContentEnd));
   // Parse augmentation data based on augmentation string.
   if (addressSpace.get8(strStart) == 'z') {
     // parse augmentation data length

Reply via email to