* arm-tdep.c (arm_frame_chain_valid): Remove unnecessary test.

* d10v-tdep.c (d10v_frame_chain_valid): Remove unnecessary tests.
	* hppa-tdep.c (hppa_frame_chain_valid): Remove unnecessary test.

	* blockframe.c: Include "gdbcmd.h" and "command.h".
	(backtrace_below_main): New variable.
	(file_frame_chain_valid, func_frame_chain_valid)
	(nonnull_frame_chain_valid, generic_file_frame_chain_valid)
	(generic_func_frame_chain_valid): Remove functions.
	(frame_chain_valid, do_flush_frames_sfunc): New functions.
	(_initialize_blockframe): New function.
	* Makefile.in (blockframe.o): Update dependencies.
	* frame.c (frame_saved_regs_id_unwind, get_prev_frame): Remove FIXME
	comment.  Call frame_chain_valid ().
	* frame.h: Remove old prototypes.  Add prototype for
	frame_chain_valid and update comments to match.
	* gdbarch.sh: Change FRAME_CHAIN_VALID into a predicated function.
	Remove old comment.
	* gdbarch.h: Regenerated.
	* gdbarch.c: Regenerated.

Plus updates to all other targets not to provide a FRAME_CHAIN_VALID.
This commit is contained in:
Daniel Jacobowitz 2003-01-05 01:39:56 +00:00
parent 95f90d2595
commit 516034834f
40 changed files with 204 additions and 207 deletions

View File

@ -1,3 +1,60 @@
2003-01-04 Daniel Jacobowitz <drow@mvista.com>
* arm-tdep.c (arm_frame_chain_valid): Remove unnecessary test.
* d10v-tdep.c (d10v_frame_chain_valid): Remove unnecessary tests.
* hppa-tdep.c (hppa_frame_chain_valid): Remove unnecessary test.
* blockframe.c: Include "gdbcmd.h" and "command.h".
(backtrace_below_main): New variable.
(file_frame_chain_valid, func_frame_chain_valid)
(nonnull_frame_chain_valid, generic_file_frame_chain_valid)
(generic_func_frame_chain_valid): Remove functions.
(frame_chain_valid, do_flush_frames_sfunc): New functions.
(_initialize_blockframe): New function.
* Makefile.in (blockframe.o): Update dependencies.
* frame.c (frame_saved_regs_id_unwind, get_prev_frame): Remove FIXME
comment. Call frame_chain_valid ().
* frame.h: Remove old prototypes. Add prototype for
frame_chain_valid and update comments to match.
* gdbarch.sh: Change FRAME_CHAIN_VALID into a predicated function.
Remove old comment.
* gdbarch.h: Regenerated.
* gdbarch.c: Regenerated.
* alpha-tdep.c (alpha_gdbarch_init): Don't call
set_gdbarch_frame_chain_valid.
* avr-tdep.c (avr_gdbarch_init): Likewise.
* cris-tdep.c (cris_gdbarch_init): Likewise.
* frv-tdep.c (frv_gdbarch_init): Likewise.
* h8300-tdep.c (h8300_gdbarch_init): Likewise.
* i386-tdep.c (i386_svr4_init_abi): Likewise.
(i386_nw_init_abi): Likewise.
(i386_gdbarch_init): Likewise.
* ia64-tdep.c (ia64_gdbarch_init): Likewise.
* m68hc11-tdep.c (m68hc11_gdbarch_init): Likewise.
* m68k-tdep.c (m68k_gdbarch_init): Likewise.
* mcore-tdep.c (mcore_gdbarch_init): Likewise.
* mips-tdep.c (mips_gdbarch_init): Likewise.
* mn10300-tdep.c (mn10300_gdbarch_init): Likewise.
* ns32k-tdep.c (ns32k_gdbarch_init): Likewise.
* ppcnbsd-tdep.c (ppcnbsd_init_abi): Likewise.
* rs6000-tdep.c (rs6000_gdbarch_init): Likewise.
* s390-tdep.c (s390_gdbarch_init): Likewise.
* sh-tdep.c (sh_gdbarch_init): Likewise.
* sparc-tdep.c (sparc_gdbarch_init): Likewise.
* v850-tdep.c (v850_gdbarch_init): Likewise.
* vax-tdep.c (vax_gdbarch_init): Likewise.
* x86-64-tdep.c (x86_64_init_abi): Likewise.
* config/m32r/tm-m32r.h (FRAME_CHAIN_VALID): Don't define.
* config/m68k/tm-apollo68b.h (FRAME_CHAIN_VALID): Likewise.
* config/m68k/tm-m68kv4.h (FRAME_CHAIN_VALID): Likewise.
* config/m68k/tm-monitor.h (FRAME_CHAIN_VALID): Likewise.
* config/m68k/tm-os68k.h (FRAME_CHAIN_VALID): Likewise.
* config/m68k/tm-vx68.h (FRAME_CHAIN_VALID): Likewise.
* config/mn10200/tm-mn10200.h (FRAME_CHAIN_VALID): Likewise.
* config/sparc/tm-sparclite.h (FRAME_CHAIN_VALID): Likewise.
2002-01-04 Daniel Jacobowitz <drow@mvista.com>
* Makefile.in (acconfig_h): Remove incorrect macro.

View File

