mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-28 20:43:45 +08:00
2003-09-29 Jerome Guitton <guitton@act-europe.fr>
* arm-tdep.c (arm_make_prologue_cache): Use trad_frame_addr_p to test if the register has been saved on the stack. (arm_scan_prologue_cache): When analysing the instruction "str lr, [sp, #-4]", save the address where lr has been stored.
This commit is contained in:
parent
1c0915057e
commit
e28a332c04
@ -1,3 +1,10 @@
|
|||||||
|
2003-09-29 Jerome Guitton <guitton@act-europe.fr>
|
||||||
|
|
||||||
|
* arm-tdep.c (arm_make_prologue_cache): Use trad_frame_addr_p to
|
||||||
|
test if the register has been saved on the stack.
|
||||||
|
(arm_scan_prologue_cache): When analysing the instruction
|
||||||
|
"str lr, [sp, #-4]", save the address where lr has been stored.
|
||||||
|
|
||||||
2003-09-28 Andrew Cagney <cagney@redhat.com>
|
2003-09-28 Andrew Cagney <cagney@redhat.com>
|
||||||
|
|
||||||
* frame.c (frame_read_unsigned_register): Delete function.
|
* frame.c (frame_read_unsigned_register): Delete function.
|
||||||
|
@ -845,7 +845,8 @@ arm_scan_prologue (struct frame_info *next_frame, struct arm_prologue_cache *cac
|
|||||||
}
|
}
|
||||||
else if (insn == 0xe52de004) /* str lr, [sp, #-4]! */
|
else if (insn == 0xe52de004) /* str lr, [sp, #-4]! */
|
||||||
{
|
{
|
||||||
/* Function is frameless: extra_info defaults OK? */
|
sp_offset -= 4;
|
||||||
|
cache->saved_regs[ARM_LR_REGNUM].addr = sp_offset;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if ((insn & 0xffff0000) == 0xe92d0000)
|
else if ((insn & 0xffff0000) == 0xe92d0000)
|
||||||
@ -967,7 +968,7 @@ arm_make_prologue_cache (struct frame_info *next_frame)
|
|||||||
/* Calculate actual addresses of saved registers using offsets
|
/* Calculate actual addresses of saved registers using offsets
|
||||||
determined by arm_scan_prologue. */
|
determined by arm_scan_prologue. */
|
||||||
for (reg = 0; reg < NUM_REGS; reg++)
|
for (reg = 0; reg < NUM_REGS; reg++)
|
||||||
if (cache->saved_regs[reg].addr != 0)
|
if (trad_frame_addr_p (cache->saved_regs, reg))
|
||||||
cache->saved_regs[reg].addr += cache->prev_sp;
|
cache->saved_regs[reg].addr += cache->prev_sp;
|
||||||
|
|
||||||
return cache;
|
return cache;
|
||||||
|
Loading…
Reference in New Issue
Block a user