mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-24 12:35:55 +08:00
* frame.c (read_relative_register_raw_bytes_for_frame): Do not
override FP_REGNUM with frame->fp. Update copyright. * parse.c (num_std_regs, std_regs): Delete. (target_map_name_to_register): Do not search std_regs. Update function description. * parser-defs.h (num_std_regs, std_regs, struct std_regs): Delete declarations. Update copyright. Fix PR gdb/251.
This commit is contained in:
parent
c3a3ccc760
commit
96cb11df6d
@ -1,3 +1,14 @@
|
||||
2002-04-09 Andrew Cagney <ac131313@redhat.com>
|
||||
|
||||
* frame.c (read_relative_register_raw_bytes_for_frame): Do not
|
||||
override FP_REGNUM with frame->fp. Update copyright.
|
||||
* parse.c (num_std_regs, std_regs): Delete.
|
||||
(target_map_name_to_register): Do not search std_regs. Update
|
||||
function description.
|
||||
* parser-defs.h (num_std_regs, std_regs, struct std_regs): Delete
|
||||
declarations. Update copyright.
|
||||
Fix PR gdb/251.
|
||||
|
||||
2002-04-09 Daniel Jacobowitz <drow@mvista.com>
|
||||
|
||||
* gdbserver/Makefile.in: Add stamp-h target.
|
||||
|
17
gdb/frame.c
17
gdb/frame.c
@ -1,6 +1,7 @@
|
||||
/* Cache and manage the values of registers for GDB, the GNU debugger.
|
||||
Copyright 1986, 1987, 1989, 1991, 1994, 1995, 1996, 1998, 2000, 2001
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
Copyright 1986, 1987, 1989, 1991, 1994, 1995, 1996, 1998, 2000,
|
||||
2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GDB.
|
||||
|
||||
@ -182,24 +183,12 @@ get_saved_register (char *raw_buffer,
|
||||
|
||||
Returns 1 if could not be read, 0 if could. */
|
||||
|
||||
/* FIXME: This function increases the confusion between FP_REGNUM
|
||||
and the virtual/pseudo-frame pointer. */
|
||||
|
||||
static int
|
||||
read_relative_register_raw_bytes_for_frame (int regnum,
|
||||
char *myaddr,
|
||||
struct frame_info *frame)
|
||||
{
|
||||
int optim;
|
||||
if (regnum == FP_REGNUM && frame)
|
||||
{
|
||||
/* Put it back in target format. */
|
||||
store_address (myaddr, REGISTER_RAW_SIZE (FP_REGNUM),
|
||||
(LONGEST) FRAME_FP (frame));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
get_saved_register (myaddr, &optim, (CORE_ADDR *) NULL, frame,
|
||||
regnum, (enum lval_type *) NULL);
|
||||
|
||||
|
83
gdb/parse.c
83
gdb/parse.c
@ -104,15 +104,9 @@ struct funcall
|
||||
|
||||
static struct funcall *funcall_chain;
|
||||
|
||||
/* Assign machine-independent names to certain registers
|
||||
(unless overridden by the REGISTER_NAMES table) */
|
||||
|
||||
unsigned num_std_regs = 0;
|
||||
struct std_regs *std_regs;
|
||||
|
||||
/* The generic method for targets to specify how their registers are
|
||||
named. The mapping can be derived from three sources:
|
||||
REGISTER_NAME; std_regs; or a target specific alias hook. */
|
||||
named. The mapping can be derived from two sources: REGISTER_NAME;
|
||||
or builtin regs. */
|
||||
|
||||
int
|
||||
target_map_name_to_register (char *str, int len)
|
||||
@ -127,13 +121,13 @@ target_map_name_to_register (char *str, int len)
|
||||
return i;
|
||||
}
|
||||
|
||||
/* Try standard aliases. */
|
||||
for (i = 0; i < num_std_regs; i++)
|
||||
if (std_regs[i].name && len == strlen (std_regs[i].name)
|
||||
&& STREQN (str, std_regs[i].name, len))
|
||||
{
|
||||
return std_regs[i].regnum;
|
||||
}
|
||||
/* Try builtin registers. */
|
||||
i = builtin_reg_map_name_to_regnum (str, len);
|
||||
if (i >= 0)
|
||||
{
|
||||
gdb_assert (i >= NUM_REGS + NUM_PSEUDO_REGS);
|
||||
return i;
|
||||
}
|
||||
|
||||
/* Try builtin registers. */
|
||||
i = builtin_reg_map_name_to_regnum (str, len);
|
||||
@ -1361,63 +1355,6 @@ build_parse (void)
|
||||
init_type (TYPE_CODE_INT, 1, 0,
|
||||
"<variable (not text or data), no debug info>",
|
||||
NULL);
|
||||
|
||||
/* create the std_regs table */
|
||||
|
||||
num_std_regs = 0;
|
||||
#ifdef PC_REGNUM
|
||||
if (PC_REGNUM >= 0)
|
||||
num_std_regs++;
|
||||
#endif
|
||||
#ifdef FP_REGNUM
|
||||
if (FP_REGNUM >= 0)
|
||||
num_std_regs++;
|
||||
#endif
|
||||
#ifdef SP_REGNUM
|
||||
if (SP_REGNUM >= 0)
|
||||
num_std_regs++;
|
||||
#endif
|
||||
#ifdef PS_REGNUM
|
||||
if (PS_REGNUM >= 0)
|
||||
num_std_regs++;
|
||||
#endif
|
||||
/* create an empty table */
|
||||
std_regs = xmalloc ((num_std_regs + 1) * sizeof *std_regs);
|
||||
i = 0;
|
||||
/* fill it in */
|
||||
#ifdef PC_REGNUM
|
||||
if (PC_REGNUM >= 0)
|
||||
{
|
||||
std_regs[i].name = "pc";
|
||||
std_regs[i].regnum = PC_REGNUM;
|
||||
i++;
|
||||
}
|
||||
#endif
|
||||
#ifdef FP_REGNUM
|
||||
if (FP_REGNUM >= 0)
|
||||
{
|
||||
std_regs[i].name = "fp";
|
||||
std_regs[i].regnum = FP_REGNUM;
|
||||
i++;
|
||||
}
|
||||
#endif
|
||||
#ifdef SP_REGNUM
|
||||
if (SP_REGNUM >= 0)
|
||||
{
|
||||
std_regs[i].name = "sp";
|
||||
std_regs[i].regnum = SP_REGNUM;
|
||||
i++;
|
||||
}
|
||||
#endif
|
||||
#ifdef PS_REGNUM
|
||||
if (PS_REGNUM >= 0)
|
||||
{
|
||||
std_regs[i].name = "ps";
|
||||
std_regs[i].regnum = PS_REGNUM;
|
||||
i++;
|
||||
}
|
||||
#endif
|
||||
memset (&std_regs[i], 0, sizeof (std_regs[i]));
|
||||
}
|
||||
|
||||
void
|
||||
@ -1437,8 +1374,6 @@ _initialize_parse (void)
|
||||
register_gdbarch_swap (&msym_data_symbol_type, sizeof (msym_data_symbol_type), NULL);
|
||||
register_gdbarch_swap (&msym_unknown_symbol_type, sizeof (msym_unknown_symbol_type), NULL);
|
||||
|
||||
register_gdbarch_swap (&num_std_regs, sizeof (std_regs), NULL);
|
||||
register_gdbarch_swap (&std_regs, sizeof (std_regs), NULL);
|
||||
register_gdbarch_swap (NULL, 0, build_parse);
|
||||
|
||||
add_show_from_set (
|
||||
|
@ -1,6 +1,8 @@
|
||||
/* Parser definitions for GDB.
|
||||
Copyright 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
|
||||
1998, 1999, 2000 Free Software Foundation, Inc.
|
||||
|
||||
Copyright 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
|
||||
1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
|
||||
|
||||
Modified from expread.y by the Department of Computer Science at the
|
||||
State University of New York at Buffalo.
|
||||
|
||||
@ -26,15 +28,6 @@
|
||||
|
||||
#include "doublest.h"
|
||||
|
||||
struct std_regs
|
||||
{
|
||||
char *name;
|
||||
int regnum;
|
||||
};
|
||||
|
||||
extern struct std_regs *std_regs;
|
||||
extern unsigned num_std_regs;
|
||||
|
||||
extern struct expression *expout;
|
||||
extern int expout_size;
|
||||
extern int expout_ptr;
|
||||
@ -208,8 +201,8 @@ struct op_print
|
||||
};
|
||||
|
||||
/* The generic method for targets to specify how their registers are
|
||||
named. The mapping can be derived from three sources:
|
||||
REGISTER_NAME; std_regs; or a target specific alias hook. */
|
||||
named. The mapping can be derived from two sources: REGISTER_NAME;
|
||||
and builtin regs. */
|
||||
|
||||
extern int target_map_name_to_register (char *, int);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user