@ -1537,7 +1537,7 @@ bcache.o: bcache.c $(defs_h) $(gdb_obstack_h) $(bcache_h) $(gdb_string_h)
blockframe.o: blockframe.c $(defs_h) $(symtab_h) $(bfd_h) $(symfile_h) \
$(objfiles_h) $(frame_h) $(gdbcore_h) $(value_h) $(target_h) \
$(inferior_h) $(annotate_h) $(regcache_h) $(gdb_assert_h) \
$(dummy_frame_h)
$(dummy_frame_h) $(command_h) $(gdbcmd_h)
breakpoint.o: breakpoint.c $(defs_h) $(symtab_h) $(frame_h) $(breakpoint_h) \
$(gdbtypes_h) $(expression_h) $(gdbcore_h) $(gdbcmd_h) $(value_h) \
$(command_h) $(inferior_h) $(gdbthread_h) $(target_h) $(language_h) \

View File

@ -1842,7 +1842,6 @@ alpha_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_saved_pc_after_call (gdbarch, alpha_saved_pc_after_call);
set_gdbarch_frame_chain (gdbarch, alpha_frame_chain);
set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
set_gdbarch_frame_saved_pc (gdbarch, alpha_frame_saved_pc);
set_gdbarch_frame_init_saved_regs (gdbarch, alpha_frame_init_saved_regs);

View File

@ -159,7 +159,7 @@ struct frame_extra_info
static int
arm_frame_chain_valid (CORE_ADDR chain, struct frame_info *thisframe)
{
return (chain != 0 && (FRAME_SAVED_PC (thisframe) >= LOWEST_PC));
return (FRAME_SAVED_PC (thisframe) >= LOWEST_PC);
}
/* Set to true if the 32-bit mode is in use. */

View File

@ -1,5 +1,5 @@
/* Target-dependent code for Atmel AVR, for GDB.
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
This file is part of GDB.
@ -1262,7 +1262,6 @@ avr_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_frame_args_skip (gdbarch, 0);
set_gdbarch_frameless_function_invocation (gdbarch, frameless_look_for_prologue); /* ??? */
set_gdbarch_frame_chain (gdbarch, avr_frame_chain);
set_gdbarch_frame_chain_valid (gdbarch, generic_func_frame_chain_valid);
set_gdbarch_frame_saved_pc (gdbarch, avr_frame_saved_pc);
set_gdbarch_frame_args_address (gdbarch, avr_frame_address);
set_gdbarch_frame_locals_address (gdbarch, avr_frame_address);

View File

@ -2,7 +2,7 @@
functions and pc values.
Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software
1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
Foundation, Inc.
This file is part of GDB.
@ -36,42 +36,17 @@
#include "regcache.h"
#include "gdb_assert.h"
#include "dummy-frame.h"
#include "command.h"
#include "gdbcmd.h"
/* Flag to indicate whether backtraces should stop at main. */
static int backtrace_below_main;
/* Prototypes for exported functions. */
void _initialize_blockframe (void);
/* A default FRAME_CHAIN_VALID, in the form that is suitable for most
targets. If FRAME_CHAIN_VALID returns zero it means that the given
frame is the outermost one and has no caller. */
int
file_frame_chain_valid (CORE_ADDR chain, struct frame_info *thisframe)
{
return ((chain) != 0
&& !inside_entry_file (frame_pc_unwind (thisframe)));
}
/* Use the alternate method of avoiding running up off the end of the
frame chain or following frames back into the startup code. See
the comments in objfiles.h. */
int
func_frame_chain_valid (CORE_ADDR chain, struct frame_info *thisframe)
{
return ((chain) != 0
&& !inside_main_func (get_frame_pc (thisframe))
&& !inside_entry_func (get_frame_pc (thisframe)));
}
/* A very simple method of determining a valid frame */
int
nonnull_frame_chain_valid (CORE_ADDR chain, struct frame_info *thisframe)
{
return ((chain) != 0);
}
/* Is ADDR inside the startup file? Note that if your machine
has a way to detect the bottom of the stack, there is no need
to call this function from FRAME_CHAIN_VALID; the reason for
@ -689,34 +664,86 @@ deprecated_pc_in_call_dummy_at_entry_point (CORE_ADDR pc, CORE_ADDR sp,
&& (pc) <= (CALL_DUMMY_ADDRESS () + DECR_PC_AFTER_BREAK));
}
/* Function: frame_chain_valid
Returns true for a user frame or a call_function_by_hand dummy frame,
and false for the CRT0 start-up frame. Purpose is to terminate backtrace */
and false for the CRT0 start-up frame. Purpose is to terminate backtrace. */
int
generic_file_frame_chain_valid (CORE_ADDR fp, struct frame_info *fi)
{
if (DEPRECATED_PC_IN_CALL_DUMMY (frame_pc_unwind (fi), fp, fp))
return 1; /* don't prune CALL_DUMMY frames */
else /* fall back to default algorithm (see frame.h) */
return (fp != 0
&& (INNER_THAN (get_frame_base (fi), fp)
|| get_frame_base (fi) == fp)
&& !inside_entry_file (frame_pc_unwind (fi)));
}
int
generic_func_frame_chain_valid (CORE_ADDR fp, struct frame_info *fi)
frame_chain_valid (CORE_ADDR fp, struct frame_info *fi)
{
/* Don't prune CALL_DUMMY frames. */
if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES
&& DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fi), 0, 0))
return 1; /* don't prune CALL_DUMMY frames */
else /* fall back to default algorithm (see frame.h) */
return (fp != 0
&& (INNER_THAN (get_frame_base (fi), fp)
|| get_frame_base (fi) == fp)
&& !inside_main_func (get_frame_pc (fi))
&& !inside_entry_func (get_frame_pc (fi)));
return 1;
/* If the new frame pointer is zero, then it isn't valid. */
if (fp == 0)
return 0;
/* If the new frame would be inside (younger than) the previous frame,
then it isn't valid. */
if (INNER_THAN (fp, get_frame_base (fi)))
return 0;
/* If we're already inside the entry function for the main objfile, then it
isn't valid. */
if (inside_entry_func (get_frame_pc (fi)))
return 0;
/* If we're inside the entry file, it isn't valid. */
/* NOTE/drow 2002-12-25: should there be a way to disable this check? It
assumes a single small entry file, and the way some debug readers (e.g.
dbxread) figure out which object is the entry file is somewhat hokey. */
if (inside_entry_file (frame_pc_unwind (fi)))
return 0;
/* If we want backtraces to stop at main, and we're inside main, then it
isn't valid. */
if (!backtrace_below_main && inside_main_func (get_frame_pc (fi)))
return 0;
/* If the architecture has a custom FRAME_CHAIN_VALID, call it now. */
if (FRAME_CHAIN_VALID_P ())
return FRAME_CHAIN_VALID (fp, fi);
return 1;
}
void
do_flush_frames_sfunc (char *args, int from_tty, struct cmd_list_element *c)
{
int saved_level;
struct frame_info *cur_frame;
if (! target_has_stack)
return;
saved_level = frame_relative_level (get_selected_frame ());
flush_cached_frames ();
cur_frame = find_relative_frame (get_current_frame (), &saved_level);
select_frame (cur_frame);
/* If we were below main and backtrace-below-main was turned off,
SAVED_LEVEL will be non-zero. CUR_FRAME will point to main.
Accept this but print the new frame. */
if (saved_level != 0)
print_stack_frame (get_selected_frame (), -1, 0);
}
void
_initialize_blockframe (void)
{
add_setshow_boolean_cmd ("backtrace-below-main", class_obscure,
&backtrace_below_main,
"Set whether backtraces should continue past \"main\".\n"
"Normally the caller of \"main\" is not of interest, so GDB will terminate\n"
"the backtrace at \"main\". Set this variable if you need to see the rest\n"
"of the stack trace.",
"Show whether backtraces should continue past \"main\".\n"
"Normally the caller of \"main\" is not of interest, so GDB will terminate\n"
"the backtrace at \"main\". Set this variable if you need to see the rest\n"
"of the stack trace.",
do_flush_frames_sfunc, NULL, &setlist, &showlist);
}

