aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>1997-09-03 07:31:55 +0000
committerAndrew Cagney <cagney@redhat.com>1997-09-03 07:31:55 +0000
commitee36741e6385ff705602158daca8c511960ee7b2 (patch)
tree6530cd91c915609b24c8dcc2b4f40e0245350621
parentb5e935ae855757d6f0b51b28b0bbc48a4c996f69 (diff)
downloadgdb-ee36741e6385ff705602158daca8c511960ee7b2.zip
gdb-ee36741e6385ff705602158daca8c511960ee7b2.tar.gz
gdb-ee36741e6385ff705602158daca8c511960ee7b2.tar.bz2
Allow backends to set the architecture using bfd_architecture enum
instead of some magic name.
-rw-r--r--gdb/ChangeLog10
-rw-r--r--gdb/sh3-rom.c4
-rw-r--r--gdb/top.c56
3 files changed, 50 insertions, 20 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 04de252..8613031 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@
+Wed Sep 3 16:39:39 1997 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * top.c (set_arch): New function, update target_architecture.
+
+ * defs.h, top.c (set_architecture_from_arch_mach): Replace
+ set_architecture, takes the arch and machine as arguments.
+
+ * sh3-rom.c (sh3e_open): Update.
+ (sh3_open): Ditto.
+
Tue Sep 2 12:00:46 1997 Andrew Cagney <cagney@b1.cygnus.com>
* remote-e7000.c (e7000_fetch_registers): Fix typo, stray paren.
diff --git a/gdb/sh3-rom.c b/gdb/sh3-rom.c
index a4e3b71..8d8705c 100644
--- a/gdb/sh3-rom.c
+++ b/gdb/sh3-rom.c
@@ -284,7 +284,7 @@ sh3_open (args, from_tty)
}
/* If we connected successfully, we know the processor is an SH3. */
- set_architecture ("sh3", 0);
+ set_architecture_from_arch_mach (bfd_arch_sh, bfd_mach_sh3);
}
@@ -333,7 +333,7 @@ sh3e_open (args, from_tty)
}
/* If we connected successfully, we know the processor is an SH3E. */
- set_architecture ("sh3e", 0);
+ set_architecture_from_arch_mach (bfd_arch_sh, bfd_mach_sh3);
}
static void
diff --git a/gdb/top.c b/gdb/top.c
index 80a2293..cc1a1da 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -118,7 +118,7 @@ static void set_endian_auto PARAMS ((char *, int));
static void show_endian PARAMS ((char *, int));
-extern void set_architecture PARAMS ((char *, int));
+static void set_architecture PARAMS ((char *, int));
static void show_architecture PARAMS ((char *, int));
@@ -3242,8 +3242,27 @@ extern const bfd_arch_info_type bfd_default_arch_struct;
const bfd_arch_info_type *target_architecture = &bfd_default_arch_struct;
int (*target_architecture_hook) PARAMS ((const bfd_arch_info_type *ap));
-/* Called if the user enters ``set architecture'' with or without an argument. */
-void
+static void
+set_arch (arch)
+ const bfd_arch_info_type *arch;
+{
+ /* FIXME: Is it compatible with gdb? */
+ /* Check with the target on the setting */
+ if (target_architecture_hook != NULL
+ && !target_architecture_hook (arch))
+ printf_unfiltered ("Target does not support `%s' architecture.\n",
+ arch->printable_name);
+ else
+ {
+ target_architecture_auto = 0;
+ target_architecture = arch;
+ }
+}
+
+
+/* Called if the user enters ``set architecture'' with or without an
+ argument. */
+static void
set_architecture (args, from_tty)
char *args;
int from_tty;
@@ -3260,22 +3279,9 @@ set_architecture (args, from_tty)
{
const bfd_arch_info_type *arch = bfd_scan_arch (args);
if (arch != NULL)
- {
- /* FIXME: Is it compatible with gdb? */
- /* Check with the target on the setting */
- if (target_architecture_hook != NULL
- && !target_architecture_hook (arch))
- printf_unfiltered ("Target does not support `%s' architecture.", args);
- else
- {
- target_architecture_auto = 0;
- target_architecture = arch;
- }
- }
+ set_arch (arch);
else
- {
- printf_unfiltered ("Architecture `%s' not reconized.\n", args);
- }
+ printf_unfiltered ("Architecture `%s' not reconized.\n", args);
}
}
@@ -3317,6 +3323,20 @@ info_architecture (args, from_tty)
}
}
+/* Set the architecture from arch/machine */
+void
+set_architecture_from_arch_mach (arch, mach)
+ enum bfd_architecture arch;
+ unsigned long mach;
+{
+ const bfd_arch_info_type *wanted = bfd_lookup_arch (arch, mach);
+ if (wanted != NULL)
+ set_arch (wanted);
+ else
+ fatal ("hardwired architecture/machine not reconized");
+}
+
+
/* Set the architecture from a BFD */
void
set_architecture_from_file (abfd)