diff options
| author | Mark Wielaard <[email protected]> | 2014-01-05 21:44:53 +0100 |
|---|---|---|
| committer | Mark Wielaard <[email protected]> | 2014-01-05 21:44:53 +0100 |
| commit | 7c463121a7806dfc0d7a50d130a5d49e074b742c (patch) | |
| tree | 679b4b5976354d863a1aec6361f28c3768d44d01 /libdwfl/frame_unwind.c | |
| parent | 14e5056319def0555bc4183488e7af5c14a3fb28 (diff) | |
| parent | 27aae18ce872409b70afef8503941c7e75c8d93d (diff) | |
Merge branch 'master' into robustifyupstream/robustify
Diffstat (limited to 'libdwfl/frame_unwind.c')
| -rw-r--r-- | libdwfl/frame_unwind.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libdwfl/frame_unwind.c b/libdwfl/frame_unwind.c index 3ce45479..dc99e40b 100644 --- a/libdwfl/frame_unwind.c +++ b/libdwfl/frame_unwind.c @@ -585,8 +585,9 @@ handle_cfi (Dwfl_Frame *state, Dwarf_Addr pc, Dwarf_CFI *cfi, Dwarf_Addr bias) /* This is another strange PPC[64] case. There are two registers numbers that can represent the same DWARF return register number. We only want one to actually set the return - register value. */ - if (ra_set) + register value. But we always want to override the value if + the register is the actual CIE return address register. */ + if (ra_set && regno != frame->fde->cie->return_address_register) { unsigned r = regno; if (ebl_dwarf_to_regno (ebl, &r) && r == ra) |
