mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-27 09:38:57 +00:00
* arm-linux-tdep.h (ARM_CPSR_REGNUM): Delete definition.
* arm-tdep.c (arm_frame_is_thumb): New. (arm_pc_is_thumb): Clarify comment. (thumb_analyze_prologue): Remove PC special case. (thumb_scan_prologue): Take a block_addr argument. Use it for find_pc_partial_function. Remove unused variables. (arm_scan_prologue): Use arm_frame_is_thumb. Use the block address for find_pc_partial_function. Remove PC special case. (arm_prologue_prev_register): Add special handling for PC and CPSR. (arm_dwarf2_prev_register, arm_dwarf2_frame_init_reg): New. (arm_get_next_pc): Use arm_frame_is_thumb. (arm_write_pc): Use CPSR_T instead of 0x20. (arm_gdbarch_init): Call dwarf2_frame_set_init_reg. * arm-tdep.h (enum gdb_regnum): Add ARM_CPSR_REGNUM. (CPSR_T): Define. * dwarf2-frame.c (dwarf2_frame_prev_register): Handle DWARF2_FRAME_REG_FN. * dwarf2-frame.h (enum dwarf2_frame_reg_rule): Add DWARF2_FRAME_REG_FN. (struct dwarf2_frame_state_reg): Add FN to loc union. * gdb.arch/thumb-prologue.exp: Do not expect a saved PC.
This commit is contained in:
@@ -55,6 +55,7 @@ enum dwarf2_frame_reg_rule
|
||||
|
||||
/* These aren't defined by the DWARF2 CFI specification, but are
|
||||
used internally by GDB. */
|
||||
DWARF2_FRAME_REG_FN, /* Call a registered function. */
|
||||
DWARF2_FRAME_REG_RA, /* Return Address. */
|
||||
DWARF2_FRAME_REG_RA_OFFSET, /* Return Address with offset. */
|
||||
DWARF2_FRAME_REG_CFA, /* Call Frame Address. */
|
||||
@@ -71,6 +72,8 @@ struct dwarf2_frame_state_reg
|
||||
LONGEST offset;
|
||||
ULONGEST reg;
|
||||
unsigned char *exp;
|
||||
struct value *(*fn) (struct frame_info *this_frame, void **this_cache,
|
||||
int regnum);
|
||||
} loc;
|
||||
ULONGEST exp_len;
|
||||
enum dwarf2_frame_reg_rule how;
|
||||
|
||||
Reference in New Issue
Block a user