mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-17 16:05:56 +08:00
Add a limit parameter for scanning the prologue.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2000-10-04 Kevin Buettner <kevinb@redhat.com>
|
||||||
|
|
||||||
|
* rs6000-tdep.c (skip_prologue): Add new parameter lim_pc.
|
||||||
|
Update all callers.
|
||||||
|
|
||||||
2000-10-03 Kevin Buettner <kevinb@redhat.com>
|
2000-10-03 Kevin Buettner <kevinb@redhat.com>
|
||||||
|
|
||||||
* remote-bug.c (bug_xfer_memory, bug_insert_breakpoint,
|
* remote-bug.c (bug_xfer_memory, bug_insert_breakpoint,
|
||||||
|
@ -118,7 +118,8 @@ void (*rs6000_set_host_arch_hook) (int) = NULL;
|
|||||||
|
|
||||||
static CORE_ADDR branch_dest (int opcode, int instr, CORE_ADDR pc,
|
static CORE_ADDR branch_dest (int opcode, int instr, CORE_ADDR pc,
|
||||||
CORE_ADDR safety);
|
CORE_ADDR safety);
|
||||||
static CORE_ADDR skip_prologue (CORE_ADDR, struct rs6000_framedata *);
|
static CORE_ADDR skip_prologue (CORE_ADDR, CORE_ADDR,
|
||||||
|
struct rs6000_framedata *);
|
||||||
static void frame_get_saved_regs (struct frame_info * fi,
|
static void frame_get_saved_regs (struct frame_info * fi,
|
||||||
struct rs6000_framedata * fdatap);
|
struct rs6000_framedata * fdatap);
|
||||||
static CORE_ADDR frame_initial_stack_address (struct frame_info *);
|
static CORE_ADDR frame_initial_stack_address (struct frame_info *);
|
||||||
@ -135,7 +136,7 @@ static CORE_ADDR
|
|||||||
rs6000_skip_prologue (CORE_ADDR pc)
|
rs6000_skip_prologue (CORE_ADDR pc)
|
||||||
{
|
{
|
||||||
struct rs6000_framedata frame;
|
struct rs6000_framedata frame;
|
||||||
pc = skip_prologue (pc, &frame);
|
pc = skip_prologue (pc, 0, &frame);
|
||||||
return pc;
|
return pc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -381,7 +382,7 @@ rs6000_software_single_step (unsigned int signal, int insert_breakpoints_p)
|
|||||||
#define GET_SRC_REG(x) (((x) >> 21) & 0x1f)
|
#define GET_SRC_REG(x) (((x) >> 21) & 0x1f)
|
||||||
|
|
||||||
static CORE_ADDR
|
static CORE_ADDR
|
||||||
skip_prologue (CORE_ADDR pc, struct rs6000_framedata *fdata)
|
skip_prologue (CORE_ADDR pc, CORE_ADDR lim_pc, struct rs6000_framedata *fdata)
|
||||||
{
|
{
|
||||||
CORE_ADDR orig_pc = pc;
|
CORE_ADDR orig_pc = pc;
|
||||||
CORE_ADDR last_prologue_pc;
|
CORE_ADDR last_prologue_pc;
|
||||||
@ -403,7 +404,7 @@ skip_prologue (CORE_ADDR pc, struct rs6000_framedata *fdata)
|
|||||||
fdata->nosavedpc = 1;
|
fdata->nosavedpc = 1;
|
||||||
|
|
||||||
pc -= 4;
|
pc -= 4;
|
||||||
for (;;)
|
while (lim_pc == 0 || pc < lim_pc - 4)
|
||||||
{
|
{
|
||||||
pc += 4;
|
pc += 4;
|
||||||
|
|
||||||
@ -700,7 +701,7 @@ rs6000_pop_frame (void)
|
|||||||
saved %pc value in the previous frame. */
|
saved %pc value in the previous frame. */
|
||||||
|
|
||||||
addr = get_pc_function_start (frame->pc);
|
addr = get_pc_function_start (frame->pc);
|
||||||
(void) skip_prologue (addr, &fdata);
|
(void) skip_prologue (addr, frame->pc, &fdata);
|
||||||
|
|
||||||
wordsize = TDEP->wordsize;
|
wordsize = TDEP->wordsize;
|
||||||
if (fdata.frameless)
|
if (fdata.frameless)
|
||||||
@ -1106,7 +1107,7 @@ rs6000_frameless_function_invocation (struct frame_info *fi)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
(void) skip_prologue (func_start, &fdata);
|
(void) skip_prologue (func_start, fi->pc, &fdata);
|
||||||
return fdata.frameless;
|
return fdata.frameless;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1132,7 +1133,7 @@ rs6000_frame_saved_pc (struct frame_info *fi)
|
|||||||
if (!func_start)
|
if (!func_start)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
(void) skip_prologue (func_start, &fdata);
|
(void) skip_prologue (func_start, fi->pc, &fdata);
|
||||||
|
|
||||||
if (fdata.lr_offset == 0 && fi->next != NULL)
|
if (fdata.lr_offset == 0 && fi->next != NULL)
|
||||||
{
|
{
|
||||||
@ -1167,7 +1168,7 @@ frame_get_saved_regs (struct frame_info *fi, struct rs6000_framedata *fdatap)
|
|||||||
if (fdatap == NULL)
|
if (fdatap == NULL)
|
||||||
{
|
{
|
||||||
fdatap = &work_fdata;
|
fdatap = &work_fdata;
|
||||||
(void) skip_prologue (get_pc_function_start (fi->pc), fdatap);
|
(void) skip_prologue (get_pc_function_start (fi->pc), fi->pc, fdatap);
|
||||||
}
|
}
|
||||||
|
|
||||||
frame_saved_regs_zalloc (fi);
|
frame_saved_regs_zalloc (fi);
|
||||||
@ -1243,7 +1244,7 @@ frame_initial_stack_address (struct frame_info *fi)
|
|||||||
|
|
||||||
/* find out if this function is using an alloca register.. */
|
/* find out if this function is using an alloca register.. */
|
||||||
|
|
||||||
(void) skip_prologue (get_pc_function_start (fi->pc), &fdata);
|
(void) skip_prologue (get_pc_function_start (fi->pc), fi->pc, &fdata);
|
||||||
|
|
||||||
/* if saved registers of this frame are not known yet, read and cache them. */
|
/* if saved registers of this frame are not known yet, read and cache them. */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user