From 33489c5beda387c0c9ac0467974628da2f9491e4 Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Tue, 2 May 2000 08:57:21 +0000 Subject: [PATCH] re-do how gdbarch provides non-multi arch defaults so that non- multi-arch gdbservers can continue to compile. --- gdb/ChangeLog | 8 +++ gdb/defs.h | 6 ++ gdb/gdbarch.c | 36 ---------- gdb/gdbarch.h | 192 +++++++++++++++++++++++++++++++++++++++++++++++++ gdb/gdbarch.sh | 66 +++++++++-------- gdb/infrun.c | 2 + 6 files changed, 240 insertions(+), 70 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b29f9fb87e7..37337503d49 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +Tue May 2 18:48:57 2000 Andrew Cagney + + * gdbarch.sh: Provide non- multi-arch defaults by direct + definition in "gdbarch.h" instead of going through "gdbarch.c". + * gdbarch.h, gdbarch.c: Re-generate. + * defs.h: When non- multi-arch, include "arch-utils.h" so that + legacy definitions are globally visible. + Tue May 2 16:32:06 2000 Andrew Cagney * MAINTAINERS: Add Syd Polk to gdbtk maintainers. diff --git a/gdb/defs.h b/gdb/defs.h index 9e6218ac47b..38e40828c3c 100644 --- a/gdb/defs.h +++ b/gdb/defs.h @@ -984,6 +984,12 @@ extern char *alloca (); /* Dynamic target-system-dependent parameters for GDB. */ #include "gdbarch.h" +#if (GDB_MULTI_ARCH == 0) +/* Multi-arch targets _should_ be including "arch-utils.h" directly + into their *-tdep.c file. This is a prop to help old non- + multi-arch targets to continue to compile. */ +#include "arch-utils.h" +#endif /* Static target-system-dependent parameters for GDB. */ diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c index 33077f7ff6a..900e83e49ca 100644 --- a/gdb/gdbarch.c +++ b/gdb/gdbarch.c @@ -999,8 +999,6 @@ gdbarch_byte_order (struct gdbarch *gdbarch) int gdbarch_bfd_vma_bit (struct gdbarch *gdbarch) { - if (GDB_MULTI_ARCH == 0) - return TARGET_ARCHITECTURE->bits_per_address; /* Skip verify of bfd_vma_bit, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_bfd_vma_bit called\n"); @@ -1339,8 +1337,6 @@ set_gdbarch_pc_regnum (struct gdbarch *gdbarch, char * gdbarch_register_name (struct gdbarch *gdbarch, int regnr) { - if (GDB_MULTI_ARCH == 0) - return legacy_register_name (regnr); if (gdbarch->register_name == 0) internal_error ("gdbarch: gdbarch_register_name invalid"); if (gdbarch_debug >= 2) @@ -1647,8 +1643,6 @@ set_gdbarch_call_dummy_p (struct gdbarch *gdbarch, LONGEST * gdbarch_call_dummy_words (struct gdbarch *gdbarch) { - if (GDB_MULTI_ARCH == 0) - return legacy_call_dummy_words; /* Skip verify of call_dummy_words, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_words called\n"); @@ -1665,8 +1659,6 @@ set_gdbarch_call_dummy_words (struct gdbarch *gdbarch, int gdbarch_sizeof_call_dummy_words (struct gdbarch *gdbarch) { - if (GDB_MULTI_ARCH == 0) - return legacy_sizeof_call_dummy_words; /* Skip verify of sizeof_call_dummy_words, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_sizeof_call_dummy_words called\n"); @@ -1764,8 +1756,6 @@ set_gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch, int gdbarch_coerce_float_to_double (struct gdbarch *gdbarch, struct type *formal, struct type *actual) { - if (GDB_MULTI_ARCH == 0) - return default_coerce_float_to_double (formal, actual); if (gdbarch->coerce_float_to_double == 0) internal_error ("gdbarch: gdbarch_coerce_float_to_double invalid"); if (gdbarch_debug >= 2) @@ -1800,8 +1790,6 @@ set_gdbarch_get_saved_register (struct gdbarch *gdbarch, int gdbarch_register_convertible (struct gdbarch *gdbarch, int nr) { - if (GDB_MULTI_ARCH == 0) - return generic_register_convertible_not (nr); if (gdbarch->register_convertible == 0) internal_error ("gdbarch: gdbarch_register_convertible invalid"); if (gdbarch_debug >= 2) @@ -1853,8 +1841,6 @@ set_gdbarch_register_convert_to_raw (struct gdbarch *gdbarch, CORE_ADDR gdbarch_pointer_to_address (struct gdbarch *gdbarch, struct type *type, char *buf) { - if (GDB_MULTI_ARCH == 0) - return generic_pointer_to_address (type, buf); if (gdbarch->pointer_to_address == 0) internal_error ("gdbarch: gdbarch_pointer_to_address invalid"); if (gdbarch_debug >= 2) @@ -1872,11 +1858,6 @@ set_gdbarch_pointer_to_address (struct gdbarch *gdbarch, void gdbarch_address_to_pointer (struct gdbarch *gdbarch, struct type *type, char *buf, CORE_ADDR addr) { - if (GDB_MULTI_ARCH == 0) - { - generic_address_to_pointer (type, buf, addr); - return; - } if (gdbarch->address_to_pointer == 0) internal_error ("gdbarch: gdbarch_address_to_pointer invalid"); if (gdbarch_debug >= 2) @@ -1894,8 +1875,6 @@ set_gdbarch_address_to_pointer (struct gdbarch *gdbarch, int gdbarch_return_value_on_stack (struct gdbarch *gdbarch, struct type *type) { - if (GDB_MULTI_ARCH == 0) - return generic_return_value_on_stack_not (type); if (gdbarch->return_value_on_stack == 0) internal_error ("gdbarch: gdbarch_return_value_on_stack invalid"); if (gdbarch_debug >= 2) @@ -2219,8 +2198,6 @@ set_gdbarch_skip_prologue (struct gdbarch *gdbarch, int gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, CORE_ADDR ip) { - if (GDB_MULTI_ARCH == 0) - return generic_prologue_frameless_p (ip); if (gdbarch->prologue_frameless_p == 0) internal_error ("gdbarch: gdbarch_prologue_frameless_p invalid"); if (gdbarch_debug >= 2) @@ -2255,8 +2232,6 @@ set_gdbarch_inner_than (struct gdbarch *gdbarch, unsigned char * gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr) { - if (GDB_MULTI_ARCH == 0) - return legacy_breakpoint_from_pc (pcptr, lenptr); if (gdbarch->breakpoint_from_pc == 0) internal_error ("gdbarch: gdbarch_breakpoint_from_pc invalid"); if (gdbarch_debug >= 2) @@ -2274,8 +2249,6 @@ set_gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, int gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache) { - if (GDB_MULTI_ARCH == 0) - return default_memory_insert_breakpoint (addr, contents_cache); if (gdbarch->memory_insert_breakpoint == 0) internal_error ("gdbarch: gdbarch_memory_insert_breakpoint invalid"); if (gdbarch_debug >= 2) @@ -2293,8 +2266,6 @@ set_gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, int gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache) { - if (GDB_MULTI_ARCH == 0) - return default_memory_remove_breakpoint (addr, contents_cache); if (gdbarch->memory_remove_breakpoint == 0) internal_error ("gdbarch: gdbarch_memory_remove_breakpoint invalid"); if (gdbarch_debug >= 2) @@ -2346,11 +2317,6 @@ set_gdbarch_function_start_offset (struct gdbarch *gdbarch, void gdbarch_remote_translate_xfer_address (struct gdbarch *gdbarch, CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len) { - if (GDB_MULTI_ARCH == 0) - { - generic_remote_translate_xfer_address (gdb_addr, gdb_len, rem_addr, rem_len); - return; - } if (gdbarch->remote_translate_xfer_address == 0) internal_error ("gdbarch: gdbarch_remote_translate_xfer_address invalid"); if (gdbarch_debug >= 2) @@ -2385,8 +2351,6 @@ set_gdbarch_frame_args_skip (struct gdbarch *gdbarch, int gdbarch_frameless_function_invocation (struct gdbarch *gdbarch, struct frame_info *fi) { - if (GDB_MULTI_ARCH == 0) - return generic_frameless_function_invocation_not (fi); if (gdbarch->frameless_function_invocation == 0) internal_error ("gdbarch: gdbarch_frameless_function_invocation invalid"); if (gdbarch_debug >= 2) diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h index fb2ca99ab2a..b1427328da8 100644 --- a/gdb/gdbarch.h +++ b/gdb/gdbarch.h @@ -87,11 +87,18 @@ extern int gdbarch_byte_order (struct gdbarch *gdbarch); /* The following are initialized by the target dependant code. */ +/* Default (value) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (TARGET_BFD_VMA_BIT) +#define TARGET_BFD_VMA_BIT (TARGET_ARCHITECTURE->bits_per_address) +#endif + extern int gdbarch_bfd_vma_bit (struct gdbarch *gdbarch); extern void set_gdbarch_bfd_vma_bit (struct gdbarch *gdbarch, int bfd_vma_bit); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_BFD_VMA_BIT) #define TARGET_BFD_VMA_BIT (gdbarch_bfd_vma_bit (current_gdbarch)) #endif +#endif extern int gdbarch_ptr_bit (struct gdbarch *gdbarch); extern void set_gdbarch_ptr_bit (struct gdbarch *gdbarch, int ptr_bit); @@ -157,11 +164,18 @@ extern void set_gdbarch_long_double_bit (struct gdbarch *gdbarch, int long_doubl #endif #endif +/* Default (value) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (IEEE_FLOAT) +#define IEEE_FLOAT (0) +#endif + extern int gdbarch_ieee_float (struct gdbarch *gdbarch); extern void set_gdbarch_ieee_float (struct gdbarch *gdbarch, int ieee_float); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (IEEE_FLOAT) #define IEEE_FLOAT (gdbarch_ieee_float (current_gdbarch)) #endif +#endif typedef CORE_ADDR (gdbarch_read_pc_ftype) (int pid); extern CORE_ADDR gdbarch_read_pc (struct gdbarch *gdbarch, int pid); @@ -249,12 +263,19 @@ extern void set_gdbarch_pc_regnum (struct gdbarch *gdbarch, int pc_regnum); #endif #endif +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (REGISTER_NAME) +#define REGISTER_NAME(regnr) (legacy_register_name (regnr)) +#endif + typedef char * (gdbarch_register_name_ftype) (int regnr); extern char * gdbarch_register_name (struct gdbarch *gdbarch, int regnr); extern void set_gdbarch_register_name (struct gdbarch *gdbarch, gdbarch_register_name_ftype *register_name); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_NAME) #define REGISTER_NAME(regnr) (gdbarch_register_name (current_gdbarch, regnr)) #endif +#endif extern int gdbarch_register_size (struct gdbarch *gdbarch); extern void set_gdbarch_register_size (struct gdbarch *gdbarch, int register_size); @@ -398,17 +419,31 @@ extern void set_gdbarch_call_dummy_p (struct gdbarch *gdbarch, int call_dummy_p) #endif #endif +/* Default (value) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (CALL_DUMMY_WORDS) +#define CALL_DUMMY_WORDS (legacy_call_dummy_words) +#endif + extern LONGEST * gdbarch_call_dummy_words (struct gdbarch *gdbarch); extern void set_gdbarch_call_dummy_words (struct gdbarch *gdbarch, LONGEST * call_dummy_words); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_WORDS) #define CALL_DUMMY_WORDS (gdbarch_call_dummy_words (current_gdbarch)) #endif +#endif + +/* Default (value) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (SIZEOF_CALL_DUMMY_WORDS) +#define SIZEOF_CALL_DUMMY_WORDS (legacy_sizeof_call_dummy_words) +#endif extern int gdbarch_sizeof_call_dummy_words (struct gdbarch *gdbarch); extern void set_gdbarch_sizeof_call_dummy_words (struct gdbarch *gdbarch, int sizeof_call_dummy_words); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (SIZEOF_CALL_DUMMY_WORDS) #define SIZEOF_CALL_DUMMY_WORDS (gdbarch_sizeof_call_dummy_words (current_gdbarch)) #endif +#endif 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); @@ -451,12 +486,19 @@ extern void set_gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch, int #endif #endif +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (COERCE_FLOAT_TO_DOUBLE) +#define COERCE_FLOAT_TO_DOUBLE(formal, actual) (default_coerce_float_to_double (formal, actual)) +#endif + typedef int (gdbarch_coerce_float_to_double_ftype) (struct type *formal, struct type *actual); extern int gdbarch_coerce_float_to_double (struct gdbarch *gdbarch, struct type *formal, struct type *actual); extern void set_gdbarch_coerce_float_to_double (struct gdbarch *gdbarch, gdbarch_coerce_float_to_double_ftype *coerce_float_to_double); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (COERCE_FLOAT_TO_DOUBLE) #define COERCE_FLOAT_TO_DOUBLE(formal, actual) (gdbarch_coerce_float_to_double (current_gdbarch, formal, actual)) #endif +#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); @@ -467,47 +509,89 @@ extern void set_gdbarch_get_saved_register (struct gdbarch *gdbarch, gdbarch_get #endif #endif +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (REGISTER_CONVERTIBLE) +#define REGISTER_CONVERTIBLE(nr) (generic_register_convertible_not (nr)) +#endif + typedef int (gdbarch_register_convertible_ftype) (int nr); extern int gdbarch_register_convertible (struct gdbarch *gdbarch, int nr); extern void set_gdbarch_register_convertible (struct gdbarch *gdbarch, gdbarch_register_convertible_ftype *register_convertible); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_CONVERTIBLE) #define REGISTER_CONVERTIBLE(nr) (gdbarch_register_convertible (current_gdbarch, nr)) #endif +#endif + +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (REGISTER_CONVERT_TO_VIRTUAL) +#define REGISTER_CONVERT_TO_VIRTUAL(regnum, type, from, to) (internal_error ("REGISTER_CONVERT_TO_VIRTUAL"), 0) +#endif typedef void (gdbarch_register_convert_to_virtual_ftype) (int regnum, struct type *type, char *from, char *to); extern void gdbarch_register_convert_to_virtual (struct gdbarch *gdbarch, int regnum, struct type *type, char *from, char *to); extern void set_gdbarch_register_convert_to_virtual (struct gdbarch *gdbarch, gdbarch_register_convert_to_virtual_ftype *register_convert_to_virtual); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_CONVERT_TO_VIRTUAL) #define REGISTER_CONVERT_TO_VIRTUAL(regnum, type, from, to) (gdbarch_register_convert_to_virtual (current_gdbarch, regnum, type, from, to)) #endif +#endif + +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (REGISTER_CONVERT_TO_RAW) +#define REGISTER_CONVERT_TO_RAW(type, regnum, from, to) (internal_error ("REGISTER_CONVERT_TO_RAW"), 0) +#endif typedef void (gdbarch_register_convert_to_raw_ftype) (struct type *type, int regnum, char *from, char *to); extern void gdbarch_register_convert_to_raw (struct gdbarch *gdbarch, struct type *type, int regnum, char *from, char *to); extern void set_gdbarch_register_convert_to_raw (struct gdbarch *gdbarch, gdbarch_register_convert_to_raw_ftype *register_convert_to_raw); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_CONVERT_TO_RAW) #define REGISTER_CONVERT_TO_RAW(type, regnum, from, to) (gdbarch_register_convert_to_raw (current_gdbarch, type, regnum, from, to)) #endif +#endif + +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (POINTER_TO_ADDRESS) +#define POINTER_TO_ADDRESS(type, buf) (generic_pointer_to_address (type, buf)) +#endif typedef CORE_ADDR (gdbarch_pointer_to_address_ftype) (struct type *type, char *buf); extern CORE_ADDR gdbarch_pointer_to_address (struct gdbarch *gdbarch, struct type *type, char *buf); extern void set_gdbarch_pointer_to_address (struct gdbarch *gdbarch, gdbarch_pointer_to_address_ftype *pointer_to_address); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (POINTER_TO_ADDRESS) #define POINTER_TO_ADDRESS(type, buf) (gdbarch_pointer_to_address (current_gdbarch, type, buf)) #endif +#endif + +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (ADDRESS_TO_POINTER) +#define ADDRESS_TO_POINTER(type, buf, addr) (generic_address_to_pointer (type, buf, addr)) +#endif typedef void (gdbarch_address_to_pointer_ftype) (struct type *type, char *buf, CORE_ADDR addr); extern void gdbarch_address_to_pointer (struct gdbarch *gdbarch, struct type *type, char *buf, CORE_ADDR addr); extern void set_gdbarch_address_to_pointer (struct gdbarch *gdbarch, gdbarch_address_to_pointer_ftype *address_to_pointer); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (ADDRESS_TO_POINTER) #define ADDRESS_TO_POINTER(type, buf, addr) (gdbarch_address_to_pointer (current_gdbarch, type, buf, addr)) #endif +#endif + +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (RETURN_VALUE_ON_STACK) +#define RETURN_VALUE_ON_STACK(type) (generic_return_value_on_stack_not (type)) +#endif typedef int (gdbarch_return_value_on_stack_ftype) (struct type *type); extern int gdbarch_return_value_on_stack (struct gdbarch *gdbarch, struct type *type); extern void set_gdbarch_return_value_on_stack (struct gdbarch *gdbarch, gdbarch_return_value_on_stack_ftype *return_value_on_stack); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (RETURN_VALUE_ON_STACK) #define RETURN_VALUE_ON_STACK(type) (gdbarch_return_value_on_stack (current_gdbarch, type)) #endif +#endif typedef void (gdbarch_extract_return_value_ftype) (struct type *type, char *regbuf, char *valbuf); extern void gdbarch_extract_return_value (struct gdbarch *gdbarch, struct type *type, char *regbuf, char *valbuf); @@ -554,47 +638,89 @@ extern void set_gdbarch_pop_frame (struct gdbarch *gdbarch, gdbarch_pop_frame_ft #endif #endif +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (D10V_MAKE_DADDR) +#define D10V_MAKE_DADDR(x) (internal_error ("D10V_MAKE_DADDR"), 0) +#endif + typedef CORE_ADDR (gdbarch_d10v_make_daddr_ftype) (CORE_ADDR x); extern CORE_ADDR gdbarch_d10v_make_daddr (struct gdbarch *gdbarch, CORE_ADDR x); extern void set_gdbarch_d10v_make_daddr (struct gdbarch *gdbarch, gdbarch_d10v_make_daddr_ftype *d10v_make_daddr); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (D10V_MAKE_DADDR) #define D10V_MAKE_DADDR(x) (gdbarch_d10v_make_daddr (current_gdbarch, x)) #endif +#endif + +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (D10V_MAKE_IADDR) +#define D10V_MAKE_IADDR(x) (internal_error ("D10V_MAKE_IADDR"), 0) +#endif typedef CORE_ADDR (gdbarch_d10v_make_iaddr_ftype) (CORE_ADDR x); extern CORE_ADDR gdbarch_d10v_make_iaddr (struct gdbarch *gdbarch, CORE_ADDR x); extern void set_gdbarch_d10v_make_iaddr (struct gdbarch *gdbarch, gdbarch_d10v_make_iaddr_ftype *d10v_make_iaddr); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (D10V_MAKE_IADDR) #define D10V_MAKE_IADDR(x) (gdbarch_d10v_make_iaddr (current_gdbarch, x)) #endif +#endif + +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (D10V_DADDR_P) +#define D10V_DADDR_P(x) (internal_error ("D10V_DADDR_P"), 0) +#endif typedef int (gdbarch_d10v_daddr_p_ftype) (CORE_ADDR x); extern int gdbarch_d10v_daddr_p (struct gdbarch *gdbarch, CORE_ADDR x); extern void set_gdbarch_d10v_daddr_p (struct gdbarch *gdbarch, gdbarch_d10v_daddr_p_ftype *d10v_daddr_p); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (D10V_DADDR_P) #define D10V_DADDR_P(x) (gdbarch_d10v_daddr_p (current_gdbarch, x)) #endif +#endif + +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (D10V_IADDR_P) +#define D10V_IADDR_P(x) (internal_error ("D10V_IADDR_P"), 0) +#endif typedef int (gdbarch_d10v_iaddr_p_ftype) (CORE_ADDR x); extern int gdbarch_d10v_iaddr_p (struct gdbarch *gdbarch, CORE_ADDR x); extern void set_gdbarch_d10v_iaddr_p (struct gdbarch *gdbarch, gdbarch_d10v_iaddr_p_ftype *d10v_iaddr_p); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (D10V_IADDR_P) #define D10V_IADDR_P(x) (gdbarch_d10v_iaddr_p (current_gdbarch, x)) #endif +#endif + +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (D10V_CONVERT_DADDR_TO_RAW) +#define D10V_CONVERT_DADDR_TO_RAW(x) (internal_error ("D10V_CONVERT_DADDR_TO_RAW"), 0) +#endif typedef CORE_ADDR (gdbarch_d10v_convert_daddr_to_raw_ftype) (CORE_ADDR x); extern CORE_ADDR gdbarch_d10v_convert_daddr_to_raw (struct gdbarch *gdbarch, CORE_ADDR x); extern void set_gdbarch_d10v_convert_daddr_to_raw (struct gdbarch *gdbarch, gdbarch_d10v_convert_daddr_to_raw_ftype *d10v_convert_daddr_to_raw); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (D10V_CONVERT_DADDR_TO_RAW) #define D10V_CONVERT_DADDR_TO_RAW(x) (gdbarch_d10v_convert_daddr_to_raw (current_gdbarch, x)) #endif +#endif + +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (D10V_CONVERT_IADDR_TO_RAW) +#define D10V_CONVERT_IADDR_TO_RAW(x) (internal_error ("D10V_CONVERT_IADDR_TO_RAW"), 0) +#endif typedef CORE_ADDR (gdbarch_d10v_convert_iaddr_to_raw_ftype) (CORE_ADDR x); extern CORE_ADDR gdbarch_d10v_convert_iaddr_to_raw (struct gdbarch *gdbarch, CORE_ADDR x); extern void set_gdbarch_d10v_convert_iaddr_to_raw (struct gdbarch *gdbarch, gdbarch_d10v_convert_iaddr_to_raw_ftype *d10v_convert_iaddr_to_raw); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (D10V_CONVERT_IADDR_TO_RAW) #define D10V_CONVERT_IADDR_TO_RAW(x) (gdbarch_d10v_convert_iaddr_to_raw (current_gdbarch, x)) #endif +#endif typedef void (gdbarch_store_struct_return_ftype) (CORE_ADDR addr, CORE_ADDR sp); extern void gdbarch_store_struct_return (struct gdbarch *gdbarch, CORE_ADDR addr, CORE_ADDR sp); @@ -659,12 +785,19 @@ extern void set_gdbarch_skip_prologue (struct gdbarch *gdbarch, gdbarch_skip_pro #endif #endif +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (PROLOGUE_FRAMELESS_P) +#define PROLOGUE_FRAMELESS_P(ip) (generic_prologue_frameless_p (ip)) +#endif + typedef int (gdbarch_prologue_frameless_p_ftype) (CORE_ADDR ip); extern int gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, CORE_ADDR ip); extern void set_gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, gdbarch_prologue_frameless_p_ftype *prologue_frameless_p); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (PROLOGUE_FRAMELESS_P) #define PROLOGUE_FRAMELESS_P(ip) (gdbarch_prologue_frameless_p (current_gdbarch, ip)) #endif +#endif typedef int (gdbarch_inner_than_ftype) (CORE_ADDR lhs, CORE_ADDR rhs); extern int gdbarch_inner_than (struct gdbarch *gdbarch, CORE_ADDR lhs, CORE_ADDR rhs); @@ -675,26 +808,47 @@ extern void set_gdbarch_inner_than (struct gdbarch *gdbarch, gdbarch_inner_than_ #endif #endif +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (BREAKPOINT_FROM_PC) +#define BREAKPOINT_FROM_PC(pcptr, lenptr) (legacy_breakpoint_from_pc (pcptr, lenptr)) +#endif + typedef unsigned char * (gdbarch_breakpoint_from_pc_ftype) (CORE_ADDR *pcptr, int *lenptr); extern unsigned char * gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr); extern void set_gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (BREAKPOINT_FROM_PC) #define BREAKPOINT_FROM_PC(pcptr, lenptr) (gdbarch_breakpoint_from_pc (current_gdbarch, pcptr, lenptr)) #endif +#endif + +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (MEMORY_INSERT_BREAKPOINT) +#define MEMORY_INSERT_BREAKPOINT(addr, contents_cache) (default_memory_insert_breakpoint (addr, contents_cache)) +#endif typedef int (gdbarch_memory_insert_breakpoint_ftype) (CORE_ADDR addr, char *contents_cache); extern int gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache); extern void set_gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, gdbarch_memory_insert_breakpoint_ftype *memory_insert_breakpoint); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (MEMORY_INSERT_BREAKPOINT) #define MEMORY_INSERT_BREAKPOINT(addr, contents_cache) (gdbarch_memory_insert_breakpoint (current_gdbarch, addr, contents_cache)) #endif +#endif + +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (MEMORY_REMOVE_BREAKPOINT) +#define MEMORY_REMOVE_BREAKPOINT(addr, contents_cache) (default_memory_remove_breakpoint (addr, contents_cache)) +#endif typedef int (gdbarch_memory_remove_breakpoint_ftype) (CORE_ADDR addr, char *contents_cache); extern int gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache); extern void set_gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch, gdbarch_memory_remove_breakpoint_ftype *memory_remove_breakpoint); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (MEMORY_REMOVE_BREAKPOINT) #define MEMORY_REMOVE_BREAKPOINT(addr, contents_cache) (gdbarch_memory_remove_breakpoint (current_gdbarch, addr, contents_cache)) #endif +#endif extern CORE_ADDR gdbarch_decr_pc_after_break (struct gdbarch *gdbarch); extern void set_gdbarch_decr_pc_after_break (struct gdbarch *gdbarch, CORE_ADDR decr_pc_after_break); @@ -712,12 +866,19 @@ extern void set_gdbarch_function_start_offset (struct gdbarch *gdbarch, CORE_ADD #endif #endif +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (REMOTE_TRANSLATE_XFER_ADDRESS) +#define REMOTE_TRANSLATE_XFER_ADDRESS(gdb_addr, gdb_len, rem_addr, rem_len) (generic_remote_translate_xfer_address (gdb_addr, gdb_len, rem_addr, rem_len)) +#endif + typedef void (gdbarch_remote_translate_xfer_address_ftype) (CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len); extern void gdbarch_remote_translate_xfer_address (struct gdbarch *gdbarch, CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len); extern void set_gdbarch_remote_translate_xfer_address (struct gdbarch *gdbarch, gdbarch_remote_translate_xfer_address_ftype *remote_translate_xfer_address); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (REMOTE_TRANSLATE_XFER_ADDRESS) #define REMOTE_TRANSLATE_XFER_ADDRESS(gdb_addr, gdb_len, rem_addr, rem_len) (gdbarch_remote_translate_xfer_address (current_gdbarch, gdb_addr, gdb_len, rem_addr, rem_len)) #endif +#endif extern CORE_ADDR gdbarch_frame_args_skip (struct gdbarch *gdbarch); extern void set_gdbarch_frame_args_skip (struct gdbarch *gdbarch, CORE_ADDR frame_args_skip); @@ -727,12 +888,19 @@ extern void set_gdbarch_frame_args_skip (struct gdbarch *gdbarch, CORE_ADDR fram #endif #endif +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (FRAMELESS_FUNCTION_INVOCATION) +#define FRAMELESS_FUNCTION_INVOCATION(fi) (generic_frameless_function_invocation_not (fi)) +#endif + typedef int (gdbarch_frameless_function_invocation_ftype) (struct frame_info *fi); extern int gdbarch_frameless_function_invocation (struct gdbarch *gdbarch, struct frame_info *fi); extern void set_gdbarch_frameless_function_invocation (struct gdbarch *gdbarch, gdbarch_frameless_function_invocation_ftype *frameless_function_invocation); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (FRAMELESS_FUNCTION_INVOCATION) #define FRAMELESS_FUNCTION_INVOCATION(fi) (gdbarch_frameless_function_invocation (current_gdbarch, fi)) #endif +#endif typedef CORE_ADDR (gdbarch_frame_chain_ftype) (struct frame_info *frame); extern CORE_ADDR gdbarch_frame_chain (struct gdbarch *gdbarch, struct frame_info *frame); @@ -802,34 +970,58 @@ extern void set_gdbarch_frame_num_args (struct gdbarch *gdbarch, gdbarch_frame_n #define STACK_ALIGN_P() (1) #endif +/* Default predicate for non- multi-arch targets. */ +#if (GDB_MULTI_ARCH == 0) && !defined (STACK_ALIGN_P) +#define STACK_ALIGN_P() (0) +#endif + extern int gdbarch_stack_align_p (struct gdbarch *gdbarch); #if (GDB_MULTI_ARCH > 1) || !defined (STACK_ALIGN_P) #define STACK_ALIGN_P() (gdbarch_stack_align_p (current_gdbarch)) #endif +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (STACK_ALIGN) +#define STACK_ALIGN(sp) (internal_error ("STACK_ALIGN"), 0) +#endif + typedef CORE_ADDR (gdbarch_stack_align_ftype) (CORE_ADDR sp); extern CORE_ADDR gdbarch_stack_align (struct gdbarch *gdbarch, CORE_ADDR sp); extern void set_gdbarch_stack_align (struct gdbarch *gdbarch, gdbarch_stack_align_ftype *stack_align); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (STACK_ALIGN) #define STACK_ALIGN(sp) (gdbarch_stack_align (current_gdbarch, sp)) #endif +#endif #if defined (REG_STRUCT_HAS_ADDR) /* Legacy for systems yet to multi-arch REG_STRUCT_HAS_ADDR */ #define REG_STRUCT_HAS_ADDR_P() (1) #endif +/* Default predicate for non- multi-arch targets. */ +#if (GDB_MULTI_ARCH == 0) && !defined (REG_STRUCT_HAS_ADDR_P) +#define REG_STRUCT_HAS_ADDR_P() (0) +#endif + extern int gdbarch_reg_struct_has_addr_p (struct gdbarch *gdbarch); #if (GDB_MULTI_ARCH > 1) || !defined (REG_STRUCT_HAS_ADDR_P) #define REG_STRUCT_HAS_ADDR_P() (gdbarch_reg_struct_has_addr_p (current_gdbarch)) #endif +/* Default (function) for non- multi-arch platforms. */ +#if (GDB_MULTI_ARCH == 0) && !defined (REG_STRUCT_HAS_ADDR) +#define REG_STRUCT_HAS_ADDR(gcc_p, type) (internal_error ("REG_STRUCT_HAS_ADDR"), 0) +#endif + typedef int (gdbarch_reg_struct_has_addr_ftype) (int gcc_p, struct type *type); extern int gdbarch_reg_struct_has_addr (struct gdbarch *gdbarch, int gcc_p, struct type *type); extern void set_gdbarch_reg_struct_has_addr (struct gdbarch *gdbarch, gdbarch_reg_struct_has_addr_ftype *reg_struct_has_addr); +#if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > 1) || !defined (REG_STRUCT_HAS_ADDR) #define REG_STRUCT_HAS_ADDR(gcc_p, type) (gdbarch_reg_struct_has_addr (current_gdbarch, gcc_p, type)) #endif +#endif extern struct gdbarch_tdep *gdbarch_tdep (struct gdbarch *gdbarch); diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh index a6ad33ce9d6..790db4ffc33 100755 --- a/gdb/gdbarch.sh +++ b/gdb/gdbarch.sh @@ -351,6 +351,7 @@ EOF if class_is_predicate_p && default_is_fallback_p then echo "Error: predicate function can not have a non- multi-arch default" 1>&2 + kill $$ exit 1 fi done @@ -468,9 +469,15 @@ do echo "" echo "#if defined (${macro})" echo "/* Legacy for systems yet to multi-arch ${macro} */" +# echo "#if (GDB_MULTI_ARCH <= 2) && defined (${macro})" echo "#define ${macro}_P() (1)" echo "#endif" echo "" + echo "/* Default predicate for non- multi-arch targets. */" + echo "#if (GDB_MULTI_ARCH == 0) && !defined (${macro}_P)" + echo "#define ${macro}_P() (0)" + echo "#endif" + echo "" echo "extern int gdbarch_${function}_p (struct gdbarch *gdbarch);" echo "#if (GDB_MULTI_ARCH > 1) || !defined (${macro}_P)" echo "#define ${macro}_P() (gdbarch_${function}_p (current_gdbarch))" @@ -478,23 +485,38 @@ do fi if class_is_variable_p then + if default_is_fallback_p || class_is_predicate_p + then + echo "" + echo "/* Default (value) for non- multi-arch platforms. */" + echo "#if (GDB_MULTI_ARCH == 0) && !defined (${macro})" + echo "#define ${macro} (${default})" + echo "#endif" + fi echo "" echo "extern ${returntype} gdbarch_${function} (struct gdbarch *gdbarch);" echo "extern void set_gdbarch_${function} (struct gdbarch *gdbarch, ${returntype} ${function});" - if ! default_is_fallback_p && ! class_is_predicate_p - then - echo "#if GDB_MULTI_ARCH" - fi + echo "#if GDB_MULTI_ARCH" echo "#if (GDB_MULTI_ARCH > 1) || !defined (${macro})" echo "#define ${macro} (gdbarch_${function} (current_gdbarch))" echo "#endif" - if ! default_is_fallback_p && ! class_is_predicate_p - then - echo "#endif" - fi + echo "#endif" fi if class_is_function_p then + if default_is_fallback_p || class_is_predicate_p + then + echo "" + echo "/* Default (function) for non- multi-arch platforms. */" + echo "#if (GDB_MULTI_ARCH == 0) && !defined (${macro})" + if [ "${default}" = "0" ] + then + echo "#define ${macro}(${actual}) (internal_error (\"${macro}\"), 0)" + else + echo "#define ${macro}(${actual}) (${default} (${actual}))" + fi + echo "#endif" + fi echo "" echo "typedef ${returntype} (gdbarch_${function}_ftype) (${formal});" if [ "${formal}" = "void" ] @@ -504,10 +526,7 @@ do echo "extern ${returntype} gdbarch_${function} (struct gdbarch *gdbarch, ${formal});" fi echo "extern void set_gdbarch_${function} (struct gdbarch *gdbarch, gdbarch_${function}_ftype *${function});" - if ! default_is_fallback_p && ! class_is_predicate_p - then - echo "#if GDB_MULTI_ARCH" - fi + echo "#if GDB_MULTI_ARCH" echo "#if (GDB_MULTI_ARCH > 1) || !defined (${macro})" if [ "${actual}" = "" ] then @@ -519,10 +538,7 @@ do echo "#define ${macro}(${actual}) (gdbarch_${function} (current_gdbarch, ${actual}))" fi echo "#endif" - if ! default_is_fallback_p && ! class_is_predicate_p - then - echo "#endif" - fi + echo "#endif" fi done @@ -1176,19 +1192,6 @@ do echo "gdbarch_${function} (struct gdbarch *gdbarch, ${formal})" fi echo "{" - if default_is_fallback_p && [ "${default}" != "0" ] - then - echo " if (GDB_MULTI_ARCH == 0)" - if [ "${returntype}" = "void" ] - then - echo " {" - echo " ${default} (${actual});" - echo " return;" - echo " }" - else - echo " return ${default} (${actual});" - fi - fi echo " if (gdbarch->${function} == 0)" echo " internal_error (\"gdbarch: gdbarch_${function} invalid\");" echo " if (gdbarch_debug >= 2)" @@ -1214,11 +1217,6 @@ do echo "${returntype}" echo "gdbarch_${function} (struct gdbarch *gdbarch)" echo "{" - if default_is_fallback_p && [ "${default}" != "0" ] - then - echo " if (GDB_MULTI_ARCH == 0)" - echo " return ${default};" - fi if [ "${invalid_p}" = "0" ] then echo " /* Skip verify of ${function}, invalid_p == 0 */" diff --git a/gdb/infrun.c b/gdb/infrun.c index 8bf3012a667..0ffd9682486 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -2274,6 +2274,8 @@ handle_inferior_event (struct execution_control_state *ecs) the HP-UX maintainer to furnish a fix that doesn't break other platforms. --JimB, 20 May 1999 */ check_sigtramp2 (ecs); + keep_going (ecs); + return; } /* Handle cases caused by hitting a breakpoint. */ -- 2.30.2