View File

@ -131,8 +131,6 @@ extern CORE_ADDR m32r_frame_chain (struct frame_info *fi);
/* mvs_check FRAME_CHAIN */
#define FRAME_CHAIN(fi) m32r_frame_chain (fi)
#define FRAME_CHAIN_VALID(fp, frame) generic_file_frame_chain_valid (fp, frame)
extern CORE_ADDR m32r_find_callers_reg (struct frame_info *fi, int regnum);
extern CORE_ADDR m32r_frame_saved_pc (struct frame_info *);
/* mvs_check FRAME_SAVED_PC */

View File

@ -1,5 +1,5 @@
/* Parameters for execution on Apollo 68k running BSD.
Copyright 1986, 1987, 1989, 1991, 1993, 1994, 1998
Copyright 1986, 1987, 1989, 1991, 1993, 1994, 1998, 2003
Free Software Foundation, Inc.
Contributed by Cygnus Support.
@ -26,8 +26,6 @@
#include "m68k/tm-m68k.h"
#define FRAME_CHAIN_VALID(chain, thisframe) nonnull_frame_chain_valid (chain, thisframe)
/* These are the jmp_buf registers I could guess. There are 13 registers
* in the buffer. There are 8 data registers, 6 general address registers,
* the Frame Pointer, the Stack Pointer, the PC and the SR in the chip. I would

View File

@ -1,6 +1,6 @@
/* Target definitions for GDB on a Motorola 680x0 running SVR4.
(Commodore Amiga with amix or Atari TT with ASV)
Copyright 1991, 1994, 1995, 1996, 1998, 1999, 2000
Copyright 1991, 1994, 1995, 1996, 1998, 1999, 2000, 2003
Free Software Foundation, Inc.
Written by Fred Fish at Cygnus Support (fnf@cygint)
@ -30,10 +30,6 @@
#define DECR_PC_AFTER_BREAK 0 /* No decrement required */
/* Use the alternate method of determining valid frame chains. */
#define FRAME_CHAIN_VALID(fp,fi) func_frame_chain_valid (fp, fi)
#include "config/tm-sysv4.h"
#include "m68k/tm-m68k.h"

View File

@ -1,5 +1,5 @@
/* Target machine definitions for a generic m68k monitor/emulator.
Copyright 1986, 1987, 1989, 1993, 1994, 1995, 1996, 1998, 1999
Copyright 1986, 1987, 1989, 1993, 1994, 1995, 1996, 1998, 1999, 2003
Free Software Foundation, Inc.
This file is part of GDB.
@ -38,9 +38,4 @@
#include "m68k/tm-m68k.h"
/* Need to do this for ELF targets, where we can't figure out the boundaries of
the entry file. This method stops the backtrace when we reach main. */
#define FRAME_CHAIN_VALID(fp,fi) func_frame_chain_valid (fp, fi)
/* FIXME, should do GET_LONGJMP_TARGET for newlib. */

View File

