+2013-10-06 Mark Wielaard <mjw@redhat.com>
+
+ * ppc_cfi.c (ppc_abi_cfi): Use DW_CFA_val_offset for reg1, not
+ DW_CFA_val_expression.
+
2013-08-29 Mark Wielaard <mjw@redhat.com>
* Makefile.am (arm_SRCS): Add arm_cfi.c.
DW_CFA_def_cfa, ULEB128_7 (1), ULEB128_7 (0) */
/* r1 is assumed to be restored from cfa adress,
r1 acts as a stack frame pointer. */
- DW_CFA_val_expression, ULEB128_7 (1), ULEB128_7 (1), DW_OP_nop,
+ DW_CFA_val_offset, ULEB128_7 (1), ULEB128_7 (0),
/* lr is not callee-saved but it needs to be preserved as it is pre-set
by the caller. */
DW_CFA_same_value, ULEB128_7 (65), /* lr */
+2013-10-06 Mark Wielaard <mjw@redhat.com>
+
+ * cfi.c (execute_cfi): Make sure DW_CFA_expression and
+ DW_CFA_val_expression are not used with abi_cfi.
+
2013-10-03 Josh Stone <jistone@redhat.com>
* dwarf_formref_die.c (dwarf_formref_die): Don't hash the sig8 here.
continue;
case DW_CFA_expression:
+ /* Expression rule relies on section data, abi_cfi cannot use it. */
+ assert (! abi_cfi);
get_uleb128 (regno, program);
offset = program - (const uint8_t *) cache->data->d.d_buf;
/* DW_FORM_block is a ULEB128 length followed by that many bytes. */
continue;
case DW_CFA_val_expression:
+ /* Expression rule relies on section data, abi_cfi cannot use it. */
+ assert (! abi_cfi);
get_uleb128 (regno, program);
/* DW_FORM_block is a ULEB128 length followed by that many bytes. */
offset = program - (const uint8_t *) cache->data->d.d_buf;
+2013-10-06 Mark Wielaard <mjw@redhat.com>
+
+ * libebl.h (ebl_abi_cfi): Document restrictions using register
+ rules.
+
2013-09-26 Petr Machata <pmachata@redhat.com>
* eblcorenotetypename.c: Handle NT_ARM_TLS, NT_ARM_HW_BREAK,
before each CIE's initial instructions. It should set the
data_alignment_factor member if it affects the initial instructions.
+ The callback should not use the register rules DW_CFA_expression or
+ DW_CFA_val_expression. Defining the CFA using DW_CFA_def_cfa_expression
+ is allowed. This is an implementation detail since register rules
+ store expressions as offsets from the .eh_frame or .debug_frame data.
+
As a shorthand for some common cases, for this instruction stream
we overload some CFI instructions that cannot be used in a CIE:
+2013-10-06 Mark Wielaard <mjw@redhat.com>
+
+ * run-addrcfi.sh: Remove nop from expected ppc and ppc64
+ location expression.
+
2013-10-03 Josh Stone <jistone@redhat.com>
* typeiter2.c: New file, reversing typeiter.c.
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
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