summaryrefslogtreecommitdiffstats
path: root/libdwfl
diff options
context:
space:
mode:
authorMark Wielaard <[email protected]>2014-01-05 21:44:53 +0100
committerMark Wielaard <[email protected]>2014-01-05 21:44:53 +0100
commit7c463121a7806dfc0d7a50d130a5d49e074b742c (patch)
tree679b4b5976354d863a1aec6361f28c3768d44d01 /libdwfl
parent14e5056319def0555bc4183488e7af5c14a3fb28 (diff)
parent27aae18ce872409b70afef8503941c7e75c8d93d (diff)
Merge branch 'master' into robustifyupstream/robustify
Diffstat (limited to 'libdwfl')
-rw-r--r--libdwfl/ChangeLog5
-rw-r--r--libdwfl/frame_unwind.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index 572dd1a9..e0f40c94 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -1,3 +1,8 @@
+2014-01-05 Mark Wielaard <[email protected]>
+
+ * frame_unwind.c (handle_cfi): Only skip resetting return register
+ if the regno is not the actual CIE return address register.
+
2014-01-02 Mark Wielaard <[email protected]>
* linux-pid-attach.c (dwfl_linux_proc_attach): Use strtol, not atoi.
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)