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

* gdbarch.sh (TARGET_READ_SP): Add predicate, delete default.
	* gdbarch.h, gdbarch.c: Regenerate.
	* mn10300-tdep.c: Include "gdb_assert.h".
	(mn10300_read_fp): New function.
	(mn10300_gdbarch_init): Set deprecated_target_read_fp to
	mn10300_read_fp.  Do not set read_sp to generic_target_read_sp.
	* ia64-tdep.c: Include "gdb_assert.h".
	(ia64_read_fp): New function.
	(ia64_gdbarch_init): Set deprecated_target_read_fp to
	ia64_read_sp.  Do not set read_sp to generic_target_read_sp.
	* regcache.c (generic_target_read_sp): Delete function.
	(read_sp): Try TARGET_READ_SP and SP_REGNUM for the SP register.
	* inferior.h (generic_target_read_sp): Delete declaration.
	* frv-tdep.c (frv_gdbarch_init): Do not set read_sp to
	generic_target_read_sp.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
	* sparc-tdep.c (sparc_gdbarch_init): Ditto
	* sh-tdep.c (sh_gdbarch_init): Ditto.
	* rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
	* Makefile.in (mn10300-tdep.o, ia64-tdep.o): Update dependencies.
This commit is contained in:
Andrew Cagney 2003-06-07 18:08:25 +00:00
parent ec5cbaecff
commit bd1ce8ba9b
14 changed files with 96 additions and 34 deletions

View File

@ -1,3 +1,26 @@
2003-06-07 Andrew Cagney <cagney@redhat.com>
* gdbarch.sh (TARGET_READ_SP): Add predicate, delete default.
* gdbarch.h, gdbarch.c: Regenerate.
* mn10300-tdep.c: Include "gdb_assert.h".
(mn10300_read_fp): New function.
(mn10300_gdbarch_init): Set deprecated_target_read_fp to
mn10300_read_fp. Do not set read_sp to generic_target_read_sp.
* ia64-tdep.c: Include "gdb_assert.h".
(ia64_read_fp): New function.
(ia64_gdbarch_init): Set deprecated_target_read_fp to
ia64_read_sp. Do not set read_sp to generic_target_read_sp.
* regcache.c (generic_target_read_sp): Delete function.
(read_sp): Try TARGET_READ_SP and SP_REGNUM for the SP register.
* inferior.h (generic_target_read_sp): Delete declaration.
* frv-tdep.c (frv_gdbarch_init): Do not set read_sp to
generic_target_read_sp.
* m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
* sparc-tdep.c (sparc_gdbarch_init): Ditto
* sh-tdep.c (sh_gdbarch_init): Ditto.
* rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
* Makefile.in (mn10300-tdep.o, ia64-tdep.o): Update dependencies.
2003-06-07 Andrew Cagney <cagney@redhat.com>
* gdbarch.sh: Comment each field of startup_gdbarch.

View File

