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

* alpha-tdep.c: Use get_frame_base.
	* arm-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto.
	* h8300-tdep.c, i386-tdep.c, ia64-tdep.c, m68hc11-tdep.c: Ditto.
	* m68k-tdep.c, mcore-tdep.c, mips-tdep.c, mn10200-tdep.c: Ditto.
	* mn10300-tdep.c, ns32k-tdep.c, s390-tdep.c, sh-tdep.c: Ditto.
	* sparc-tdep.c, v850-tdep.c, vax-tdep.c: Ditto.
	* x86-64-linux-tdep.c, xstormy16-tdep.c: Ditto.
	* config/h8500/tm-h8500.h, config/mn10200/tm-mn10200.h: Ditto.
	* config/sparc/tm-sparc.h: Ditto.
This commit is contained in:
Andrew Cagney 2003-01-08 01:53:38 +00:00
parent a3982d4858
commit 1e2330ba1f
26 changed files with 407 additions and 299 deletions

View file

@ -1,3 +1,15 @@
2003-01-07 Andrew Cagney <cagney@redhat.com>
* alpha-tdep.c: Use get_frame_base.
* arm-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto.
* h8300-tdep.c, i386-tdep.c, ia64-tdep.c, m68hc11-tdep.c: Ditto.
* m68k-tdep.c, mcore-tdep.c, mips-tdep.c, mn10200-tdep.c: Ditto.
* mn10300-tdep.c, ns32k-tdep.c, s390-tdep.c, sh-tdep.c: Ditto.
* sparc-tdep.c, v850-tdep.c, vax-tdep.c: Ditto.
* x86-64-linux-tdep.c, xstormy16-tdep.c: Ditto.
* config/h8500/tm-h8500.h, config/mn10200/tm-mn10200.h: Ditto.
* config/sparc/tm-sparc.h: Ditto.
2003-01-07 Andrew Cagney <cagney@redhat.com> 2003-01-07 Andrew Cagney <cagney@redhat.com>
* frame.c (deprecated_get_frame_context): New function. * frame.c (deprecated_get_frame_context): New function.

View file

@ -411,7 +411,7 @@ alpha_find_saved_regs (struct frame_info *frame)
/* Fill in the offsets for the registers which gen_mask says /* Fill in the offsets for the registers which gen_mask says
were saved. */ were saved. */
reg_position = frame->frame + PROC_REG_OFFSET (proc_desc); reg_position = get_frame_base (frame) + PROC_REG_OFFSET (proc_desc);
mask = PROC_REG_MASK (proc_desc); mask = PROC_REG_MASK (proc_desc);
returnreg = PROC_PC_REG (proc_desc); returnreg = PROC_PC_REG (proc_desc);
@ -436,7 +436,7 @@ alpha_find_saved_regs (struct frame_info *frame)
/* Fill in the offsets for the registers which float_mask says /* Fill in the offsets for the registers which float_mask says
were saved. */ were saved. */
reg_position = frame->frame + PROC_FREG_OFFSET (proc_desc); reg_position = get_frame_base (frame) + PROC_FREG_OFFSET (proc_desc);
mask = PROC_FREG_MASK (proc_desc); mask = PROC_FREG_MASK (proc_desc);
for (ireg = 0; ireg <= 31; ++ireg) for (ireg = 0; ireg <= 31; ++ireg)
@ -454,7 +454,7 @@ alpha_frame_init_saved_regs (struct frame_info *fi)
{ {
if (get_frame_saved_regs (fi) == NULL) if (get_frame_saved_regs (fi) == NULL)
alpha_find_saved_regs (fi); alpha_find_saved_regs (fi);
get_frame_saved_regs (fi)[SP_REGNUM] = fi->frame; get_frame_saved_regs (fi)[SP_REGNUM] = get_frame_base (fi);
} }
static CORE_ADDR static CORE_ADDR
@ -473,7 +473,7 @@ read_next_frame_reg (struct frame_info *fi, int regno)
/* 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. */
if (regno == SP_REGNUM && !(get_frame_type (fi) == SIGTRAMP_FRAME)) if (regno == SP_REGNUM && !(get_frame_type (fi) == SIGTRAMP_FRAME))
return fi->frame; return get_frame_base (fi);
else else
{ {
if (get_frame_saved_regs (fi) == NULL) if (get_frame_saved_regs (fi) == NULL)
@ -495,7 +495,7 @@ alpha_frame_saved_pc (struct frame_info *frame)
: frame->extra_info->pc_reg; : frame->extra_info->pc_reg;
if (proc_desc && PROC_DESC_IS_DUMMY (proc_desc)) if (proc_desc && PROC_DESC_IS_DUMMY (proc_desc))
return read_memory_integer (frame->frame - 8, 8); return read_memory_integer (get_frame_base (frame) - 8, 8);
return read_next_frame_reg (frame, pcreg); return read_next_frame_reg (frame, pcreg);
} }
@ -1043,13 +1043,13 @@ alpha_init_extra_frame_info (int fromleaf, struct frame_info *frame)
static CORE_ADDR static CORE_ADDR
alpha_frame_locals_address (struct frame_info *fi) alpha_frame_locals_address (struct frame_info *fi)
{ {
return (fi->frame - fi->extra_info->localoff); return (get_frame_base (fi) - fi->extra_info->localoff);
} }
static CORE_ADDR static CORE_ADDR
alpha_frame_args_address (struct frame_info *fi) alpha_frame_args_address (struct frame_info *fi)
{ {
return (fi->frame - (ALPHA_NUM_ARG_REGS * 8)); return (get_frame_base (fi) - (ALPHA_NUM_ARG_REGS * 8));
} }
/* ALPHA stack frames are almost impenetrable. When execution stops, /* ALPHA stack frames are almost impenetrable. When execution stops,
@ -1289,7 +1289,7 @@ alpha_pop_frame (void)
{ {
register int regnum; register int regnum;
struct frame_info *frame = get_current_frame (); struct frame_info *frame = get_current_frame ();
CORE_ADDR new_sp = frame->frame; CORE_ADDR new_sp = get_frame_base (frame);
alpha_extra_func_info_t proc_desc = frame->extra_info->proc_desc; alpha_extra_func_info_t proc_desc = frame->extra_info->proc_desc;

View file

@ -291,14 +291,14 @@ arm_frameless_function_invocation (struct frame_info *fi)
static CORE_ADDR static CORE_ADDR
arm_frame_args_address (struct frame_info *fi) arm_frame_args_address (struct frame_info *fi)
{ {
return fi->frame; return get_frame_base (fi);
} }
/* The address of the local variables in the frame. */ /* The address of the local variables in the frame. */
static CORE_ADDR static CORE_ADDR
arm_frame_locals_address (struct frame_info *fi) arm_frame_locals_address (struct frame_info *fi)
{ {
return fi->frame; return get_frame_base (fi);
} }
/* The number of arguments being passed in the frame. */ /* The number of arguments being passed in the frame. */
@ -832,7 +832,7 @@ arm_scan_prologue (struct frame_info *fi)
{ {
/* Get address of the stmfd in the prologue of the callee; /* Get address of the stmfd in the prologue of the callee;
the saved PC is the address of the stmfd + 8. */ the saved PC is the address of the stmfd + 8. */
if (!safe_read_memory_integer (fi->frame, 4, &return_value)) if (!safe_read_memory_integer (get_frame_base (fi), 4, &return_value))
return; return;
else else
{ {
@ -996,7 +996,8 @@ arm_find_callers_reg (struct frame_info *fi, int regnum)
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), 0, 0)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), 0, 0))
{ {
return deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, regnum); return deprecated_read_register_dummy (get_frame_pc (fi),
get_frame_base (fi), regnum);
} }
else if (get_frame_saved_regs (fi)[regnum] != 0) else if (get_frame_saved_regs (fi)[regnum] != 0)
{ {
@ -1025,7 +1026,7 @@ arm_frame_chain (struct frame_info *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))
/* A generic call dummy's frame is the same as caller's. */ /* A generic call dummy's frame is the same as caller's. */
return fi->frame; return get_frame_base (fi);
if (get_frame_pc (fi) < LOWEST_PC) if (get_frame_pc (fi) < LOWEST_PC)
return 0; return 0;
@ -1061,7 +1062,7 @@ arm_frame_chain (struct frame_info *fi)
if (framereg == ARM_FP_REGNUM || framereg == THUMB_FP_REGNUM) if (framereg == ARM_FP_REGNUM || framereg == THUMB_FP_REGNUM)
return arm_find_callers_reg (fi, framereg); return arm_find_callers_reg (fi, framereg);
else else
return fi->frame + fi->extra_info->framesize; return get_frame_base (fi) + fi->extra_info->framesize;
} }
/* This function actually figures out the frame address for a given pc /* This function actually figures out the frame address for a given pc
@ -1100,10 +1101,11 @@ arm_init_extra_frame_info (int fromleaf, struct frame_info *fi)
else if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi->next), 0, 0)) else if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi->next), 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), fi->next->frame, sp = deprecated_read_register_dummy (get_frame_pc (fi->next),
get_frame_base (fi->next),
ARM_SP_REGNUM); ARM_SP_REGNUM);
else else
sp = (fi->next->frame - fi->next->extra_info->frameoffset sp = (get_frame_base (fi->next) - fi->next->extra_info->frameoffset
+ fi->next->extra_info->framesize); + fi->next->extra_info->framesize);
/* Determine whether or not we're in a sigtramp frame. /* Determine whether or not we're in a sigtramp frame.
@ -1146,7 +1148,7 @@ arm_init_extra_frame_info (int fromleaf, struct frame_info *fi)
else if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi->next), 0, 0)) else if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi->next), 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, fi->next->frame); deprecated_update_frame_base_hack (fi, get_frame_base (fi->next));
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)
{ {
@ -1164,7 +1166,8 @@ arm_init_extra_frame_info (int fromleaf, struct frame_info *fi)
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 (get_frame_saved_regs (fi)[reg] != 0) if (get_frame_saved_regs (fi)[reg] != 0)
get_frame_saved_regs (fi)[reg] += (fi->frame + fi->extra_info->framesize get_frame_saved_regs (fi)[reg] += (get_frame_base (fi)
+ fi->extra_info->framesize
- fi->extra_info->frameoffset); - fi->extra_info->frameoffset);
} }
} }
@ -1183,10 +1186,13 @@ arm_frame_saved_pc (struct frame_info *fi)
{ {
/* If a dummy frame, pull the PC out of the frame's register buffer. */ /* If a dummy frame, pull the PC out of the frame's register buffer. */
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), 0, 0)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), 0, 0))
return deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, ARM_PC_REGNUM); return deprecated_read_register_dummy (get_frame_pc (fi),
get_frame_base (fi), ARM_PC_REGNUM);
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame - fi->extra_info->frameoffset, if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi),
fi->frame)) (get_frame_base (fi)
- fi->extra_info->frameoffset),
get_frame_base (fi)))
{ {
return read_memory_integer (get_frame_saved_regs (fi)[ARM_PC_REGNUM], return read_memory_integer (get_frame_saved_regs (fi)[ARM_PC_REGNUM],
REGISTER_RAW_SIZE (ARM_PC_REGNUM)); REGISTER_RAW_SIZE (ARM_PC_REGNUM));
@ -1508,10 +1514,12 @@ arm_pop_frame (void)
{ {
int regnum; int regnum;
struct frame_info *frame = get_current_frame (); struct frame_info *frame = get_current_frame ();
CORE_ADDR old_SP = (frame->frame - frame->extra_info->frameoffset CORE_ADDR old_SP = (get_frame_base (frame) - frame->extra_info->frameoffset
+ frame->extra_info->framesize); + frame->extra_info->framesize);
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
get_frame_base (frame),
get_frame_base (frame)))
{ {
generic_pop_dummy_frame (); generic_pop_dummy_frame ();
flush_cached_frames (); flush_cached_frames ();

View file

@ -749,11 +749,12 @@ avr_init_extra_frame_info (int fromleaf, struct frame_info *fi)
avr_scan_prologue (fi); avr_scan_prologue (fi);
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi)))
{ {
/* We need to setup fi->frame here because run_stack_dummy gets it wrong /* We need to setup fi->frame here because run_stack_dummy gets it wrong
by assuming it's always FP. */ by assuming it's always FP. */
deprecated_update_frame_base_hack (fi, deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, 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 (!fi->next) /* this is the innermost frame? */
@ -763,7 +764,7 @@ avr_init_extra_frame_info (int fromleaf, struct frame_info *fi)
{ {
struct frame_info *next_fi = fi->next; struct frame_info *next_fi = fi->next;
if (fi->extra_info->framereg == AVR_SP_REGNUM) if (fi->extra_info->framereg == AVR_SP_REGNUM)
deprecated_update_frame_base_hack (fi, next_fi->frame + 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 */
else else
{ {
@ -798,7 +799,7 @@ avr_init_extra_frame_info (int fromleaf, struct frame_info *fi)
CORE_ADDR addr; CORE_ADDR addr;
int i; int i;
addr = fi->frame + fi->extra_info->framesize + 1; addr = get_frame_base (fi) + fi->extra_info->framesize + 1;
/* Return address in stack in different endianness */ /* Return address in stack in different endianness */
@ -831,7 +832,9 @@ avr_pop_frame (void)
CORE_ADDR saddr; CORE_ADDR saddr;
struct frame_info *frame = get_current_frame (); struct frame_info *frame = get_current_frame ();
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
get_frame_base (frame),
get_frame_base (frame)))
{ {
generic_pop_dummy_frame (); generic_pop_dummy_frame ();
} }
@ -850,7 +853,7 @@ avr_pop_frame (void)
read_memory_unsigned_integer (saddr, 1)); read_memory_unsigned_integer (saddr, 1));
} }
else if (get_frame_saved_regs (frame)[regnum] && regnum == AVR_SP_REGNUM) else if (get_frame_saved_regs (frame)[regnum] && regnum == AVR_SP_REGNUM)
write_register (regnum, frame->frame + 2); write_register (regnum, get_frame_base (frame) + 2);
} }
/* Don't forget the update the PC too! */ /* Don't forget the update the PC too! */
@ -864,8 +867,11 @@ avr_pop_frame (void)
static CORE_ADDR static CORE_ADDR
avr_frame_saved_pc (struct frame_info *frame) avr_frame_saved_pc (struct frame_info *frame)
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
return deprecated_read_register_dummy (get_frame_pc (frame), frame->frame, get_frame_base (frame),
get_frame_base (frame)))
return deprecated_read_register_dummy (get_frame_pc (frame),
get_frame_base (frame),
AVR_PC_REGNUM); AVR_PC_REGNUM);
else else
return frame->extra_info->return_pc; return frame->extra_info->return_pc;
@ -1015,7 +1021,7 @@ avr_skip_prologue (CORE_ADDR pc)
static CORE_ADDR static CORE_ADDR
avr_frame_address (struct frame_info *fi) avr_frame_address (struct frame_info *fi)
{ {
return avr_make_saddr (fi->frame); return avr_make_saddr (get_frame_base (fi));
} }
/* Given a GDB frame, determine the address of the calling function's /* Given a GDB frame, determine the address of the calling function's
@ -1029,16 +1035,19 @@ avr_frame_address (struct frame_info *fi)
static CORE_ADDR static CORE_ADDR
avr_frame_chain (struct frame_info *frame) avr_frame_chain (struct frame_info *frame)
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
get_frame_base (frame),
get_frame_base (frame)))
{ {
/* initialize the return_pc now */ /* initialize the return_pc now */
frame->extra_info->return_pc frame->extra_info->return_pc
= deprecated_read_register_dummy (get_frame_pc (frame), frame->frame, = deprecated_read_register_dummy (get_frame_pc (frame),
get_frame_base (frame),
AVR_PC_REGNUM); AVR_PC_REGNUM);
return frame->frame; return get_frame_base (frame);
} }
return (frame->extra_info->is_main ? 0 return (frame->extra_info->is_main ? 0
: frame->frame + frame->extra_info->framesize + 2 /* ret addr */ ); : get_frame_base (frame) + frame->extra_info->framesize + 2 /* ret addr */ );
} }
/* Store the address of the place in which to copy the structure the /* Store the address of the place in which to copy the structure the

View file

@ -215,9 +215,9 @@ extern CORE_ADDR h8500_frame_chain (struct frame_info *);
#define FRAME_SAVED_PC(FRAME) frame_saved_pc(FRAME) #define FRAME_SAVED_PC(FRAME) frame_saved_pc(FRAME)
extern CORE_ADDR frame_saved_pc (struct frame_info *frame); extern CORE_ADDR frame_saved_pc (struct frame_info *frame);
#define FRAME_ARGS_ADDRESS(fi) ((fi)->frame) #define FRAME_ARGS_ADDRESS(fi) (get_frame_base (fi))
#define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame) #define FRAME_LOCALS_ADDRESS(fi) (get_frame_base (fi))
/* Set VAL to the number of args passed to frame described by FI. /* Set VAL to the number of args passed to frame described by FI.
Can set VAL to -1, meaning no way to tell. */ Can set VAL to -1, meaning no way to tell. */