@ -1,5 +1,5 @@
/* Parameters for execution on VxWorks m68k's, for GDB, the GNU debugger.
Copyright 1986, 1987, 1989, 1991, 1998 Free Software Foundation, Inc.
Copyright 1986, 1987, 1989, 1991, 1998, 2003 Free Software Foundation, Inc.
Contributed by Cygnus Support.
This file is part of GDB.
@ -37,11 +37,3 @@
#undef FRAME_CHAIN
#define FRAME_CHAIN(thisframe) ((thisframe)->frame? read_memory_integer ((thisframe)->frame, 4): 0)
/* If the chain pointer is zero (either because the saved value fetched
by FRAME_CHAIN was zero, or because the current FP was zero so FRAME_CHAIN
never fetched anything), we are at the top of the stack. */
/* We are guaranteed to have a zero frame pointer at bottom of stack, too. */
#undef FRAME_CHAIN_VALID
#define FRAME_CHAIN_VALID(chain, thisframe) nonnull_frame_chain_valid (chain, thisframe)

View File

@ -1,5 +1,6 @@
/* Target machine description for VxWorks m68k's, for GDB, the GNU debugger.
Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1996, 1998, 1999, 2000
Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1996, 1998, 1999, 2000,
2002, 2003
Free Software Foundation, Inc.
Contributed by Cygnus Support.
@ -41,14 +42,6 @@
#undef FRAME_CHAIN
#define FRAME_CHAIN(thisframe) ((thisframe)->frame? read_memory_integer ((thisframe)->frame, 4): 0)
/* If the chain pointer is zero (either because the saved value fetched
by FRAME_CHAIN was zero, or because the current FP was zero so FRAME_CHAIN
never fetched anything), we are at the top of the stack. */
/* We are guaranteed to have a zero frame pointer at bottom of stack, too. */
#undef FRAME_CHAIN_VALID
#define FRAME_CHAIN_VALID(chain, thisframe) nonnull_frame_chain_valid (chain, thisframe)
/* FIXME, Longjmp information stolen from Sun-3 config. Dunno if right. */
/* Offsets (in target ints) into jmp_buf. Not defined by Sun, but at least
documented in a comment in <machine/setjmp.h>! */

View File

@ -1,6 +1,6 @@
/* Parameters for execution on a Matsushita mn10200 processor.
Copyright 1997, 1998, 1999, 2000, 2001, 2002 Free Software
Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
Foundation, Inc.
Contributed by Geoffrey Noer <noer@cygnus.com>
@ -116,7 +116,6 @@ extern void mn10200_frame_find_saved_regs (struct frame_info *,
extern CORE_ADDR mn10200_frame_chain (struct frame_info *);
#define FRAME_CHAIN(fi) mn10200_frame_chain (fi)
#define FRAME_CHAIN_VALID(FP, FI) generic_file_frame_chain_valid (FP, FI)
extern CORE_ADDR mn10200_find_callers_reg (struct frame_info *, int);
extern CORE_ADDR mn10200_frame_saved_pc (struct frame_info *);

View File

@ -1,5 +1,5 @@
/* Macro definitions for GDB for a Fujitsu SPARClite.
Copyright 1993, 1994, 1995, 1998, 1999, 2000
Copyright 1993, 1994, 1995, 1998, 1999, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
This file is part of GDB.
@ -63,9 +63,6 @@ enum {
* The following defines must go away for MULTI_ARCH.
*/
#undef FRAME_CHAIN_VALID
#define FRAME_CHAIN_VALID(FP,FI) func_frame_chain_valid (FP, FI)
#undef NUM_REGS
#define NUM_REGS 80

View File

@ -1,5 +1,5 @@
/* Target dependent code for CRIS, for GDB, the GNU debugger.
Copyright 2001 Free Software Foundation, Inc.
Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
Contributed by Axis Communications AB.
Written by Hendrik Ruijter, Stefan Andersson, and Orjan Friberg.
@ -4312,7 +4312,6 @@ cris_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_frameless_function_invocation
(gdbarch, cris_frameless_function_invocation);
set_gdbarch_frame_chain (gdbarch, cris_frame_chain);
set_gdbarch_frame_chain_valid (gdbarch, generic_file_frame_chain_valid);
set_gdbarch_frame_saved_pc (gdbarch, cris_frame_saved_pc);
set_gdbarch_saved_pc_after_call (gdbarch, cris_saved_pc_after_call);

View File

@ -1,6 +1,6 @@
/* Target-dependent code for Mitsubishi D10V, for GDB.
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
Foundation, Inc.
This file is part of GDB.
@ -112,14 +112,7 @@ static void do_d10v_pop_frame (struct frame_info *fi);
static int
d10v_frame_chain_valid (CORE_ADDR chain, struct frame_info *frame)
{
if (chain != 0 && frame != NULL)
{
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), frame->frame, frame->frame))
return 1; /* Path back from a call dummy must be valid. */
return (get_frame_pc (frame) > IMEM_START
&& !inside_main_func (get_frame_pc (frame)));
}
else return 0;
return (get_frame_pc (frame) > IMEM_START);
}
static CORE_ADDR

View File