@ -1844,7 +1844,7 @@ ia64-linux-nat.o: ia64-linux-nat.c $(defs_h) $(gdb_string_h) $(inferior_h) \
ia64-linux-tdep.o: ia64-linux-tdep.c $(defs_h) $(arch_utils_h)
ia64-tdep.o: ia64-tdep.c $(defs_h) $(inferior_h) $(symfile_h) $(gdbcore_h) \
$(arch_utils_h) $(floatformat_h) $(regcache_h) $(doublest_h) \
$(value_h) $(objfiles_h) $(elf_common_h) $(elf_bfd_h)
$(value_h) $(gdb_assert_h) $(objfiles_h) $(elf_common_h) $(elf_bfd_h)
inf-loop.o: inf-loop.c $(defs_h) $(inferior_h) $(target_h) $(event_loop_h) \
$(event_top_h) $(inf_loop_h) $(remote_h)
infcall.o: infcall.c $(defs_h) $(breakpoint_h) $(target_h) $(regcache_h) \
@ -1998,9 +1998,9 @@ mipsv4-nat.o: mipsv4-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(target_h) \
mn10200-tdep.o: mn10200-tdep.c $(defs_h) $(frame_h) $(inferior_h) \
$(target_h) $(value_h) $(bfd_h) $(gdb_string_h) $(gdbcore_h) \
$(symfile_h) $(regcache_h)
mn10300-tdep.o: mn10300-tdep.c $(defs_h) $(frame_h) $(inferior_h) \
$(target_h) $(value_h) $(bfd_h) $(gdb_string_h) $(gdbcore_h) \
$(symfile_h) $(regcache_h) $(arch_utils_h)
mn10300-tdep.o: mn10300-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
$(value_h) $(bfd_h) $(gdb_string_h) $(gdbcore_h) $(symfile_h) \
$(regcache_h) $(arch_utils_h) $(gdb_assert_h)
monitor.o: monitor.c $(defs_h) $(gdbcore_h) $(target_h) $(gdb_string_h) \
$(command_h) $(serial_h) $(monitor_h) $(gdbcmd_h) $(inferior_h) \
$(gdb_regex_h) $(srec_h) $(regcache_h)

View File

@ -1100,7 +1100,6 @@ frv_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
set_gdbarch_write_pc (gdbarch, generic_target_write_pc);
set_gdbarch_read_sp (gdbarch, generic_target_read_sp);
set_gdbarch_deprecated_dummy_write_sp (gdbarch, generic_target_write_sp);
set_gdbarch_deprecated_pc_in_call_dummy (gdbarch, deprecated_pc_in_call_dummy_at_entry_point);

View File