View file

@ -177,8 +177,8 @@ extern CORE_ADDR mn10200_skip_prologue (CORE_ADDR);
#define FRAME_ARGS_SKIP 0 #define FRAME_ARGS_SKIP 0
#define FRAME_ARGS_ADDRESS(fi) ((fi)->frame) #define FRAME_ARGS_ADDRESS(fi) (get_frame_base (fi))
#define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame) #define FRAME_LOCALS_ADDRESS(fi) (get_frame_base (fi))
#define FRAME_NUM_ARGS(fi) (-1) #define FRAME_NUM_ARGS(fi) (-1)
extern void mn10200_pop_frame (struct frame_info *); extern void mn10200_pop_frame (struct frame_info *);

View file

@ -488,9 +488,9 @@ extern CORE_ADDR sparc_frame_chain (struct frame_info *);
extern CORE_ADDR sparc_frame_saved_pc (struct frame_info *); extern CORE_ADDR sparc_frame_saved_pc (struct frame_info *);
/* If the argument is on the stack, it will be here. */ /* If the argument is on the stack, it will be here. */
#define FRAME_ARGS_ADDRESS(FI) ((FI)->frame) #define FRAME_ARGS_ADDRESS(FI) (get_frame_base (FI))
#define FRAME_LOCALS_ADDRESS(FI) ((FI)->frame) #define FRAME_LOCALS_ADDRESS(FI) (get_frame_base (FI))
/* Set VAL to the number of args passed to frame described by FI. /* Set VAL to the number of args passed to frame described by FI.
Can set VAL to -1, meaning no way to tell. */ Can set VAL to -1, meaning no way to tell. */
@ -526,7 +526,7 @@ extern void sparc_print_extra_frame_info (struct frame_info *);
#define FRAME_SAVED_L0 0 #define FRAME_SAVED_L0 0
#define FRAME_SAVED_I0 (8 * REGISTER_RAW_SIZE (L0_REGNUM)) #define FRAME_SAVED_I0 (8 * REGISTER_RAW_SIZE (L0_REGNUM))
#define FRAME_STRUCT_ARGS_ADDRESS(FI) ((FI)->frame) #define FRAME_STRUCT_ARGS_ADDRESS(FI) (get_frame_base (FI))
/* Things needed for making the inferior call functions. */ /* Things needed for making the inferior call functions. */
/* /*

View file

@ -1157,7 +1157,8 @@ cris_frame_init_saved_regs (struct frame_info *fi)
CORE_ADDR ip; CORE_ADDR ip;
struct symtab_and_line sal; struct symtab_and_line sal;
int best_limit; int best_limit;
char *dummy_regs = deprecated_generic_find_dummy_frame (get_frame_pc (fi), fi->frame); char *dummy_regs = deprecated_generic_find_dummy_frame (get_frame_pc (fi),
get_frame_base (fi));
/* Examine the entire prologue. */ /* Examine the entire prologue. */
register int frameless_p = 0; register int frameless_p = 0;
@ -1211,14 +1212,16 @@ cris_init_extra_frame_info (int fromleaf, struct frame_info *fi)
fi->extra_info->return_pc = 0; fi->extra_info->return_pc = 0;
fi->extra_info->leaf_function = 0; fi->extra_info->leaf_function = 0;
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi),
get_frame_base (fi),
get_frame_base (fi)))
{ {
/* We need to setup fi->frame here because run_stack_dummy gets it wrong /* We need to setup fi->frame here because run_stack_dummy gets it wrong
by assuming it's always FP. */ by assuming it's always FP. */
deprecated_update_frame_base_hack (fi, deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, deprecated_update_frame_base_hack (fi, deprecated_read_register_dummy (get_frame_pc (fi), get_frame_base (fi), SP_REGNUM));
SP_REGNUM));
fi->extra_info->return_pc = fi->extra_info->return_pc =
deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, PC_REGNUM); deprecated_read_register_dummy (get_frame_pc (fi),
get_frame_base (fi), PC_REGNUM);
/* FIXME: Is this necessarily true? */ /* FIXME: Is this necessarily true? */
fi->extra_info->leaf_function = 0; fi->extra_info->leaf_function = 0;
@ -1252,9 +1255,11 @@ cris_init_extra_frame_info (int fromleaf, struct frame_info *fi)
CORE_ADDR CORE_ADDR
cris_frame_chain (struct frame_info *fi) cris_frame_chain (struct frame_info *fi)
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi),
get_frame_base (fi),
get_frame_base (fi)))
{ {
return fi->frame; return get_frame_base (fi);
} }
else if (!inside_entry_file (get_frame_pc (fi))) else if (!inside_entry_file (get_frame_pc (fi)))
{ {
@ -1510,7 +1515,9 @@ cris_pop_frame (void)
register int regno; register int regno;
register int stack_offset = 0; register int stack_offset = 0;
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi),
get_frame_base (fi),
get_frame_base (fi)))
{ {
/* This happens when we hit a breakpoint set at the entry point, /* This happens when we hit a breakpoint set at the entry point,
when returning from a dummy frame. */ when returning from a dummy frame. */

View file

@ -505,9 +505,11 @@ d10v_extract_struct_value_address (char *regbuf)
static CORE_ADDR static CORE_ADDR
d10v_frame_saved_pc (struct frame_info *frame) d10v_frame_saved_pc (struct frame_info *frame)
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
get_frame_base (frame),
get_frame_base (frame)))
return d10v_make_iaddr (deprecated_read_register_dummy (get_frame_pc (frame), return d10v_make_iaddr (deprecated_read_register_dummy (get_frame_pc (frame),
frame->frame, get_frame_base (frame),
PC_REGNUM)); PC_REGNUM));
else else
return ((frame)->extra_info->return_pc); return ((frame)->extra_info->return_pc);
@ -681,8 +683,9 @@ d10v_frame_chain (struct frame_info *fi)
CORE_ADDR addr; CORE_ADDR addr;
/* A generic call dummy's frame is the same as caller's. */ /* A generic call dummy's frame is the same as caller's. */
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
return fi->frame; get_frame_base (fi)))
return get_frame_base (fi);
d10v_frame_init_saved_regs (fi); d10v_frame_init_saved_regs (fi);
@ -794,7 +797,7 @@ d10v_frame_init_saved_regs (struct frame_info *fi)
unsigned short op1, op2; unsigned short op1, op2;
int i; int i;
fp = fi->frame; fp = get_frame_base (fi);
memset (get_frame_saved_regs (fi), 0, SIZEOF_FRAME_SAVED_REGS); memset (get_frame_saved_regs (fi), 0, SIZEOF_FRAME_SAVED_REGS);
next_addr = 0; next_addr = 0;
@ -909,7 +912,8 @@ d10v_init_extra_frame_info (int fromleaf, struct frame_info *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. */
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi)))
{ {
return; return;
} }

View file

@ -475,7 +475,8 @@ h8300_frame_init_saved_regs (struct frame_info *fi)
struct symtab_and_line sal = find_pc_line (func_addr, 0); struct symtab_and_line sal = find_pc_line (func_addr, 0);
CORE_ADDR limit = (sal.end && sal.end < get_frame_pc (fi)) ? sal.end : get_frame_pc (fi); CORE_ADDR limit = (sal.end && sal.end < get_frame_pc (fi)) ? sal.end : get_frame_pc (fi);
/* This will fill in fields in fi. */ /* This will fill in fields in fi. */
h8300_examine_prologue (func_addr, limit, fi->frame, get_frame_saved_regs (fi), fi); h8300_examine_prologue (func_addr, limit, get_frame_base (fi),
get_frame_saved_regs (fi), fi);
} }
/* Else we're out of luck (can't debug completely stripped code). /* Else we're out of luck (can't debug completely stripped code).
FIXME. */ FIXME. */
@ -493,12 +494,15 @@ h8300_frame_init_saved_regs (struct frame_info *fi)
static CORE_ADDR static CORE_ADDR
h8300_frame_chain (struct frame_info *thisframe) h8300_frame_chain (struct frame_info *thisframe)
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (thisframe), thisframe->frame, thisframe->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (thisframe),
get_frame_base (thisframe),
get_frame_base (thisframe)))
{ /* initialize the from_pc now */ { /* initialize the from_pc now */
thisframe->extra_info->from_pc = thisframe->extra_info->from_pc =
deprecated_read_register_dummy (get_frame_pc (thisframe), thisframe->frame, deprecated_read_register_dummy (get_frame_pc (thisframe),
get_frame_base (thisframe),
E_PC_REGNUM); E_PC_REGNUM);
return thisframe->frame; return get_frame_base (thisframe);
} }
return get_frame_saved_regs (thisframe)[E_SP_REGNUM]; return get_frame_saved_regs (thisframe)[E_SP_REGNUM];
} }
@ -511,8 +515,11 @@ h8300_frame_chain (struct frame_info *thisframe)
static CORE_ADDR static CORE_ADDR
h8300_frame_saved_pc (struct frame_info *frame) h8300_frame_saved_pc (struct frame_info *frame)
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
return deprecated_read_register_dummy (get_frame_pc (frame), frame->frame, get_frame_base (frame),
get_frame_base (frame)))
return deprecated_read_register_dummy (get_frame_pc (frame),
get_frame_base (frame),
E_PC_REGNUM); E_PC_REGNUM);
else else
return frame->extra_info->from_pc; return frame->extra_info->from_pc;
@ -540,7 +547,8 @@ h8300_init_extra_frame_info (int fromleaf, struct frame_info *fi)
static CORE_ADDR static CORE_ADDR
h8300_frame_locals_address (struct frame_info *fi) h8300_frame_locals_address (struct frame_info *fi)
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi)))
return (CORE_ADDR) 0; /* Not sure what else to do... */ return (CORE_ADDR) 0; /* Not sure what else to do... */
return fi->extra_info->locals_pointer; return fi->extra_info->locals_pointer;
} }
@ -551,7 +559,8 @@ h8300_frame_locals_address (struct frame_info *fi)
static CORE_ADDR static CORE_ADDR
h8300_frame_args_address (struct frame_info *fi) h8300_frame_args_address (struct frame_info *fi)
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi)))
return (CORE_ADDR) 0; /* Not sure what else to do... */ return (CORE_ADDR) 0; /* Not sure what else to do... */
return fi->extra_info->args_pointer; return fi->extra_info->args_pointer;
} }
@ -746,7 +755,9 @@ h8300_pop_frame (void)
unsigned regno; unsigned regno;
struct frame_info *frame = get_current_frame (); struct frame_info *frame = get_current_frame ();
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
get_frame_base (frame),
get_frame_base (frame)))
{ {
generic_pop_dummy_frame (); generic_pop_dummy_frame ();
} }
@ -761,7 +772,7 @@ h8300_pop_frame (void)
read_memory_integer (get_frame_saved_regs (frame)[regno], read_memory_integer (get_frame_saved_regs (frame)[regno],
BINWORD)); BINWORD));
else if (get_frame_saved_regs (frame)[regno] && regno == E_SP_REGNUM) else if (get_frame_saved_regs (frame)[regno] && regno == E_SP_REGNUM)
write_register (regno, frame->frame + 2 * BINWORD); write_register (regno, get_frame_base (frame) + 2 * BINWORD);
} }
/* Don't forget to update the PC too! */ /* Don't forget to update the PC too! */

View file