@ -1,7 +1,7 @@
/* Cache and manage frames for GDB, the GNU debugger.
Copyright 1986, 1987, 1989, 1991, 1994, 1995, 1996, 1998, 2000,
2001, 2002 Free Software Foundation, Inc.
2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of GDB.
@ -693,15 +693,7 @@ frame_saved_regs_id_unwind (struct frame_info *next_frame, void **cache)
main. */
id.base = FRAME_CHAIN (next_frame);
/* FIXME: cagney/2002-06-08: There should be two tests here.
The first would check for a valid frame chain based on a user
selectable policy. The default being ``stop at main'' (as
implemented by generic_func_frame_chain_valid()). Other
policies would be available - stop at NULL, .... The second
test, if provided by the target architecture, would check for
more exotic cases - most target architectures wouldn't bother
with this second case. */
if (!FRAME_CHAIN_VALID (id.base, next_frame))
if (!frame_chain_valid (id.base, next_frame))
return null_frame_id;
}
if (id.base == 0)
@ -1019,15 +1011,7 @@ get_prev_frame (struct frame_info *next_frame)
main. */
address = FRAME_CHAIN (next_frame);
/* FIXME: cagney/2002-06-08: There should be two tests here.
The first would check for a valid frame chain based on a user
selectable policy. The default being ``stop at main'' (as
implemented by generic_func_frame_chain_valid()). Other
policies would be available - stop at NULL, .... The second
test, if provided by the target architecture, would check for
more exotic cases - most target architectures wouldn't bother
with this second case. */
if (!FRAME_CHAIN_VALID (address, next_frame))
if (!frame_chain_valid (address, next_frame))
return 0;
}
if (address == 0)

View File

@ -1,7 +1,7 @@
/* Definitions for dealing with stack frames, for GDB, the GNU debugger.
Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996,
1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of GDB.
@ -474,23 +474,14 @@ enum print_what
extern void *frame_obstack_alloc (unsigned long size);
/* Define a default FRAME_CHAIN_VALID, in the form that is suitable for most
targets. If FRAME_CHAIN_VALID returns zero it means that the given frame
is the outermost one and has no caller.
/* If FRAME_CHAIN_VALID returns zero it means that the given frame
is the outermost one and has no caller. */
XXXX - both default and alternate frame_chain_valid functions are
deprecated. New code should use dummy frames and one of the
generic functions. */
extern int frame_chain_valid (CORE_ADDR, struct frame_info *);
extern int file_frame_chain_valid (CORE_ADDR, struct frame_info *);
extern int func_frame_chain_valid (CORE_ADDR, struct frame_info *);
extern int nonnull_frame_chain_valid (CORE_ADDR, struct frame_info *);
extern int generic_file_frame_chain_valid (CORE_ADDR, struct frame_info *);
extern int generic_func_frame_chain_valid (CORE_ADDR, struct frame_info *);
extern void generic_save_dummy_frame_tos (CORE_ADDR sp);
#ifdef FRAME_FIND_SAVED_REGS
/* XXX - deprecated */
#define FRAME_INIT_SAVED_REGS(FI) deprecated_get_frame_saved_regs (FI, NULL)

View File

@ -1083,7 +1083,6 @@ frv_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_saved_pc_after_call (gdbarch, frv_saved_pc_after_call);
set_gdbarch_frame_chain (gdbarch, frv_frame_chain);
set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
set_gdbarch_frame_saved_pc (gdbarch, frv_frame_saved_pc);
set_gdbarch_frame_init_saved_regs (gdbarch, frv_frame_init_saved_regs);

View File

