diff options
| author | joerg <joerg@NetBSD.org> | 2021-02-23 15:07:32 +0000 |
|---|---|---|
| committer | joerg <joerg@NetBSD.org> | 2021-02-23 15:07:32 +0000 |
| commit | 1fbf1330147f0eeddc3a4931b8ec0dd10b08afbe (patch) | |
| tree | 0d9141dc7428033cdbf116f342925000b3515952 /sys/lib | |
| parent | bc4d2d6fcad31b5436b2a4c625b5d2c6e83d41c0 (diff) | |
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.
Diffstat (limited to 'sys/lib')
| -rw-r--r-- | sys/lib/libunwind/DwarfParser.hpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/lib/libunwind/DwarfParser.hpp b/sys/lib/libunwind/DwarfParser.hpp index 6e8ef2cab4c..9b9b394bd66 100644 --- a/sys/lib/libunwind/DwarfParser.hpp +++ b/sys/lib/libunwind/DwarfParser.hpp @@ -239,7 +239,7 @@ bool CFI_Parser<A, R>::parseCIE(A &addressSpace, pint_t cie, // 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 |