@ -512,14 +512,14 @@ static CORE_ADDR
i386_frame_chain (struct frame_info *frame) i386_frame_chain (struct frame_info *frame)
{ {
if (pc_in_dummy_frame (get_frame_pc (frame))) if (pc_in_dummy_frame (get_frame_pc (frame)))
return frame->frame; return get_frame_base (frame);
if (get_frame_type (frame) == SIGTRAMP_FRAME if (get_frame_type (frame) == SIGTRAMP_FRAME
|| i386_frameless_signal_p (frame)) || i386_frameless_signal_p (frame))
return frame->frame; return get_frame_base (frame);
if (! inside_entry_file (get_frame_pc (frame))) if (! inside_entry_file (get_frame_pc (frame)))
return read_memory_unsigned_integer (frame->frame, 4); return read_memory_unsigned_integer (get_frame_base (frame), 4);
return 0; return 0;
} }
@ -585,7 +585,7 @@ i386_frame_saved_pc (struct frame_info *frame)
return read_memory_unsigned_integer (sp, 4); return read_memory_unsigned_integer (sp, 4);
} }
return read_memory_unsigned_integer (frame->frame + 4, 4); return read_memory_unsigned_integer (get_frame_base (frame) + 4, 4);
} }
/* Immediately after a function call, return the saved pc. */ /* Immediately after a function call, return the saved pc. */
@ -719,7 +719,7 @@ i386_frame_init_saved_regs (struct frame_info *fip)
if (locals >= 0) if (locals >= 0)
{ {
addr = fip->frame - 4 - locals; addr = get_frame_base (fip) - 4 - locals;
for (i = 0; i < 8; i++) for (i = 0; i < 8; i++)
{ {
op = codestream_get (); op = codestream_get ();
@ -735,8 +735,8 @@ i386_frame_init_saved_regs (struct frame_info *fip)
} }
} }
get_frame_saved_regs (fip)[PC_REGNUM] = fip->frame + 4; get_frame_saved_regs (fip)[PC_REGNUM] = get_frame_base (fip) + 4;
get_frame_saved_regs (fip)[FP_REGNUM] = fip->frame; get_frame_saved_regs (fip)[FP_REGNUM] = get_frame_base (fip);
} }
/* Return PC of first real instruction. */ /* Return PC of first real instruction. */
@ -1371,7 +1371,7 @@ i386_svr4_sigcontext_addr (struct frame_info *frame)
gdb_assert (sigcontext_offset != -1); gdb_assert (sigcontext_offset != -1);
if (frame->next) if (frame->next)
return frame->next->frame + sigcontext_offset; return get_frame_base (frame->next) + sigcontext_offset;
return read_register (SP_REGNUM) + sigcontext_offset; return read_register (SP_REGNUM) + sigcontext_offset;
} }

View file

@ -335,7 +335,7 @@ read_sigcontext_register (struct frame_info *frame, int regnum)
internal_error (__FILE__, __LINE__, internal_error (__FILE__, __LINE__,
"read_sigcontext_register: SIGCONTEXT_REGISTER_ADDRESS is 0"); "read_sigcontext_register: SIGCONTEXT_REGISTER_ADDRESS is 0");
regaddr = SIGCONTEXT_REGISTER_ADDRESS (frame->frame, regnum); regaddr = SIGCONTEXT_REGISTER_ADDRESS (get_frame_base (frame), regnum);
if (regaddr) if (regaddr)
return read_memory_integer (regaddr, REGISTER_RAW_SIZE (regnum)); return read_memory_integer (regaddr, REGISTER_RAW_SIZE (regnum));
else else
@ -705,15 +705,18 @@ ia64_frame_chain (struct frame_info *frame)
{ {
if ((get_frame_type (frame) == SIGTRAMP_FRAME)) if ((get_frame_type (frame) == SIGTRAMP_FRAME))
return read_sigcontext_register (frame, sp_regnum); return read_sigcontext_register (frame, sp_regnum);
else if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) else if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
return frame->frame; get_frame_base (frame),
get_frame_base (frame)))
return get_frame_base (frame);
else else
{ {
FRAME_INIT_SAVED_REGS (frame); FRAME_INIT_SAVED_REGS (frame);
if (get_frame_saved_regs (frame)[IA64_VFP_REGNUM]) if (get_frame_saved_regs (frame)[IA64_VFP_REGNUM])
return read_memory_integer (get_frame_saved_regs (frame)[IA64_VFP_REGNUM], 8); return read_memory_integer (get_frame_saved_regs (frame)[IA64_VFP_REGNUM], 8);
else else
return frame->frame + frame->extra_info->mem_stack_frame_size; return (get_frame_base (frame)
+ frame->extra_info->mem_stack_frame_size);
} }
} }
@ -722,8 +725,11 @@ ia64_frame_saved_pc (struct frame_info *frame)
{ {
if ((get_frame_type (frame) == SIGTRAMP_FRAME)) if ((get_frame_type (frame) == SIGTRAMP_FRAME))
return read_sigcontext_register (frame, pc_regnum); return read_sigcontext_register (frame, pc_regnum);
else if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) else if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
return deprecated_read_register_dummy (get_frame_pc (frame), frame->frame, pc_regnum); get_frame_base (frame),
get_frame_base (frame)))
return deprecated_read_register_dummy (get_frame_pc (frame),
get_frame_base (frame), pc_regnum);
else else
{ {
FRAME_INIT_SAVED_REGS (frame); FRAME_INIT_SAVED_REGS (frame);
@ -937,7 +943,7 @@ examine_prologue (CORE_ADDR pc, CORE_ADDR lim_pc, struct frame_info *frame)
/* Hmm... whether or not this will work will depend on /* Hmm... whether or not this will work will depend on
where the pc is. If it's still early in the prologue where the pc is. If it's still early in the prologue
this'll be wrong. FIXME */ this'll be wrong. FIXME */
spill_addr = (frame ? frame->frame : 0) spill_addr = (frame ? get_frame_base (frame) : 0)
+ (rM == 12 ? 0 : mem_stack_frame_size) + (rM == 12 ? 0 : mem_stack_frame_size)
+ imm; + imm;
spill_reg = rN; spill_reg = rN;
@ -1170,37 +1176,37 @@ ia64_frame_init_saved_regs (struct frame_info *frame)
frame_saved_regs_zalloc (frame); frame_saved_regs_zalloc (frame);
get_frame_saved_regs (frame)[IA64_VRAP_REGNUM] = get_frame_saved_regs (frame)[IA64_VRAP_REGNUM] =
SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_IP_REGNUM); SIGCONTEXT_REGISTER_ADDRESS (get_frame_base (frame), IA64_IP_REGNUM);
get_frame_saved_regs (frame)[IA64_CFM_REGNUM] = get_frame_saved_regs (frame)[IA64_CFM_REGNUM] =
SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_CFM_REGNUM); SIGCONTEXT_REGISTER_ADDRESS (get_frame_base (frame), IA64_CFM_REGNUM);
get_frame_saved_regs (frame)[IA64_PSR_REGNUM] = get_frame_saved_regs (frame)[IA64_PSR_REGNUM] =
SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_PSR_REGNUM); SIGCONTEXT_REGISTER_ADDRESS (get_frame_base (frame), IA64_PSR_REGNUM);
#if 0 #if 0
get_frame_saved_regs (frame)[IA64_BSP_REGNUM] = get_frame_saved_regs (frame)[IA64_BSP_REGNUM] =
SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_BSP_REGNUM); SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_BSP_REGNUM);
#endif #endif
get_frame_saved_regs (frame)[IA64_RNAT_REGNUM] = get_frame_saved_regs (frame)[IA64_RNAT_REGNUM] =
SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_RNAT_REGNUM); SIGCONTEXT_REGISTER_ADDRESS (get_frame_base (frame), IA64_RNAT_REGNUM);
get_frame_saved_regs (frame)[IA64_CCV_REGNUM] = get_frame_saved_regs (frame)[IA64_CCV_REGNUM] =
SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_CCV_REGNUM); SIGCONTEXT_REGISTER_ADDRESS (get_frame_base (frame), IA64_CCV_REGNUM);
get_frame_saved_regs (frame)[IA64_UNAT_REGNUM] = get_frame_saved_regs (frame)[IA64_UNAT_REGNUM] =
SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_UNAT_REGNUM); SIGCONTEXT_REGISTER_ADDRESS (get_frame_base (frame), IA64_UNAT_REGNUM);
get_frame_saved_regs (frame)[IA64_FPSR_REGNUM] = get_frame_saved_regs (frame)[IA64_FPSR_REGNUM] =
SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_FPSR_REGNUM); SIGCONTEXT_REGISTER_ADDRESS (get_frame_base (frame), IA64_FPSR_REGNUM);
get_frame_saved_regs (frame)[IA64_PFS_REGNUM] = get_frame_saved_regs (frame)[IA64_PFS_REGNUM] =
SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_PFS_REGNUM); SIGCONTEXT_REGISTER_ADDRESS (get_frame_base (frame), IA64_PFS_REGNUM);
get_frame_saved_regs (frame)[IA64_LC_REGNUM] = get_frame_saved_regs (frame)[IA64_LC_REGNUM] =
SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_LC_REGNUM); SIGCONTEXT_REGISTER_ADDRESS (get_frame_base (frame), IA64_LC_REGNUM);
for (regno = IA64_GR1_REGNUM; regno <= IA64_GR31_REGNUM; regno++) for (regno = IA64_GR1_REGNUM; regno <= IA64_GR31_REGNUM; regno++)
if (regno != sp_regnum) if (regno != sp_regnum)
get_frame_saved_regs (frame)[regno] = get_frame_saved_regs (frame)[regno] =
SIGCONTEXT_REGISTER_ADDRESS (frame->frame, regno); SIGCONTEXT_REGISTER_ADDRESS (get_frame_base (frame), regno);
for (regno = IA64_BR0_REGNUM; regno <= IA64_BR7_REGNUM; regno++) for (regno = IA64_BR0_REGNUM; regno <= IA64_BR7_REGNUM; regno++)
get_frame_saved_regs (frame)[regno] = get_frame_saved_regs (frame)[regno] =
SIGCONTEXT_REGISTER_ADDRESS (frame->frame, regno); SIGCONTEXT_REGISTER_ADDRESS (get_frame_base (frame), regno);
for (regno = IA64_FR2_REGNUM; regno <= IA64_BR7_REGNUM; regno++) for (regno = IA64_FR2_REGNUM; regno <= IA64_BR7_REGNUM; regno++)
get_frame_saved_regs (frame)[regno] = get_frame_saved_regs (frame)[regno] =
SIGCONTEXT_REGISTER_ADDRESS (frame->frame, regno); SIGCONTEXT_REGISTER_ADDRESS (get_frame_base (frame), regno);
} }
else else
{ {
@ -1233,12 +1239,15 @@ ia64_get_saved_register (char *raw_buffer,
if (lval != NULL) if (lval != NULL)
*lval = not_lval; *lval = not_lval;
is_dummy_frame = DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame); is_dummy_frame = DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
get_frame_base (frame),
get_frame_base (frame));
if (regnum == SP_REGNUM && frame->next) if (regnum == SP_REGNUM && frame->next)
{ {
/* 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), frame->frame); store_address (raw_buffer, REGISTER_RAW_SIZE (regnum),
get_frame_base (frame));
} }
else if (regnum == IA64_BSP_REGNUM) else if (regnum == IA64_BSP_REGNUM)
{ {
@ -1251,7 +1260,8 @@ ia64_get_saved_register (char *raw_buffer,
for the frame pointer, it'll be found by ia64_find_saved_register() for the frame pointer, it'll be found by ia64_find_saved_register()
above. If the function lacks one of these frame pointers, we can above. If the function lacks one of these frame pointers, we can
still provide a value since we know the size of the frame */ still provide a value since we know the size of the frame */
CORE_ADDR vfp = frame->frame + frame->extra_info->mem_stack_frame_size; CORE_ADDR vfp = (get_frame_base (frame)
+ frame->extra_info->mem_stack_frame_size);
store_address (raw_buffer, REGISTER_RAW_SIZE (IA64_VFP_REGNUM), vfp); store_address (raw_buffer, REGISTER_RAW_SIZE (IA64_VFP_REGNUM), vfp);
} }
else if (IA64_PR0_REGNUM <= regnum && regnum <= IA64_PR63_REGNUM) else if (IA64_PR0_REGNUM <= regnum && regnum <= IA64_PR63_REGNUM)
@ -1481,8 +1491,9 @@ 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 = ((frame->next != NULL)
&& DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame->next), frame->next->frame, && DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame->next),
frame->next->frame)); get_frame_base (frame->next),
get_frame_base (frame->next)));
frame_extra_info_zalloc (frame, sizeof (struct frame_extra_info)); frame_extra_info_zalloc (frame, sizeof (struct frame_extra_info));
@ -1500,10 +1511,10 @@ ia64_init_extra_frame_info (int fromleaf, struct frame_info *frame)
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 (frame->next),
frame->next->frame, get_frame_base (frame->next),
IA64_BSP_REGNUM); IA64_BSP_REGNUM);
cfm = deprecated_read_register_dummy (get_frame_pc (frame->next), cfm = deprecated_read_register_dummy (get_frame_pc (frame->next),
frame->next->frame, get_frame_base (frame->next),
IA64_CFM_REGNUM); IA64_CFM_REGNUM);
} }
else else
@ -1517,9 +1528,11 @@ ia64_init_extra_frame_info (int fromleaf, struct frame_info *frame)
else if (frn->next && (get_frame_type (frn->next) == SIGTRAMP_FRAME)) else if (frn->next && (get_frame_type (frn->next) == SIGTRAMP_FRAME))
cfm = read_sigcontext_register (frn->next, IA64_PFS_REGNUM); cfm = read_sigcontext_register (frn->next, IA64_PFS_REGNUM);
else if (frn->next else if (frn->next
&& DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frn->next), frn->next->frame, && DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frn->next),
frn->next->frame)) get_frame_base (frn->next),
cfm = deprecated_read_register_dummy (get_frame_pc (frn->next), frn->next->frame, get_frame_base (frn->next)))
cfm = deprecated_read_register_dummy (get_frame_pc (frn->next),
get_frame_base (frn->next),
IA64_PFS_REGNUM); IA64_PFS_REGNUM);
else else
cfm = read_register (IA64_PFS_REGNUM); cfm = read_register (IA64_PFS_REGNUM);

View file