@ -556,7 +556,6 @@ gdbarch_alloc (const struct gdbarch_info *info,
current_gdbarch->remote_translate_xfer_address = generic_remote_translate_xfer_address;
current_gdbarch->frame_args_skip = -1;
current_gdbarch->frameless_function_invocation = generic_frameless_function_invocation_not;
current_gdbarch->frame_chain_valid = generic_func_frame_chain_valid;
current_gdbarch->frame_args_address = get_frame_base;
current_gdbarch->frame_locals_address = get_frame_base;
current_gdbarch->extra_stack_alignment_needed = 1;
@ -769,7 +768,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
&& (gdbarch->frame_chain == 0))
fprintf_unfiltered (log, "\n\tframe_chain");
/* Skip verify of frame_chain_valid, invalid_p == 0 */
/* Skip verify of frame_chain_valid, has predicate */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
&& (gdbarch->frame_saved_pc == 0))
fprintf_unfiltered (log, "\n\tframe_saved_pc");
@ -1445,6 +1444,15 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
(long) current_gdbarch->frame_chain
/*FRAME_CHAIN ()*/);
#endif
#ifdef FRAME_CHAIN_VALID_P
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"FRAME_CHAIN_VALID_P()",
XSTRING (FRAME_CHAIN_VALID_P ()));
fprintf_unfiltered (file,
"gdbarch_dump: FRAME_CHAIN_VALID_P() = %d\n",
FRAME_CHAIN_VALID_P ());
#endif
#ifdef FRAME_CHAIN_VALID
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
@ -4640,6 +4648,13 @@ set_gdbarch_frame_chain (struct gdbarch *gdbarch,
gdbarch->frame_chain = frame_chain;
}
int
gdbarch_frame_chain_valid_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->frame_chain_valid != 0;
}
int
gdbarch_frame_chain_valid (struct gdbarch *gdbarch, CORE_ADDR chain, struct frame_info *thisframe)
{

View File

@ -1987,17 +1987,29 @@ extern void set_gdbarch_frame_chain (struct gdbarch *gdbarch, gdbarch_frame_chai
#endif
#endif
/* Define a default FRAME_CHAIN_VALID, in the form that is suitable for
most targets. If FRAME_CHAIN_VALID returns zero it means that the
given frame is the outermost one and has no caller.
XXXX - both default and alternate frame_chain_valid functions are
deprecated. New code should use dummy frames and one of the generic
functions. */
#if defined (FRAME_CHAIN_VALID)
/* Legacy for systems yet to multi-arch FRAME_CHAIN_VALID */
#if !defined (FRAME_CHAIN_VALID_P)
#define FRAME_CHAIN_VALID_P() (1)
#endif
#endif
/* Default predicate for non- multi-arch targets. */
#if (!GDB_MULTI_ARCH) && !defined (FRAME_CHAIN_VALID_P)
#define FRAME_CHAIN_VALID_P() (0)
#endif
extern int gdbarch_frame_chain_valid_p (struct gdbarch *gdbarch);
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FRAME_CHAIN_VALID_P)
#error "Non multi-arch definition of FRAME_CHAIN_VALID"
#endif
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (FRAME_CHAIN_VALID_P)
#define FRAME_CHAIN_VALID_P() (gdbarch_frame_chain_valid_p (current_gdbarch))
#endif
/* Default (function) for non- multi-arch platforms. */
#if (!GDB_MULTI_ARCH) && !defined (FRAME_CHAIN_VALID)
#define FRAME_CHAIN_VALID(chain, thisframe) (generic_func_frame_chain_valid (chain, thisframe))
#define FRAME_CHAIN_VALID(chain, thisframe) (internal_error (__FILE__, __LINE__, "FRAME_CHAIN_VALID"), 0)
#endif
typedef int (gdbarch_frame_chain_valid_ftype) (CORE_ADDR chain, struct frame_info *thisframe);

View File

@ -569,14 +569,7 @@ f:2:REMOTE_TRANSLATE_XFER_ADDRESS:void:remote_translate_xfer_address:CORE_ADDR g
v:2:FRAME_ARGS_SKIP:CORE_ADDR:frame_args_skip::::0:-1
f:2:FRAMELESS_FUNCTION_INVOCATION:int:frameless_function_invocation:struct frame_info *fi:fi:::generic_frameless_function_invocation_not::0
f:2:FRAME_CHAIN:CORE_ADDR:frame_chain:struct frame_info *frame:frame::0:0
# Define a default FRAME_CHAIN_VALID, in the form that is suitable for
# most targets. If FRAME_CHAIN_VALID returns zero it means that the
# given frame is the outermost one and has no caller.
#
# XXXX - both default and alternate frame_chain_valid functions are
# deprecated. New code should use dummy frames and one of the generic
# functions.
f:2:FRAME_CHAIN_VALID:int:frame_chain_valid:CORE_ADDR chain, struct frame_info *thisframe:chain, thisframe:::generic_func_frame_chain_valid::0
F:2:FRAME_CHAIN_VALID:int:frame_chain_valid:CORE_ADDR chain, struct frame_info *thisframe:chain, thisframe::0:0
f:2:FRAME_SAVED_PC:CORE_ADDR:frame_saved_pc:struct frame_info *fi:fi::0:0
f:2:FRAME_ARGS_ADDRESS:CORE_ADDR:frame_args_address:struct frame_info *fi:fi::0:get_frame_base::0
f:2:FRAME_LOCALS_ADDRESS:CORE_ADDR:frame_locals_address:struct frame_info *fi:fi::0:get_frame_base::0

View File

@ -1114,7 +1114,6 @@ h8300_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_saved_pc_after_call (gdbarch, h8300_saved_pc_after_call);
set_gdbarch_frame_saved_pc (gdbarch, h8300_frame_saved_pc);
set_gdbarch_skip_prologue (gdbarch, h8300_skip_prologue);
set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
set_gdbarch_frame_args_address (gdbarch, h8300_frame_args_address);
set_gdbarch_frame_locals_address (gdbarch, h8300_frame_locals_address);

View File

@ -1381,9 +1381,6 @@ hppa_frame_chain_valid (CORE_ADDR chain, struct frame_info *thisframe)
struct unwind_table_entry *u, *next_u = NULL;
struct frame_info *next;
if (!chain)
return 0;
u = find_unwind_entry (thisframe->pc);
if (u == NULL)

View File

@ -1408,9 +1408,6 @@ i386_svr4_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
set_gdbarch_in_solib_call_trampoline (gdbarch, in_plt_section);
set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
/* FIXME: kettenis/20020511: Why do we override this function here? */
set_gdbarch_frame_chain_valid (gdbarch, generic_func_frame_chain_valid);
set_gdbarch_pc_in_sigtramp (gdbarch, i386_svr4_pc_in_sigtramp);
tdep->sigcontext_addr = i386_svr4_sigcontext_addr;
tdep->sc_pc_offset = 14 * 4;
@ -1438,9 +1435,6 @@ i386_nw_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
/* FIXME: kettenis/20020511: Why do we override this function here? */
set_gdbarch_frame_chain_valid (gdbarch, generic_func_frame_chain_valid);
tdep->jb_pc_offset = 24;
}
@ -1622,7 +1616,6 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_frameless_function_invocation (gdbarch,
i386_frameless_function_invocation);
set_gdbarch_frame_chain (gdbarch, i386_frame_chain);
set_gdbarch_frame_chain_valid (gdbarch, generic_file_frame_chain_valid);
set_gdbarch_frame_saved_pc (gdbarch, i386_frame_saved_pc);
set_gdbarch_saved_pc_after_call (gdbarch, i386_saved_pc_after_call);
set_gdbarch_frame_num_args (gdbarch, i386_frame_num_args);

View File

