summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMark Wielaard <[email protected]>2013-10-06 17:04:07 +0200
committerMark Wielaard <[email protected]>2013-10-07 11:16:27 +0200
commit3dec3e110bb2a2453156868e1221dc8192399e3e (patch)
tree65eb424f42bfd80f2bcc2b6a8d1a6d96df5e475a /tests
parent5dbbc5e32cc1fb3a7cf33e52e0bfc6f47097f3fe (diff)
backends: ppc_abi_cfi reg1 use DW_CFA_val_offset not DW_CFA_val_expression.
Register rules using expressions are stored using an offset from the start of the .eh_frame or .debug_frame ELF section data. Since abi_cfi rules aren't stored in those ELF sections they should use neither DW_CFA_expression nor DW_CFA_val_expression. The only backend that used DW_CFA_val_expression was ppc_cfi.c. It was easier to express the same rule using DW_CFA_val_offset than to change the code to handle register rules using expressions. On most architectures this did work by accident. See the definition of struct dwarf_frame_register value in libdw/cfi.h to see why. But on ia64 the abi_cfi data and actual frame data were placed too far apart and caused a crash in tests/run-addrcfi.sh for ppc32. Signed-off-by: Mark Wielaard <[email protected]>
Diffstat (limited to 'tests')
-rw-r--r--tests/ChangeLog5
-rwxr-xr-xtests/run-addrcfi.sh4
2 files changed, 7 insertions, 2 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 71bcfc10..db248dc0 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,8 @@
+2013-10-06 Mark Wielaard <[email protected]>
+
+ * run-addrcfi.sh: Remove nop from expected ppc and ppc64
+ location expression.
+
2013-10-03 Josh Stone <[email protected]>
* typeiter2.c: New file, reversing typeiter.c.
diff --git a/tests/run-addrcfi.sh b/tests/run-addrcfi.sh
index 70e85ed7..c7ab71ab 100755
--- a/tests/run-addrcfi.sh
+++ b/tests/run-addrcfi.sh
@@ -299,7 +299,7 @@ dwarf_cfi_addrframe (.eh_frame): no matching address range
return address in reg65
CFA location expression: bregx(1)
integer reg0 (r0): undefined
- integer reg1 (r1): location expression: call_frame_cfa nop stack_value
+ integer reg1 (r1): location expression: call_frame_cfa stack_value
integer reg2 (r2): same_value
integer reg3 (r3): undefined
integer reg4 (r4): undefined
@@ -1326,7 +1326,7 @@ dwarf_cfi_addrframe (.eh_frame): no matching address range
return address in reg65
CFA location expression: bregx(1)
integer reg0 (r0): undefined
- integer reg1 (r1): location expression: call_frame_cfa nop stack_value
+ integer reg1 (r1): location expression: call_frame_cfa stack_value
integer reg2 (r2): same_value
integer reg3 (r3): undefined
integer reg4 (r4): undefined