@ -409,7 +409,7 @@ m68hc11_frame_args_address (struct frame_info *frame)
{ {
CORE_ADDR addr; CORE_ADDR addr;
addr = frame->frame + frame->extra_info->size + STACK_CORRECTION + 2; addr = get_frame_base (frame) + frame->extra_info->size + STACK_CORRECTION + 2;
if (frame->extra_info->return_kind == RETURN_RTC) if (frame->extra_info->return_kind == RETURN_RTC)
addr += 1; addr += 1;
else if (frame->extra_info->return_kind == RETURN_RTI) else if (frame->extra_info->return_kind == RETURN_RTI)
@ -421,7 +421,7 @@ m68hc11_frame_args_address (struct frame_info *frame)
static CORE_ADDR static CORE_ADDR
m68hc11_frame_locals_address (struct frame_info *frame) m68hc11_frame_locals_address (struct frame_info *frame)
{ {
return frame->frame; return get_frame_base (frame);
} }
/* Discard from the stack the innermost frame, restoring all saved /* Discard from the stack the innermost frame, restoring all saved
@ -434,7 +434,9 @@ m68hc11_pop_frame (void)
register CORE_ADDR fp, sp; register CORE_ADDR fp, sp;
register int regnum; register int regnum;
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
get_frame_base (frame),
get_frame_base (frame)))
generic_pop_dummy_frame (); generic_pop_dummy_frame ();
else else
{ {
@ -812,19 +814,21 @@ m68hc11_frame_chain (struct frame_info *frame)
{ {
CORE_ADDR addr; CORE_ADDR addr;
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
return frame->frame; /* dummy frame same as caller's frame */ get_frame_base (frame),
get_frame_base (frame)))
return get_frame_base (frame); /* dummy frame same as caller's frame */
if (frame->extra_info->return_pc == 0 if (frame->extra_info->return_pc == 0
|| inside_entry_file (frame->extra_info->return_pc)) || inside_entry_file (frame->extra_info->return_pc))
return (CORE_ADDR) 0; return (CORE_ADDR) 0;
if (frame->frame == 0) if (get_frame_base (frame) == 0)
{ {
return (CORE_ADDR) 0; return (CORE_ADDR) 0;
} }
addr = frame->frame + frame->extra_info->size + STACK_CORRECTION - 2; addr = get_frame_base (frame) + frame->extra_info->size + STACK_CORRECTION - 2;
addr = read_memory_unsigned_integer (addr, 2) & 0x0FFFF; addr = read_memory_unsigned_integer (addr, 2) & 0x0FFFF;
return addr; return addr;
} }
@ -847,10 +851,10 @@ m68hc11_frame_init_saved_regs (struct frame_info *fi)
pc = get_frame_pc (fi); pc = get_frame_pc (fi);
fi->extra_info->return_kind = m68hc11_get_return_insn (pc); fi->extra_info->return_kind = m68hc11_get_return_insn (pc);
m68hc11_guess_from_prologue (pc, fi->frame, &pc, &fi->extra_info->size, m68hc11_guess_from_prologue (pc, get_frame_base (fi), &pc, &fi->extra_info->size,
get_frame_saved_regs (fi)); get_frame_saved_regs (fi));
addr = fi->frame + fi->extra_info->size + STACK_CORRECTION; addr = get_frame_base (fi) + fi->extra_info->size + STACK_CORRECTION;
if (soft_regs[SOFT_FP_REGNUM].name) if (soft_regs[SOFT_FP_REGNUM].name)
get_frame_saved_regs (fi)[SOFT_FP_REGNUM] = addr - 2; get_frame_saved_regs (fi)[SOFT_FP_REGNUM] = addr - 2;

View file

@ -258,9 +258,9 @@ static CORE_ADDR
m68k_frame_chain (struct frame_info *thisframe) m68k_frame_chain (struct frame_info *thisframe)
{ {
if (get_frame_type (thisframe) == SIGTRAMP_FRAME) if (get_frame_type (thisframe) == SIGTRAMP_FRAME)
return thisframe->frame; return get_frame_base (thisframe);
else if (!inside_entry_file (get_frame_pc (thisframe))) else if (!inside_entry_file (get_frame_pc (thisframe)))
return read_memory_unsigned_integer (thisframe->frame, 4); return read_memory_unsigned_integer (get_frame_base (thisframe), 4);
else else
return 0; return 0;
} }
@ -284,14 +284,14 @@ 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 (frame->next)
return read_memory_unsigned_integer (frame->next->frame return read_memory_unsigned_integer (get_frame_base (frame->next)
+ 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)
+ SIG_PC_FP_OFFSET - 8, 4); + SIG_PC_FP_OFFSET - 8, 4);
} }
else else
return read_memory_unsigned_integer (frame->frame + 4, 4); return read_memory_unsigned_integer (get_frame_base (frame) + 4, 4);
} }
@ -332,17 +332,17 @@ delta68_frame_args_address (struct frame_info *frame_info)
/* we assume here that the only frameless functions are the system calls /* we assume here that the only frameless functions are the system calls
or other functions who do not put anything on the stack. */ or other functions who do not put anything on the stack. */
if (get_frame_type (frame_info) == SIGTRAMP_FRAME) if (get_frame_type (frame_info) == SIGTRAMP_FRAME)
return frame_info->frame + 12; return get_frame_base (frame_info) + 12;
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 (frame_info->next && (get_frame_type (frame_info->next) == SIGTRAMP_FRAME))
return frame_info->next->frame + 16; return get_frame_base (frame_info->next) + 16;
else else
return frame_info->frame + 4; return get_frame_base (frame_info) + 4;
} }
else else
return frame_info->frame; return get_frame_base (frame_info);
} }
CORE_ADDR CORE_ADDR
@ -589,7 +589,7 @@ m68k_frame_init_saved_regs (struct frame_info *frame_info)
/* First possible address for a pc in a call dummy for this frame. */ /* First possible address for a pc in a call dummy for this frame. */
CORE_ADDR possible_call_dummy_start = CORE_ADDR possible_call_dummy_start =
frame_info->frame - 28 - FP_REGNUM * 4 - 4 - 8 * 12; get_frame_base (frame_info) - 28 - FP_REGNUM * 4 - 4 - 8 * 12;
int nextinsn; int nextinsn;
@ -601,7 +601,7 @@ m68k_frame_init_saved_regs (struct frame_info *frame_info)
memset (get_frame_saved_regs (frame_info), 0, SIZEOF_FRAME_SAVED_REGS); memset (get_frame_saved_regs (frame_info), 0, SIZEOF_FRAME_SAVED_REGS);
if (get_frame_pc (frame_info) >= possible_call_dummy_start if (get_frame_pc (frame_info) >= possible_call_dummy_start
&& get_frame_pc (frame_info) <= frame_info->frame) && get_frame_pc (frame_info) <= get_frame_base (frame_info))
{ {
/* It is a call dummy. We could just stop now, since we know /* It is a call dummy. We could just stop now, since we know
@ -609,7 +609,7 @@ m68k_frame_init_saved_regs (struct frame_info *frame_info)
to parse the "prologue" which is part of the call dummy. to parse the "prologue" which is part of the call dummy.
This is needlessly complex and confusing. FIXME. */ This is needlessly complex and confusing. FIXME. */
next_addr = frame_info->frame; next_addr = get_frame_base (frame_info);
pc = possible_call_dummy_start; pc = possible_call_dummy_start;
} }
else else
@ -622,7 +622,7 @@ m68k_frame_init_saved_regs (struct frame_info *frame_info)
{ {
/* pea %fp /* pea %fp
move.l %sp, %fp */ move.l %sp, %fp */
next_addr = frame_info->frame; next_addr = get_frame_base (frame_info);
pc += 4; pc += 4;
} }
else if (P_LINKL_FP == nextinsn) else if (P_LINKL_FP == nextinsn)
@ -630,7 +630,7 @@ m68k_frame_init_saved_regs (struct frame_info *frame_info)
/* Find the address above the saved /* Find the address above the saved
regs using the amount of storage from the link instruction. */ regs using the amount of storage from the link instruction. */
{ {
next_addr = frame_info->frame + read_memory_integer (pc + 2, 4); next_addr = get_frame_base (frame_info) + read_memory_integer (pc + 2, 4);
pc += 6; pc += 6;
} }
else if (P_LINKW_FP == nextinsn) else if (P_LINKW_FP == nextinsn)
@ -638,7 +638,7 @@ m68k_frame_init_saved_regs (struct frame_info *frame_info)
/* Find the address above the saved /* Find the address above the saved
regs using the amount of storage from the link instruction. */ regs using the amount of storage from the link instruction. */
{ {
next_addr = frame_info->frame + read_memory_integer (pc + 2, 2); next_addr = get_frame_base (frame_info) + read_memory_integer (pc + 2, 2);
pc += 4; pc += 4;
} }
else else
@ -667,7 +667,7 @@ m68k_frame_init_saved_regs (struct frame_info *frame_info)
{ {
register CORE_ADDR addr; register CORE_ADDR addr;
addr = frame_info->frame + read_memory_integer (pc + 4, 2); addr = get_frame_base (frame_info) + read_memory_integer (pc + 4, 2);
/* Regmask's low bit is for register fp7, the first pushed */ /* Regmask's low bit is for register fp7, the first pushed */
for (regnum = FP0_REGNUM + 8; --regnum >= FP0_REGNUM; regmask >>= 1) for (regnum = FP0_REGNUM + 8; --regnum >= FP0_REGNUM; regmask >>= 1)
if (regmask & 1) if (regmask & 1)
@ -694,7 +694,7 @@ m68k_frame_init_saved_regs (struct frame_info *frame_info)
{ {
register CORE_ADDR addr; register CORE_ADDR addr;
addr = frame_info->frame + read_memory_integer (pc + 4, 2); addr = get_frame_base (frame_info) + read_memory_integer (pc + 4, 2);
/* Regmask's low bit is for register 0, the first written */ /* Regmask's low bit is for register 0, the first written */
for (regnum = 0; regnum < 16; regnum++, regmask >>= 1) for (regnum = 0; regnum < 16; regnum++, regmask >>= 1)
if (regmask & 1) if (regmask & 1)
@ -742,9 +742,9 @@ m68k_frame_init_saved_regs (struct frame_info *frame_info)
break; break;
} }
lose:; lose:;
get_frame_saved_regs (frame_info)[SP_REGNUM] = (frame_info)->frame + 8; get_frame_saved_regs (frame_info)[SP_REGNUM] = get_frame_base (frame_info) + 8;
get_frame_saved_regs (frame_info)[FP_REGNUM] = (frame_info)->frame; get_frame_saved_regs (frame_info)[FP_REGNUM] = get_frame_base (frame_info);
get_frame_saved_regs (frame_info)[PC_REGNUM] = (frame_info)->frame + 4; get_frame_saved_regs (frame_info)[PC_REGNUM] = get_frame_base (frame_info) + 4;
#ifdef SIG_SP_FP_OFFSET #ifdef SIG_SP_FP_OFFSET
/* Adjust saved SP_REGNUM for fake _sigtramp frames. */ /* Adjust saved SP_REGNUM for fake _sigtramp frames. */
if ((get_frame_type (frame_info) == SIGTRAMP_FRAME) && frame_info->next) if ((get_frame_type (frame_info) == SIGTRAMP_FRAME) && frame_info->next)

View file

@ -627,7 +627,7 @@ mcore_analyze_prologue (struct frame_info *fi, CORE_ADDR pc, int skip_prologue)
{ {
if (register_offsets[rn] >= 0) if (register_offsets[rn] >= 0)
{ {
get_frame_saved_regs (fi)[rn] = fi->frame - register_offsets[rn]; get_frame_saved_regs (fi)[rn] = get_frame_base (fi) - register_offsets[rn];
mcore_insn_debug (("Saved register %s stored at 0x%08x, value=0x%08x\n", mcore_insn_debug (("Saved register %s stored at 0x%08x, value=0x%08x\n",
mcore_register_names[rn], fi->saved_regs[rn], mcore_register_names[rn], fi->saved_regs[rn],
read_memory_integer (fi->saved_regs[rn], 4))); read_memory_integer (fi->saved_regs[rn], 4)));
@ -669,7 +669,7 @@ mcore_frame_chain (struct frame_info * fi)
If our caller does not have a frame pointer, then his frame base If our caller does not have a frame pointer, then his frame base
is <our base> + -<caller's frame size>. */ is <our base> + -<caller's frame size>. */
dummy = analyze_dummy_frame (FRAME_SAVED_PC (fi), fi->frame); dummy = analyze_dummy_frame (FRAME_SAVED_PC (fi), get_frame_base (fi));
if (dummy->extra_info->status & MY_FRAME_IN_FP) if (dummy->extra_info->status & MY_FRAME_IN_FP)
{ {
@ -693,7 +693,7 @@ mcore_frame_chain (struct frame_info * fi)
else else
{ {
/* Our caller does not have a frame pointer. */ /* Our caller does not have a frame pointer. */
callers_addr = fi->frame + dummy->extra_info->framesize; callers_addr = get_frame_base (fi) + dummy->extra_info->framesize;
} }
return callers_addr; return callers_addr;
@ -724,13 +724,13 @@ mcore_skip_prologue (CORE_ADDR pc)
CORE_ADDR CORE_ADDR
mcore_frame_args_address (struct frame_info * fi) mcore_frame_args_address (struct frame_info * fi)
{ {
return fi->frame - fi->extra_info->framesize; return get_frame_base (fi) - fi->extra_info->framesize;
} }
CORE_ADDR CORE_ADDR
mcore_frame_locals_address (struct frame_info * fi) mcore_frame_locals_address (struct frame_info * fi)
{ {
return fi->frame - fi->extra_info->framesize; return get_frame_base (fi) - fi->extra_info->framesize;
} }
/* Return the frame pointer in use at address PC. */ /* Return the frame pointer in use at address PC. */
@ -758,8 +758,10 @@ mcore_find_callers_reg (struct frame_info *fi, int regnum)
{ {
for (; fi != NULL; fi = fi->next) for (; fi != NULL; fi = fi->next)
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
return deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, regnum); get_frame_base (fi)))
return deprecated_read_register_dummy (get_frame_pc (fi),
get_frame_base (fi), regnum);
else if (get_frame_saved_regs (fi)[regnum] != 0) else if (get_frame_saved_regs (fi)[regnum] != 0)
return read_memory_integer (get_frame_saved_regs (fi)[regnum], return read_memory_integer (get_frame_saved_regs (fi)[regnum],
REGISTER_SIZE); REGISTER_SIZE);
@ -774,8 +776,10 @@ CORE_ADDR
mcore_frame_saved_pc (struct frame_info * fi) mcore_frame_saved_pc (struct frame_info * fi)
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
return deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, PC_REGNUM); get_frame_base (fi)))
return deprecated_read_register_dummy (get_frame_pc (fi),
get_frame_base (fi), PC_REGNUM);
else else
return mcore_find_callers_reg (fi, PR_REGNUM); return mcore_find_callers_reg (fi, PR_REGNUM);
} }
@ -791,7 +795,8 @@ mcore_pop_frame (void)
int rn; int rn;
struct frame_info *fi = get_current_frame (); struct frame_info *fi = get_current_frame ();
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi)))
generic_pop_dummy_frame (); generic_pop_dummy_frame ();
else else
{ {
@ -1048,11 +1053,12 @@ mcore_init_extra_frame_info (int fromleaf, struct frame_info *fi)
fi->extra_info->status = 0; fi->extra_info->status = 0;
fi->extra_info->framesize = 0; fi->extra_info->framesize = 0;
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi)))
{ {
/* We need to setup fi->frame here because run_stack_dummy gets it wrong /* We need to setup fi->frame here because run_stack_dummy gets it wrong
by assuming it's always FP. */ by assuming it's always FP. */
deprecated_update_frame_base_hack (fi, deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, SP_REGNUM)); deprecated_update_frame_base_hack (fi, deprecated_read_register_dummy (get_frame_pc (fi), get_frame_base (fi), SP_REGNUM));
} }
else else
mcore_analyze_prologue (fi, 0, 0); mcore_analyze_prologue (fi, 0, 0);

