2003-01-08 Andrew Cagney <cagney@redhat.com>

* alpha-tdep.c: Use get_next_frame.
	* arm-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto.
	* dwarf2cfi.c, h8300-tdep.c, i386-tdep.c, ia64-tdep.c: Ditto.
	* m68hc11-tdep.c, m68k-tdep.c, mcore-tdep.c: Ditto.
	* mips-tdep.c, mn10200-tdep.c, mn10300-tdep.c: Ditto.
	* ns32k-tdep.c, s390-tdep.c, sh-tdep.c, sparc-tdep.c: Ditto.
	* v850-tdep.c, vax-tdep.c, x86-64-linux-tdep.c: Ditto.
	* xstormy16-tdep.c: Ditto.
This commit is contained in:
Andrew Cagney 2003-01-08 15:56:38 +00:00
parent 626d0adf84
commit 11c02a10e2
24 changed files with 193 additions and 167 deletions

View file

@ -1,3 +1,14 @@
2003-01-08 Andrew Cagney <cagney@redhat.com>
* alpha-tdep.c: Use get_next_frame.
* arm-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto.
* dwarf2cfi.c, h8300-tdep.c, i386-tdep.c, ia64-tdep.c: Ditto.
* m68hc11-tdep.c, m68k-tdep.c, mcore-tdep.c: Ditto.
* mips-tdep.c, mn10200-tdep.c, mn10300-tdep.c: Ditto.
* ns32k-tdep.c, s390-tdep.c, sh-tdep.c, sparc-tdep.c: Ditto.
* v850-tdep.c, vax-tdep.c, x86-64-linux-tdep.c: Ditto.
* xstormy16-tdep.c: Ditto.
2003-01-07 Andrew Cagney <cagney@redhat.com> 2003-01-07 Andrew Cagney <cagney@redhat.com>
* alpha-tdep.c: Use get_frame_base. * alpha-tdep.c: Use get_frame_base.

View file

