mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-15 03:48:11 +08:00
* frame.c (GET_SAVED_REGISTER): Delete macro definition.
(default_get_saved_register): Delete function. * gdbarch.sh (GET_SAVED_REGISTER): Set default to generic_unwind_get_saved_register. * gdbarch.h, gdbarch.c: Re-generate.
This commit is contained in:
@ -1,3 +1,11 @@
|
||||
2002-06-08 Andrew Cagney <ac131313@redhat.com>
|
||||
|
||||
* frame.c (GET_SAVED_REGISTER): Delete macro definition.
|
||||
(default_get_saved_register): Delete function.
|
||||
* gdbarch.sh (GET_SAVED_REGISTER): Set default to
|
||||
generic_unwind_get_saved_register.
|
||||
* gdbarch.h, gdbarch.c: Re-generate.
|
||||
|
||||
2002-06-08 Andrew Cagney <ac131313@redhat.com>
|
||||
|
||||
* gdbarch.sh (FRAME_CHAIN_VALID): Set default to
|
||||
|
70
gdb/frame.c
70
gdb/frame.c
@ -63,71 +63,6 @@ find_saved_register (struct frame_info *frame, int regnum)
|
||||
return addr;
|
||||
}
|
||||
|
||||
/* DEFAULT_GET_SAVED_REGISTER ()
|
||||
|
||||
Find register number REGNUM relative to FRAME and put its (raw,
|
||||
target format) contents in *RAW_BUFFER. Set *OPTIMIZED if the
|
||||
variable was optimized out (and thus can't be fetched). Set *LVAL
|
||||
to lval_memory, lval_register, or not_lval, depending on whether
|
||||
the value was fetched from memory, from a register, or in a strange
|
||||
and non-modifiable way (e.g. a frame pointer which was calculated
|
||||
rather than fetched). Set *ADDRP to the address, either in memory
|
||||
on as a REGISTER_BYTE offset into the registers array.
|
||||
|
||||
Note that this implementation never sets *LVAL to not_lval. But
|
||||
it can be replaced by defining GET_SAVED_REGISTER and supplying
|
||||
your own.
|
||||
|
||||
The argument RAW_BUFFER must point to aligned memory. */
|
||||
|
||||
static void
|
||||
default_get_saved_register (char *raw_buffer,
|
||||
int *optimized,
|
||||
CORE_ADDR *addrp,
|
||||
struct frame_info *frame,
|
||||
int regnum,
|
||||
enum lval_type *lval)
|
||||
{
|
||||
CORE_ADDR addr;
|
||||
|
||||
if (!target_has_registers)
|
||||
error ("No registers.");
|
||||
|
||||
/* Normal systems don't optimize out things with register numbers. */
|
||||
if (optimized != NULL)
|
||||
*optimized = 0;
|
||||
addr = find_saved_register (frame, regnum);
|
||||
if (addr != 0)
|
||||
{
|
||||
if (lval != NULL)
|
||||
*lval = lval_memory;
|
||||
if (regnum == SP_REGNUM)
|
||||
{
|
||||
if (raw_buffer != NULL)
|
||||
{
|
||||
/* Put it back in target format. */
|
||||
store_address (raw_buffer, REGISTER_RAW_SIZE (regnum),
|
||||
(LONGEST) addr);
|
||||
}
|
||||
if (addrp != NULL)
|
||||
*addrp = 0;
|
||||
return;
|
||||
}
|
||||
if (raw_buffer != NULL)
|
||||
target_read_memory (addr, raw_buffer, REGISTER_RAW_SIZE (regnum));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (lval != NULL)
|
||||
*lval = lval_register;
|
||||
addr = REGISTER_BYTE (regnum);
|
||||
if (raw_buffer != NULL)
|
||||
read_register_gen (regnum, raw_buffer);
|
||||
}
|
||||
if (addrp != NULL)
|
||||
*addrp = addr;
|
||||
}
|
||||
|
||||
void
|
||||
frame_register_unwind (struct frame_info *frame, int regnum,
|
||||
int *optimizedp, enum lval_type *lvalp,
|
||||
@ -217,11 +152,6 @@ generic_unwind_get_saved_register (char *raw_buffer,
|
||||
&realnumx, raw_buffer);
|
||||
}
|
||||
|
||||
#if !defined (GET_SAVED_REGISTER)
|
||||
#define GET_SAVED_REGISTER(raw_buffer, optimized, addrp, frame, regnum, lval) \
|
||||
default_get_saved_register(raw_buffer, optimized, addrp, frame, regnum, lval)
|
||||
#endif
|
||||
|
||||
void
|
||||
get_saved_register (char *raw_buffer,
|
||||
int *optimized,
|
||||
|
@ -346,7 +346,7 @@ struct gdbarch startup_gdbarch =
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
generic_get_saved_register,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
@ -504,6 +504,7 @@ gdbarch_alloc (const struct gdbarch_info *info,
|
||||
current_gdbarch->init_frame_pc_first = init_frame_pc_noop;
|
||||
current_gdbarch->init_frame_pc = init_frame_pc_default;
|
||||
current_gdbarch->coerce_float_to_double = default_coerce_float_to_double;
|
||||
current_gdbarch->get_saved_register = generic_unwind_get_saved_register;
|
||||
current_gdbarch->register_convertible = generic_register_convertible_not;
|
||||
current_gdbarch->convert_register_p = legacy_convert_register_p;
|
||||
current_gdbarch->register_to_value = legacy_register_to_value;
|
||||
@ -682,9 +683,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
|
||||
/* Skip verify of init_frame_pc_first, invalid_p == 0 */
|
||||
/* Skip verify of init_frame_pc, invalid_p == 0 */
|
||||
/* Skip verify of coerce_float_to_double, invalid_p == 0 */
|
||||
if ((GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL)
|
||||
&& (gdbarch->get_saved_register == 0))
|
||||
fprintf_unfiltered (log, "\n\tget_saved_register");
|
||||
/* Skip verify of get_saved_register, invalid_p == 0 */
|
||||
/* Skip verify of register_convertible, invalid_p == 0 */
|
||||
/* Skip verify of register_convert_to_virtual, invalid_p == 0 */
|
||||
/* Skip verify of register_convert_to_raw, invalid_p == 0 */
|
||||
|
@ -1184,18 +1184,19 @@ extern void set_gdbarch_coerce_float_to_double (struct gdbarch *gdbarch, gdbarch
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* GET_SAVED_REGISTER is like DUMMY_FRAMES. It is at level one as the
|
||||
old code has strange #ifdef interaction. So far no one has found
|
||||
that default_get_saved_register() is the default they are after. */
|
||||
/* Default (function) for non- multi-arch platforms. */
|
||||
#if (!GDB_MULTI_ARCH) && !defined (GET_SAVED_REGISTER)
|
||||
#define GET_SAVED_REGISTER(raw_buffer, optimized, addrp, frame, regnum, lval) (generic_unwind_get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval))
|
||||
#endif
|
||||
|
||||
typedef void (gdbarch_get_saved_register_ftype) (char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval);
|
||||
extern void gdbarch_get_saved_register (struct gdbarch *gdbarch, char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval);
|
||||
extern void set_gdbarch_get_saved_register (struct gdbarch *gdbarch, gdbarch_get_saved_register_ftype *get_saved_register);
|
||||
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && defined (GET_SAVED_REGISTER)
|
||||
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (GET_SAVED_REGISTER)
|
||||
#error "Non multi-arch definition of GET_SAVED_REGISTER"
|
||||
#endif
|
||||
#if GDB_MULTI_ARCH
|
||||
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) || !defined (GET_SAVED_REGISTER)
|
||||
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (GET_SAVED_REGISTER)
|
||||
#define GET_SAVED_REGISTER(raw_buffer, optimized, addrp, frame, regnum, lval) (gdbarch_get_saved_register (current_gdbarch, raw_buffer, optimized, addrp, frame, regnum, lval))
|
||||
#endif
|
||||
#endif
|
||||
|
@ -505,10 +505,7 @@ f:2:INIT_FRAME_PC:void:init_frame_pc:int fromleaf, struct frame_info *prev:froml
|
||||
v:2:BELIEVE_PCC_PROMOTION:int:believe_pcc_promotion:::::::
|
||||
v:2:BELIEVE_PCC_PROMOTION_TYPE:int:believe_pcc_promotion_type:::::::
|
||||
f:2:COERCE_FLOAT_TO_DOUBLE:int:coerce_float_to_double:struct type *formal, struct type *actual:formal, actual:::default_coerce_float_to_double::0
|
||||
# GET_SAVED_REGISTER is like DUMMY_FRAMES. It is at level one as the
|
||||
# old code has strange #ifdef interaction. So far no one has found
|
||||
# that default_get_saved_register() is the default they are after.
|
||||
f:1:GET_SAVED_REGISTER:void:get_saved_register:char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval:raw_buffer, optimized, addrp, frame, regnum, lval::generic_get_saved_register:0
|
||||
f:2:GET_SAVED_REGISTER:void:get_saved_register:char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval:raw_buffer, optimized, addrp, frame, regnum, lval:::generic_unwind_get_saved_register::0
|
||||
#
|
||||
f:2:REGISTER_CONVERTIBLE:int:register_convertible:int nr:nr:::generic_register_convertible_not::0
|
||||
f:2:REGISTER_CONVERT_TO_VIRTUAL:void:register_convert_to_virtual:int regnum, struct type *type, char *from, char *to:regnum, type, from, to:::0::0
|
||||
|
Reference in New Issue
Block a user