View file

@ -1420,17 +1420,17 @@ mips_find_saved_regs (struct frame_info *fci)
{ {
for (ireg = 0; ireg < MIPS_NUMREGS; ireg++) for (ireg = 0; ireg < MIPS_NUMREGS; ireg++)
{ {
reg_position = fci->frame + SIGFRAME_REGSAVE_OFF reg_position = get_frame_base (fci) + SIGFRAME_REGSAVE_OFF
+ ireg * SIGFRAME_REG_SIZE; + ireg * SIGFRAME_REG_SIZE;
get_frame_saved_regs (fci)[ireg] = reg_position; get_frame_saved_regs (fci)[ireg] = reg_position;
} }
for (ireg = 0; ireg < MIPS_NUMREGS; ireg++) for (ireg = 0; ireg < MIPS_NUMREGS; ireg++)
{ {
reg_position = fci->frame + SIGFRAME_FPREGSAVE_OFF reg_position = get_frame_base (fci) + SIGFRAME_FPREGSAVE_OFF
+ ireg * SIGFRAME_REG_SIZE; + ireg * SIGFRAME_REG_SIZE;
get_frame_saved_regs (fci)[FP0_REGNUM + ireg] = reg_position; get_frame_saved_regs (fci)[FP0_REGNUM + ireg] = reg_position;
} }
get_frame_saved_regs (fci)[PC_REGNUM] = fci->frame + SIGFRAME_PC_OFF; get_frame_saved_regs (fci)[PC_REGNUM] = get_frame_base (fci) + SIGFRAME_PC_OFF;
return; return;
} }
@ -1496,7 +1496,7 @@ mips_find_saved_regs (struct frame_info *fci)
/* Fill in the offsets for the registers which gen_mask says /* Fill in the offsets for the registers which gen_mask says
were saved. */ were saved. */
reg_position = fci->frame + PROC_REG_OFFSET (proc_desc); reg_position = get_frame_base (fci) + PROC_REG_OFFSET (proc_desc);
for (ireg = MIPS_NUMREGS - 1; gen_mask; --ireg, gen_mask <<= 1) for (ireg = MIPS_NUMREGS - 1; gen_mask; --ireg, gen_mask <<= 1)
if (gen_mask & 0x80000000) if (gen_mask & 0x80000000)
{ {
@ -1517,7 +1517,7 @@ mips_find_saved_regs (struct frame_info *fci)
int sreg_count = (inst >> 6) & 3; int sreg_count = (inst >> 6) & 3;
/* Check if the ra register was pushed on the stack. */ /* Check if the ra register was pushed on the stack. */
reg_position = fci->frame + PROC_REG_OFFSET (proc_desc); reg_position = get_frame_base (fci) + PROC_REG_OFFSET (proc_desc);
if (inst & 0x20) if (inst & 0x20)
reg_position -= MIPS_SAVED_REGSIZE; reg_position -= MIPS_SAVED_REGSIZE;
@ -1532,7 +1532,7 @@ mips_find_saved_regs (struct frame_info *fci)
/* Fill in the offsets for the registers which float_mask says /* Fill in the offsets for the registers which float_mask says
were saved. */ were saved. */
reg_position = fci->frame + PROC_FREG_OFFSET (proc_desc); reg_position = get_frame_base (fci) + PROC_FREG_OFFSET (proc_desc);
/* Apparently, the freg_offset gives the offset to the first 64 bit /* Apparently, the freg_offset gives the offset to the first 64 bit
saved. saved.
@ -1576,7 +1576,7 @@ mips_frame_init_saved_regs (struct frame_info *frame)
{ {
mips_find_saved_regs (frame); mips_find_saved_regs (frame);
} }
get_frame_saved_regs (frame)[SP_REGNUM] = frame->frame; get_frame_saved_regs (frame)[SP_REGNUM] = get_frame_base (frame);
} }
static CORE_ADDR static CORE_ADDR
@ -1704,7 +1704,7 @@ mips_frame_saved_pc (struct frame_info *frame)
saved_pc = tmp; saved_pc = tmp;
} }
else if (proc_desc && PROC_DESC_IS_DUMMY (proc_desc)) else if (proc_desc && PROC_DESC_IS_DUMMY (proc_desc))
saved_pc = read_memory_integer (frame->frame - MIPS_SAVED_REGSIZE, MIPS_SAVED_REGSIZE); saved_pc = read_memory_integer (get_frame_base (frame) - MIPS_SAVED_REGSIZE, MIPS_SAVED_REGSIZE);
else else
saved_pc = read_next_frame_reg (frame, pcreg); saved_pc = read_next_frame_reg (frame, pcreg);
@ -2433,7 +2433,7 @@ mips_frame_chain (struct frame_info *frame)
/* A dummy frame, uses SP not FP. Get the old SP value. If all /* A dummy frame, uses SP not FP. Get the old SP value. If all
is well, frame->frame the bottom of the current frame will is well, frame->frame the bottom of the current frame will
contain that value. */ contain that value. */
return frame->frame; return get_frame_base (frame);
} }
/* Look up the procedure descriptor for this PC. */ /* Look up the procedure descriptor for this PC. */
@ -2517,7 +2517,7 @@ mips_init_extra_frame_info (int fromleaf, struct frame_info *fci)
value of the stack pointer register. The other saved_regs value of the stack pointer register. The other saved_regs
values are addresses (in the inferior) at which a given values are addresses (in the inferior) at which a given
register's value may be found. */ register's value may be found. */
get_frame_saved_regs (fci)[SP_REGNUM] = fci->frame; get_frame_saved_regs (fci)[SP_REGNUM] = get_frame_base (fci);
} }
} }

View file