@ -502,7 +502,6 @@ gdbarch_alloc (const struct gdbarch_info *info,
current_gdbarch->bfd_vma_bit = TARGET_ARCHITECTURE->bits_per_address;
current_gdbarch->char_signed = -1;
current_gdbarch->write_pc = generic_target_write_pc;
current_gdbarch->read_sp = generic_target_read_sp;
current_gdbarch->virtual_frame_pointer = legacy_virtual_frame_pointer;
current_gdbarch->num_regs = -1;
current_gdbarch->sp_regnum = -1;
@ -622,7 +621,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
/* Skip verify of read_pc, has predicate */
/* Skip verify of write_pc, invalid_p == 0 */
/* Skip verify of deprecated_target_read_fp, has predicate */
/* Skip verify of read_sp, invalid_p == 0 */
/* Skip verify of read_sp, has predicate */
/* Skip verify of deprecated_dummy_write_sp, has predicate */
/* Skip verify of virtual_frame_pointer, invalid_p == 0 */
/* Skip verify of pseudo_register_read, has predicate */
@ -2565,6 +2564,15 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
(long) current_gdbarch->read_pc
/*TARGET_READ_PC ()*/);
#endif
#ifdef TARGET_READ_SP_P
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"TARGET_READ_SP_P()",
XSTRING (TARGET_READ_SP_P ()));
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_READ_SP_P() = %d\n",
TARGET_READ_SP_P ());
#endif
#ifdef TARGET_READ_SP
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
@ -2955,6 +2963,13 @@ set_gdbarch_deprecated_target_read_fp (struct gdbarch *gdbarch,
gdbarch->deprecated_target_read_fp = deprecated_target_read_fp;
}
int
gdbarch_read_sp_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->read_sp != 0;
}
CORE_ADDR
gdbarch_read_sp (struct gdbarch *gdbarch)
{

View File

@ -371,9 +371,29 @@ extern void set_gdbarch_deprecated_target_read_fp (struct gdbarch *gdbarch, gdba
#define DEPRECATED_TARGET_READ_FP() (gdbarch_deprecated_target_read_fp (current_gdbarch))
#endif
#if defined (TARGET_READ_SP)
/* Legacy for systems yet to multi-arch TARGET_READ_SP */
#if !defined (TARGET_READ_SP_P)
#define TARGET_READ_SP_P() (1)
#endif
#endif
/* Default predicate for non- multi-arch targets. */
#if (!GDB_MULTI_ARCH) && !defined (TARGET_READ_SP_P)
#define TARGET_READ_SP_P() (0)
#endif
extern int gdbarch_read_sp_p (struct gdbarch *gdbarch);
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_READ_SP_P)
#error "Non multi-arch definition of TARGET_READ_SP"
#endif
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (TARGET_READ_SP_P)
#define TARGET_READ_SP_P() (gdbarch_read_sp_p (current_gdbarch))
#endif
/* Default (function) for non- multi-arch platforms. */
#if (!GDB_MULTI_ARCH) && !defined (TARGET_READ_SP)
#define TARGET_READ_SP() (generic_target_read_sp ())
#define TARGET_READ_SP() (internal_error (__FILE__, __LINE__, "TARGET_READ_SP"), 0)
#endif
typedef CORE_ADDR (gdbarch_read_sp_ftype) (void);

View File

@ -431,7 +431,7 @@ f:2:TARGET_WRITE_PC:void:write_pc:CORE_ADDR val, ptid_t ptid:val, ptid::0:generi
# This is simply not needed. See value_of_builtin_frame_fp_reg and
# call_function_by_hand.
F::DEPRECATED_TARGET_READ_FP:CORE_ADDR:deprecated_target_read_fp:void
f:2:TARGET_READ_SP:CORE_ADDR:read_sp:void:::0:generic_target_read_sp::0
F:2:TARGET_READ_SP:CORE_ADDR:read_sp:void
# The dummy call frame SP should be set by push_dummy_call.
F:2:DEPRECATED_DUMMY_WRITE_SP:void:deprecated_dummy_write_sp:CORE_ADDR val:val
# Function for getting target's idea of a frame pointer. FIXME: GDB's

View File

@ -28,7 +28,7 @@
#include "regcache.h"
#include "doublest.h"
#include "value.h"
#include "gdb_assert.h"
#include "objfiles.h"
#include "elf/common.h" /* for DT_PLTGOT value */
#include "elf-bfd.h"
@ -623,6 +623,18 @@ ia64_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
return breakpoint;
}
static CORE_ADDR
ia64_read_fp (void)
{
/* We won't necessarily have a frame pointer and even if we do, it
winds up being extraordinarly messy when attempting to find the
frame chain. So for the purposes of creating frames (which is
all deprecated_read_fp() is used for), simply use the stack
pointer value instead. */
gdb_assert (SP_REGNUM >= 0);
return read_register (SP_REGNUM);
}
CORE_ADDR
ia64_read_pc (ptid_t ptid)
{
@ -2296,12 +2308,11 @@ ia64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
frame chain. So for the purposes of creating frames (which is
all deprecated_read_fp() is used for), simply use the stack
pointer value instead. */
set_gdbarch_deprecated_target_read_fp (gdbarch, generic_target_read_sp);
set_gdbarch_deprecated_target_read_fp (gdbarch, ia64_read_fp);
/* Settings that should be unnecessary. */
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
set_gdbarch_read_sp (gdbarch, generic_target_read_sp);
set_gdbarch_deprecated_dummy_write_sp (gdbarch, generic_target_write_sp);
set_gdbarch_decr_pc_after_break (gdbarch, 0);

View File

@ -176,8 +176,6 @@ extern void generic_target_write_pc (CORE_ADDR, ptid_t);
extern CORE_ADDR read_sp (void);
extern CORE_ADDR generic_target_read_sp (void);
extern void generic_target_write_sp (CORE_ADDR);
extern CORE_ADDR deprecated_read_fp (void);

View File

@ -1366,7 +1366,6 @@ m68hc11_gdbarch_init (struct gdbarch_info info,
set_gdbarch_frame_args_skip (gdbarch, 0);
set_gdbarch_write_pc (gdbarch, generic_target_write_pc);
set_gdbarch_read_sp (gdbarch, generic_target_read_sp);
set_gdbarch_deprecated_dummy_write_sp (gdbarch, generic_target_write_sp);
set_gdbarch_sp_regnum (gdbarch, HARD_SP_REGNUM);

View File

@ -31,6 +31,7 @@
#include "symfile.h"
#include "regcache.h"
#include "arch-utils.h"
#include "gdb_assert.h"
#define D0_REGNUM 0
#define D2_REGNUM 2
@ -1091,6 +1092,14 @@ mn10300_do_registers_info (int regnum, int fpregs)
}
}
static CORE_ADDR
mn10300_read_fp (void)
{
/* That's right, we're using the stack pointer as our frame pointer. */
gdb_assert (SP_REGNUM >= 0);
return read_register (SP_REGNUM);
}
/* Dump out the mn10300 speciic architecture information. */
static void
@ -1184,7 +1193,7 @@ mn10300_gdbarch_init (struct gdbarch_info info,
set_gdbarch_frame_args_skip (gdbarch, 0);
set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);
/* That's right, we're using the stack pointer as our frame pointer. */
set_gdbarch_deprecated_target_read_fp (gdbarch, generic_target_read_sp);
set_gdbarch_deprecated_target_read_fp (gdbarch, mn10300_read_fp);
/* Calling functions in the inferior from GDB. */
set_gdbarch_deprecated_call_dummy_words (gdbarch, mn10300_call_dummy_words);

