This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 1/2] backends: arm_cfi SP (r13) is restored from CFA by default.


Signed-off-by: Mark Wielaard <mjw@redhat.com>
---
 backends/ChangeLog   | 4 ++++
 backends/arm_cfi.c   | 3 +++
 tests/ChangeLog      | 5 +++++
 tests/run-addrcfi.sh | 2 +-
 4 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/backends/ChangeLog b/backends/ChangeLog
index 045fa9d..c8e2b30 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 e0cc44b..971a1fc 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 cbf2672..fa8a42a 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 a4225ac..5d33246 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
-- 
1.8.4.2


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]