@ -435,10 +435,10 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
{ {
if (fi) if (fi)
{ {
fi->fsr.regs[2] = fi->frame + fi->stack_size + 4; fi->fsr.regs[2] = get_frame_base (fi) + fi->stack_size + 4;
fi->fsr.regs[3] = fi->frame + fi->stack_size + 8; fi->fsr.regs[3] = get_frame_base (fi) + fi->stack_size + 8;
fi->fsr.regs[5] = fi->frame + fi->stack_size + 12; fi->fsr.regs[5] = get_frame_base (fi) + fi->stack_size + 12;
fi->fsr.regs[6] = fi->frame + fi->stack_size + 16; fi->fsr.regs[6] = get_frame_base (fi) + fi->stack_size + 16;
} }
return addr; return addr;
} }
@ -455,10 +455,10 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
{ {
if (fi) if (fi)
{ {
fi->fsr.regs[2] = fi->frame + fi->stack_size + 4; fi->fsr.regs[2] = get_frame_base (fi) + fi->stack_size + 4;
fi->fsr.regs[3] = fi->frame + fi->stack_size + 8; fi->fsr.regs[3] = get_frame_base (fi) + fi->stack_size + 8;
fi->fsr.regs[5] = fi->frame + fi->stack_size + 12; fi->fsr.regs[5] = get_frame_base (fi) + fi->stack_size + 12;
fi->fsr.regs[6] = fi->frame + fi->stack_size + 16; fi->fsr.regs[6] = get_frame_base (fi) + fi->stack_size + 16;
} }
return addr; return addr;
} }
@ -472,10 +472,10 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
{ {
if (fi && fi->next == NULL) if (fi && fi->next == NULL)
{ {
fi->fsr.regs[2] = fi->frame + fi->stack_size + 4; fi->fsr.regs[2] = get_frame_base (fi) + fi->stack_size + 4;
fi->fsr.regs[3] = fi->frame + fi->stack_size + 8; fi->fsr.regs[3] = get_frame_base (fi) + fi->stack_size + 8;
fi->fsr.regs[5] = fi->frame + fi->stack_size + 12; fi->fsr.regs[5] = get_frame_base (fi) + fi->stack_size + 12;
fi->fsr.regs[6] = fi->frame + fi->stack_size + 16; fi->fsr.regs[6] = get_frame_base (fi) + fi->stack_size + 16;
} }
return addr; return addr;
} }
@ -488,16 +488,16 @@ 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 && fi->next == NULL)
deprecated_update_frame_base_hack (fi, fi->frame - 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
size for this frame too. */ size for this frame too. */
if (fi) if (fi)
{ {
fi->fsr.regs[2] = fi->frame + fi->stack_size + 4; fi->fsr.regs[2] = get_frame_base (fi) + fi->stack_size + 4;
fi->fsr.regs[3] = fi->frame + fi->stack_size + 8; fi->fsr.regs[3] = get_frame_base (fi) + fi->stack_size + 8;
fi->fsr.regs[5] = fi->frame + fi->stack_size + 12; fi->fsr.regs[5] = get_frame_base (fi) + fi->stack_size + 12;
fi->fsr.regs[6] = fi->frame + fi->stack_size + 16; fi->fsr.regs[6] = get_frame_base (fi) + fi->stack_size + 16;
fi->stack_size += outgoing_args_size; fi->stack_size += outgoing_args_size;
} }
/* There can be no more prologue insns, so return now. */ /* There can be no more prologue insns, so return now. */
@ -534,7 +534,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
status = target_read_memory (addr + 2, buf, 1); status = target_read_memory (addr + 2, buf, 1);
if (status != 0) if (status != 0)
return addr; return addr;
fi->fsr.regs[2] = (fi->frame + stack_size fi->fsr.regs[2] = (get_frame_base (fi) + stack_size
+ extract_signed_integer (buf, 1)); + extract_signed_integer (buf, 1));
} }
addr += 3; addr += 3;
@ -551,7 +551,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
status = target_read_memory (addr + 2, buf, 1); status = target_read_memory (addr + 2, buf, 1);
if (status != 0) if (status != 0)
return addr; return addr;
fi->fsr.regs[3] = (fi->frame + stack_size fi->fsr.regs[3] = (get_frame_base (fi) + stack_size
+ extract_signed_integer (buf, 1)); + extract_signed_integer (buf, 1));
} }
addr += 3; addr += 3;
@ -568,7 +568,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
status = target_read_memory (addr + 1, buf, 1); status = target_read_memory (addr + 1, buf, 1);
if (status != 0) if (status != 0)
return addr; return addr;
fi->fsr.regs[5] = (fi->frame + stack_size fi->fsr.regs[5] = (get_frame_base (fi) + stack_size
+ extract_signed_integer (buf, 1)); + extract_signed_integer (buf, 1));
} }
addr += 2; addr += 2;
@ -585,7 +585,7 @@ mn10200_analyze_prologue (struct frame_info *fi, CORE_ADDR pc)
status = target_read_memory (addr + 1, buf, 1); status = target_read_memory (addr + 1, buf, 1);
if (status != 0) if (status != 0)
return addr; return addr;
fi->fsr.regs[6] = (fi->frame + stack_size fi->fsr.regs[6] = (get_frame_base (fi) + stack_size
+ extract_signed_integer (buf, 1)); + extract_signed_integer (buf, 1));
fi->status &= ~CALLER_A2_IN_A0; fi->status &= ~CALLER_A2_IN_A0;
} }
@ -641,7 +641,7 @@ mn10200_frame_chain (struct frame_info *fi)
So we set up a dummy frame and call mn10200_analyze_prologue to So we set up a dummy frame and call mn10200_analyze_prologue to
find stuff for us. */ find stuff for us. */
deprecated_update_frame_pc_hack (dummy_frame, FRAME_SAVED_PC (fi)); deprecated_update_frame_pc_hack (dummy_frame, FRAME_SAVED_PC (fi));
deprecated_update_frame_base_hack (dummy_frame, fi->frame); deprecated_update_frame_base_hack (dummy_frame, get_frame_base (fi));
memset (dummy_frame->fsr.regs, '\000', sizeof dummy_frame->fsr.regs); memset (dummy_frame->fsr.regs, '\000', sizeof dummy_frame->fsr.regs);
dummy_frame->status = 0; dummy_frame->status = 0;
dummy_frame->stack_size = 0; dummy_frame->stack_size = 0;
@ -663,7 +663,7 @@ mn10200_frame_chain (struct frame_info *fi)
{ {
/* Our caller does not have a frame pointer. So his frame starts /* Our caller does not have a frame pointer. So his frame starts
at the base of our frame (fi->frame) + <his size> + 4 (saved pc). */ at the base of our frame (fi->frame) + <his size> + 4 (saved pc). */
ret = fi->frame + -dummy_frame->stack_size + 4; ret = get_frame_base (fi) + -dummy_frame->stack_size + 4;
} }
do_cleanups (old_chain); do_cleanups (old_chain);
return ret; return ret;
@ -689,7 +689,9 @@ mn10200_pop_frame (struct frame_info *frame)
{ {
int regnum; int regnum;
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
get_frame_base (frame),
get_frame_base (frame)))
generic_pop_dummy_frame (); generic_pop_dummy_frame ();
else else
{ {
@ -858,7 +860,7 @@ CORE_ADDR
mn10200_frame_saved_pc (struct frame_info *fi) mn10200_frame_saved_pc (struct frame_info *fi)
{ {
/* The saved PC will always be at the base of the current frame. */ /* The saved PC will always be at the base of the current frame. */
return (read_memory_integer (fi->frame, REGISTER_SIZE) & 0xffffff); return (read_memory_integer (get_frame_base (fi), REGISTER_SIZE) & 0xffffff);
} }
/* Function: init_extra_frame_info /* Function: init_extra_frame_info

View file

@ -233,59 +233,59 @@ set_movm_offsets (struct frame_info *fi, int movm_args)
/* The `other' bit leaves a blank area of four bytes at the /* The `other' bit leaves a blank area of four bytes at the
beginning of its block of saved registers, making it 32 bytes beginning of its block of saved registers, making it 32 bytes
long in total. */ long in total. */
get_frame_saved_regs (fi)[LAR_REGNUM] = fi->frame + offset + 4; get_frame_saved_regs (fi)[LAR_REGNUM] = get_frame_base (fi) + offset + 4;
get_frame_saved_regs (fi)[LIR_REGNUM] = fi->frame + offset + 8; get_frame_saved_regs (fi)[LIR_REGNUM] = get_frame_base (fi) + offset + 8;
get_frame_saved_regs (fi)[MDR_REGNUM] = fi->frame + offset + 12; get_frame_saved_regs (fi)[MDR_REGNUM] = get_frame_base (fi) + offset + 12;
get_frame_saved_regs (fi)[A0_REGNUM + 1] = fi->frame + offset + 16; get_frame_saved_regs (fi)[A0_REGNUM + 1] = get_frame_base (fi) + offset + 16;
get_frame_saved_regs (fi)[A0_REGNUM] = fi->frame + offset + 20; get_frame_saved_regs (fi)[A0_REGNUM] = get_frame_base (fi) + offset + 20;
get_frame_saved_regs (fi)[D0_REGNUM + 1] = fi->frame + offset + 24; get_frame_saved_regs (fi)[D0_REGNUM + 1] = get_frame_base (fi) + offset + 24;
get_frame_saved_regs (fi)[D0_REGNUM] = fi->frame + offset + 28; get_frame_saved_regs (fi)[D0_REGNUM] = get_frame_base (fi) + offset + 28;
offset += 32; offset += 32;
} }
if (movm_args & movm_a3_bit) if (movm_args & movm_a3_bit)
{ {
get_frame_saved_regs (fi)[A3_REGNUM] = fi->frame + offset; get_frame_saved_regs (fi)[A3_REGNUM] = get_frame_base (fi) + offset;
offset += 4; offset += 4;
} }
if (movm_args & movm_a2_bit) if (movm_args & movm_a2_bit)
{ {
get_frame_saved_regs (fi)[A2_REGNUM] = fi->frame + offset; get_frame_saved_regs (fi)[A2_REGNUM] = get_frame_base (fi) + offset;
offset += 4; offset += 4;
} }
if (movm_args & movm_d3_bit) if (movm_args & movm_d3_bit)
{ {
get_frame_saved_regs (fi)[D3_REGNUM] = fi->frame + offset; get_frame_saved_regs (fi)[D3_REGNUM] = get_frame_base (fi) + offset;
offset += 4; offset += 4;
} }
if (movm_args & movm_d2_bit) if (movm_args & movm_d2_bit)
{ {
get_frame_saved_regs (fi)[D2_REGNUM] = fi->frame + offset; get_frame_saved_regs (fi)[D2_REGNUM] = get_frame_base (fi) + offset;
offset += 4; offset += 4;
} }
if (AM33_MODE) if (AM33_MODE)
{ {
if (movm_args & movm_exother_bit) if (movm_args & movm_exother_bit)
{ {
get_frame_saved_regs (fi)[MCVF_REGNUM] = fi->frame + offset; get_frame_saved_regs (fi)[MCVF_REGNUM] = get_frame_base (fi) + offset;
get_frame_saved_regs (fi)[MCRL_REGNUM] = fi->frame + offset + 4; get_frame_saved_regs (fi)[MCRL_REGNUM] = get_frame_base (fi) + offset + 4;
get_frame_saved_regs (fi)[MCRH_REGNUM] = fi->frame + offset + 8; get_frame_saved_regs (fi)[MCRH_REGNUM] = get_frame_base (fi) + offset + 8;
get_frame_saved_regs (fi)[MDRQ_REGNUM] = fi->frame + offset + 12; get_frame_saved_regs (fi)[MDRQ_REGNUM] = get_frame_base (fi) + offset + 12;
get_frame_saved_regs (fi)[E0_REGNUM + 1] = fi->frame + offset + 16; get_frame_saved_regs (fi)[E0_REGNUM + 1] = get_frame_base (fi) + offset + 16;
get_frame_saved_regs (fi)[E0_REGNUM + 0] = fi->frame + offset + 20; get_frame_saved_regs (fi)[E0_REGNUM + 0] = get_frame_base (fi) + offset + 20;
offset += 24; offset += 24;
} }
if (movm_args & movm_exreg1_bit) if (movm_args & movm_exreg1_bit)
{ {
get_frame_saved_regs (fi)[E0_REGNUM + 7] = fi->frame + offset; get_frame_saved_regs (fi)[E0_REGNUM + 7] = get_frame_base (fi) + offset;
get_frame_saved_regs (fi)[E0_REGNUM + 6] = fi->frame + offset + 4; get_frame_saved_regs (fi)[E0_REGNUM + 6] = get_frame_base (fi) + offset + 4;
get_frame_saved_regs (fi)[E0_REGNUM + 5] = fi->frame + offset + 8; get_frame_saved_regs (fi)[E0_REGNUM + 5] = get_frame_base (fi) + offset + 8;
get_frame_saved_regs (fi)[E0_REGNUM + 4] = fi->frame + offset + 12; get_frame_saved_regs (fi)[E0_REGNUM + 4] = get_frame_base (fi) + offset + 12;
offset += 16; offset += 16;
} }
if (movm_args & movm_exreg0_bit) if (movm_args & movm_exreg0_bit)
{ {
get_frame_saved_regs (fi)[E0_REGNUM + 3] = fi->frame + offset; get_frame_saved_regs (fi)[E0_REGNUM + 3] = get_frame_base (fi) + offset;
get_frame_saved_regs (fi)[E0_REGNUM + 2] = fi->frame + offset + 4; get_frame_saved_regs (fi)[E0_REGNUM + 2] = get_frame_base (fi) + offset + 4;
offset += 8; offset += 8;
} }
} }
@ -686,7 +686,7 @@ mn10300_frame_chain (struct frame_info *fi)
/* The easiest way to get that info is to analyze our caller's frame. /* The easiest way to get that info is to analyze our caller's frame.
So we set up a dummy frame and call mn10300_analyze_prologue to So we set up a dummy frame and call mn10300_analyze_prologue to
find stuff for us. */ find stuff for us. */
dummy = analyze_dummy_frame (FRAME_SAVED_PC (fi), fi->frame); dummy = analyze_dummy_frame (FRAME_SAVED_PC (fi), get_frame_base (fi));
if (dummy->extra_info->status & MY_FRAME_IN_FP) if (dummy->extra_info->status & MY_FRAME_IN_FP)
{ {
@ -704,7 +704,7 @@ mn10300_frame_chain (struct frame_info *fi)
/* Our caller does not have a frame pointer. So his frame starts /* Our caller does not have a frame pointer. So his frame starts
at the base of our frame (fi->frame) + register save space at the base of our frame (fi->frame) + register save space
+ <his size>. */ + <his size>. */
return fi->frame + adjust + -dummy->extra_info->stack_size; return get_frame_base (fi) + adjust + -dummy->extra_info->stack_size;
} }
} }
@ -877,7 +877,7 @@ mn10300_frame_saved_pc (struct frame_info *fi)
{ {
int adjust = saved_regs_size (fi); int adjust = saved_regs_size (fi);
return (read_memory_integer (fi->frame + adjust, REGISTER_SIZE)); return (read_memory_integer (get_frame_base (fi) + adjust, REGISTER_SIZE));
} }
/* Function: mn10300_init_extra_frame_info /* Function: mn10300_init_extra_frame_info

View file

@ -311,7 +311,7 @@ ns32k_frame_chain (struct frame_info *frame)
if (inside_entry_file (get_frame_pc (frame))) if (inside_entry_file (get_frame_pc (frame)))
return 0; return 0;
return (read_memory_integer (frame->frame, 4)); return (read_memory_integer (get_frame_base (frame), 4));
} }
@ -345,14 +345,14 @@ ns32k_frame_saved_pc (struct frame_info *frame)
if ((get_frame_type (frame) == SIGTRAMP_FRAME)) if ((get_frame_type (frame) == SIGTRAMP_FRAME))
return (ns32k_sigtramp_saved_pc (frame)); /* XXXJRT */ return (ns32k_sigtramp_saved_pc (frame)); /* XXXJRT */
return (read_memory_integer (frame->frame + 4, 4)); return (read_memory_integer (get_frame_base (frame) + 4, 4));
} }
static CORE_ADDR static CORE_ADDR
ns32k_frame_args_address (struct frame_info *frame) ns32k_frame_args_address (struct frame_info *frame)
{ {
if (ns32k_get_enter_addr (get_frame_pc (frame)) > 1) if (ns32k_get_enter_addr (get_frame_pc (frame)) > 1)
return (frame->frame); return (get_frame_base (frame));
return (read_register (SP_REGNUM) - 4); return (read_register (SP_REGNUM) - 4);
} }
@ -360,7 +360,7 @@ ns32k_frame_args_address (struct frame_info *frame)
static CORE_ADDR static CORE_ADDR
ns32k_frame_locals_address (struct frame_info *frame) ns32k_frame_locals_address (struct frame_info *frame)
{ {
return (frame->frame); return (get_frame_base (frame));
} }
/* Code to initialize the addresses of the saved registers of frame described /* Code to initialize the addresses of the saved registers of frame described
@ -385,7 +385,7 @@ ns32k_frame_init_saved_regs (struct frame_info *frame)
{ {
regmask = read_memory_integer (enter_addr + 1, 1) & 0xff; regmask = read_memory_integer (enter_addr + 1, 1) & 0xff;
localcount = ns32k_localcount (enter_addr); localcount = ns32k_localcount (enter_addr);
next_addr = frame->frame + localcount; next_addr = get_frame_base (frame) + localcount;
for (regnum = 0; regnum < 8; regnum++) for (regnum = 0; regnum < 8; regnum++)
{ {
@ -393,9 +393,9 @@ ns32k_frame_init_saved_regs (struct frame_info *frame)
get_frame_saved_regs (frame)[regnum] = next_addr -= 4; get_frame_saved_regs (frame)[regnum] = next_addr -= 4;
} }
get_frame_saved_regs (frame)[SP_REGNUM] = frame->frame + 4; get_frame_saved_regs (frame)[SP_REGNUM] = get_frame_base (frame) + 4;
get_frame_saved_regs (frame)[PC_REGNUM] = frame->frame + 4; get_frame_saved_regs (frame)[PC_REGNUM] = get_frame_base (frame) + 4;
get_frame_saved_regs (frame)[FP_REGNUM] = read_memory_integer (frame->frame, 4); get_frame_saved_regs (frame)[FP_REGNUM] = read_memory_integer (get_frame_base (frame), 4);
} }
else if (enter_addr == 1) else if (enter_addr == 1)
{ {
@ -428,7 +428,7 @@ ns32k_pop_frame (void)
CORE_ADDR fp; CORE_ADDR fp;
int regnum; int regnum;
fp = frame->frame; fp = get_frame_base (frame);
FRAME_INIT_SAVED_REGS (frame); FRAME_INIT_SAVED_REGS (frame);
for (regnum = 0; regnum < 8; regnum++) for (regnum = 0; regnum < 8; regnum++)

View file

@ -285,9 +285,9 @@ s390_get_frame_info (CORE_ADDR pc, struct frame_extra_info *fextra_info,
save_link_regidx = subtract_sp_regidx = 0; save_link_regidx = subtract_sp_regidx = 0;
if (fextra_info) if (fextra_info)
{ {
if (fi && fi->frame) if (fi && get_frame_base (fi))
{ {
orig_sp = fi->frame; orig_sp = get_frame_base (fi);
if (! init_extra_info && fextra_info->initialised) if (! init_extra_info && fextra_info->initialised)
orig_sp += fextra_info->stack_bought; orig_sp += fextra_info->stack_bought;
saved_regs = get_frame_saved_regs (fi); saved_regs = get_frame_saved_regs (fi);
@ -829,11 +829,10 @@ s390_is_sigreturn (CORE_ADDR pc, struct frame_info *sighandler_fi,
if (sighandler_fi) if (sighandler_fi)
{ {
if (s390_frameless_function_invocation (sighandler_fi)) if (s390_frameless_function_invocation (sighandler_fi))
orig_sp = sighandler_fi->frame; orig_sp = get_frame_base (sighandler_fi);
else else
orig_sp = ADDR_BITS_REMOVE ((CORE_ADDR) orig_sp = ADDR_BITS_REMOVE ((CORE_ADDR)
read_memory_integer (sighandler_fi-> read_memory_integer (get_frame_base (sighandler_fi),
frame,
S390_GPR_SIZE)); S390_GPR_SIZE));
if (orig_sp && sigcaller_pc) if (orig_sp && sigcaller_pc)
{ {
@ -944,7 +943,7 @@ s390_frame_args_address (struct frame_info *fi)
{ {
/* Apparently gdb already knows gdb_args_offset itself */ /* Apparently gdb already knows gdb_args_offset itself */
return fi->frame; return get_frame_base (fi);
} }
@ -954,8 +953,10 @@ s390_frame_saved_pc_nofix (struct frame_info *fi)
if (fi->extra_info && fi->extra_info->saved_pc_valid) if (fi->extra_info && fi->extra_info->saved_pc_valid)
return fi->extra_info->saved_pc; return fi->extra_info->saved_pc;
if (deprecated_generic_find_dummy_frame (get_frame_pc (fi), fi->frame)) if (deprecated_generic_find_dummy_frame (get_frame_pc (fi),
return deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, S390_PC_REGNUM); get_frame_base (fi)))
return deprecated_read_register_dummy (get_frame_pc (fi),
get_frame_base (fi), S390_PC_REGNUM);
s390_frame_init_saved_regs (fi); s390_frame_init_saved_regs (fi);
if (fi->extra_info) if (fi->extra_info)
@ -1008,8 +1009,10 @@ s390_frame_chain (struct frame_info *thisframe)
{ {
CORE_ADDR prev_fp = 0; CORE_ADDR prev_fp = 0;
if (deprecated_generic_find_dummy_frame (get_frame_pc (thisframe), thisframe->frame)) if (deprecated_generic_find_dummy_frame (get_frame_pc (thisframe),
return deprecated_read_register_dummy (get_frame_pc (thisframe), thisframe->frame, get_frame_base (thisframe)))
return deprecated_read_register_dummy (get_frame_pc (thisframe),
get_frame_base (thisframe),
S390_SP_REGNUM); S390_SP_REGNUM);
else else
{ {

View file

@ -929,8 +929,10 @@ gdb_print_insn_sh (bfd_vma memaddr, disassemble_info *info)
static CORE_ADDR static CORE_ADDR
sh_frame_chain (struct frame_info *frame) sh_frame_chain (struct frame_info *frame)
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
return frame->frame; /* dummy frame same as caller's frame */ get_frame_base (frame),
get_frame_base (frame)))
return get_frame_base (frame); /* dummy frame same as caller's frame */
if (get_frame_pc (frame) && !inside_entry_file (get_frame_pc (frame))) if (get_frame_pc (frame) && !inside_entry_file (get_frame_pc (frame)))
return read_memory_integer (get_frame_base (frame) + frame->extra_info->f_offset, 4); return read_memory_integer (get_frame_base (frame) + frame->extra_info->f_offset, 4);
else else
@ -967,8 +969,10 @@ translate_insn_rn (int rn, int media_mode)
static CORE_ADDR static CORE_ADDR
sh64_frame_chain (struct frame_info *frame) sh64_frame_chain (struct frame_info *frame)
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
return frame->frame; /* dummy frame same as caller's frame */ get_frame_base (frame),
get_frame_base (frame)))
return get_frame_base (frame); /* dummy frame same as caller's frame */
if (get_frame_pc (frame) && !inside_entry_file (get_frame_pc (frame))) if (get_frame_pc (frame) && !inside_entry_file (get_frame_pc (frame)))
{ {
int media_mode = pc_is_isa32 (get_frame_pc (frame)); int media_mode = pc_is_isa32 (get_frame_pc (frame));
@ -992,10 +996,12 @@ 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 = fi->next)
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (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
that's where the previous routine appears to have done a call from. */ that's where the previous routine appears to have done a call from. */
return deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, regnum); return deprecated_read_register_dummy (get_frame_pc (fi),
get_frame_base (fi), regnum);
else else
{ {
FRAME_INIT_SAVED_REGS (fi); FRAME_INIT_SAVED_REGS (fi);
@ -1014,10 +1020,12 @@ 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 = fi->next)
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (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
that's where the previous routine appears to have done a call from. */ that's where the previous routine appears to have done a call from. */
return deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, pr_regnum); return deprecated_read_register_dummy (get_frame_pc (fi),
get_frame_base (fi), pr_regnum);
else else
{ {
FRAME_INIT_SAVED_REGS (fi); FRAME_INIT_SAVED_REGS (fi);
@ -1054,7 +1062,8 @@ sh_nofp_frame_init_saved_regs (struct frame_info *fi)
int opc; int opc;
int insn; int insn;
int r3_val = 0; int r3_val = 0;
char *dummy_regs = deprecated_generic_find_dummy_frame (get_frame_pc (fi), fi->frame); char *dummy_regs = deprecated_generic_find_dummy_frame (get_frame_pc (fi),
get_frame_base (fi));
if (get_frame_saved_regs (fi) == NULL) if (get_frame_saved_regs (fi) == NULL)
frame_saved_regs_zalloc (fi); frame_saved_regs_zalloc (fi);
@ -1141,7 +1150,7 @@ sh_nofp_frame_init_saved_regs (struct frame_info *fi)
if (rn == FP_REGNUM) if (rn == FP_REGNUM)
have_fp = 1; have_fp = 1;
get_frame_saved_regs (fi)[rn] = fi->frame - where[rn] + depth - 4; get_frame_saved_regs (fi)[rn] = get_frame_base (fi) - where[rn] + depth - 4;
} }
else else
{ {
@ -1155,7 +1164,7 @@ sh_nofp_frame_init_saved_regs (struct frame_info *fi)
} }
else else
{ {
get_frame_saved_regs (fi)[SP_REGNUM] = fi->frame - 4; get_frame_saved_regs (fi)[SP_REGNUM] = get_frame_base (fi) - 4;
} }
fi->extra_info->f_offset = depth - where[FP_REGNUM] - 4; fi->extra_info->f_offset = depth - where[FP_REGNUM] - 4;
@ -1393,7 +1402,7 @@ sh64_nofp_frame_init_saved_regs (struct frame_info *fi)
int insn_size; int insn_size;
int gdb_register_number; int gdb_register_number;
int register_number; int register_number;
char *dummy_regs = deprecated_generic_find_dummy_frame (get_frame_pc (fi), fi->frame); char *dummy_regs = deprecated_generic_find_dummy_frame (get_frame_pc (fi), get_frame_base (fi));
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
if (get_frame_saved_regs (fi) == NULL) if (get_frame_saved_regs (fi) == NULL)
@ -1554,7 +1563,7 @@ sh64_nofp_frame_init_saved_regs (struct frame_info *fi)
/* Watch out! saved_regs is only for the real registers, and /* Watch out! saved_regs is only for the real registers, and
doesn't include space for the pseudo registers. */ doesn't include space for the pseudo registers. */
get_frame_saved_regs (fi)[register_number]= fi->frame - where[rn] + depth; get_frame_saved_regs (fi)[register_number]= get_frame_base (fi) - where[rn] + depth;
} }
else else
@ -1578,7 +1587,7 @@ sh64_nofp_frame_init_saved_regs (struct frame_info *fi)
get_frame_saved_regs (fi)[sp_regnum] = read_memory_integer (get_frame_saved_regs (fi)[fp_regnum], size); get_frame_saved_regs (fi)[sp_regnum] = read_memory_integer (get_frame_saved_regs (fi)[fp_regnum], size);
} }
else else
get_frame_saved_regs (fi)[sp_regnum] = fi->frame; get_frame_saved_regs (fi)[sp_regnum] = get_frame_base (fi);
fi->extra_info->f_offset = depth - where[fp_regnum]; fi->extra_info->f_offset = depth - where[fp_regnum];
} }
@ -1594,7 +1603,7 @@ sh_fp_frame_init_saved_regs (struct frame_info *fi)
int opc; int opc;
int insn; int insn;
int r3_val = 0; int r3_val = 0;
char *dummy_regs = deprecated_generic_find_dummy_frame (get_frame_pc (fi), fi->frame); char *dummy_regs = deprecated_generic_find_dummy_frame (get_frame_pc (fi), get_frame_base (fi));
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
if (get_frame_saved_regs (fi) == NULL) if (get_frame_saved_regs (fi) == NULL)
@ -1693,7 +1702,7 @@ sh_fp_frame_init_saved_regs (struct frame_info *fi)
if (rn == FP_REGNUM) if (rn == FP_REGNUM)
have_fp = 1; have_fp = 1;
get_frame_saved_regs (fi)[rn] = fi->frame - where[rn] + depth - 4; get_frame_saved_regs (fi)[rn] = get_frame_base (fi) - where[rn] + depth - 4;
} }
else else
{ {
@ -1708,7 +1717,7 @@ sh_fp_frame_init_saved_regs (struct frame_info *fi)
} }
else else
{ {
get_frame_saved_regs (fi)[SP_REGNUM] = fi->frame - 4; get_frame_saved_regs (fi)[SP_REGNUM] = get_frame_base (fi) - 4;
} }
fi->extra_info->f_offset = depth - where[FP_REGNUM] - 4; fi->extra_info->f_offset = depth - where[FP_REGNUM] - 4;
@ -1726,14 +1735,15 @@ sh_init_extra_frame_info (int fromleaf, struct frame_info *fi)
if (fi->next) if (fi->next)
deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (fi->next)); deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (fi->next));
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi)))
{ {
/* We need to setup fi->frame here because run_stack_dummy gets it wrong /* We need to setup fi->frame here because run_stack_dummy gets it wrong
by assuming it's always FP. */ by assuming it's always FP. */
deprecated_update_frame_base_hack (fi, deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, deprecated_update_frame_base_hack (fi, deprecated_read_register_dummy (get_frame_pc (fi), get_frame_base (fi),
SP_REGNUM)); SP_REGNUM));
fi->extra_info->return_pc = deprecated_read_register_dummy (get_frame_pc (fi), fi->extra_info->return_pc = deprecated_read_register_dummy (get_frame_pc (fi),
fi->frame, get_frame_base (fi),
PC_REGNUM); PC_REGNUM);
fi->extra_info->f_offset = -(CALL_DUMMY_LENGTH + 4); fi->extra_info->f_offset = -(CALL_DUMMY_LENGTH + 4);
fi->extra_info->leaf_function = 0; fi->extra_info->leaf_function = 0;
@ -1757,14 +1767,15 @@ sh64_init_extra_frame_info (int fromleaf, struct frame_info *fi)
if (fi->next) if (fi->next)
deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (fi->next)); deprecated_update_frame_pc_hack (fi, FRAME_SAVED_PC (fi->next));
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi)))
{ {
/* We need to setup fi->frame here because run_stack_dummy gets it wrong /* We need to setup fi->frame here because run_stack_dummy gets it wrong
by assuming it's always FP. */ by assuming it's always FP. */
deprecated_update_frame_base_hack (fi, deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, deprecated_update_frame_base_hack (fi, deprecated_read_register_dummy (get_frame_pc (fi), get_frame_base (fi), SP_REGNUM));
SP_REGNUM));
fi->extra_info->return_pc = fi->extra_info->return_pc =
deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, PC_REGNUM); deprecated_read_register_dummy (get_frame_pc (fi),
get_frame_base (fi), PC_REGNUM);
fi->extra_info->f_offset = -(CALL_DUMMY_LENGTH + 4); fi->extra_info->f_offset = -(CALL_DUMMY_LENGTH + 4);
fi->extra_info->leaf_function = 0; fi->extra_info->leaf_function = 0;
return; return;
@ -1814,13 +1825,15 @@ sh64_get_saved_register (char *raw_buffer, int *optimized, CORE_ADDR *addrp,
while (frame && ((frame = frame->next) != NULL)) while (frame && ((frame = frame->next) != NULL))
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
get_frame_base (frame),
get_frame_base (frame)))
{ {
if (lval) /* found it in a CALL_DUMMY frame */ if (lval) /* found it in a CALL_DUMMY frame */
*lval = not_lval; *lval = not_lval;
if (raw_buffer) if (raw_buffer)
memcpy (raw_buffer, memcpy (raw_buffer,
(deprecated_generic_find_dummy_frame (get_frame_pc (frame), frame->frame) (deprecated_generic_find_dummy_frame (get_frame_pc (frame), get_frame_base (frame))
+ REGISTER_BYTE (regnum)), + REGISTER_BYTE (regnum)),
REGISTER_RAW_SIZE (regnum)); REGISTER_RAW_SIZE (regnum));
return; return;
@ -1908,7 +1921,9 @@ sh_pop_frame (void)
register CORE_ADDR fp; register CORE_ADDR fp;
register int regnum; register int regnum;
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
get_frame_base (frame),
get_frame_base (frame)))
generic_pop_dummy_frame (); generic_pop_dummy_frame ();
else else
{ {
@ -1938,7 +1953,9 @@ sh64_pop_frame (void)
int media_mode = pc_is_isa32 (get_frame_pc (frame)); int media_mode = pc_is_isa32 (get_frame_pc (frame));
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
get_frame_base (frame),
get_frame_base (frame)))
generic_pop_dummy_frame (); generic_pop_dummy_frame ();
else else
{ {

View file

@ -297,8 +297,8 @@ sparc_init_extra_frame_info (int fromleaf, struct frame_info *fi)
fi->extra_info->bottom = fi->extra_info->bottom =
(fi->next ? (fi->next ?
(fi->frame == fi->next->frame ? fi->next->extra_info->bottom : (get_frame_base (fi) == get_frame_base (fi->next) ? fi->next->extra_info->bottom :
fi->next->frame) : read_sp ()); get_frame_base (fi->next)) : 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. */
@ -326,8 +326,8 @@ sparc_init_extra_frame_info (int fromleaf, struct frame_info *fi)
get_saved_register (buf, 0, 0, fi, FP_REGNUM, 0); get_saved_register (buf, 0, 0, fi, FP_REGNUM, 0);
deprecated_update_frame_base_hack (fi, extract_address (buf, REGISTER_RAW_SIZE (FP_REGNUM))); deprecated_update_frame_base_hack (fi, extract_address (buf, REGISTER_RAW_SIZE (FP_REGNUM)));
if (GDB_TARGET_IS_SPARC64 && (fi->frame & 1)) if (GDB_TARGET_IS_SPARC64 && (get_frame_base (fi) & 1))
deprecated_update_frame_base_hack (fi, fi->frame + 2047); deprecated_update_frame_base_hack (fi, get_frame_base (fi) + 2047);
} }
} }
@ -367,12 +367,12 @@ sparc_init_extra_frame_info (int fromleaf, struct frame_info *fi)
get_saved_register (buf, 0, 0, fi, I7_REGNUM, 0); get_saved_register (buf, 0, 0, fi, I7_REGNUM, 0);
deprecated_update_frame_base_hack (fi, extract_address (buf, REGISTER_RAW_SIZE (I7_REGNUM))); deprecated_update_frame_base_hack (fi, extract_address (buf, REGISTER_RAW_SIZE (I7_REGNUM)));
if (GDB_TARGET_IS_SPARC64 && (fi->frame & 1)) if (GDB_TARGET_IS_SPARC64 && (get_frame_base (fi) & 1))
deprecated_update_frame_base_hack (fi, fi->frame + 2047); deprecated_update_frame_base_hack (fi, get_frame_base (fi) + 2047);
/* Record where the fp got saved. */ /* Record where the fp got saved. */
fi->extra_info->fp_addr = fi->extra_info->fp_addr =
fi->frame + fi->extra_info->sp_offset + X_SIMM13 (insn); get_frame_base (fi) + fi->extra_info->sp_offset + X_SIMM13 (insn);
/* Also try to collect where the pc got saved to. */ /* Also try to collect where the pc got saved to. */
fi->extra_info->pc_addr = 0; fi->extra_info->pc_addr = 0;
@ -382,7 +382,7 @@ sparc_init_extra_frame_info (int fromleaf, struct frame_info *fi)
&& X_OP3 (insn) == 4 && X_OP3 (insn) == 4
&& X_RS1 (insn) == 14) && X_RS1 (insn) == 14)
fi->extra_info->pc_addr = fi->extra_info->pc_addr =
fi->frame + fi->extra_info->sp_offset + X_SIMM13 (insn); get_frame_base (fi) + fi->extra_info->sp_offset + X_SIMM13 (insn);
} }
} }
else else
@ -415,10 +415,10 @@ sparc_init_extra_frame_info (int fromleaf, struct frame_info *fi)
} }
} }
} }
if (fi->next && fi->frame == 0) if (fi->next && 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, fi->next->frame); deprecated_update_frame_base_hack (fi, get_frame_base (fi->next));
deprecated_update_frame_pc_hack (fi, get_frame_pc (fi->next)); deprecated_update_frame_pc_hack (fi, get_frame_pc (fi->next));
} }
} }
@ -673,7 +673,7 @@ examine_prologue (CORE_ADDR start_pc, int frameless_p, struct frame_info *fi,
{ {
if (saved_regs && X_I (insn)) if (saved_regs && X_I (insn))
saved_regs[X_RD (insn)] = saved_regs[X_RD (insn)] =
fi->frame + fi->extra_info->sp_offset + X_SIMM13 (insn); get_frame_base (fi) + fi->extra_info->sp_offset + X_SIMM13 (insn);
} }
else else
break; break;
@ -851,7 +851,7 @@ sparc_get_saved_register (char *raw_buffer, int *optimized, CORE_ADDR *addrp,
The window registers are saved on the stack, just like in a The window registers are saved on the stack, just like in a
normal frame. */ normal frame. */
if (regnum >= G1_REGNUM && regnum < G1_REGNUM + 7) if (regnum >= G1_REGNUM && regnum < G1_REGNUM + 7)
addr = frame1->frame + (regnum - G0_REGNUM) * SPARC_INTREG_SIZE addr = get_frame_base (frame1) + (regnum - G0_REGNUM) * SPARC_INTREG_SIZE
- (FP_REGISTER_BYTES + 8 * SPARC_INTREG_SIZE); - (FP_REGISTER_BYTES + 8 * SPARC_INTREG_SIZE);
else if (regnum >= I0_REGNUM && regnum < I0_REGNUM + 8) else if (regnum >= I0_REGNUM && regnum < I0_REGNUM + 8)
/* NOTE: cagney/2002-05-04: The call to get_prev_frame() /* NOTE: cagney/2002-05-04: The call to get_prev_frame()
@ -872,18 +872,18 @@ sparc_get_saved_register (char *raw_buffer, int *optimized, CORE_ADDR *addrp,
+ (regnum - L0_REGNUM) * SPARC_INTREG_SIZE + (regnum - L0_REGNUM) * SPARC_INTREG_SIZE
+ FRAME_SAVED_L0); + FRAME_SAVED_L0);
else if (regnum >= O0_REGNUM && regnum < O0_REGNUM + 8) else if (regnum >= O0_REGNUM && regnum < O0_REGNUM + 8)
addr = frame1->frame + (regnum - O0_REGNUM) * SPARC_INTREG_SIZE addr = get_frame_base (frame1) + (regnum - O0_REGNUM) * SPARC_INTREG_SIZE
- (FP_REGISTER_BYTES + 16 * SPARC_INTREG_SIZE); - (FP_REGISTER_BYTES + 16 * SPARC_INTREG_SIZE);
else if (SPARC_HAS_FPU && else if (SPARC_HAS_FPU &&
regnum >= FP0_REGNUM && regnum < FP0_REGNUM + 32) regnum >= FP0_REGNUM && regnum < FP0_REGNUM + 32)
addr = frame1->frame + (regnum - FP0_REGNUM) * 4 addr = get_frame_base (frame1) + (regnum - FP0_REGNUM) * 4
- (FP_REGISTER_BYTES); - (FP_REGISTER_BYTES);
else if (GDB_TARGET_IS_SPARC64 && SPARC_HAS_FPU && else if (GDB_TARGET_IS_SPARC64 && SPARC_HAS_FPU &&
regnum >= FP0_REGNUM + 32 && regnum < FP_MAX_REGNUM) regnum >= FP0_REGNUM + 32 && regnum < FP_MAX_REGNUM)
addr = frame1->frame + 32 * 4 + (regnum - FP0_REGNUM - 32) * 8 addr = get_frame_base (frame1) + 32 * 4 + (regnum - FP0_REGNUM - 32) * 8
- (FP_REGISTER_BYTES); - (FP_REGISTER_BYTES);
else if (regnum >= Y_REGNUM && regnum < NUM_REGS) else if (regnum >= Y_REGNUM && regnum < NUM_REGS)
addr = frame1->frame + (regnum - Y_REGNUM) * SPARC_INTREG_SIZE addr = get_frame_base (frame1) + (regnum - Y_REGNUM) * SPARC_INTREG_SIZE
- (FP_REGISTER_BYTES + 24 * SPARC_INTREG_SIZE); - (FP_REGISTER_BYTES + 24 * SPARC_INTREG_SIZE);
} }
else if (frame1->extra_info->flat) else if (frame1->extra_info->flat)
@ -1284,7 +1284,7 @@ sparc_pop_frame (void)
read_memory_integer (fsr[O0_REGNUM + 7], read_memory_integer (fsr[O0_REGNUM + 7],
SPARC_INTREG_SIZE)); SPARC_INTREG_SIZE));
write_sp (frame->frame); write_sp (get_frame_base (frame));
} }
else if (fsr[I0_REGNUM]) else if (fsr[I0_REGNUM])
{ {

View file

@ -801,8 +801,10 @@ 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 = fi->next)
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
return deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, regnum); get_frame_base (fi)))
return deprecated_read_register_dummy (get_frame_pc (fi),
get_frame_base (fi), regnum);
else if (get_frame_saved_regs (fi)[regnum] != 0) else if (get_frame_saved_regs (fi)[regnum] != 0)
return read_memory_unsigned_integer (get_frame_saved_regs (fi)[regnum], return read_memory_unsigned_integer (get_frame_saved_regs (fi)[regnum],
v850_register_raw_size (regnum)); v850_register_raw_size (regnum));
@ -842,7 +844,7 @@ v850_frame_chain (struct frame_info *fi)
if (pi.framereg == E_FP_RAW_REGNUM) if (pi.framereg == E_FP_RAW_REGNUM)
return v850_find_callers_reg (fi, pi.framereg); return v850_find_callers_reg (fi, pi.framereg);
return fi->frame - pi.frameoffset; return get_frame_base (fi) - pi.frameoffset;
} }
/* Function: skip_prologue /* Function: skip_prologue
@ -884,7 +886,9 @@ v850_pop_frame (void)
struct frame_info *frame = get_current_frame (); struct frame_info *frame = get_current_frame ();
int regnum; int regnum;
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
get_frame_base (frame),
get_frame_base (frame)))
generic_pop_dummy_frame (); generic_pop_dummy_frame ();
else else
{ {
@ -1010,8 +1014,10 @@ v850_push_return_address (CORE_ADDR pc, CORE_ADDR sp)
CORE_ADDR CORE_ADDR
v850_frame_saved_pc (struct frame_info *fi) v850_frame_saved_pc (struct frame_info *fi)
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
return deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, E_PC_REGNUM); get_frame_base (fi)))
return deprecated_read_register_dummy (get_frame_pc (fi),
get_frame_base (fi), E_PC_REGNUM);
else else
return v850_find_callers_reg (fi, E_RP_REGNUM); return v850_find_callers_reg (fi, E_RP_REGNUM);
} }
@ -1112,7 +1118,8 @@ v850_frame_init_saved_regs (struct frame_info *fi)
/* The call dummy doesn't save any registers on the stack, so we /* The call dummy doesn't save any registers on the stack, so we
can return now. */ can return now. */
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi)))
return; return;
/* Find the beginning of this function, so we can analyze its /* Find the beginning of this function, so we can analyze its
@ -1128,7 +1135,7 @@ v850_frame_init_saved_regs (struct frame_info *fi)
for (pifsr = pifsrs; pifsr->framereg; pifsr++) for (pifsr = pifsrs; pifsr->framereg; pifsr++)
{ {
get_frame_saved_regs (fi)[pifsr->reg] = pifsr->offset + fi->frame; get_frame_saved_regs (fi)[pifsr->reg] = pifsr->offset + get_frame_base (fi);
if (pifsr->framereg == E_SP_REGNUM) if (pifsr->framereg == E_SP_REGNUM)
get_frame_saved_regs (fi)[pifsr->reg] += pi.frameoffset; get_frame_saved_regs (fi)[pifsr->reg] += pi.frameoffset;

View file

@ -135,9 +135,9 @@ vax_frame_init_saved_regs (struct frame_info *frame)
frame_saved_regs_zalloc (frame); frame_saved_regs_zalloc (frame);
regmask = read_memory_integer (frame->frame + 4, 4) >> 16; regmask = read_memory_integer (get_frame_base (frame) + 4, 4) >> 16;
next_addr = frame->frame + 16; next_addr = get_frame_base (frame) + 16;
/* regmask's low bit is for register 0, which is the first one /* regmask's low bit is for register 0, which is the first one
what would be pushed. */ what would be pushed. */
@ -152,10 +152,10 @@ vax_frame_init_saved_regs (struct frame_info *frame)
get_frame_saved_regs (frame)[SP_REGNUM] += get_frame_saved_regs (frame)[SP_REGNUM] +=
4 + (4 * read_memory_integer (next_addr + 4, 4)); 4 + (4 * read_memory_integer (next_addr + 4, 4));
get_frame_saved_regs (frame)[PC_REGNUM] = frame->frame + 16; get_frame_saved_regs (frame)[PC_REGNUM] = get_frame_base (frame) + 16;
get_frame_saved_regs (frame)[FP_REGNUM] = frame->frame + 12; get_frame_saved_regs (frame)[FP_REGNUM] = get_frame_base (frame) + 12;
get_frame_saved_regs (frame)[VAX_AP_REGNUM] = frame->frame + 8; get_frame_saved_regs (frame)[VAX_AP_REGNUM] = get_frame_base (frame) + 8;
get_frame_saved_regs (frame)[PS_REGNUM] = frame->frame + 4; get_frame_saved_regs (frame)[PS_REGNUM] = get_frame_base (frame) + 4;
} }
/* Get saved user PC for sigtramp from sigcontext for BSD style sigtramp. */ /* Get saved user PC for sigtramp from sigcontext for BSD style sigtramp. */
@ -190,7 +190,7 @@ vax_frame_saved_pc (struct frame_info *frame)
if ((get_frame_type (frame) == SIGTRAMP_FRAME)) if ((get_frame_type (frame) == SIGTRAMP_FRAME))
return (vax_sigtramp_saved_pc (frame)); /* XXXJRT */ return (vax_sigtramp_saved_pc (frame)); /* XXXJRT */
return (read_memory_integer (frame->frame + 16, 4)); return (read_memory_integer (get_frame_base (frame) + 16, 4));
} }
CORE_ADDR CORE_ADDR
@ -206,7 +206,7 @@ vax_frame_args_address_correct (struct frame_info *frame)
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 (frame->next)
return (read_memory_integer (frame->next->frame + 8, 4)); return (read_memory_integer (get_frame_base (frame->next) + 8, 4));
return (0); return (0);
} }
@ -218,7 +218,7 @@ vax_frame_args_address (struct frame_info *frame)
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 (frame->next)
return (read_memory_integer (frame->next->frame + 8, 4)); return (read_memory_integer (get_frame_base (frame->next) + 8, 4));
return (read_register (VAX_AP_REGNUM)); return (read_register (VAX_AP_REGNUM));
} }
@ -226,7 +226,7 @@ vax_frame_args_address (struct frame_info *frame)
static CORE_ADDR static CORE_ADDR
vax_frame_locals_address (struct frame_info *frame) vax_frame_locals_address (struct frame_info *frame)
{ {
return (frame->frame); return (get_frame_base (frame));
} }
static int static int
@ -243,7 +243,7 @@ vax_frame_chain (struct frame_info *frame)
if (inside_entry_file (get_frame_pc (frame))) if (inside_entry_file (get_frame_pc (frame)))
return (0); return (0);
return (read_memory_integer (frame->frame + 12, 4)); return (read_memory_integer (get_frame_base (frame) + 12, 4));
} }
static void static void