@ -1,6 +1,6 @@
/* Target-dependent code for the IA-64 for GDB, the GNU debugger.
Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of GDB.
@ -2183,7 +2183,6 @@ ia64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_saved_pc_after_call (gdbarch, ia64_saved_pc_after_call);
set_gdbarch_frame_chain (gdbarch, ia64_frame_chain);
set_gdbarch_frame_chain_valid (gdbarch, generic_func_frame_chain_valid);
set_gdbarch_frame_saved_pc (gdbarch, ia64_frame_saved_pc);
set_gdbarch_frame_init_saved_regs (gdbarch, ia64_frame_init_saved_regs);

View File

@ -1,5 +1,5 @@
/* Target-dependent code for Motorola 68HC11 & 68HC12
Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Contributed by Stephane Carrez, stcarrez@nerim.fr
This file is part of GDB.
@ -1331,14 +1331,12 @@ m68hc11_gdbarch_init (struct gdbarch_info info,
set_gdbarch_frame_chain (gdbarch, m68hc11_frame_chain);
set_gdbarch_frame_chain_valid (gdbarch, generic_file_frame_chain_valid);
set_gdbarch_frame_saved_pc (gdbarch, m68hc11_frame_saved_pc);
set_gdbarch_frame_args_address (gdbarch, m68hc11_frame_args_address);
set_gdbarch_frame_locals_address (gdbarch, m68hc11_frame_locals_address);
set_gdbarch_saved_pc_after_call (gdbarch, m68hc11_saved_pc_after_call);
set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);
set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
set_gdbarch_get_saved_register (gdbarch, deprecated_generic_get_saved_register);
set_gdbarch_store_struct_return (gdbarch, m68hc11_store_struct_return);

View File

@ -1,5 +1,6 @@
/* Target dependent code for the Motorola 68000 series.
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2001
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2001,
2002, 2003
Free Software Foundation, Inc.
This file is part of GDB.
@ -1010,7 +1011,6 @@ m68k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_deprecated_store_return_value (gdbarch, m68k_store_return_value);
set_gdbarch_frame_chain (gdbarch, m68k_frame_chain);
set_gdbarch_frame_chain_valid (gdbarch, generic_func_frame_chain_valid);
set_gdbarch_frame_saved_pc (gdbarch, m68k_frame_saved_pc);
set_gdbarch_frame_init_saved_regs (gdbarch, m68k_frame_init_saved_regs);
set_gdbarch_frameless_function_invocation (gdbarch,

View File

@ -1,5 +1,5 @@
/* Target-machine dependent code for Motorola MCore for GDB, the GNU debugger
Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of GDB.
@ -1131,7 +1131,6 @@ mcore_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_init_extra_frame_info (gdbarch, mcore_init_extra_frame_info);
set_gdbarch_frame_chain (gdbarch, mcore_frame_chain);
set_gdbarch_frame_chain_valid (gdbarch, generic_func_frame_chain_valid);
set_gdbarch_frame_init_saved_regs (gdbarch, mcore_frame_init_saved_regs);
set_gdbarch_frame_saved_pc (gdbarch, mcore_frame_saved_pc);
set_gdbarch_deprecated_store_return_value (gdbarch, mcore_store_return_value);

View File

@ -5987,7 +5987,6 @@ mips_gdbarch_init (struct gdbarch_info info,
mips_register_convert_to_raw);
set_gdbarch_frame_chain (gdbarch, mips_frame_chain);
set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
set_gdbarch_frameless_function_invocation (gdbarch,
generic_frameless_function_invocation_not);
set_gdbarch_frame_saved_pc (gdbarch, mips_frame_saved_pc);

View File

@ -1,6 +1,6 @@
/* Target-dependent code for the Matsushita MN10300 for GDB, the GNU debugger.
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
Foundation, Inc.
This file is part of GDB.
@ -1162,9 +1162,7 @@ mn10300_gdbarch_init (struct gdbarch_info info,
set_gdbarch_decr_pc_after_break (gdbarch, 0);
/* Stack unwinding. */
set_gdbarch_frame_chain_valid (gdbarch, generic_file_frame_chain_valid);
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
set_gdbarch_frame_chain_valid (gdbarch, generic_file_frame_chain_valid);
set_gdbarch_saved_pc_after_call (gdbarch, mn10300_saved_pc_after_call);
set_gdbarch_init_extra_frame_info (gdbarch, mn10300_init_extra_frame_info);
set_gdbarch_deprecated_init_frame_pc (gdbarch, init_frame_pc_noop);

View File

@ -573,7 +573,6 @@ ns32k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
generic_frameless_function_invocation_not);
set_gdbarch_frame_chain (gdbarch, ns32k_frame_chain);
set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
set_gdbarch_frame_saved_pc (gdbarch, ns32k_frame_saved_pc);
set_gdbarch_frame_args_address (gdbarch, ns32k_frame_args_address);

View File

