2002-11-28 Andrew Cagney <ac131313@redhat.com>
* gdbarch.sh (DEPRECATED_USE_GENERIC_DUMMY_FRAMES): Rename USE_GENERIC_DUMMY_FRAMES. * gdbarch.h, gdbarch.c: Regenerate. * valops.c, frame.c: Update. * config/z8k/tm-z8k.h, config/mn10200/tm-mn10200.h: Update. * config/m32r/tm-m32r.h, config/h8500/tm-h8500.h: Update. * config/pa/tm-hppa.h, blockframe.c: Update. * vax-tdep.c, sparc-tdep.c, ns32k-tdep.c: Ditto. * m68k-tdep.c, alpha-tdep.c: Ditto. * arm-tdep.c: Eliminate USE_GENERIC_DUMMY_FRAMES as always 1. * mips-tdep.c: Ditto. Index: doc/ChangeLog 2002-11-28 Andrew Cagney <ac131313@redhat.com> * gdbint.texinfo (Host Definition): Delete documentation on USE_GENERIC_DUMMY_FRAMES.
This commit is contained in:
parent
b99fa2d295
commit
07555a7286
@ -1,3 +1,18 @@
|
||||
2002-11-28 Andrew Cagney <ac131313@redhat.com>
|
||||
|
||||
* gdbarch.sh (DEPRECATED_USE_GENERIC_DUMMY_FRAMES): Rename
|
||||
USE_GENERIC_DUMMY_FRAMES.
|
||||
* gdbarch.h, gdbarch.c: Regenerate.
|
||||
* valops.c, frame.c: Update.
|
||||
* config/z8k/tm-z8k.h, config/mn10200/tm-mn10200.h: Update.
|
||||
* config/m32r/tm-m32r.h, config/h8500/tm-h8500.h: Update.
|
||||
* config/pa/tm-hppa.h, blockframe.c: Update.
|
||||
* vax-tdep.c, sparc-tdep.c, ns32k-tdep.c: Ditto.
|
||||
* m68k-tdep.c, alpha-tdep.c: Ditto.
|
||||
|
||||
* arm-tdep.c: Eliminate USE_GENERIC_DUMMY_FRAMES as always 1.
|
||||
* mips-tdep.c: Ditto.
|
||||
|
||||
2002-11-27 Andrew Cagney <ac131313@redhat.com>
|
||||
|
||||
* gdbarch.sh (CALL_DUMMY_LOCATION): Default to AT_ENTRY_POINT.
|
||||
|
@ -1868,7 +1868,7 @@ alpha_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
alpha_extract_struct_value_address);
|
||||
|
||||
/* Settings for calling functions in the inferior. */
|
||||
set_gdbarch_use_generic_dummy_frames (gdbarch, 0);
|
||||
set_gdbarch_deprecated_use_generic_dummy_frames (gdbarch, 0);
|
||||
set_gdbarch_call_dummy_length (gdbarch, 0);
|
||||
set_gdbarch_push_arguments (gdbarch, alpha_push_arguments);
|
||||
set_gdbarch_pop_frame (gdbarch, alpha_pop_frame);
|
||||
|
@ -410,8 +410,7 @@ arm_skip_prologue (CORE_ADDR pc)
|
||||
struct symtab_and_line sal;
|
||||
|
||||
/* If we're in a dummy frame, don't even try to skip the prologue. */
|
||||
if (USE_GENERIC_DUMMY_FRAMES
|
||||
&& PC_IN_CALL_DUMMY (pc, 0, 0))
|
||||
if (PC_IN_CALL_DUMMY (pc, 0, 0))
|
||||
return pc;
|
||||
|
||||
/* See what the symbol table says. */
|
||||
@ -536,8 +535,7 @@ thumb_scan_prologue (struct frame_info *fi)
|
||||
int i;
|
||||
|
||||
/* Don't try to scan dummy frames. */
|
||||
if (USE_GENERIC_DUMMY_FRAMES
|
||||
&& fi != NULL
|
||||
if (fi != NULL
|
||||
&& PC_IN_CALL_DUMMY (fi->pc, 0, 0))
|
||||
return;
|
||||
|
||||
@ -992,8 +990,7 @@ arm_find_callers_reg (struct frame_info *fi, int regnum)
|
||||
function could be called directly. */
|
||||
for (; fi; fi = fi->next)
|
||||
{
|
||||
if (USE_GENERIC_DUMMY_FRAMES
|
||||
&& PC_IN_CALL_DUMMY (fi->pc, 0, 0))
|
||||
if (PC_IN_CALL_DUMMY (fi->pc, 0, 0))
|
||||
{
|
||||
return deprecated_read_register_dummy (fi->pc, fi->frame, regnum);
|
||||
}
|
||||
@ -1022,8 +1019,7 @@ arm_frame_chain (struct frame_info *fi)
|
||||
CORE_ADDR caller_pc;
|
||||
int framereg = fi->extra_info->framereg;
|
||||
|
||||
if (USE_GENERIC_DUMMY_FRAMES
|
||||
&& PC_IN_CALL_DUMMY (fi->pc, 0, 0))
|
||||
if (PC_IN_CALL_DUMMY (fi->pc, 0, 0))
|
||||
/* A generic call dummy's frame is the same as caller's. */
|
||||
return fi->frame;
|
||||
|
||||
@ -1106,8 +1102,7 @@ arm_init_extra_frame_info (int fromleaf, struct frame_info *fi)
|
||||
the sigtramp and call dummy cases. */
|
||||
if (!fi->next)
|
||||
sp = read_sp();
|
||||
else if (USE_GENERIC_DUMMY_FRAMES
|
||||
&& PC_IN_CALL_DUMMY (fi->next->pc, 0, 0))
|
||||
else if (PC_IN_CALL_DUMMY (fi->next->pc, 0, 0))
|
||||
/* For generic dummy frames, pull the value direct from the frame.
|
||||
Having an unwind function to do this would be nice. */
|
||||
sp = deprecated_read_register_dummy (fi->next->pc, fi->next->frame,
|
||||
@ -1148,33 +1143,6 @@ arm_init_extra_frame_info (int fromleaf, struct frame_info *fi)
|
||||
fi->extra_info->frameoffset = 0;
|
||||
|
||||
}
|
||||
else if (!USE_GENERIC_DUMMY_FRAMES
|
||||
&& PC_IN_CALL_DUMMY (fi->pc, sp, fi->frame))
|
||||
{
|
||||
CORE_ADDR rp;
|
||||
CORE_ADDR callers_sp;
|
||||
|
||||
/* Set rp point at the high end of the saved registers. */
|
||||
rp = fi->frame - REGISTER_SIZE;
|
||||
|
||||
/* Fill in addresses of saved registers. */
|
||||
fi->saved_regs[ARM_PS_REGNUM] = rp;
|
||||
rp -= REGISTER_RAW_SIZE (ARM_PS_REGNUM);
|
||||
for (reg = ARM_PC_REGNUM; reg >= 0; reg--)
|
||||
{
|
||||
fi->saved_regs[reg] = rp;
|
||||
rp -= REGISTER_RAW_SIZE (reg);
|
||||
}
|
||||
|
||||
callers_sp = read_memory_integer (fi->saved_regs[ARM_SP_REGNUM],
|
||||
REGISTER_RAW_SIZE (ARM_SP_REGNUM));
|
||||
if (arm_pc_is_thumb (fi->pc))
|
||||
fi->extra_info->framereg = THUMB_FP_REGNUM;
|
||||
else
|
||||
fi->extra_info->framereg = ARM_FP_REGNUM;
|
||||
fi->extra_info->framesize = callers_sp - sp;
|
||||
fi->extra_info->frameoffset = fi->frame - sp;
|
||||
}
|
||||
else
|
||||
{
|
||||
arm_scan_prologue (fi);
|
||||
@ -1182,8 +1150,7 @@ arm_init_extra_frame_info (int fromleaf, struct frame_info *fi)
|
||||
if (!fi->next)
|
||||
/* This is the innermost frame? */
|
||||
fi->frame = read_register (fi->extra_info->framereg);
|
||||
else if (USE_GENERIC_DUMMY_FRAMES
|
||||
&& PC_IN_CALL_DUMMY (fi->next->pc, 0, 0))
|
||||
else if (PC_IN_CALL_DUMMY (fi->next->pc, 0, 0))
|
||||
/* Next inner most frame is a dummy, just grab its frame.
|
||||
Dummy frames always have the same FP as their caller. */
|
||||
fi->frame = fi->next->frame;
|
||||
@ -1224,8 +1191,7 @@ static CORE_ADDR
|
||||
arm_frame_saved_pc (struct frame_info *fi)
|
||||
{
|
||||
/* If a dummy frame, pull the PC out of the frame's register buffer. */
|
||||
if (USE_GENERIC_DUMMY_FRAMES
|
||||
&& PC_IN_CALL_DUMMY (fi->pc, 0, 0))
|
||||
if (PC_IN_CALL_DUMMY (fi->pc, 0, 0))
|
||||
return deprecated_read_register_dummy (fi->pc, fi->frame, ARM_PC_REGNUM);
|
||||
|
||||
if (PC_IN_CALL_DUMMY (fi->pc, fi->frame - fi->extra_info->frameoffset,
|
||||
@ -1554,8 +1520,7 @@ arm_pop_frame (void)
|
||||
CORE_ADDR old_SP = (frame->frame - frame->extra_info->frameoffset
|
||||
+ frame->extra_info->framesize);
|
||||
|
||||
if (USE_GENERIC_DUMMY_FRAMES
|
||||
&& PC_IN_CALL_DUMMY (frame->pc, frame->frame, frame->frame))
|
||||
if (PC_IN_CALL_DUMMY (frame->pc, frame->frame, frame->frame))
|
||||
{
|
||||
generic_pop_dummy_frame ();
|
||||
flush_cached_frames ();
|
||||
|
@ -719,7 +719,7 @@ generic_file_frame_chain_valid (CORE_ADDR fp, struct frame_info *fi)
|
||||
int
|
||||
generic_func_frame_chain_valid (CORE_ADDR fp, struct frame_info *fi)
|
||||
{
|
||||
if (USE_GENERIC_DUMMY_FRAMES
|
||||
if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES
|
||||
&& PC_IN_CALL_DUMMY ((fi)->pc, 0, 0))
|
||||
return 1; /* don't prune CALL_DUMMY frames */
|
||||
else /* fall back to default algorithm (see frame.h) */
|
||||
|
@ -1697,9 +1697,9 @@ deprecated_frame_in_dummy (struct frame_info *frame)
|
||||
return 0;
|
||||
|
||||
/* This function is used by two files: get_frame_type(), after first
|
||||
checking that !USE_GENERIC_DUMMY_FRAMES; and sparc-tdep.c, which
|
||||
doesn't yet use generic dummy frames anyway. */
|
||||
gdb_assert (!USE_GENERIC_DUMMY_FRAMES);
|
||||
checking that !DEPRECATED_USE_GENERIC_DUMMY_FRAMES; and
|
||||
sparc-tdep.c, which doesn't yet use generic dummy frames anyway. */
|
||||
gdb_assert (!DEPRECATED_USE_GENERIC_DUMMY_FRAMES);
|
||||
|
||||
ALL_BREAKPOINTS (b)
|
||||
{
|
||||
|
@ -23,7 +23,7 @@
|
||||
#include "regcache.h"
|
||||
|
||||
/* NOTE: cagney/2002-11-24: This is a guess. */
|
||||
#define USE_GENERIC_DUMMY_FRAMES 0
|
||||
#define DEPRECATED_USE_GENERIC_DUMMY_FRAMES 0
|
||||
#define CALL_DUMMY_LOCATION ON_STACK
|
||||
#define PC_IN_CALL_DUMMY(pc, sp, frame_address) deprecated_pc_in_call_dummy_on_stack (pc, sp, frame_address)
|
||||
|
||||
|
@ -224,7 +224,7 @@ extern CORE_ADDR m32r_push_arguments (int nargs,
|
||||
deprecated_generic_get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval)
|
||||
|
||||
|
||||
#define USE_GENERIC_DUMMY_FRAMES 1
|
||||
#define DEPRECATED_USE_GENERIC_DUMMY_FRAMES 1
|
||||
#define CALL_DUMMY {0}
|
||||
#define CALL_DUMMY_LENGTH (0)
|
||||
#define CALL_DUMMY_START_OFFSET (0)
|
||||
|
@ -184,7 +184,7 @@ extern CORE_ADDR mn10200_skip_prologue (CORE_ADDR);
|
||||
extern void mn10200_pop_frame (struct frame_info *);
|
||||
#define POP_FRAME mn10200_pop_frame (get_current_frame ())
|
||||
|
||||
#define USE_GENERIC_DUMMY_FRAMES 1
|
||||
#define DEPRECATED_USE_GENERIC_DUMMY_FRAMES 1
|
||||
#define CALL_DUMMY {0}
|
||||
#define CALL_DUMMY_START_OFFSET (0)
|
||||
#define CALL_DUMMY_BREAKPOINT_OFFSET (0)
|
||||
|
@ -27,7 +27,7 @@
|
||||
#define GDB_MULTI_ARCH 0
|
||||
|
||||
/* NOTE: cagney/2002-11-24: This is a guess. */
|
||||
#define USE_GENERIC_DUMMY_FRAMES 0
|
||||
#define DEPRECATED_USE_GENERIC_DUMMY_FRAMES 0
|
||||
#define CALL_DUMMY_LOCATION ON_STACK
|
||||
#define PC_IN_CALL_DUMMY(pc, sp, frame_address) deprecated_pc_in_call_dummy_on_stack (pc, sp, frame_address)
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* NOTE: cagney/2002-11-24: This is a guess. */
|
||||
#define USE_GENERIC_DUMMY_FRAMES 0
|
||||
#define DEPRECATED_USE_GENERIC_DUMMY_FRAMES 0
|
||||
#define CALL_DUMMY_LOCATION ON_STACK
|
||||
#define PC_IN_CALL_DUMMY(pc, sp, frame_address) deprecated_pc_in_call_dummy_on_stack (pc, sp, frame_address)
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
2002-11-28 Andrew Cagney <ac131313@redhat.com>
|
||||
|
||||
* gdbint.texinfo (Host Definition): Delete documentation on
|
||||
USE_GENERIC_DUMMY_FRAMES.
|
||||
|
||||
2002-11-26 Elena Zannoni <ezannoni@redhat.com>
|
||||
|
||||
Fix PR gdb/723 and PR gdb/245.
|
||||
|
@ -2245,11 +2245,6 @@ of functions to indicate that they never return. The default is already
|
||||
set correctly if compiling with GCC. This will almost never need to be
|
||||
defined.
|
||||
|
||||
@item USE_GENERIC_DUMMY_FRAMES
|
||||
@cindex generic dummy frames
|
||||
Define this to 1 if the target is using the generic inferior function
|
||||
call code. See @code{blockframe.c} for more information.
|
||||
|
||||
@item USE_MMALLOC
|
||||
@findex mmalloc
|
||||
@value{GDBN} will use the @code{mmalloc} library for memory allocation
|
||||
|
11
gdb/frame.c
11
gdb/frame.c
@ -458,7 +458,7 @@ frame_saved_regs_register_unwind (struct frame_info *frame, void **cache,
|
||||
/* If we're using generic dummy frames, we'd better not be in a call
|
||||
dummy. (generic_call_dummy_register_unwind ought to have been called
|
||||
instead.) */
|
||||
gdb_assert (!(USE_GENERIC_DUMMY_FRAMES
|
||||
gdb_assert (!(DEPRECATED_USE_GENERIC_DUMMY_FRAMES
|
||||
&& (get_frame_type (frame) == DUMMY_FRAME)));
|
||||
|
||||
/* Load the saved_regs register cache. */
|
||||
@ -649,7 +649,7 @@ set_unwind_by_pc (CORE_ADDR pc, CORE_ADDR fp,
|
||||
frame_register_unwind_ftype **unwind_register,
|
||||
frame_pc_unwind_ftype **unwind_pc)
|
||||
{
|
||||
if (!USE_GENERIC_DUMMY_FRAMES)
|
||||
if (!DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
|
||||
{
|
||||
/* Still need to set this to something. The ``info frame'' code
|
||||
calls this function to find out where the saved registers are.
|
||||
@ -704,7 +704,7 @@ create_new_frame (CORE_ADDR addr, CORE_ADDR pc)
|
||||
pc_in_dummy_frame() as some architectures don't set
|
||||
PC_IN_CALL_DUMMY() to generic_pc_in_call_dummy() (remember the
|
||||
latter is implemented by simply calling pc_in_dummy_frame). */
|
||||
if (USE_GENERIC_DUMMY_FRAMES && PC_IN_CALL_DUMMY (pc, 0, 0))
|
||||
if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES && PC_IN_CALL_DUMMY (pc, 0, 0))
|
||||
/* NOTE: cagney/2002-11-11: Does this even occure? */
|
||||
type = DUMMY_FRAME;
|
||||
else
|
||||
@ -989,7 +989,8 @@ get_prev_frame (struct frame_info *next_frame)
|
||||
pc_in_dummy_frame() as some architectures don't set
|
||||
PC_IN_CALL_DUMMY() to generic_pc_in_call_dummy() (remember the
|
||||
latter is implemented by simply calling pc_in_dummy_frame). */
|
||||
if (USE_GENERIC_DUMMY_FRAMES && PC_IN_CALL_DUMMY (prev->pc, 0, 0))
|
||||
if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES
|
||||
&& PC_IN_CALL_DUMMY (prev->pc, 0, 0))
|
||||
prev->type = DUMMY_FRAME;
|
||||
else
|
||||
{
|
||||
@ -1045,7 +1046,7 @@ get_frame_type (struct frame_info *frame)
|
||||
{
|
||||
/* Some targets still don't use [generic] dummy frames. Catch them
|
||||
here. */
|
||||
if (!USE_GENERIC_DUMMY_FRAMES
|
||||
if (!DEPRECATED_USE_GENERIC_DUMMY_FRAMES
|
||||
&& deprecated_frame_in_dummy (frame))
|
||||
return DUMMY_FRAME;
|
||||
return frame->type;
|
||||
|
@ -181,7 +181,7 @@ struct gdbarch
|
||||
gdbarch_cannot_fetch_register_ftype *cannot_fetch_register;
|
||||
gdbarch_cannot_store_register_ftype *cannot_store_register;
|
||||
gdbarch_get_longjmp_target_ftype *get_longjmp_target;
|
||||
int use_generic_dummy_frames;
|
||||
int deprecated_use_generic_dummy_frames;
|
||||
int call_dummy_location;
|
||||
gdbarch_call_dummy_address_ftype *call_dummy_address;
|
||||
CORE_ADDR call_dummy_start_offset;
|
||||
@ -522,7 +522,7 @@ gdbarch_alloc (const struct gdbarch_info *info,
|
||||
current_gdbarch->register_sim_regno = legacy_register_sim_regno;
|
||||
current_gdbarch->cannot_fetch_register = cannot_register_not;
|
||||
current_gdbarch->cannot_store_register = cannot_register_not;
|
||||
current_gdbarch->use_generic_dummy_frames = 1;
|
||||
current_gdbarch->deprecated_use_generic_dummy_frames = 1;
|
||||
current_gdbarch->call_dummy_location = AT_ENTRY_POINT;
|
||||
current_gdbarch->call_dummy_start_offset = -1;
|
||||
current_gdbarch->call_dummy_breakpoint_offset = -1;
|
||||
@ -680,7 +680,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
|
||||
/* Skip verify of cannot_fetch_register, invalid_p == 0 */
|
||||
/* Skip verify of cannot_store_register, invalid_p == 0 */
|
||||
/* Skip verify of get_longjmp_target, has predicate */
|
||||
/* Skip verify of use_generic_dummy_frames, invalid_p == 0 */
|
||||
/* Skip verify of deprecated_use_generic_dummy_frames, invalid_p == 0 */
|
||||
/* Skip verify of call_dummy_location, invalid_p == 0 */
|
||||
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
|
||||
&& (gdbarch->call_dummy_location == AT_ENTRY_POINT && gdbarch->call_dummy_address == 0))
|
||||
@ -1160,6 +1160,14 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
|
||||
(long) current_gdbarch->deprecated_store_return_value
|
||||
/*DEPRECATED_STORE_RETURN_VALUE ()*/);
|
||||
#endif
|
||||
#ifdef DEPRECATED_USE_GENERIC_DUMMY_FRAMES
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: DEPRECATED_USE_GENERIC_DUMMY_FRAMES # %s\n",
|
||||
XSTRING (DEPRECATED_USE_GENERIC_DUMMY_FRAMES));
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: DEPRECATED_USE_GENERIC_DUMMY_FRAMES = %d\n",
|
||||
DEPRECATED_USE_GENERIC_DUMMY_FRAMES);
|
||||
#endif
|
||||
#ifdef DWARF2_BUILD_FRAME_INFO
|
||||
#if GDB_MULTI_ARCH
|
||||
/* Macro might contain `[{}]' when not multi-arch */
|
||||
@ -2289,14 +2297,6 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
|
||||
(long) current_gdbarch->write_sp
|
||||
/*TARGET_WRITE_SP ()*/);
|
||||
#endif
|
||||
#ifdef USE_GENERIC_DUMMY_FRAMES
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: USE_GENERIC_DUMMY_FRAMES # %s\n",
|
||||
XSTRING (USE_GENERIC_DUMMY_FRAMES));
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: USE_GENERIC_DUMMY_FRAMES = %d\n",
|
||||
USE_GENERIC_DUMMY_FRAMES);
|
||||
#endif
|
||||
#ifdef USE_STRUCT_CONVENTION
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: %s # %s\n",
|
||||
@ -3321,20 +3321,20 @@ set_gdbarch_get_longjmp_target (struct gdbarch *gdbarch,
|
||||
}
|
||||
|
||||
int
|
||||
gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch)
|
||||
gdbarch_deprecated_use_generic_dummy_frames (struct gdbarch *gdbarch)
|
||||
{
|
||||
gdb_assert (gdbarch != NULL);
|
||||
/* Skip verify of use_generic_dummy_frames, invalid_p == 0 */
|
||||
/* Skip verify of deprecated_use_generic_dummy_frames, invalid_p == 0 */
|
||||
if (gdbarch_debug >= 2)
|
||||
fprintf_unfiltered (gdb_stdlog, "gdbarch_use_generic_dummy_frames called\n");
|
||||
return gdbarch->use_generic_dummy_frames;
|
||||
fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_use_generic_dummy_frames called\n");
|
||||
return gdbarch->deprecated_use_generic_dummy_frames;
|
||||
}
|
||||
|
||||
void
|
||||
set_gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch,
|
||||
int use_generic_dummy_frames)
|
||||
set_gdbarch_deprecated_use_generic_dummy_frames (struct gdbarch *gdbarch,
|
||||
int deprecated_use_generic_dummy_frames)
|
||||
{
|
||||
gdbarch->use_generic_dummy_frames = use_generic_dummy_frames;
|
||||
gdbarch->deprecated_use_generic_dummy_frames = deprecated_use_generic_dummy_frames;
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -971,18 +971,18 @@ extern void set_gdbarch_get_longjmp_target (struct gdbarch *gdbarch, gdbarch_get
|
||||
avoids any potential problems with moving beyond multi-arch partial. */
|
||||
|
||||
/* Default (value) for non- multi-arch platforms. */
|
||||
#if (!GDB_MULTI_ARCH) && !defined (USE_GENERIC_DUMMY_FRAMES)
|
||||
#define USE_GENERIC_DUMMY_FRAMES (1)
|
||||
#if (!GDB_MULTI_ARCH) && !defined (DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
|
||||
#define DEPRECATED_USE_GENERIC_DUMMY_FRAMES (1)
|
||||
#endif
|
||||
|
||||
extern int gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch);
|
||||
extern void set_gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch, int use_generic_dummy_frames);
|
||||
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && defined (USE_GENERIC_DUMMY_FRAMES)
|
||||
#error "Non multi-arch definition of USE_GENERIC_DUMMY_FRAMES"
|
||||
extern int gdbarch_deprecated_use_generic_dummy_frames (struct gdbarch *gdbarch);
|
||||
extern void set_gdbarch_deprecated_use_generic_dummy_frames (struct gdbarch *gdbarch, int deprecated_use_generic_dummy_frames);
|
||||
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
|
||||
#error "Non multi-arch definition of DEPRECATED_USE_GENERIC_DUMMY_FRAMES"
|
||||
#endif
|
||||
#if GDB_MULTI_ARCH
|
||||
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) || !defined (USE_GENERIC_DUMMY_FRAMES)
|
||||
#define USE_GENERIC_DUMMY_FRAMES (gdbarch_use_generic_dummy_frames (current_gdbarch))
|
||||
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
|
||||
#define DEPRECATED_USE_GENERIC_DUMMY_FRAMES (gdbarch_deprecated_use_generic_dummy_frames (current_gdbarch))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -488,7 +488,7 @@ F:2:GET_LONGJMP_TARGET:int:get_longjmp_target:CORE_ADDR *pc:pc::0:0
|
||||
# behaviour here (and hence entrench it further) gdbarch simply
|
||||
# reqires that these methods be set up from the word go. This also
|
||||
# avoids any potential problems with moving beyond multi-arch partial.
|
||||
v:1:USE_GENERIC_DUMMY_FRAMES:int:use_generic_dummy_frames:::::1::0
|
||||
v:1:DEPRECATED_USE_GENERIC_DUMMY_FRAMES:int:deprecated_use_generic_dummy_frames:::::1::0
|
||||
v:1:CALL_DUMMY_LOCATION:int:call_dummy_location:::::AT_ENTRY_POINT::0
|
||||
f:2:CALL_DUMMY_ADDRESS:CORE_ADDR:call_dummy_address:void:::0:0::gdbarch->call_dummy_location == AT_ENTRY_POINT && gdbarch->call_dummy_address == 0
|
||||
v:2:CALL_DUMMY_START_OFFSET:CORE_ADDR:call_dummy_start_offset::::0:-1:::0x%08lx
|
||||
|
@ -1031,7 +1031,7 @@ m68k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
set_gdbarch_ps_regnum (gdbarch, M68K_PS_REGNUM);
|
||||
set_gdbarch_fp0_regnum (gdbarch, M68K_FP0_REGNUM);
|
||||
|
||||
set_gdbarch_use_generic_dummy_frames (gdbarch, 0);
|
||||
set_gdbarch_deprecated_use_generic_dummy_frames (gdbarch, 0);
|
||||
set_gdbarch_call_dummy_location (gdbarch, ON_STACK);
|
||||
set_gdbarch_call_dummy_breakpoint_offset_p (gdbarch, 1);
|
||||
set_gdbarch_call_dummy_breakpoint_offset (gdbarch, 24);
|
||||
|
@ -1704,8 +1704,7 @@ mips_frame_saved_pc (struct frame_info *frame)
|
||||
int pcreg = (get_frame_type (frame) == SIGTRAMP_FRAME) ? PC_REGNUM
|
||||
: (proc_desc ? PROC_PC_REG (proc_desc) : RA_REGNUM);
|
||||
|
||||
if (USE_GENERIC_DUMMY_FRAMES
|
||||
&& PC_IN_CALL_DUMMY (frame->pc, 0, 0))
|
||||
if (PC_IN_CALL_DUMMY (frame->pc, 0, 0))
|
||||
{
|
||||
LONGEST tmp;
|
||||
frame_unwind_signed_register (frame, PC_REGNUM, &tmp);
|
||||
@ -2428,8 +2427,7 @@ mips_frame_chain (struct frame_info *frame)
|
||||
if ((tmp = SKIP_TRAMPOLINE_CODE (saved_pc)) != 0)
|
||||
saved_pc = tmp;
|
||||
|
||||
if (USE_GENERIC_DUMMY_FRAMES
|
||||
&& PC_IN_CALL_DUMMY (saved_pc, 0, 0))
|
||||
if (PC_IN_CALL_DUMMY (saved_pc, 0, 0))
|
||||
{
|
||||
/* 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
|
||||
@ -2454,8 +2452,7 @@ mips_frame_chain (struct frame_info *frame)
|
||||
&& !(get_frame_type (frame) == SIGTRAMP_FRAME)
|
||||
/* For a generic dummy frame, let get_frame_pointer() unwind a
|
||||
register value saved as part of the dummy frame call. */
|
||||
&& !(USE_GENERIC_DUMMY_FRAMES
|
||||
&& PC_IN_CALL_DUMMY (frame->pc, 0, 0)))
|
||||
&& !(PC_IN_CALL_DUMMY (frame->pc, 0, 0)))
|
||||
return 0;
|
||||
else
|
||||
return get_frame_pointer (frame, proc_desc);
|
||||
@ -2485,8 +2482,7 @@ mips_init_extra_frame_info (int fromleaf, struct frame_info *fci)
|
||||
if (fci->pc == PROC_LOW_ADDR (proc_desc)
|
||||
&& !PROC_DESC_IS_DUMMY (proc_desc))
|
||||
fci->frame = read_next_frame_reg (fci->next, SP_REGNUM);
|
||||
else if (USE_GENERIC_DUMMY_FRAMES
|
||||
&& PC_IN_CALL_DUMMY (fci->pc, 0, 0))
|
||||
else if (PC_IN_CALL_DUMMY (fci->pc, 0, 0))
|
||||
/* Do not ``fix'' fci->frame. It will have the value of the
|
||||
generic dummy frame's top-of-stack (since the draft
|
||||
fci->frame is obtained by returning the unwound stack
|
||||
@ -3816,8 +3812,7 @@ mips_pop_frame (void)
|
||||
CORE_ADDR new_sp = get_frame_base (frame);
|
||||
mips_extra_func_info_t proc_desc = frame->extra_info->proc_desc;
|
||||
|
||||
if (USE_GENERIC_DUMMY_FRAMES
|
||||
&& PC_IN_CALL_DUMMY (frame->pc, 0, 0))
|
||||
if (PC_IN_CALL_DUMMY (frame->pc, 0, 0))
|
||||
{
|
||||
generic_pop_dummy_frame ();
|
||||
flush_cached_frames ();
|
||||
|
@ -615,7 +615,7 @@ ns32k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
set_gdbarch_fix_call_dummy (gdbarch, ns32k_fix_call_dummy);
|
||||
set_gdbarch_call_dummy_start_offset (gdbarch, 3);
|
||||
set_gdbarch_call_dummy_breakpoint_offset_p (gdbarch, 0);
|
||||
set_gdbarch_use_generic_dummy_frames (gdbarch, 0);
|
||||
set_gdbarch_deprecated_use_generic_dummy_frames (gdbarch, 0);
|
||||
set_gdbarch_pc_in_call_dummy (gdbarch, deprecated_pc_in_call_dummy_on_stack);
|
||||
set_gdbarch_call_dummy_stack_adjust_p (gdbarch, 0);
|
||||
|
||||
|
@ -3179,7 +3179,7 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
set_gdbarch_short_bit (gdbarch, 2 * TARGET_CHAR_BIT);
|
||||
set_gdbarch_skip_prologue (gdbarch, sparc_skip_prologue);
|
||||
set_gdbarch_sp_regnum (gdbarch, SPARC_SP_REGNUM);
|
||||
set_gdbarch_use_generic_dummy_frames (gdbarch, 0);
|
||||
set_gdbarch_deprecated_use_generic_dummy_frames (gdbarch, 0);
|
||||
set_gdbarch_write_pc (gdbarch, generic_target_write_pc);
|
||||
|
||||
/*
|
||||
|
@ -1462,7 +1462,7 @@ hand_function_call (struct value *function, int nargs, struct value **args)
|
||||
if (CALL_DUMMY_LOCATION == ON_STACK)
|
||||
{
|
||||
write_memory (start_sp, (char *) dummy1, sizeof_dummy1);
|
||||
if (USE_GENERIC_DUMMY_FRAMES)
|
||||
if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
|
||||
generic_save_call_dummy_addr (start_sp, start_sp + sizeof_dummy1);
|
||||
}
|
||||
|
||||
@ -1480,7 +1480,7 @@ hand_function_call (struct value *function, int nargs, struct value **args)
|
||||
sp = old_sp;
|
||||
real_pc = text_end - sizeof_dummy1;
|
||||
write_memory (real_pc, (char *) dummy1, sizeof_dummy1);
|
||||
if (USE_GENERIC_DUMMY_FRAMES)
|
||||
if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
|
||||
generic_save_call_dummy_addr (real_pc, real_pc + sizeof_dummy1);
|
||||
}
|
||||
|
||||
@ -1493,14 +1493,14 @@ hand_function_call (struct value *function, int nargs, struct value **args)
|
||||
errcode = target_write_memory (real_pc, (char *) dummy1, sizeof_dummy1);
|
||||
if (errcode != 0)
|
||||
error ("Cannot write text segment -- call_function failed");
|
||||
if (USE_GENERIC_DUMMY_FRAMES)
|
||||
if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
|
||||
generic_save_call_dummy_addr (real_pc, real_pc + sizeof_dummy1);
|
||||
}
|
||||
|
||||
if (CALL_DUMMY_LOCATION == AT_ENTRY_POINT)
|
||||
{
|
||||
real_pc = funaddr;
|
||||
if (USE_GENERIC_DUMMY_FRAMES)
|
||||
if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
|
||||
/* NOTE: cagney/2002-04-13: The entry point is going to be
|
||||
modified with a single breakpoint. */
|
||||
generic_save_call_dummy_addr (CALL_DUMMY_ADDRESS (),
|
||||
|
@ -690,7 +690,7 @@ vax_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
set_gdbarch_call_dummy_start_offset (gdbarch, 0);
|
||||
set_gdbarch_call_dummy_breakpoint_offset_p (gdbarch, 1);
|
||||
set_gdbarch_call_dummy_breakpoint_offset (gdbarch, 7);
|
||||
set_gdbarch_use_generic_dummy_frames (gdbarch, 0);
|
||||
set_gdbarch_deprecated_use_generic_dummy_frames (gdbarch, 0);
|
||||
set_gdbarch_pc_in_call_dummy (gdbarch, deprecated_pc_in_call_dummy_on_stack);
|
||||
set_gdbarch_call_dummy_stack_adjust_p (gdbarch, 0);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user