View file

@ -95,7 +95,7 @@ x86_64_linux_sigcontext_addr (struct frame_info *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 frame->next->frame + LINUX_SIGINFO_SIZE + return get_frame_base (frame->next) + LINUX_SIGINFO_SIZE +
LINUX_UCONTEXT_SIGCONTEXT_OFFSET; LINUX_UCONTEXT_SIGCONTEXT_OFFSET;
@ -164,10 +164,10 @@ x86_64_linux_frame_chain (struct frame_info *fi)
if (fp) if (fp)
return fp; return fp;
else else
addr = fi->frame; addr = get_frame_base (fi);
} }
else else
addr = fi->next->frame; addr = get_frame_base (fi->next);
addr += LINUX_SIGINFO_SIZE + LINUX_UCONTEXT_SIGCONTEXT_OFFSET; addr += LINUX_SIGINFO_SIZE + LINUX_UCONTEXT_SIGCONTEXT_OFFSET;

View file

@ -333,7 +333,8 @@ xstormy16_pop_frame (void)
if (fi == NULL) if (fi == NULL)
return; /* paranoia */ return; /* paranoia */
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi)))
{ {
generic_pop_dummy_frame (); generic_pop_dummy_frame ();
} }
@ -466,7 +467,8 @@ xstormy16_scan_prologue (CORE_ADDR start_addr, CORE_ADDR end_addr,
if (fi) if (fi)
{ {
/* In a call dummy, don't touch the frame. */ /* In a call dummy, don't touch the frame. */
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi)))
return start_addr; return start_addr;
/* Grab the frame-relative values of SP and FP, needed below. /* Grab the frame-relative values of SP and FP, needed below.
@ -756,9 +758,11 @@ xstormy16_frame_saved_pc (struct frame_info *fi)
{ {
CORE_ADDR saved_pc; CORE_ADDR saved_pc;
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi)))
{ {
saved_pc = deprecated_read_register_dummy (get_frame_pc (fi), fi->frame, saved_pc = deprecated_read_register_dummy (get_frame_pc (fi),
get_frame_base (fi),
E_PC_REGNUM); E_PC_REGNUM);
} }
else else
@ -816,15 +820,16 @@ xstormy16_init_extra_frame_info (int fromleaf, struct frame_info *fi)
static CORE_ADDR static CORE_ADDR
xstormy16_frame_chain (struct frame_info *fi) xstormy16_frame_chain (struct frame_info *fi)
{ {
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), fi->frame, fi->frame)) if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), get_frame_base (fi),
get_frame_base (fi)))
{ {
/* Call dummy's frame is the same as caller's. */ /* Call dummy's frame is the same as caller's. */
return fi->frame; return get_frame_base (fi);
} }
else else
{ {
/* Return computed offset from this frame's fp. */ /* Return computed offset from this frame's fp. */
return fi->frame - fi->extra_info->framesize; return get_frame_base (fi) - fi->extra_info->framesize;
} }
} }
@ -833,7 +838,7 @@ xstormy16_frame_chain_valid (CORE_ADDR chain, struct frame_info *thisframe)
{ {
return chain < 0x8000 && FRAME_SAVED_PC (thisframe) >= 0x8000 && return chain < 0x8000 && FRAME_SAVED_PC (thisframe) >= 0x8000 &&
(thisframe->extra_info->frameless_p || (thisframe->extra_info->frameless_p ||
thisframe->frame - thisframe->extra_info->framesize == chain); get_frame_base (thisframe) - thisframe->extra_info->framesize == chain);
} }
/* Function: xstormy16_saved_pc_after_call /* Function: xstormy16_saved_pc_after_call