From d90cf509bd4aee2e024979a75685826a5289ba22 Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Thu, 21 Aug 2003 20:43:10 +0000 Subject: [PATCH] 2003-08-21 Andrew Cagney * sh3-rom.c (sh3_open, sh3e_open): Use gdbarch_update_p to select a specific architecture. * arch-utils.h (set_architecture_from_arch_mach): Delete declaration. (target_architecture_hook): Delete declaration. * arch-utils.c: Delete non GDB_MULTI_ARCH includes. (default_float_format): Assume GDB_MULTI_ARCH. (default_double_format): Assume GDB_MULTI_ARCH. (set_endian_from_file): Delete function. (arch_ok): Delete function. (set_arch): Delete function. (set_architecture_from_arch_mach): Delete function. (set_architecture_from_file): Delete function. (set_architecture): Assume GDB_MULTI_ARCH. (set_gdbarch_from_file): Assume GDB_MULTI_ARCH. --- gdb/ChangeLog | 18 ++++ gdb/arch-utils.c | 220 ++++------------------------------------------- gdb/arch-utils.h | 16 ---- gdb/sh3-rom.c | 17 +++- 4 files changed, 52 insertions(+), 219 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index fae853e46cf..c0c62696c06 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,21 @@ +2003-08-21 Andrew Cagney + + * sh3-rom.c (sh3_open, sh3e_open): Use gdbarch_update_p to select + a specific architecture. + * arch-utils.h (set_architecture_from_arch_mach): Delete + declaration. + (target_architecture_hook): Delete declaration. + * arch-utils.c: Delete non GDB_MULTI_ARCH includes. + (default_float_format): Assume GDB_MULTI_ARCH. + (default_double_format): Assume GDB_MULTI_ARCH. + (set_endian_from_file): Delete function. + (arch_ok): Delete function. + (set_arch): Delete function. + (set_architecture_from_arch_mach): Delete function. + (set_architecture_from_file): Delete function. + (set_architecture): Assume GDB_MULTI_ARCH. + (set_gdbarch_from_file): Assume GDB_MULTI_ARCH. + 2003-08-21 Mark Kettenis Rewrite FreeBSD/sparc64 native configuration. diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c index 40a863b26f8..968508df04d 100644 --- a/gdb/arch-utils.c +++ b/gdb/arch-utils.c @@ -22,23 +22,9 @@ #include "defs.h" -#if GDB_MULTI_ARCH #include "arch-utils.h" #include "gdbcmd.h" #include "inferior.h" /* enum CALL_DUMMY_LOCATION et.al. */ -#else -/* Just include everything in sight so that the every old definition - of macro is visible. */ -#include "symtab.h" -#include "frame.h" -#include "inferior.h" -#include "breakpoint.h" -#include "gdb_wait.h" -#include "gdbcore.h" -#include "gdbcmd.h" -#include "target.h" -#include "annotate.h" -#endif #include "gdb_string.h" #include "regcache.h" #include "gdb_assert.h" @@ -182,11 +168,7 @@ core_addr_greaterthan (CORE_ADDR lhs, CORE_ADDR rhs) const struct floatformat * default_float_format (struct gdbarch *gdbarch) { -#if GDB_MULTI_ARCH int byte_order = gdbarch_byte_order (gdbarch); -#else - int byte_order = TARGET_BYTE_ORDER; -#endif switch (byte_order) { case BFD_ENDIAN_BIG: @@ -203,11 +185,7 @@ default_float_format (struct gdbarch *gdbarch) const struct floatformat * default_double_format (struct gdbarch *gdbarch) { -#if GDB_MULTI_ARCH int byte_order = gdbarch_byte_order (gdbarch); -#else - int byte_order = TARGET_BYTE_ORDER; -#endif switch (byte_order) { case BFD_ENDIAN_BIG: @@ -436,39 +414,21 @@ set_endian (char *ignore_args, int from_tty, struct cmd_list_element *c) } else if (set_endian_string == endian_little) { + struct gdbarch_info info; target_byte_order_auto = 0; - if (GDB_MULTI_ARCH) - { - struct gdbarch_info info; - gdbarch_info_init (&info); - info.byte_order = BFD_ENDIAN_LITTLE; - if (! gdbarch_update_p (info)) - { - printf_unfiltered ("Little endian target not supported by GDB\n"); - } - } - else - { - target_byte_order = BFD_ENDIAN_LITTLE; - } + gdbarch_info_init (&info); + info.byte_order = BFD_ENDIAN_LITTLE; + if (! gdbarch_update_p (info)) + printf_unfiltered ("Little endian target not supported by GDB\n"); } else if (set_endian_string == endian_big) { + struct gdbarch_info info; target_byte_order_auto = 0; - if (GDB_MULTI_ARCH) - { - struct gdbarch_info info; - gdbarch_info_init (&info); - info.byte_order = BFD_ENDIAN_BIG; - if (! gdbarch_update_p (info)) - { - printf_unfiltered ("Big endian target not supported by GDB\n"); - } - } - else - { - target_byte_order = BFD_ENDIAN_BIG; - } + gdbarch_info_init (&info); + info.byte_order = BFD_ENDIAN_BIG; + if (! gdbarch_update_p (info)) + printf_unfiltered ("Big endian target not supported by GDB\n"); } else internal_error (__FILE__, __LINE__, @@ -476,28 +436,6 @@ set_endian (char *ignore_args, int from_tty, struct cmd_list_element *c) show_endian (NULL, from_tty); } -/* Set the endianness from a BFD. */ - -static void -set_endian_from_file (bfd *abfd) -{ - int want; - if (GDB_MULTI_ARCH) - internal_error (__FILE__, __LINE__, - "set_endian_from_file: not for multi-arch"); - if (bfd_big_endian (abfd)) - want = BFD_ENDIAN_BIG; - else - want = BFD_ENDIAN_LITTLE; - if (TARGET_BYTE_ORDER_AUTO) - target_byte_order = want; - else if (TARGET_BYTE_ORDER != want) - warning ("%s endian file does not match %s endian target.", - want == BFD_ENDIAN_BIG ? "big" : "little", - TARGET_BYTE_ORDER == BFD_ENDIAN_BIG ? "big" : "little"); -} - - /* Functions to manipulate the architecture of the target */ enum set_arch { set_arch_auto, set_arch_manual }; @@ -506,96 +444,6 @@ int target_architecture_auto = 1; const char *set_architecture_string; -/* Old way of changing the current architecture. */ - -extern const struct bfd_arch_info bfd_default_arch_struct; -const struct bfd_arch_info *target_architecture = &bfd_default_arch_struct; -int (*target_architecture_hook) (const struct bfd_arch_info *ap); - -static int -arch_ok (const struct bfd_arch_info *arch) -{ - if (GDB_MULTI_ARCH) - internal_error (__FILE__, __LINE__, - "arch_ok: not multi-arched"); - /* Should be performing the more basic check that the binary is - compatible with GDB. */ - /* Check with the target that the architecture is valid. */ - return (target_architecture_hook == NULL - || target_architecture_hook (arch)); -} - -static void -set_arch (const struct bfd_arch_info *arch, - enum set_arch type) -{ - if (GDB_MULTI_ARCH) - internal_error (__FILE__, __LINE__, - "set_arch: not multi-arched"); - switch (type) - { - case set_arch_auto: - if (!arch_ok (arch)) - warning ("Target may not support %s architecture", - arch->printable_name); - target_architecture = arch; - break; - case set_arch_manual: - if (!arch_ok (arch)) - { - printf_unfiltered ("Target does not support `%s' architecture.\n", - arch->printable_name); - } - else - { - target_architecture_auto = 0; - target_architecture = arch; - } - break; - } - if (gdbarch_debug) - gdbarch_dump (current_gdbarch, gdb_stdlog); -} - -/* Set the architecture from arch/machine (deprecated) */ - -void -set_architecture_from_arch_mach (enum bfd_architecture arch, - unsigned long mach) -{ - const struct bfd_arch_info *wanted = bfd_lookup_arch (arch, mach); - if (GDB_MULTI_ARCH) - internal_error (__FILE__, __LINE__, - "set_architecture_from_arch_mach: not multi-arched"); - if (wanted != NULL) - set_arch (wanted, set_arch_manual); - else - internal_error (__FILE__, __LINE__, - "gdbarch: hardwired architecture/machine not recognized"); -} - -/* Set the architecture from a BFD (deprecated) */ - -static void -set_architecture_from_file (bfd *abfd) -{ - const struct bfd_arch_info *wanted = bfd_get_arch_info (abfd); - if (GDB_MULTI_ARCH) - internal_error (__FILE__, __LINE__, - "set_architecture_from_file: not multi-arched"); - if (target_architecture_auto) - { - set_arch (wanted, set_arch_auto); - } - else if (wanted != target_architecture) - { - warning ("%s architecture file may be incompatible with %s target.", - wanted->printable_name, - target_architecture->printable_name); - } -} - - /* Called if the user enters ``show architecture'' without an argument. */ @@ -621,7 +469,7 @@ set_architecture (char *ignore_args, int from_tty, struct cmd_list_element *c) { target_architecture_auto = 1; } - else if (GDB_MULTI_ARCH) + else { struct gdbarch_info info; gdbarch_info_init (&info); @@ -635,15 +483,6 @@ set_architecture (char *ignore_args, int from_tty, struct cmd_list_element *c) printf_unfiltered ("Architecture `%s' not recognized.\n", set_architecture_string); } - else - { - const struct bfd_arch_info *arch - = bfd_scan_arch (set_architecture_string); - if (arch == NULL) - internal_error (__FILE__, __LINE__, - "set_architecture: bfd_scan_arch failed"); - set_arch (arch, set_arch_manual); - } show_architecture (NULL, from_tty); } @@ -653,19 +492,11 @@ set_architecture (char *ignore_args, int from_tty, struct cmd_list_element *c) void set_gdbarch_from_file (bfd *abfd) { - if (GDB_MULTI_ARCH) - { - struct gdbarch_info info; - gdbarch_info_init (&info); - info.abfd = abfd; - if (! gdbarch_update_p (info)) - error ("Architecture of file not recognized.\n"); - } - else - { - set_architecture_from_file (abfd); - set_endian_from_file (abfd); - } + struct gdbarch_info info; + gdbarch_info_init (&info); + info.abfd = abfd; + if (! gdbarch_update_p (info)) + error ("Architecture of file not recognized.\n"); } /* Initialize the current architecture. Update the ``set @@ -752,22 +583,9 @@ initialize_current_architecture (void) info.byte_order = BFD_ENDIAN_BIG; } - if (GDB_MULTI_ARCH) - { - if (! gdbarch_update_p (info)) - { - internal_error (__FILE__, __LINE__, - "initialize_current_architecture: Selection of initial architecture failed"); - } - } - else - { - /* If the multi-arch logic comes up with a byte-order (from BFD) - use it for the non-multi-arch case. */ - if (info.byte_order != BFD_ENDIAN_UNKNOWN) - target_byte_order = info.byte_order; - initialize_non_multiarch (); - } + if (! gdbarch_update_p (info)) + internal_error (__FILE__, __LINE__, + "initialize_current_architecture: Selection of initial architecture failed"); /* Create the ``set architecture'' command appending ``auto'' to the list of architectures. */ diff --git a/gdb/arch-utils.h b/gdb/arch-utils.h index fcea5310b25..6f53a8d93a4 100644 --- a/gdb/arch-utils.h +++ b/gdb/arch-utils.h @@ -78,22 +78,6 @@ extern int core_addr_greaterthan (CORE_ADDR lhs, CORE_ADDR rhs); extern const struct floatformat *default_float_format (struct gdbarch *gdbarch); extern const struct floatformat *default_double_format (struct gdbarch *gdbarch); -/* The following DEPRECATED interfaces are for pre- multi-arch legacy - targets. */ - -/* DEPRECATED pre- multi-arch interface. Explicitly set the dynamic - target-system-dependent parameters based on bfd_architecture and - machine. This function is deprecated, use - set_gdbarch_from_arch_machine(). */ - -extern void set_architecture_from_arch_mach (enum bfd_architecture, unsigned long); - -/* DEPRECATED pre- multi-arch interface. Notify the target dependent - backend of a change to the selected architecture. A zero return - status indicates that the target did not like the change. */ - -extern int (*target_architecture_hook) (const struct bfd_arch_info *); - /* Identity function on a CORE_ADDR. Just returns its parameter. */ extern CORE_ADDR core_addr_identity (CORE_ADDR addr); diff --git a/gdb/sh3-rom.c b/gdb/sh3-rom.c index b946e6fd71c..ec274ef26df 100644 --- a/gdb/sh3-rom.c +++ b/gdb/sh3-rom.c @@ -281,8 +281,15 @@ sh3_open (char *args, int from_tty) parallel_in_use = 1; } + /* If we connected successfully, we know the processor is an SH3. */ - set_architecture_from_arch_mach (bfd_arch_sh, bfd_mach_sh3); + { + struct gdbarch_info info; + gdbarch_info_init (&info); + info.bfd_arch_info = bfd_lookup_arch (bfd_arch_sh, bfd_mach_sh3); + if (!gdbarch_update_p (info)) + error ("Target is not an SH3"); + } } @@ -329,7 +336,13 @@ sh3e_open (char *args, int from_tty) } /* If we connected successfully, we know the processor is an SH3E. */ - set_architecture_from_arch_mach (bfd_arch_sh, bfd_mach_sh3); + { + struct gdbarch_info info; + gdbarch_info_init (&info); + info.bfd_arch_info = bfd_lookup_arch (bfd_arch_sh, bfd_mach_sh3); + if (!gdbarch_update_p (info)) + error ("Target is not an SH3"); + } } static void -- 2.30.2