|
|
|
@ -883,24 +883,32 @@ extern void set_gdbarch_cannot_store_register (struct gdbarch *gdbarch, gdbarch_ |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
/* Non multi-arch DUMMY_FRAMES are a mess (multi-arch ones are not that
|
|
|
|
much better but at least they are vaguely consistent). The headers |
|
|
|
and body contain convoluted #if/#else sequences for determine how |
|
|
|
things should be compiled. Instead of trying to mimic that |
|
|
|
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. */ |
|
|
|
|
|
|
|
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) |
|
|
|
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && defined (USE_GENERIC_DUMMY_FRAMES) |
|
|
|
#error "Non multi-arch definition of USE_GENERIC_DUMMY_FRAMES" |
|
|
|
#endif |
|
|
|
#if GDB_MULTI_ARCH |
|
|
|
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (USE_GENERIC_DUMMY_FRAMES) |
|
|
|
#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)) |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
extern int gdbarch_call_dummy_location (struct gdbarch *gdbarch); |
|
|
|
extern void set_gdbarch_call_dummy_location (struct gdbarch *gdbarch, int call_dummy_location); |
|
|
|
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (CALL_DUMMY_LOCATION) |
|
|
|
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && defined (CALL_DUMMY_LOCATION) |
|
|
|
#error "Non multi-arch definition of CALL_DUMMY_LOCATION" |
|
|
|
#endif |
|
|
|
#if GDB_MULTI_ARCH |
|
|
|
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (CALL_DUMMY_LOCATION) |
|
|
|
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) || !defined (CALL_DUMMY_LOCATION) |
|
|
|
#define CALL_DUMMY_LOCATION (gdbarch_call_dummy_location (current_gdbarch)) |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
@ -941,11 +949,11 @@ extern void set_gdbarch_call_dummy_breakpoint_offset (struct gdbarch *gdbarch, C |
|
|
|
|
|
|
|
extern int gdbarch_call_dummy_breakpoint_offset_p (struct gdbarch *gdbarch); |
|
|
|
extern void set_gdbarch_call_dummy_breakpoint_offset_p (struct gdbarch *gdbarch, int call_dummy_breakpoint_offset_p); |
|
|
|
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (CALL_DUMMY_BREAKPOINT_OFFSET_P) |
|
|
|
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && defined (CALL_DUMMY_BREAKPOINT_OFFSET_P) |
|
|
|
#error "Non multi-arch definition of CALL_DUMMY_BREAKPOINT_OFFSET_P" |
|
|
|
#endif |
|
|
|
#if GDB_MULTI_ARCH |
|
|
|
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (CALL_DUMMY_BREAKPOINT_OFFSET_P) |
|
|
|
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) || !defined (CALL_DUMMY_BREAKPOINT_OFFSET_P) |
|
|
|
#define CALL_DUMMY_BREAKPOINT_OFFSET_P (gdbarch_call_dummy_breakpoint_offset_p (current_gdbarch)) |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
@ -964,22 +972,22 @@ extern void set_gdbarch_call_dummy_length (struct gdbarch *gdbarch, int call_dum |
|
|
|
typedef int (gdbarch_pc_in_call_dummy_ftype) (CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address); |
|
|
|
extern int gdbarch_pc_in_call_dummy (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address); |
|
|
|
extern void set_gdbarch_pc_in_call_dummy (struct gdbarch *gdbarch, gdbarch_pc_in_call_dummy_ftype *pc_in_call_dummy); |
|
|
|
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (PC_IN_CALL_DUMMY) |
|
|
|
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && defined (PC_IN_CALL_DUMMY) |
|
|
|
#error "Non multi-arch definition of PC_IN_CALL_DUMMY" |
|
|
|
#endif |
|
|
|
#if GDB_MULTI_ARCH |
|
|
|
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (PC_IN_CALL_DUMMY) |
|
|
|
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) || !defined (PC_IN_CALL_DUMMY) |
|
|
|
#define PC_IN_CALL_DUMMY(pc, sp, frame_address) (gdbarch_pc_in_call_dummy (current_gdbarch, pc, sp, frame_address)) |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
extern int gdbarch_call_dummy_p (struct gdbarch *gdbarch); |
|
|
|
extern void set_gdbarch_call_dummy_p (struct gdbarch *gdbarch, int call_dummy_p); |
|
|
|
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (CALL_DUMMY_P) |
|
|
|
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && defined (CALL_DUMMY_P) |
|
|
|
#error "Non multi-arch definition of CALL_DUMMY_P" |
|
|
|
#endif |
|
|
|
#if GDB_MULTI_ARCH |
|
|
|
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (CALL_DUMMY_P) |
|
|
|
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) || !defined (CALL_DUMMY_P) |
|
|
|
#define CALL_DUMMY_P (gdbarch_call_dummy_p (current_gdbarch)) |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
@ -1018,11 +1026,11 @@ extern void set_gdbarch_sizeof_call_dummy_words (struct gdbarch *gdbarch, int si |
|
|
|
|
|
|
|
extern int gdbarch_call_dummy_stack_adjust_p (struct gdbarch *gdbarch); |
|
|
|
extern void set_gdbarch_call_dummy_stack_adjust_p (struct gdbarch *gdbarch, int call_dummy_stack_adjust_p); |
|
|
|
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (CALL_DUMMY_STACK_ADJUST_P) |
|
|
|
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && defined (CALL_DUMMY_STACK_ADJUST_P) |
|
|
|
#error "Non multi-arch definition of CALL_DUMMY_STACK_ADJUST_P" |
|
|
|
#endif |
|
|
|
#if GDB_MULTI_ARCH |
|
|
|
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (CALL_DUMMY_STACK_ADJUST_P) |
|
|
|
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) || !defined (CALL_DUMMY_STACK_ADJUST_P) |
|
|
|
#define CALL_DUMMY_STACK_ADJUST_P (gdbarch_call_dummy_stack_adjust_p (current_gdbarch)) |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
@ -1123,14 +1131,18 @@ 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. */ |
|
|
|
|
|
|
|
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 |
|
|
|
@ -1761,14 +1773,16 @@ extern void set_gdbarch_frame_chain (struct gdbarch *gdbarch, gdbarch_frame_chai |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
/* See comments on DUMMY_FRAME for why this is required at level 1. */ |
|
|
|
|
|
|
|
typedef int (gdbarch_frame_chain_valid_ftype) (CORE_ADDR chain, struct frame_info *thisframe); |
|
|
|
extern int gdbarch_frame_chain_valid (struct gdbarch *gdbarch, CORE_ADDR chain, struct frame_info *thisframe); |
|
|
|
extern void set_gdbarch_frame_chain_valid (struct gdbarch *gdbarch, gdbarch_frame_chain_valid_ftype *frame_chain_valid); |
|
|
|
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FRAME_CHAIN_VALID) |
|
|
|
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && defined (FRAME_CHAIN_VALID) |
|
|
|
#error "Non multi-arch definition of FRAME_CHAIN_VALID" |
|
|
|
#endif |
|
|
|
#if GDB_MULTI_ARCH |
|
|
|
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (FRAME_CHAIN_VALID) |
|
|
|
#if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) || !defined (FRAME_CHAIN_VALID) |
|
|
|
#define FRAME_CHAIN_VALID(chain, thisframe) (gdbarch_frame_chain_valid (current_gdbarch, chain, thisframe)) |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|