@ -208,9 +208,6 @@ static void
ppcnbsd_init_abi (struct gdbarch_info info,
struct gdbarch *gdbarch)
{
/* Stop at main. */
set_gdbarch_frame_chain_valid (gdbarch, generic_func_frame_chain_valid);
set_gdbarch_pc_in_sigtramp (gdbarch, ppcnbsd_pc_in_sigtramp);
set_solib_svr4_fetch_link_map_offsets (gdbarch,

View File

@ -2928,8 +2928,6 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_use_struct_convention (gdbarch,
generic_use_struct_convention);
set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
set_gdbarch_frameless_function_invocation (gdbarch,
rs6000_frameless_function_invocation);
set_gdbarch_frame_chain (gdbarch, rs6000_frame_chain);

View File

@ -1815,7 +1815,6 @@ s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_cannot_fetch_register (gdbarch, s390_cannot_fetch_register);
set_gdbarch_cannot_store_register (gdbarch, s390_cannot_fetch_register);
set_gdbarch_use_struct_convention (gdbarch, s390_use_struct_convention);
set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
set_gdbarch_register_name (gdbarch, s390_register_name);
set_gdbarch_stab_reg_to_regnum (gdbarch, s390_stab_reg_to_regnum);
set_gdbarch_dwarf_reg_to_regnum (gdbarch, s390_stab_reg_to_regnum);

View File

@ -4565,7 +4565,6 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_frame_args_skip (gdbarch, 0);
set_gdbarch_frameless_function_invocation (gdbarch, frameless_look_for_prologue);
set_gdbarch_frame_chain_valid (gdbarch, generic_file_frame_chain_valid);
set_gdbarch_frame_saved_pc (gdbarch, sh_frame_saved_pc);
set_gdbarch_saved_pc_after_call (gdbarch, sh_saved_pc_after_call);
set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);

View File

@ -3332,7 +3332,6 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
{
case bfd_mach_sparc:
set_gdbarch_deprecated_extract_return_value (gdbarch, sparc32_extract_return_value);
set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
set_gdbarch_num_regs (gdbarch, 72);
set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4);
set_gdbarch_register_name (gdbarch, sparc32_register_name);
@ -3343,7 +3342,6 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
break;
case bfd_mach_sparc_sparclet:
set_gdbarch_deprecated_extract_return_value (gdbarch, sparclet_extract_return_value);
set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
set_gdbarch_num_regs (gdbarch, 32 + 32 + 8 + 8 + 8);
set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4 + 8*4 + 8*4);
set_gdbarch_register_name (gdbarch, sparclet_register_name);
@ -3354,7 +3352,6 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
break;
case bfd_mach_sparc_sparclite:
set_gdbarch_deprecated_extract_return_value (gdbarch, sparc32_extract_return_value);
set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
set_gdbarch_num_regs (gdbarch, 80);
set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4 + 8*4);
set_gdbarch_register_name (gdbarch, sparclite_register_name);
@ -3365,7 +3362,6 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
break;
case bfd_mach_sparc_v8plus:
set_gdbarch_deprecated_extract_return_value (gdbarch, sparc32_extract_return_value);
set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
set_gdbarch_num_regs (gdbarch, 72);
set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4);
set_gdbarch_register_name (gdbarch, sparc32_register_name);
@ -3376,7 +3372,6 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
break;
case bfd_mach_sparc_v8plusa:
set_gdbarch_deprecated_extract_return_value (gdbarch, sparc32_extract_return_value);
set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
set_gdbarch_num_regs (gdbarch, 72);
set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4);
set_gdbarch_register_name (gdbarch, sparc32_register_name);
@ -3387,7 +3382,6 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
break;
case bfd_mach_sparc_sparclite_le:
set_gdbarch_deprecated_extract_return_value (gdbarch, sparc32_extract_return_value);
set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
set_gdbarch_num_regs (gdbarch, 80);
set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4 + 8*4);
set_gdbarch_register_name (gdbarch, sparclite_register_name);
@ -3398,7 +3392,6 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
break;
case bfd_mach_sparc_v9:
set_gdbarch_deprecated_extract_return_value (gdbarch, sparc64_extract_return_value);
set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
set_gdbarch_num_regs (gdbarch, 125);
set_gdbarch_register_bytes (gdbarch, 32*8 + 32*8 + 45*8);
set_gdbarch_register_name (gdbarch, sparc64_register_name);
@ -3409,7 +3402,6 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
break;
case bfd_mach_sparc_v9a:
set_gdbarch_deprecated_extract_return_value (gdbarch, sparc64_extract_return_value);
set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
set_gdbarch_num_regs (gdbarch, 125);
set_gdbarch_register_bytes (gdbarch, 32*8 + 32*8 + 45*8);
set_gdbarch_register_name (gdbarch, sparc64_register_name);

View File

@ -1241,7 +1241,6 @@ v850_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_saved_pc_after_call (gdbarch, v850_saved_pc_after_call);
set_gdbarch_frame_saved_pc (gdbarch, v850_frame_saved_pc);
set_gdbarch_skip_prologue (gdbarch, v850_skip_prologue);
set_gdbarch_frame_chain_valid (gdbarch, generic_file_frame_chain_valid);
/*
* Miscelany

View File

@ -650,7 +650,6 @@ vax_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
generic_frameless_function_invocation_not);
set_gdbarch_frame_chain (gdbarch, vax_frame_chain);
set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
set_gdbarch_frame_saved_pc (gdbarch, vax_frame_saved_pc);
set_gdbarch_frame_args_address (gdbarch, vax_frame_args_address);

View File

@ -1,6 +1,6 @@
/* Target-dependent code for the x86-64 for GDB, the GNU debugger.
Copyright 2001, 2002 Free Software Foundation, Inc.
Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
Contributed by Jiri Smid, SuSE Labs.
This file is part of GDB.
@ -1005,9 +1005,6 @@ x86_64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
set_gdbarch_frame_chain (gdbarch, x86_64_linux_frame_chain);
set_gdbarch_frameless_function_invocation (gdbarch,
x86_64_frameless_function_invocation);
/* FIXME: kettenis/20021025: Shouldn't this be set to
generic_file_frame_chain_valid? */
set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
/* FIXME: kettenis/20021026: These two are GNU/Linux-specific and
should be moved elsewhere. */
set_gdbarch_frame_saved_pc (gdbarch, x86_64_linux_frame_saved_pc);