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:
Jerome Guitton 2003-09-29 13:27:39 +00:00
parent 1c0915057e
commit e28a332c04
2 changed files with 10 additions and 2 deletions

View File

@ -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.

View File

@ -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;