View File

@ -1273,9 +1273,6 @@ regcache_collect (int regnum, void *buf)
they will use the contextual information provided by the FRAME.
These functions do not belong in the register cache. */
/* NOTE: cagney/2003-06-07: The function generic_target_read_sp()
should be deleted. */
/* NOTE: cagney/2003-06-07: The function generic_target_write_sp()
should be deleted. */
@ -1352,21 +1349,15 @@ write_pc (CORE_ADDR pc)
/* Cope with strage ways of getting to the stack and frame pointers */
CORE_ADDR
generic_target_read_sp (void)
{
#ifdef SP_REGNUM
if (SP_REGNUM >= 0)
return read_register (SP_REGNUM);
#endif
internal_error (__FILE__, __LINE__,
"generic_target_read_sp");
}
CORE_ADDR
read_sp (void)
{
return TARGET_READ_SP ();
if (TARGET_READ_SP_P ())
return TARGET_READ_SP ();
/* Else return SP from get_current_frame. */
else if (SP_REGNUM >= 0)
return read_register (SP_REGNUM);
internal_error (__FILE__, __LINE__, "read_sp: Unable to find SP");
}
void

View File

@ -2911,7 +2911,6 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_print_insn (gdbarch, gdb_print_insn_powerpc);
set_gdbarch_write_pc (gdbarch, generic_target_write_pc);
set_gdbarch_read_sp (gdbarch, generic_target_read_sp);
set_gdbarch_deprecated_dummy_write_sp (gdbarch, generic_target_write_sp);
set_gdbarch_num_regs (gdbarch, v->nregs);

View File

@ -4638,7 +4638,6 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
}
set_gdbarch_write_pc (gdbarch, generic_target_write_pc);
set_gdbarch_read_sp (gdbarch, generic_target_read_sp);
set_gdbarch_deprecated_dummy_write_sp (gdbarch, generic_target_write_sp);
set_gdbarch_register_name (gdbarch, sh_register_name);

View File

@ -3423,7 +3423,6 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_pc_regnum (gdbarch, SPARC32_PC_REGNUM);
set_gdbarch_ptr_bit (gdbarch, 4 * TARGET_CHAR_BIT);
set_gdbarch_deprecated_push_arguments (gdbarch, sparc32_push_arguments);
set_gdbarch_read_sp (gdbarch, generic_target_read_sp);
set_gdbarch_register_byte (gdbarch, sparc32_register_byte);
set_gdbarch_register_raw_size (gdbarch, sparc32_register_size);