@ -461,14 +461,14 @@ static CORE_ADDR
alpha_init_frame_pc_first (int fromleaf, struct frame_info *prev) alpha_init_frame_pc_first (int fromleaf, struct frame_info *prev)
{ {
return (fromleaf ? SAVED_PC_AFTER_CALL (get_next_frame (prev)) return (fromleaf ? SAVED_PC_AFTER_CALL (get_next_frame (prev))
: get_next_frame (prev) ? FRAME_SAVED_PC (prev->next) : get_next_frame (prev) ? FRAME_SAVED_PC (get_next_frame (prev))
: read_pc ()); : read_pc ());
} }
static CORE_ADDR static CORE_ADDR
read_next_frame_reg (struct frame_info *fi, int regno) read_next_frame_reg (struct frame_info *fi, int regno)
{ {
for (; fi; fi = fi->next) for (; fi; fi = get_next_frame (fi))
{ {
/* We have to get the saved sp from the sigcontext /* We have to get the saved sp from the sigcontext
if it is a signal handler frame. */ if it is a signal handler frame. */
@ -513,7 +513,7 @@ alpha_saved_pc_after_call (struct frame_info *frame)
if (tmp != 0) if (tmp != 0)
pc = tmp; pc = tmp;
proc_desc = find_proc_desc (pc, frame->next); proc_desc = find_proc_desc (pc, get_next_frame (frame));
pcreg = proc_desc ? PROC_PC_REG (proc_desc) : ALPHA_RA_REGNUM; pcreg = proc_desc ? PROC_PC_REG (proc_desc) : ALPHA_RA_REGNUM;
if ((get_frame_type (frame) == SIGTRAMP_FRAME)) if ((get_frame_type (frame) == SIGTRAMP_FRAME))
@ -980,7 +980,9 @@ alpha_init_extra_frame_info (int fromleaf, struct frame_info *frame)
{ {
/* Use proc_desc calculated in frame_chain */ /* Use proc_desc calculated in frame_chain */
alpha_extra_func_info_t proc_desc = alpha_extra_func_info_t proc_desc =
frame->next ? cached_proc_desc : find_proc_desc (get_frame_pc (frame), frame->next); get_next_frame (frame)
? cached_proc_desc
: find_proc_desc (get_frame_pc (frame), get_next_frame (frame));
frame_extra_info_zalloc (frame, sizeof (struct frame_extra_info)); frame_extra_info_zalloc (frame, sizeof (struct frame_extra_info));
@ -1010,9 +1012,9 @@ alpha_init_extra_frame_info (int fromleaf, struct frame_info *frame)
interrupted by a signal at it's very start. */ interrupted by a signal at it's very start. */
else if (get_frame_pc (frame) == PROC_LOW_ADDR (proc_desc) else if (get_frame_pc (frame) == PROC_LOW_ADDR (proc_desc)
&& !alpha_proc_desc_is_dyn_sigtramp (proc_desc)) && !alpha_proc_desc_is_dyn_sigtramp (proc_desc))
deprecated_update_frame_base_hack (frame, read_next_frame_reg (frame->next, SP_REGNUM)); deprecated_update_frame_base_hack (frame, read_next_frame_reg (get_next_frame (frame), SP_REGNUM));
else else
deprecated_update_frame_base_hack (frame, read_next_frame_reg (frame->next, PROC_FRAME_REG (proc_desc)) deprecated_update_frame_base_hack (frame, read_next_frame_reg (get_next_frame (frame), PROC_FRAME_REG (proc_desc))
+ PROC_FRAME_OFFSET (proc_desc)); + PROC_FRAME_OFFSET (proc_desc));
if (proc_desc == &temp_proc_desc) if (proc_desc == &temp_proc_desc)
@ -1296,7 +1298,7 @@ alpha_pop_frame (void)
/* we need proc_desc to know how to restore the registers; /* we need proc_desc to know how to restore the registers;
if it is NULL, construct (a temporary) one */ if it is NULL, construct (a temporary) one */
if (proc_desc == NULL) if (proc_desc == NULL)
proc_desc = find_proc_desc (get_frame_pc (frame), frame->next); proc_desc = find_proc_desc (get_frame_pc (frame), get_next_frame (frame));
/* Question: should we copy this proc_desc and save it in /* Question: should we copy this proc_desc and save it in
frame->proc_desc? If we do, who will free it? frame->proc_desc? If we do, who will free it?

View file

@ -992,7 +992,7 @@ arm_find_callers_reg (struct frame_info *fi, int regnum)
/* NOTE: cagney/2002-05-03: This function really shouldn't be /* NOTE: cagney/2002-05-03: This function really shouldn't be
needed. Instead the (still being written) register unwind needed. Instead the (still being written) register unwind
function could be called directly. */ function could be called directly. */
for (; fi; fi = fi->next) for (; fi; fi = get_next_frame (fi))
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), 0, 0)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), 0, 0))
{ {
@ -1089,24 +1089,24 @@ arm_init_extra_frame_info (int fromleaf, struct frame_info *fi)
fi->extra_info->frameoffset = 0; fi->extra_info->frameoffset = 0;
fi->extra_info->framereg = 0; fi->extra_info->framereg = 0;
if (fi->next) if (get_next_frame (fi))
deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (fi->next)); deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (get_next_frame (fi)));
memset (get_frame_saved_regs (fi), '\000', sizeof get_frame_saved_regs (fi)); memset (get_frame_saved_regs (fi), '\000', sizeof get_frame_saved_regs (fi));
/* Compute stack pointer for this frame. We use this value for both /* Compute stack pointer for this frame. We use this value for both
the sigtramp and call dummy cases. */ the sigtramp and call dummy cases. */
if (!fi->next) if (!get_next_frame (fi))
sp = read_sp(); sp = read_sp();
else if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi->next), 0, 0)) else if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (get_next_frame (fi)), 0, 0))
/* For generic dummy frames, pull the value direct from the frame. /* For generic dummy frames, pull the value direct from the frame.
Having an unwind function to do this would be nice. */ Having an unwind function to do this would be nice. */
sp = deprecated_read_register_dummy (get_frame_pc (fi->next), sp = deprecated_read_register_dummy (get_frame_pc (get_next_frame (fi)),
get_frame_base (fi->next), get_frame_base (get_next_frame (fi)),
ARM_SP_REGNUM); ARM_SP_REGNUM);
else else
sp = (get_frame_base (fi->next) - fi->next->extra_info->frameoffset sp = (get_frame_base (get_next_frame (fi)) - get_next_frame (fi)->extra_info->frameoffset
+ fi->next->extra_info->framesize); + get_next_frame (fi)->extra_info->framesize);
/* Determine whether or not we're in a sigtramp frame. /* Determine whether or not we're in a sigtramp frame.
Unfortunately, it isn't sufficient to test (get_frame_type (fi) Unfortunately, it isn't sufficient to test (get_frame_type (fi)
@ -1142,13 +1142,13 @@ arm_init_extra_frame_info (int fromleaf, struct frame_info *fi)
{ {
arm_scan_prologue (fi); arm_scan_prologue (fi);
if (!fi->next) if (!get_next_frame (fi))
/* This is the innermost frame? */ /* This is the innermost frame? */
deprecated_update_frame_base_hack (fi, read_register (fi->extra_info->framereg)); deprecated_update_frame_base_hack (fi, read_register (fi->extra_info->framereg));
else if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi->next), 0, 0)) else if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (get_next_frame (fi)), 0, 0))
/* Next inner most frame is a dummy, just grab its frame. /* Next inner most frame is a dummy, just grab its frame.
Dummy frames always have the same FP as their caller. */ Dummy frames always have the same FP as their caller. */
deprecated_update_frame_base_hack (fi, get_frame_base (fi->next)); deprecated_update_frame_base_hack (fi, get_frame_base (get_next_frame (fi)));
else if (fi->extra_info->framereg == ARM_FP_REGNUM else if (fi->extra_info->framereg == ARM_FP_REGNUM
|| fi->extra_info->framereg == THUMB_FP_REGNUM) || fi->extra_info->framereg == THUMB_FP_REGNUM)
{ {

View file

@ -734,8 +734,8 @@ avr_init_extra_frame_info (int fromleaf, struct frame_info *fi)
{ {
int reg; int reg;
if (fi->next) if (get_next_frame (fi))
deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (fi->next)); deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (get_next_frame (fi)));
frame_extra_info_zalloc (fi, sizeof (struct frame_extra_info)); frame_extra_info_zalloc (fi, sizeof (struct frame_extra_info));
frame_saved_regs_zalloc (fi); frame_saved_regs_zalloc (fi);
@ -757,12 +757,12 @@ avr_init_extra_frame_info (int fromleaf, struct frame_info *fi)
deprecated_update_frame_base_hack (fi, deprecated_read_register_dummy (get_frame_pc (fi), get_frame_base (fi), deprecated_update_frame_base_hack (fi, deprecated_read_register_dummy (get_frame_pc (fi), get_frame_base (fi),
AVR_PC_REGNUM)); AVR_PC_REGNUM));
} }
else if (!fi->next) /* this is the innermost frame? */ else if (!get_next_frame (fi)) /* this is the innermost frame? */
deprecated_update_frame_base_hack (fi, read_register (fi->extra_info->framereg)); deprecated_update_frame_base_hack (fi, read_register (fi->extra_info->framereg));
else if (fi->extra_info->is_main != 1) /* not the innermost frame, not `main' */ else if (fi->extra_info->is_main != 1) /* not the innermost frame, not `main' */
/* If we have an next frame, the callee saved it. */ /* If we have an next frame, the callee saved it. */
{ {
struct frame_info *next_fi = fi->next; struct frame_info *next_fi = get_next_frame (fi);
if (fi->extra_info->framereg == AVR_SP_REGNUM) if (fi->extra_info->framereg == AVR_SP_REGNUM)
deprecated_update_frame_base_hack (fi, get_frame_base (next_fi) + 2 /* ret addr */ + next_fi->extra_info->framesize); deprecated_update_frame_base_hack (fi, get_frame_base (next_fi) + 2 /* ret addr */ + next_fi->extra_info->framesize);
/* FIXME: I don't analyse va_args functions */ /* FIXME: I don't analyse va_args functions */
@ -773,7 +773,7 @@ avr_init_extra_frame_info (int fromleaf, struct frame_info *fi)
unsigned int fp_low, fp_high; unsigned int fp_low, fp_high;
/* Scan all frames */ /* Scan all frames */
for (; next_fi; next_fi = next_fi->next) for (; next_fi; next_fi = get_next_frame (next_fi))
{ {
/* look for saved AVR_FP_REGNUM */ /* look for saved AVR_FP_REGNUM */
if (get_frame_saved_regs (next_fi)[AVR_FP_REGNUM] && !fp) if (get_frame_saved_regs (next_fi)[AVR_FP_REGNUM] && !fp)

View file

@ -1201,10 +1201,10 @@ cris_frame_init_saved_regs (struct frame_info *fi)
void void
cris_init_extra_frame_info (int fromleaf, struct frame_info *fi) cris_init_extra_frame_info (int fromleaf, struct frame_info *fi)
{ {
if (fi->next) if (get_next_frame (fi))
{ {
/* Called from get_prev_frame. */ /* Called from get_prev_frame. */
deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (fi->next)); deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (get_next_frame (fi)));
} }
frame_extra_info_zalloc (fi, sizeof (struct frame_extra_info)); frame_extra_info_zalloc (fi, sizeof (struct frame_extra_info));

View file

@ -907,8 +907,8 @@ d10v_init_extra_frame_info (int fromleaf, struct frame_info *fi)
/* If get_frame_pc (fi) is zero, but this is not the outermost frame, /* If get_frame_pc (fi) is zero, but this is not the outermost frame,
then let's snatch the return_pc from the callee, so that then let's snatch the return_pc from the callee, so that
DEPRECATED_PC_IN_CALL_DUMMY will work. */ DEPRECATED_PC_IN_CALL_DUMMY will work. */
if (get_frame_pc (fi) == 0 && fi->level != 0 && fi->next != NULL) if (get_frame_pc (fi) == 0 && fi->level != 0 && get_next_frame (fi) != NULL)
deprecated_update_frame_pc_hack (fi, d10v_frame_saved_pc (fi->next)); deprecated_update_frame_pc_hack (fi, d10v_frame_saved_pc (get_next_frame (fi)));
/* The call dummy doesn't save any registers on the stack, so we can /* The call dummy doesn't save any registers on the stack, so we can
return now. */ return now. */

View file

@ -1776,9 +1776,9 @@ cfi_init_extra_frame_info (int fromleaf, struct frame_info *fi)
memset (UNWIND_CONTEXT (fi)->reg, 0, memset (UNWIND_CONTEXT (fi)->reg, 0,
sizeof (struct context_reg) * NUM_REGS); sizeof (struct context_reg) * NUM_REGS);
if (fi->next) if (get_next_frame (fi))
{ {
context_cpy (UNWIND_CONTEXT (fi), UNWIND_CONTEXT (fi->next)); context_cpy (UNWIND_CONTEXT (fi), UNWIND_CONTEXT (get_next_frame (fi)));
frame_state_for (UNWIND_CONTEXT (fi), fs); frame_state_for (UNWIND_CONTEXT (fi), fs);
update_context (UNWIND_CONTEXT (fi), fs, 1); update_context (UNWIND_CONTEXT (fi), fs, 1);
} }
@ -1823,7 +1823,7 @@ cfi_get_saved_register (char *raw_buffer,
if (addrp) /* default assumption: not found in memory */ if (addrp) /* default assumption: not found in memory */
*addrp = 0; *addrp = 0;
if (!frame->next) if (!get_next_frame (frame))
{ {
deprecated_read_register_gen (regnum, raw_buffer); deprecated_read_register_gen (regnum, raw_buffer);
if (lval != NULL) if (lval != NULL)
@ -1833,7 +1833,7 @@ cfi_get_saved_register (char *raw_buffer,
} }
else else
{ {
frame = frame->next; frame = get_next_frame (frame);
switch (UNWIND_CONTEXT (frame)->reg[regnum].how) switch (UNWIND_CONTEXT (frame)->reg[regnum].how)
{ {
case REG_CTX_UNSAVED: case REG_CTX_UNSAVED:

View file

@ -537,8 +537,8 @@ h8300_init_extra_frame_info (int fromleaf, struct frame_info *fi)
if (!get_frame_pc (fi)) if (!get_frame_pc (fi))
{ {
if (fi->next) if (get_next_frame (fi))
deprecated_update_frame_pc_hack (fi, h8300_frame_saved_pc (fi->next)); deprecated_update_frame_pc_hack (fi, h8300_frame_saved_pc (get_next_frame (fi)));
} }
h8300_frame_init_saved_regs (fi); h8300_frame_init_saved_regs (fi);
} }

View file

@ -499,7 +499,8 @@ i386_get_frame_setup (CORE_ADDR pc)
int int
i386_frameless_signal_p (struct frame_info *frame) i386_frameless_signal_p (struct frame_info *frame)
{ {
return (frame->next && get_frame_type (frame->next) == SIGTRAMP_FRAME return (get_next_frame (frame)
&& get_frame_type (get_next_frame (frame)) == SIGTRAMP_FRAME
&& (frameless_look_for_prologue (frame) && (frameless_look_for_prologue (frame)
|| get_frame_pc (frame) == get_pc_function_start (get_frame_pc (frame)))); || get_frame_pc (frame) == get_pc_function_start (get_frame_pc (frame))));
} }
@ -581,7 +582,7 @@ i386_frame_saved_pc (struct frame_info *frame)
if (i386_frameless_signal_p (frame)) if (i386_frameless_signal_p (frame))
{ {
CORE_ADDR sp = i386_sigtramp_saved_sp (frame->next); CORE_ADDR sp = i386_sigtramp_saved_sp (get_next_frame (frame));
return read_memory_unsigned_integer (sp, 4); return read_memory_unsigned_integer (sp, 4);
} }
@ -1370,8 +1371,8 @@ i386_svr4_sigcontext_addr (struct frame_info *frame)
gdb_assert (sigcontext_offset != -1); gdb_assert (sigcontext_offset != -1);
if (frame->next) if (get_next_frame (frame))
return get_frame_base (frame->next) + sigcontext_offset; return get_frame_base (get_next_frame (frame)) + sigcontext_offset;
return read_register (SP_REGNUM) + sigcontext_offset; return read_register (SP_REGNUM) + sigcontext_offset;
} }

View file

@ -736,8 +736,9 @@ ia64_frame_saved_pc (struct frame_info *frame)
if (get_frame_saved_regs (frame)[IA64_VRAP_REGNUM]) if (get_frame_saved_regs (frame)[IA64_VRAP_REGNUM])
return read_memory_integer (get_frame_saved_regs (frame)[IA64_VRAP_REGNUM], 8); return read_memory_integer (get_frame_saved_regs (frame)[IA64_VRAP_REGNUM], 8);
else if (frame->next && (get_frame_type (frame->next) == SIGTRAMP_FRAME)) else if (get_next_frame (frame)
return read_sigcontext_register (frame->next, IA64_BR0_REGNUM); && (get_frame_type (get_next_frame (frame)) == SIGTRAMP_FRAME))
return read_sigcontext_register (get_next_frame (frame), IA64_BR0_REGNUM);
else /* either frameless, or not far enough along in the prologue... */ else /* either frameless, or not far enough along in the prologue... */
return ia64_saved_pc_after_call (frame); return ia64_saved_pc_after_call (frame);
} }
@ -1243,7 +1244,7 @@ ia64_get_saved_register (char *raw_buffer,
get_frame_base (frame), get_frame_base (frame),
get_frame_base (frame)); get_frame_base (frame));
if (regnum == SP_REGNUM && frame->next) if (regnum == SP_REGNUM && get_next_frame (frame))
{ {
/* Handle SP values for all frames but the topmost. */ /* Handle SP values for all frames but the topmost. */
store_address (raw_buffer, REGISTER_RAW_SIZE (regnum), store_address (raw_buffer, REGISTER_RAW_SIZE (regnum),
@ -1336,10 +1337,10 @@ ia64_get_saved_register (char *raw_buffer,
else if (regnum == IA64_IP_REGNUM) else if (regnum == IA64_IP_REGNUM)
{ {
CORE_ADDR pc; CORE_ADDR pc;
if (frame->next) if (get_next_frame (frame))
{ {
/* FIXME: Set *addrp, *lval when possible. */ /* FIXME: Set *addrp, *lval when possible. */
pc = ia64_frame_saved_pc (frame->next); pc = ia64_frame_saved_pc (get_next_frame (frame));
} }
else else
{ {
@ -1490,49 +1491,49 @@ void
ia64_init_extra_frame_info (int fromleaf, struct frame_info *frame) ia64_init_extra_frame_info (int fromleaf, struct frame_info *frame)
{ {
CORE_ADDR bsp, cfm; CORE_ADDR bsp, cfm;
int next_frame_is_call_dummy = ((frame->next != NULL) int next_frame_is_call_dummy = ((get_next_frame (frame) != NULL)
&& DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame->next), && DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (get_next_frame (frame)),
get_frame_base (frame->next), get_frame_base (get_next_frame (frame)),
get_frame_base (frame->next))); get_frame_base (get_next_frame (frame))));
frame_extra_info_zalloc (frame, sizeof (struct frame_extra_info)); frame_extra_info_zalloc (frame, sizeof (struct frame_extra_info));
if (frame->next == 0) if (get_next_frame (frame) == 0)
{ {
bsp = read_register (IA64_BSP_REGNUM); bsp = read_register (IA64_BSP_REGNUM);
cfm = read_register (IA64_CFM_REGNUM); cfm = read_register (IA64_CFM_REGNUM);
} }
else if ((get_frame_type (frame->next) == SIGTRAMP_FRAME)) else if ((get_frame_type (get_next_frame (frame)) == SIGTRAMP_FRAME))
{ {
bsp = read_sigcontext_register (frame->next, IA64_BSP_REGNUM); bsp = read_sigcontext_register (get_next_frame (frame), IA64_BSP_REGNUM);
cfm = read_sigcontext_register (frame->next, IA64_CFM_REGNUM); cfm = read_sigcontext_register (get_next_frame (frame), IA64_CFM_REGNUM);
} }
else if (next_frame_is_call_dummy) else if (next_frame_is_call_dummy)
{ {
bsp = deprecated_read_register_dummy (get_frame_pc (frame->next), bsp = deprecated_read_register_dummy (get_frame_pc (get_next_frame (frame)),
get_frame_base (frame->next), get_frame_base (get_next_frame (frame)),
IA64_BSP_REGNUM); IA64_BSP_REGNUM);
cfm = deprecated_read_register_dummy (get_frame_pc (frame->next), cfm = deprecated_read_register_dummy (get_frame_pc (get_next_frame (frame)),
get_frame_base (frame->next), get_frame_base (get_next_frame (frame)),
IA64_CFM_REGNUM); IA64_CFM_REGNUM);
} }
else else
{ {
struct frame_info *frn = frame->next; struct frame_info *frn = get_next_frame (frame);
FRAME_INIT_SAVED_REGS (frn); FRAME_INIT_SAVED_REGS (frn);
if (get_frame_saved_regs (frn)[IA64_CFM_REGNUM] != 0) if (get_frame_saved_regs (frn)[IA64_CFM_REGNUM] != 0)
cfm = read_memory_integer (get_frame_saved_regs (frn)[IA64_CFM_REGNUM], 8); cfm = read_memory_integer (get_frame_saved_regs (frn)[IA64_CFM_REGNUM], 8);
else if (frn->next && (get_frame_type (frn->next) == SIGTRAMP_FRAME)) else if (get_next_frame (frn) && (get_frame_type (get_next_frame (frn)) == SIGTRAMP_FRAME))
cfm = read_sigcontext_register (frn->next, IA64_PFS_REGNUM); cfm = read_sigcontext_register (get_next_frame (frn), IA64_PFS_REGNUM);
else if (frn->next else if (get_next_frame (frn)
&& DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frn->next), && DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (get_next_frame (frn)),
get_frame_base (frn->next), get_frame_base (get_next_frame (frn)),
get_frame_base (frn->next))) get_frame_base (get_next_frame (frn))))
cfm = deprecated_read_register_dummy (get_frame_pc (frn->next), cfm = deprecated_read_register_dummy (get_frame_pc (get_next_frame (frn)),
get_frame_base (frn->next), get_frame_base (get_next_frame (frn)),
IA64_PFS_REGNUM); IA64_PFS_REGNUM);
else else
cfm = read_register (IA64_PFS_REGNUM); cfm = read_register (IA64_PFS_REGNUM);
@ -1542,8 +1543,8 @@ ia64_init_extra_frame_info (int fromleaf, struct frame_info *frame)
frame->extra_info->cfm = cfm; frame->extra_info->cfm = cfm;
frame->extra_info->sof = cfm & 0x7f; frame->extra_info->sof = cfm & 0x7f;
frame->extra_info->sol = (cfm >> 7) & 0x7f; frame->extra_info->sol = (cfm >> 7) & 0x7f;
if (frame->next == 0 if (get_next_frame (frame) == 0
|| (get_frame_type (frame->next) == SIGTRAMP_FRAME) || (get_frame_type (get_next_frame (frame)) == SIGTRAMP_FRAME)
|| next_frame_is_call_dummy) || next_frame_is_call_dummy)
frame->extra_info->bsp = rse_address_add (bsp, -frame->extra_info->sof); frame->extra_info->bsp = rse_address_add (bsp, -frame->extra_info->sof);
else else

View file

@ -883,8 +883,8 @@ m68hc11_init_extra_frame_info (int fromleaf, struct frame_info *fi)
frame_extra_info_zalloc (fi, sizeof (struct frame_extra_info)); frame_extra_info_zalloc (fi, sizeof (struct frame_extra_info));
if (fi->next) if (get_next_frame (fi))
deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (fi->next)); deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (get_next_frame (fi)));
m68hc11_frame_init_saved_regs (fi); m68hc11_frame_init_saved_regs (fi);

View file

@ -283,8 +283,8 @@ m68k_frame_saved_pc (struct frame_info *frame)
{ {
if (get_frame_type (frame) == SIGTRAMP_FRAME) if (get_frame_type (frame) == SIGTRAMP_FRAME)
{ {
if (frame->next) if (get_next_frame (frame))
return read_memory_unsigned_integer (get_frame_base (frame->next) return read_memory_unsigned_integer (get_frame_base (get_next_frame (frame))
+ SIG_PC_FP_OFFSET, 4); + SIG_PC_FP_OFFSET, 4);
else else
return read_memory_unsigned_integer (read_register (SP_REGNUM) return read_memory_unsigned_integer (read_register (SP_REGNUM)
@ -336,8 +336,8 @@ delta68_frame_args_address (struct frame_info *frame_info)
else if (frameless_look_for_prologue (frame_info)) else if (frameless_look_for_prologue (frame_info))
{ {
/* Check for an interrupted system call */ /* Check for an interrupted system call */
if (frame_info->next && (get_frame_type (frame_info->next) == SIGTRAMP_FRAME)) if (get_next_frame (frame_info) && (get_frame_type (get_next_frame (frame_info)) == SIGTRAMP_FRAME))
return get_frame_base (frame_info->next) + 16; return get_frame_base (get_next_frame (frame_info)) + 16;
else else
return get_frame_base (frame_info) + 4; return get_frame_base (frame_info) + 4;
} }

View file

@ -385,7 +385,7 @@ mcore_analyze_prologue (struct frame_info *fi, CORE_ADDR pc, int skip_prologue)
if (fi != NULL && IS_RTS (insn)) if (fi != NULL && IS_RTS (insn))
{ {
mcore_insn_debug (("MCORE: got jmp r15")); mcore_insn_debug (("MCORE: got jmp r15"));
if (fi->next == NULL) if (get_next_frame (fi) == NULL)
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return get_frame_pc (fi); return get_frame_pc (fi);
} }
@ -393,7 +393,7 @@ mcore_analyze_prologue (struct frame_info *fi, CORE_ADDR pc, int skip_prologue)
/* Check for first insn of prologue */ /* Check for first insn of prologue */
if (fi != NULL && get_frame_pc (fi) == func_addr) if (fi != NULL && get_frame_pc (fi) == func_addr)
{ {
if (fi->next == NULL) if (get_next_frame (fi) == NULL)
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return get_frame_pc (fi); return get_frame_pc (fi);
} }
@ -613,7 +613,7 @@ mcore_analyze_prologue (struct frame_info *fi, CORE_ADDR pc, int skip_prologue)
/* Fix the frame pointer. When gcc uses r8 as a frame pointer, /* Fix the frame pointer. When gcc uses r8 as a frame pointer,
it is really an arg ptr. We adjust fi->frame to be a "real" it is really an arg ptr. We adjust fi->frame to be a "real"
frame pointer. */ frame pointer. */
if (fi->next == NULL) if (get_next_frame (fi) == NULL)
{ {
if (fi->extra_info->status & MY_FRAME_IN_SP) if (fi->extra_info->status & MY_FRAME_IN_SP)
deprecated_update_frame_base_hack (fi, read_sp () + framesize); deprecated_update_frame_base_hack (fi, read_sp () + framesize);
@ -756,7 +756,7 @@ mcore_virtual_frame_pointer (CORE_ADDR pc, int *reg, LONGEST *offset)
CORE_ADDR CORE_ADDR
mcore_find_callers_reg (struct frame_info *fi, int regnum) mcore_find_callers_reg (struct frame_info *fi, int regnum)
{ {
for (; fi != NULL; fi = fi->next) for (; fi != NULL; fi = get_next_frame (fi))
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi), if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi))) get_frame_base (fi)))
@ -1044,8 +1044,8 @@ mcore_store_return_value (struct type *type, char *valbuf)
void void
mcore_init_extra_frame_info (int fromleaf, struct frame_info *fi) mcore_init_extra_frame_info (int fromleaf, struct frame_info *fi)
{ {
if (fi && fi->next) if (fi && get_next_frame (fi))
deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (fi->next)); deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (get_next_frame (fi)));
frame_saved_regs_zalloc (fi); frame_saved_regs_zalloc (fi);

View file

@ -1449,7 +1449,8 @@ mips_find_saved_regs (struct frame_info *fci)
a signal, we assume that all registers have been saved. a signal, we assume that all registers have been saved.
This assumes that all register saves in a function happen before This assumes that all register saves in a function happen before
the first function call. */ the first function call. */
(fci->next == NULL || (get_frame_type (fci->next) == SIGTRAMP_FRAME)) (get_next_frame (fci) == NULL
|| (get_frame_type (get_next_frame (fci)) == SIGTRAMP_FRAME))
/* In a dummy frame we know exactly where things are saved. */ /* In a dummy frame we know exactly where things are saved. */
&& !PROC_DESC_IS_DUMMY (proc_desc) && !PROC_DESC_IS_DUMMY (proc_desc)
@ -1680,8 +1681,11 @@ mips_init_frame_pc_first (int fromleaf, struct frame_info *prev)
{ {
CORE_ADDR pc, tmp; CORE_ADDR pc, tmp;
pc = ((fromleaf) ? SAVED_PC_AFTER_CALL (prev->next) : pc = ((fromleaf)
prev->next ? FRAME_SAVED_PC (prev->next) : read_pc ()); ? SAVED_PC_AFTER_CALL (get_next_frame (prev))
: get_next_frame (prev)
? FRAME_SAVED_PC (get_next_frame (prev))
: read_pc ());
tmp = SKIP_TRAMPOLINE_CODE (pc); tmp = SKIP_TRAMPOLINE_CODE (pc);
return tmp ? tmp : pc; return tmp ? tmp : pc;
} }
@ -2466,7 +2470,9 @@ mips_init_extra_frame_info (int fromleaf, struct frame_info *fci)
/* Use proc_desc calculated in frame_chain */ /* Use proc_desc calculated in frame_chain */
mips_extra_func_info_t proc_desc = mips_extra_func_info_t proc_desc =
fci->next ? cached_proc_desc : find_proc_desc (get_frame_pc (fci), fci->next, 1); get_next_frame (fci)
? cached_proc_desc
: find_proc_desc (get_frame_pc (fci), get_next_frame (fci), 1);
frame_extra_info_zalloc (fci, sizeof (struct frame_extra_info)); frame_extra_info_zalloc (fci, sizeof (struct frame_extra_info));
@ -2481,7 +2487,7 @@ mips_init_extra_frame_info (int fromleaf, struct frame_info *fci)
interrupted by a signal at it's very start. */ interrupted by a signal at it's very start. */
if (get_frame_pc (fci) == PROC_LOW_ADDR (proc_desc) if (get_frame_pc (fci) == PROC_LOW_ADDR (proc_desc)
&& !PROC_DESC_IS_DUMMY (proc_desc)) && !PROC_DESC_IS_DUMMY (proc_desc))
deprecated_update_frame_base_hack (fci, read_next_frame_reg (fci->next, SP_REGNUM)); deprecated_update_frame_base_hack (fci, read_next_frame_reg (get_next_frame (fci), SP_REGNUM));
else if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fci), 0, 0)) else if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fci), 0, 0))
/* Do not ``fix'' fci->frame. It will have the value of the /* Do not ``fix'' fci->frame. It will have the value of the
generic dummy frame's top-of-stack (since the draft generic dummy frame's top-of-stack (since the draft
@ -2491,7 +2497,7 @@ mips_init_extra_frame_info (int fromleaf, struct frame_info *fci)
part of the dummy frames data. */ part of the dummy frames data. */
/* Do nothing. */; /* Do nothing. */;
else else
deprecated_update_frame_base_hack (fci, get_frame_pointer (fci->next, proc_desc)); deprecated_update_frame_base_hack (fci, get_frame_pointer (get_next_frame (fci), proc_desc));
if (proc_desc == &temp_proc_desc) if (proc_desc == &temp_proc_desc)
{ {

View file

@ -152,14 +152,14 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
status = target_read_memory (get_frame_pc (fi), buf, 1); status = target_read_memory (get_frame_pc (fi), buf, 1);
if (status != 0) if (status != 0)
{ {
if (fi->next == NULL) if (get_next_frame (fi) == NULL)
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return get_frame_pc (fi); return get_frame_pc (fi);
} }
if (buf[0] == 0xfe) if (buf[0] == 0xfe)
{ {
if (fi->next == NULL) if (get_next_frame (fi) == NULL)
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return get_frame_pc (fi); return get_frame_pc (fi);
} }
@ -169,7 +169,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
frame hasn't been allocated yet. */ frame hasn't been allocated yet. */
if (fi && get_frame_pc (fi) == func_addr) if (fi && get_frame_pc (fi) == func_addr)
{ {
if (fi->next == NULL) if (get_next_frame (fi) == NULL)
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return get_frame_pc (fi); return get_frame_pc (fi);
} }
@ -186,7 +186,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
status = target_read_memory (addr, buf, 2); status = target_read_memory (addr, buf, 2);
if (status != 0) if (status != 0)
{ {
if (fi && fi->next == NULL && fi->status & MY_FRAME_IN_SP) if (fi && get_next_frame (fi) == NULL && fi->status & MY_FRAME_IN_SP)
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return addr; return addr;
} }
@ -217,7 +217,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
{ {
/* We still haven't allocated our local stack. Handle this /* We still haven't allocated our local stack. Handle this
as if we stopped on the first or last insn of a function. */ as if we stopped on the first or last insn of a function. */
if (fi && fi->next == NULL) if (fi && get_next_frame (fi) == NULL)
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return addr; return addr;
} }
@ -225,7 +225,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
status = target_read_memory (addr, buf, 2); status = target_read_memory (addr, buf, 2);
if (status != 0) if (status != 0)
{ {
if (fi && fi->next == NULL) if (fi && get_next_frame (fi) == NULL)
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return addr; return addr;
} }
@ -244,7 +244,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
} }
else else
{ {
if (fi && fi->next == NULL) if (fi && get_next_frame (fi) == NULL)
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return addr; return addr;
} }
@ -262,7 +262,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
status = target_read_memory (addr, buf, 2); status = target_read_memory (addr, buf, 2);
if (status != 0) if (status != 0)
{ {
if (fi && fi->next == NULL && (fi->status & MY_FRAME_IN_SP)) if (fi && get_next_frame (fi) == NULL && (fi->status & MY_FRAME_IN_SP))
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return addr; return addr;
} }
@ -274,7 +274,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
addr += 2; addr += 2;
if (addr >= stop) if (addr >= stop)
{ {
if (fi && fi->next == NULL && (fi->status & MY_FRAME_IN_SP)) if (fi && get_next_frame (fi) == NULL && (fi->status & MY_FRAME_IN_SP))
deprecated_update_frame_base_hack (fi, read_sp () - stack_size); deprecated_update_frame_base_hack (fi, read_sp () - stack_size);
return addr; return addr;
} }
@ -284,7 +284,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
status = target_read_memory (addr + 2, buf, 2); status = target_read_memory (addr + 2, buf, 2);
if (status != 0) if (status != 0)
{ {
if (fi && fi->next == NULL && (fi->status & MY_FRAME_IN_SP)) if (fi && get_next_frame (fi) == NULL && (fi->status & MY_FRAME_IN_SP))
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return addr; return addr;
} }
@ -294,7 +294,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
addr += 4; addr += 4;
if (addr >= stop) if (addr >= stop)
{ {
if (fi && fi->next == NULL && (fi->status & MY_FRAME_IN_SP)) if (fi && get_next_frame (fi) == NULL && (fi->status & MY_FRAME_IN_SP))
deprecated_update_frame_base_hack (fi, read_sp () - stack_size); deprecated_update_frame_base_hack (fi, read_sp () - stack_size);
return addr; return addr;
} }
@ -304,7 +304,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
status = target_read_memory (addr + 2, buf, 3); status = target_read_memory (addr + 2, buf, 3);
if (status != 0) if (status != 0)
{ {
if (fi && fi->next == NULL && (fi->status & MY_FRAME_IN_SP)) if (fi && get_next_frame (fi) == NULL && (fi->status & MY_FRAME_IN_SP))
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return addr; return addr;
} }
@ -314,7 +314,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
addr += 5; addr += 5;
if (addr >= stop) if (addr >= stop)
{ {
if (fi && fi->next == NULL && (fi->status & MY_FRAME_IN_SP)) if (fi && get_next_frame (fi) == NULL && (fi->status & MY_FRAME_IN_SP))
deprecated_update_frame_base_hack (fi, read_sp () - stack_size); deprecated_update_frame_base_hack (fi, read_sp () - stack_size);
return addr; return addr;
} }
@ -333,7 +333,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
status = target_read_memory (addr + 1, buf, 2); status = target_read_memory (addr + 1, buf, 2);
if (status != 0) if (status != 0)
{ {
if (fi && fi->next == NULL && (fi->status & MY_FRAME_IN_SP)) if (fi && get_next_frame (fi) == NULL && (fi->status & MY_FRAME_IN_SP))
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return addr; return addr;
} }
@ -345,7 +345,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
status = find_pc_partial_function (temp, &name, NULL, NULL); status = find_pc_partial_function (temp, &name, NULL, NULL);
if (status == 0) if (status == 0)
{ {
if (fi && fi->next == NULL && (fi->status & MY_FRAME_IN_SP)) if (fi && get_next_frame (fi) == NULL && (fi->status & MY_FRAME_IN_SP))
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return addr; return addr;
} }
@ -359,7 +359,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
if (addr >= stop) if (addr >= stop)
{ {
if (fi && fi->next == NULL) if (fi && get_next_frame (fi) == NULL)
{ {
fi->stack_size -= 16; fi->stack_size -= 16;
deprecated_update_frame_base_hack (fi, read_sp () - fi->stack_size); deprecated_update_frame_base_hack (fi, read_sp () - fi->stack_size);
@ -374,7 +374,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
status = target_read_memory (addr + 2, buf, 3); status = target_read_memory (addr + 2, buf, 3);
if (status != 0) if (status != 0)
{ {
if (fi && fi->next == NULL && (fi->status & MY_FRAME_IN_SP)) if (fi && get_next_frame (fi) == NULL && (fi->status & MY_FRAME_IN_SP))
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return addr; return addr;
} }
@ -386,7 +386,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
status = find_pc_partial_function (temp, &name, NULL, NULL); status = find_pc_partial_function (temp, &name, NULL, NULL);
if (status == 0) if (status == 0)
{ {
if (fi && fi->next == NULL && (fi->status & MY_FRAME_IN_SP)) if (fi && get_next_frame (fi) == NULL && (fi->status & MY_FRAME_IN_SP))
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return addr; return addr;
} }
@ -400,7 +400,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
if (addr >= stop) if (addr >= stop)
{ {
if (fi && fi->next == NULL && (fi->status & MY_FRAME_IN_SP)) if (fi && get_next_frame (fi) == NULL && (fi->status & MY_FRAME_IN_SP))
{ {
fi->stack_size -= 16; fi->stack_size -= 16;
deprecated_update_frame_base_hack (fi, read_sp () - fi->stack_size); deprecated_update_frame_base_hack (fi, read_sp () - fi->stack_size);
@ -420,7 +420,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
fi->stack_size -= 16; fi->stack_size -= 16;
/* Update fi->frame if necessary. */ /* Update fi->frame if necessary. */
if (fi && fi->next == NULL) if (fi && get_next_frame (fi) == NULL)
deprecated_update_frame_base_hack (fi, read_sp () - fi->stack_size); deprecated_update_frame_base_hack (fi, read_sp () - fi->stack_size);
/* After the out of line prologue, there may be another /* After the out of line prologue, there may be another
@ -470,7 +470,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
status = target_read_memory (addr + 2, buf, 3); status = target_read_memory (addr + 2, buf, 3);
if (status != 0) if (status != 0)
{ {
if (fi && fi->next == NULL) if (fi && get_next_frame (fi) == NULL)
{ {
fi->fsr.regs[2] = get_frame_base (fi) + fi->stack_size + 4; fi->fsr.regs[2] = get_frame_base (fi) + fi->stack_size + 4;
fi->fsr.regs[3] = get_frame_base (fi) + fi->stack_size + 8; fi->fsr.regs[3] = get_frame_base (fi) + fi->stack_size + 8;
@ -487,7 +487,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
/* Now that we know the size of the outgoing arguments, fix /* Now that we know the size of the outgoing arguments, fix
fi->frame again if this is the innermost frame. */ fi->frame again if this is the innermost frame. */
if (fi && fi->next == NULL) if (fi && get_next_frame (fi) == NULL)
deprecated_update_frame_base_hack (fi, get_frame_base (fi) - outgoing_args_size); deprecated_update_frame_base_hack (fi, get_frame_base (fi) - outgoing_args_size);
/* Note the register save information and update the stack /* Note the register save information and update the stack
@ -509,7 +509,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
If MY_FRAME_IN_SP is set and we're the innermost frame, then we If MY_FRAME_IN_SP is set and we're the innermost frame, then we
need to fix fi->frame so that backtracing, find_frame_saved_regs, need to fix fi->frame so that backtracing, find_frame_saved_regs,
etc work correctly. */ etc work correctly. */
if (fi && fi->next == NULL && (fi->status & MY_FRAME_IN_SP) != 0) if (fi && get_next_frame (fi) == NULL && (fi->status & MY_FRAME_IN_SP) != 0)
deprecated_update_frame_base_hack (fi, read_sp () - fi->stack_size); deprecated_update_frame_base_hack (fi, read_sp () - fi->stack_size);
/* And last we have the register saves. These are relatively /* And last we have the register saves. These are relatively
@ -880,8 +880,8 @@ mn10200_frame_saved_pc (struct frame_info *fi)
void void
mn10200_init_extra_frame_info (struct frame_info *fi) mn10200_init_extra_frame_info (struct frame_info *fi)
{ {
if (fi->next) if (get_next_frame (fi))
deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (fi->next)); deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (get_next_frame (fi)));
memset (fi->fsr.regs, '\000', sizeof fi->fsr.regs); memset (fi->fsr.regs, '\000', sizeof fi->fsr.regs);
fi->status = 0; fi->status = 0;

View file

@ -207,7 +207,7 @@ mn10300_breakpoint_from_pc (CORE_ADDR *bp_addr, int *bp_size)
static void static void
fix_frame_pointer (struct frame_info *fi, int stack_size) fix_frame_pointer (struct frame_info *fi, int stack_size)
{ {
if (fi && fi->next == NULL) if (fi && get_next_frame (fi) == NULL)
{ {
if (fi->extra_info->status & MY_FRAME_IN_SP) if (fi->extra_info->status & MY_FRAME_IN_SP)
deprecated_update_frame_base_hack (fi, read_sp () - stack_size); deprecated_update_frame_base_hack (fi, read_sp () - stack_size);
@ -436,7 +436,7 @@ mn10300_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
In this case fi->frame is bogus, we need to fix it. */ In this case fi->frame is bogus, we need to fix it. */
if (fi && buf[0] == 0xf0 && buf[1] == 0xfc) if (fi && buf[0] == 0xf0 && buf[1] == 0xfc)
{ {
if (fi->next == NULL) if (get_next_frame (fi) == NULL)
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return get_frame_pc (fi); return get_frame_pc (fi);
} }
@ -445,7 +445,7 @@ mn10300_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
frame hasn't been allocated yet. */ frame hasn't been allocated yet. */
if (fi && get_frame_pc (fi) == func_addr) if (fi && get_frame_pc (fi) == func_addr)
{ {
if (fi->next == NULL) if (get_next_frame (fi) == NULL)
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
return get_frame_pc (fi); return get_frame_pc (fi);
} }
@ -494,7 +494,7 @@ mn10300_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
if (addr >= stop) if (addr >= stop)
{ {
/* Fix fi->frame since it's bogus at this point. */ /* Fix fi->frame since it's bogus at this point. */
if (fi && fi->next == NULL) if (fi && get_next_frame (fi) == NULL)
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
/* Note if/where callee saved registers were saved. */ /* Note if/where callee saved registers were saved. */
@ -507,7 +507,7 @@ mn10300_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
if (status != 0) if (status != 0)
{ {
/* Fix fi->frame since it's bogus at this point. */ /* Fix fi->frame since it's bogus at this point. */
if (fi && fi->next == NULL) if (fi && get_next_frame (fi) == NULL)
deprecated_update_frame_base_hack (fi, read_sp ()); deprecated_update_frame_base_hack (fi, read_sp ());
/* Note if/where callee saved registers were saved. */ /* Note if/where callee saved registers were saved. */
@ -897,8 +897,8 @@ mn10300_frame_saved_pc (struct frame_info *fi)
static void static void
mn10300_init_extra_frame_info (int fromleaf, struct frame_info *fi) mn10300_init_extra_frame_info (int fromleaf, struct frame_info *fi)
{ {
if (fi->next) if (get_next_frame (fi))
deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (fi->next)); deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (get_next_frame (fi)));
frame_saved_regs_zalloc (fi); frame_saved_regs_zalloc (fi);
frame_extra_info_zalloc (fi, sizeof (struct frame_extra_info)); frame_extra_info_zalloc (fi, sizeof (struct frame_extra_info));

View file

@ -325,9 +325,9 @@ ns32k_sigtramp_saved_pc (struct frame_info *frame)
buf = alloca (ptrbytes); buf = alloca (ptrbytes);
/* Get sigcontext address, it is the third parameter on the stack. */ /* Get sigcontext address, it is the third parameter on the stack. */
if (frame->next) if (get_next_frame (frame))
sigcontext_addr = read_memory_typed_address sigcontext_addr = read_memory_typed_address
(FRAME_ARGS_ADDRESS (frame->next) + FRAME_ARGS_SKIP + sigcontext_offs, (FRAME_ARGS_ADDRESS (get_next_frame (frame)) + FRAME_ARGS_SKIP + sigcontext_offs,
builtin_type_void_data_ptr); builtin_type_void_data_ptr);
else else
sigcontext_addr = read_memory_typed_address sigcontext_addr = read_memory_typed_address

View file

@ -316,18 +316,19 @@ s390_get_frame_info (CORE_ADDR pc, struct frame_extra_info *fextra_info,
if (instr[0] == S390_SYSCALL_OPCODE && test_pc == pc) if (instr[0] == S390_SYSCALL_OPCODE && test_pc == pc)
{ {
good_prologue = 1; good_prologue = 1;
if (saved_regs && fextra_info && fi->next && fi->next->extra_info if (saved_regs && fextra_info && get_next_frame (fi)
&& fi->next->extra_info->sigcontext) && get_next_frame (fi)->extra_info
&& get_next_frame (fi)->extra_info->sigcontext)
{ {
/* We are backtracing from a signal handler */ /* We are backtracing from a signal handler */
save_reg_addr = fi->next->extra_info->sigcontext + save_reg_addr = get_next_frame (fi)->extra_info->sigcontext +
REGISTER_BYTE (S390_GP0_REGNUM); REGISTER_BYTE (S390_GP0_REGNUM);
for (regidx = 0; regidx < S390_NUM_GPRS; regidx++) for (regidx = 0; regidx < S390_NUM_GPRS; regidx++)
{ {
saved_regs[S390_GP0_REGNUM + regidx] = save_reg_addr; saved_regs[S390_GP0_REGNUM + regidx] = save_reg_addr;
save_reg_addr += S390_GPR_SIZE; save_reg_addr += S390_GPR_SIZE;
} }
save_reg_addr = fi->next->extra_info->sigcontext + save_reg_addr = get_next_frame (fi)->extra_info->sigcontext +
(GDB_TARGET_IS_ESAME ? S390X_SIGREGS_FP0_OFFSET : (GDB_TARGET_IS_ESAME ? S390X_SIGREGS_FP0_OFFSET :
S390_SIGREGS_FP0_OFFSET); S390_SIGREGS_FP0_OFFSET);
for (regidx = 0; regidx < S390_NUM_FPRS; regidx++) for (regidx = 0; regidx < S390_NUM_FPRS; regidx++)
@ -787,7 +788,7 @@ s390_frameless_function_invocation (struct frame_info *fi)
struct frame_extra_info fextra_info, *fextra_info_ptr; struct frame_extra_info fextra_info, *fextra_info_ptr;
int frameless = 0; int frameless = 0;
if (fi->next == NULL) /* no may be frameless */ if (get_next_frame (fi) == NULL) /* no may be frameless */
{ {
if (fi->extra_info) if (fi->extra_info)
fextra_info_ptr = fi->extra_info; fextra_info_ptr = fi->extra_info;

View file

@ -995,7 +995,7 @@ sh64_frame_chain (struct frame_info *frame)
static CORE_ADDR static CORE_ADDR
sh_find_callers_reg (struct frame_info *fi, int regnum) sh_find_callers_reg (struct frame_info *fi, int regnum)
{ {
for (; fi; fi = fi->next) for (; fi; fi = get_next_frame (fi))
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi), if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi))) get_frame_base (fi)))
/* When the caller requests PR from the dummy frame, we return PC because /* When the caller requests PR from the dummy frame, we return PC because
@ -1019,7 +1019,7 @@ sh64_get_saved_pr (struct frame_info *fi, int pr_regnum)
{ {
int media_mode = 0; int media_mode = 0;
for (; fi; fi = fi->next) for (; fi; fi = get_next_frame (fi))
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi), if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi))) get_frame_base (fi)))
/* When the caller requests PR from the dummy frame, we return PC because /* When the caller requests PR from the dummy frame, we return PC because
@ -1732,8 +1732,8 @@ sh_init_extra_frame_info (int fromleaf, struct frame_info *fi)
frame_extra_info_zalloc (fi, sizeof (struct frame_extra_info)); frame_extra_info_zalloc (fi, sizeof (struct frame_extra_info));
if (fi->next) if (get_next_frame (fi))
deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (fi->next)); deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (get_next_frame (fi)));
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi), if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi))) get_frame_base (fi)))
@ -1764,8 +1764,8 @@ sh64_init_extra_frame_info (int fromleaf, struct frame_info *fi)
frame_extra_info_zalloc (fi, sizeof (struct frame_extra_info)); frame_extra_info_zalloc (fi, sizeof (struct frame_extra_info));
if (fi->next) if (get_next_frame (fi))
deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (fi->next)); deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (get_next_frame (fi)));
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi), if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi))) get_frame_base (fi)))
@ -1823,7 +1823,7 @@ sh64_get_saved_register (char *raw_buffer, int *optimized, CORE_ADDR *addrp,
the current frame itself: otherwise, we would be getting the the current frame itself: otherwise, we would be getting the
previous frame's registers which were saved by the current frame. */ previous frame's registers which were saved by the current frame. */
while (frame && ((frame = frame->next) != NULL)) while (frame && ((frame = get_next_frame (frame)) != NULL))
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
get_frame_base (frame), get_frame_base (frame),

View file

@ -296,13 +296,15 @@ sparc_init_extra_frame_info (int fromleaf, struct frame_info *fi)
frame_saved_regs_zalloc (fi); frame_saved_regs_zalloc (fi);
fi->extra_info->bottom = fi->extra_info->bottom =
(fi->next ? (get_next_frame (fi)
(get_frame_base (fi) == get_frame_base (fi->next) ? fi->next->extra_info->bottom : ? (get_frame_base (fi) == get_frame_base (get_next_frame (fi))
get_frame_base (fi->next)) : read_sp ()); ? get_next_frame (fi)->extra_info->bottom
: get_frame_base (get_next_frame (fi)))
: read_sp ());
/* If fi->next is NULL, then we already set ->frame by passing read_fp() /* If fi->next is NULL, then we already set ->frame by passing read_fp()
to create_new_frame. */ to create_new_frame. */
if (fi->next) if (get_next_frame (fi))
{ {
char *buf; char *buf;
@ -310,15 +312,15 @@ sparc_init_extra_frame_info (int fromleaf, struct frame_info *fi)
/* Compute ->frame as if not flat. If it is flat, we'll change /* Compute ->frame as if not flat. If it is flat, we'll change
it later. */ it later. */
if (fi->next->next != NULL if (get_next_frame (get_next_frame (fi)) != NULL
&& ((get_frame_type (fi->next->next) == SIGTRAMP_FRAME) && ((get_frame_type (get_next_frame (get_next_frame (fi))) == SIGTRAMP_FRAME)
|| deprecated_frame_in_dummy (fi->next->next)) || deprecated_frame_in_dummy (get_next_frame (get_next_frame (fi))))
&& frameless_look_for_prologue (fi->next)) && frameless_look_for_prologue (get_next_frame (fi)))
{ {
/* A frameless function interrupted by a signal did not change /* A frameless function interrupted by a signal did not change
the frame pointer, fix up frame pointer accordingly. */ the frame pointer, fix up frame pointer accordingly. */
deprecated_update_frame_base_hack (fi, get_frame_base (fi->next)); deprecated_update_frame_base_hack (fi, get_frame_base (get_next_frame (fi)));
fi->extra_info->bottom = fi->next->extra_info->bottom; fi->extra_info->bottom = get_next_frame (fi)->extra_info->bottom;
} }
else else
{ {
@ -415,11 +417,11 @@ sparc_init_extra_frame_info (int fromleaf, struct frame_info *fi)
} }
} }
} }
if (fi->next && get_frame_base (fi) == 0) if (get_next_frame (fi) && get_frame_base (fi) == 0)
{ {
/* Kludge to cause init_prev_frame_info to destroy the new frame. */ /* Kludge to cause init_prev_frame_info to destroy the new frame. */
deprecated_update_frame_base_hack (fi, get_frame_base (fi->next)); deprecated_update_frame_base_hack (fi, get_frame_base (get_next_frame (fi)));
deprecated_update_frame_pc_hack (fi, get_frame_pc (fi->next)); deprecated_update_frame_pc_hack (fi, get_frame_pc (get_next_frame (fi)));
} }
} }
@ -483,9 +485,9 @@ sparc_frame_saved_pc (struct frame_info *frame)
return extract_address (scbuf, sizeof (scbuf)); return extract_address (scbuf, sizeof (scbuf));
} }
else if (frame->extra_info->in_prologue || else if (frame->extra_info->in_prologue ||
(frame->next != NULL && (get_next_frame (frame) != NULL &&
((get_frame_type (frame->next) == SIGTRAMP_FRAME) || ((get_frame_type (get_next_frame (frame)) == SIGTRAMP_FRAME) ||
deprecated_frame_in_dummy (frame->next)) && deprecated_frame_in_dummy (get_next_frame (frame))) &&
frameless_look_for_prologue (frame))) frameless_look_for_prologue (frame)))
{ {
/* A frameless function interrupted by a signal did not save /* A frameless function interrupted by a signal did not save
@ -822,7 +824,7 @@ sparc_get_saved_register (char *raw_buffer, int *optimized, CORE_ADDR *addrp,
} }
frame1 = frame->next; frame1 = get_next_frame (frame);
/* Get saved PC from the frame info if not in innermost frame. */ /* Get saved PC from the frame info if not in innermost frame. */
if (regnum == PC_REGNUM && frame1 != NULL) if (regnum == PC_REGNUM && frame1 != NULL)
@ -927,7 +929,7 @@ sparc_get_saved_register (char *raw_buffer, int *optimized, CORE_ADDR *addrp,
} }
if (addr != 0) if (addr != 0)
break; break;
frame1 = frame1->next; frame1 = get_next_frame (frame1);
} }
if (addr != 0) if (addr != 0)
{ {
@ -1181,7 +1183,7 @@ sparc_frame_find_saved_regs (struct frame_info *fi, CORE_ADDR *saved_regs_addr)
(frame_addr + (regnum - I0_REGNUM) * SPARC_INTREG_SIZE (frame_addr + (regnum - I0_REGNUM) * SPARC_INTREG_SIZE
+ FRAME_SAVED_I0); + FRAME_SAVED_I0);
} }
if (fi->next) if (get_next_frame (fi))
{ {
if (fi->extra_info->flat) if (fi->extra_info->flat)
{ {
@ -1191,8 +1193,8 @@ sparc_frame_find_saved_regs (struct frame_info *fi, CORE_ADDR *saved_regs_addr)
{ {
/* Pull off either the next frame pointer or the stack pointer */ /* Pull off either the next frame pointer or the stack pointer */
CORE_ADDR next_next_frame_addr = CORE_ADDR next_next_frame_addr =
(fi->next->extra_info->bottom ? (get_next_frame (fi)->extra_info->bottom ?
fi->next->extra_info->bottom : read_sp ()); get_next_frame (fi)->extra_info->bottom : read_sp ());
for (regnum = O0_REGNUM; regnum < O0_REGNUM + 8; regnum++) for (regnum = O0_REGNUM; regnum < O0_REGNUM + 8; regnum++)
saved_regs_addr[regnum] = saved_regs_addr[regnum] =
(next_next_frame_addr (next_next_frame_addr

View file

@ -800,7 +800,7 @@ v850_scan_prologue (CORE_ADDR pc, struct prologue_info *pi)
CORE_ADDR CORE_ADDR
v850_find_callers_reg (struct frame_info *fi, int regnum) v850_find_callers_reg (struct frame_info *fi, int regnum)
{ {
for (; fi; fi = fi->next) for (; fi; fi = get_next_frame (fi))
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi), if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi))) get_frame_base (fi)))
return deprecated_read_register_dummy (get_frame_pc (fi), return deprecated_read_register_dummy (get_frame_pc (fi),
@ -1130,7 +1130,7 @@ v850_frame_init_saved_regs (struct frame_info *fi)
v850_scan_prologue (get_frame_pc (fi), &pi); v850_scan_prologue (get_frame_pc (fi), &pi);
if (!fi->next && pi.framereg == E_SP_REGNUM) if (!get_next_frame (fi) && pi.framereg == E_SP_REGNUM)
deprecated_update_frame_base_hack (fi, read_register (pi.framereg) - pi.frameoffset); deprecated_update_frame_base_hack (fi, read_register (pi.framereg) - pi.frameoffset);
for (pifsr = pifsrs; pifsr->framereg; pifsr++) for (pifsr = pifsrs; pifsr->framereg; pifsr++)
@ -1164,8 +1164,8 @@ v850_init_extra_frame_info (int fromleaf, struct frame_info *fi)
{ {
struct prologue_info pi; struct prologue_info pi;
if (fi->next) if (get_next_frame (fi))
deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (fi->next)); deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (get_next_frame (fi)));
v850_frame_init_saved_regs (fi); v850_frame_init_saved_regs (fi);
} }

View file

@ -170,9 +170,10 @@ vax_sigtramp_saved_pc (struct frame_info *frame)
buf = alloca (ptrbytes); buf = alloca (ptrbytes);
/* Get sigcontext address, it is the third parameter on the stack. */ /* Get sigcontext address, it is the third parameter on the stack. */
if (frame->next) if (get_next_frame (frame))
sigcontext_addr = read_memory_typed_address sigcontext_addr = read_memory_typed_address
(FRAME_ARGS_ADDRESS (frame->next) + FRAME_ARGS_SKIP + sigcontext_offs, (FRAME_ARGS_ADDRESS (get_next_frame (frame))
+ FRAME_ARGS_SKIP + sigcontext_offs,
builtin_type_void_data_ptr); builtin_type_void_data_ptr);
else else
sigcontext_addr = read_memory_typed_address sigcontext_addr = read_memory_typed_address
@ -205,8 +206,8 @@ vax_frame_args_address_correct (struct frame_info *frame)
(which is one reason that "info frame" exists). So, return 0 (indicating (which is one reason that "info frame" exists). So, return 0 (indicating
we don't know the address of the arglist) if we don't know what frame we don't know the address of the arglist) if we don't know what frame
this frame calls. */ this frame calls. */
if (frame->next) if (get_next_frame (frame))
return (read_memory_integer (get_frame_base (frame->next) + 8, 4)); return (read_memory_integer (get_frame_base (get_next_frame (frame)) + 8, 4));
return (0); return (0);
} }
@ -217,8 +218,8 @@ vax_frame_args_address (struct frame_info *frame)
/* In most of GDB, getting the args address is too important to /* In most of GDB, getting the args address is too important to
just say "I don't know". This is sometimes wrong for functions just say "I don't know". This is sometimes wrong for functions
that aren't on top of the stack, but c'est la vie. */ that aren't on top of the stack, but c'est la vie. */
if (frame->next) if (get_next_frame (frame))
return (read_memory_integer (get_frame_base (frame->next) + 8, 4)); return (read_memory_integer (get_frame_base (get_next_frame (frame)) + 8, 4));
return (read_register (VAX_AP_REGNUM)); return (read_register (VAX_AP_REGNUM));
} }

View file

@ -91,11 +91,11 @@ x86_64_linux_sigcontext_addr (struct frame_info *frame)
pc = x86_64_linux_sigtramp_start (get_frame_pc (frame)); pc = x86_64_linux_sigtramp_start (get_frame_pc (frame));
if (pc) if (pc)
{ {
if (frame->next) if (get_next_frame (frame))
/* If this isn't the top frame, the next frame must be for the /* If this isn't the top frame, the next frame must be for the
signal handler itself. The sigcontext structure is part of signal handler itself. The sigcontext structure is part of
the user context. */ the user context. */
return get_frame_base (frame->next) + LINUX_SIGINFO_SIZE + return get_frame_base (get_next_frame (frame)) + LINUX_SIGINFO_SIZE +
LINUX_UCONTEXT_SIGCONTEXT_OFFSET; LINUX_UCONTEXT_SIGCONTEXT_OFFSET;
@ -167,7 +167,7 @@ x86_64_linux_frame_chain (struct frame_info *fi)
addr = get_frame_base (fi); addr = get_frame_base (fi);
} }
else else
addr = get_frame_base (fi->next); addr = get_frame_base (get_next_frame (fi));
addr += LINUX_SIGINFO_SIZE + LINUX_UCONTEXT_SIGCONTEXT_OFFSET; addr += LINUX_SIGINFO_SIZE + LINUX_UCONTEXT_SIGCONTEXT_OFFSET;
@ -181,7 +181,8 @@ x86_64_init_frame_pc (int fromleaf, struct frame_info *fi)
{ {
CORE_ADDR addr; CORE_ADDR addr;
if (get_next_frame (fi) && (get_frame_type (fi->next) == SIGTRAMP_FRAME)) if (get_next_frame (fi)
&& (get_frame_type (get_next_frame (fi)) == SIGTRAMP_FRAME))
{ {
addr = get_frame_base (get_next_frame (get_next_frame (fi))) addr = get_frame_base (get_next_frame (get_next_frame (fi)))
+ LINUX_SIGINFO_SIZE + LINUX_UCONTEXT_SIGCONTEXT_OFFSET; + LINUX_SIGINFO_SIZE + LINUX_UCONTEXT_SIGCONTEXT_OFFSET;

View file

@ -803,8 +803,8 @@ xstormy16_init_extra_frame_info (int fromleaf, struct frame_info *fi)
Fortunately this will never happen from the outermost Fortunately this will never happen from the outermost
frame, so we should be able to get the saved pc from frame, so we should be able to get the saved pc from
the next frame. */ the next frame. */
if (fi->next) if (get_next_frame (fi))
deprecated_update_frame_pc_hack (fi, xstormy16_frame_saved_pc (fi->next)); deprecated_update_frame_pc_hack (fi, xstormy16_frame_saved_pc (get_next_frame (fi)));
} }
/* Take care of the saved_regs right here (non-lazy). */ /* Take care of the saved_regs right here (non-lazy). */