summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2014-01-25 14:32:42 +0100
committerMark Wielaard <mjw@redhat.com>2014-01-30 10:23:50 +0100
commita02d90ae12c5386b85332536b516da435150dd88 (patch)
treeb3929c526ca334c3a906971cd7e0ba7e6dee0bad
parentccdc13b7e0b0e7df045899e13446223c3e2b3a80 (diff)
downloadelfutils-a02d90ae12c5386b85332536b516da435150dd88.tar.gz
backends: arm_cfi SP (r13) is restored from CFA by default.
Signed-off-by: Mark Wielaard <mjw@redhat.com>
-rw-r--r--backends/ChangeLog4
-rw-r--r--backends/arm_cfi.c3
-rw-r--r--tests/ChangeLog5
-rwxr-xr-xtests/run-addrcfi.sh2
4 files changed, 13 insertions, 1 deletions
diff --git a/backends/ChangeLog b/backends/ChangeLog
index 045fa9d1..c8e2b301 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -1,3 +1,7 @@
+2014-01-25 Mark Wielaard <mjw@redhat.com>
+
+ * arm_cfi.c (arm_abi_cfi): Restore SP (r13) from CFA.
+
2014-01-24 Mark Wielaard <mjw@redhat.com>
* arm_reloc.def: Update list.
diff --git a/backends/arm_cfi.c b/backends/arm_cfi.c
index e0cc44bf..971a1fc4 100644
--- a/backends/arm_cfi.c
+++ b/backends/arm_cfi.c
@@ -54,6 +54,9 @@ arm_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info)
Stack Pointer (r13) as setup in the previous frame. */
DW_CFA_def_cfa, ULEB128_7 (13), ULEB128_7 (0),
+ /* The Stack Pointer (r13) is restored from CFA address by default. */
+ DW_CFA_val_offset, ULEB128_7 (13), ULEB128_7 (0),
+
#define SV(n) DW_CFA_same_value, ULEB128_7 (n)
/* Callee-saved regs r4-r8, r10, r11. */
SV (4), SV (5), SV (6), SV (7), SV (8), SV (10), SV (11),
diff --git a/tests/ChangeLog b/tests/ChangeLog
index cbf26725..fa8a42a2 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,8 @@
+2014-01-25 Mark Wielaard <mjw@redhat.com>
+
+ * run-addrcfi.sh (EM_ARM): Change reg13 (sp) from undefined to
+ location expression: call_frame_cfa stack_value.
+
2014-01-22 Mark Wielaard <mjw@redhat.com>
* Makefile.am (line2addr_no_Wformat): Removed.
diff --git a/tests/run-addrcfi.sh b/tests/run-addrcfi.sh
index a4225ac0..5d33246a 100755
--- a/tests/run-addrcfi.sh
+++ b/tests/run-addrcfi.sh
@@ -2519,7 +2519,7 @@ dwarf_cfi_addrframe (.eh_frame): no matching address range
integer reg10 (r10): same_value
integer reg11 (r11): same_value
integer reg12 (r12): undefined
- integer reg13 (sp): undefined
+ integer reg13 (sp): location expression: call_frame_cfa stack_value
integer reg14 (lr): same_value
integer reg15 (pc): location expression: regx(14)
FPA reg16 (f0): undefined