diff options
author | Mike Frysinger <vapier@gentoo.org> | 2015-12-24 17:26:54 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2015-12-24 20:11:26 -0500 |
commit | bd3fb5b8fb33adb751407a128e1f2240dfb215d9 (patch) | |
tree | d759f0952a9ecdbc4dbd7df8572357e86d87fbee /sim | |
parent | 84e8e361dd3a3dd7314759f7f07927dac401d0e6 (diff) | |
download | gdb-bd3fb5b8fb33adb751407a128e1f2240dfb215d9.zip gdb-bd3fb5b8fb33adb751407a128e1f2240dfb215d9.tar.gz gdb-bd3fb5b8fb33adb751407a128e1f2240dfb215d9.tar.bz2 |
sim: h8300: move h8300-specific options out of common code
Register the options in sim_open like other arches to avoid having to hack
up the common modules.
Diffstat (limited to 'sim')
-rw-r--r-- | sim/common/ChangeLog | 7 | ||||
-rw-r--r-- | sim/common/sim-options.c | 29 | ||||
-rw-r--r-- | sim/h8300/ChangeLog | 8 | ||||
-rw-r--r-- | sim/h8300/compile.c | 54 | ||||
-rw-r--r-- | sim/h8300/tconfig.h | 5 |
5 files changed, 69 insertions, 34 deletions
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index b740a17..cb1a9a6 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,5 +1,12 @@ 2015-12-24 Mike Frysinger <vapier@gentoo.org> + * sim-options.c (OPTION_H8300H, OPTION_H8300S, OPTION_H8300SX): + Move to h8300/compile.c. + [SIM_H8300] (standard_options): Likewise. + (standard_option_handler): Likewise. + +2015-12-24 Mike Frysinger <vapier@gentoo.org> + * sim-module.c [WITH_WATCHPOINTS] (modules): Always call sim_watchpoint_install. diff --git a/sim/common/sim-options.c b/sim/common/sim-options.c index 5e04573..69655b0 100644 --- a/sim/common/sim-options.c +++ b/sim/common/sim-options.c @@ -104,11 +104,6 @@ typedef enum { OPTION_DEBUG, OPTION_HELP, OPTION_VERSION, -#ifdef SIM_H8300 /* FIXME: Should be movable to h8300 dir. */ - OPTION_H8300H, - OPTION_H8300S, - OPTION_H8300SX, -#endif OPTION_LOAD_LMA, OPTION_LOAD_VMA, OPTION_SYSROOT @@ -147,18 +142,6 @@ static const OPTION standard_options[] = '\0', "FILE NAME", "Specify debugging output file", standard_option_handler }, -#ifdef SIM_H8300 /* FIXME: Should be movable to h8300 dir. */ - { {"h8300h", no_argument, NULL, OPTION_H8300H}, - 'h', NULL, "Indicate the CPU is H8/300H", - standard_option_handler }, - { {"h8300s", no_argument, NULL, OPTION_H8300S}, - 'S', NULL, "Indicate the CPU is H8S", - standard_option_handler }, - { {"h8300sx", no_argument, NULL, OPTION_H8300SX}, - 'x', NULL, "Indicate the CPU is H8SX", - standard_option_handler }, -#endif - { {"do-command", required_argument, NULL, OPTION_DO_COMMAND}, '\0', "COMMAND", ""/*undocumented*/, standard_option_handler }, @@ -355,18 +338,6 @@ standard_option_handler (SIM_DESC sd, sim_cpu *cpu, int opt, } break; -#ifdef SIM_H8300 /* FIXME: Can be moved to h8300 dir. */ - case OPTION_H8300H: - set_h8300h (bfd_mach_h8300h); - break; - case OPTION_H8300S: - set_h8300h (bfd_mach_h8300s); - break; - case OPTION_H8300SX: - set_h8300h (bfd_mach_h8300sx); - break; -#endif - case OPTION_DO_COMMAND: sim_do_command (sd, arg); break; diff --git a/sim/h8300/ChangeLog b/sim/h8300/ChangeLog index f54d697..d566a65 100644 --- a/sim/h8300/ChangeLog +++ b/sim/h8300/ChangeLog @@ -1,5 +1,13 @@ 2015-12-24 Mike Frysinger <vapier@gentoo.org> + * compile.c (H8300_OPTIONS): New enum from common/sim-options.c. + (h8300_option_handler): New func from common/sim-options.c. + (h8300_options): New options from common/sim-options.c. + (sim_open): Call sim_add_option_table. + * tconfig.h: Delete file. + +2015-12-24 Mike Frysinger <vapier@gentoo.org> + * tconfig.h (SIM_HAVE_SIMCACHE): Delete. 2015-11-21 Mike Frysinger <vapier@gentoo.org> diff --git a/sim/h8300/compile.c b/sim/h8300/compile.c index 15d4f53..bc91725 100644 --- a/sim/h8300/compile.c +++ b/sim/h8300/compile.c @@ -4813,6 +4813,54 @@ set_h8300h (unsigned long machine) h8300_normal_mode = 1; } +/* H8300-specific options. + TODO: These really should be merged into the common model modules. */ +typedef enum { + OPTION_H8300H, + OPTION_H8300S, + OPTION_H8300SX +} H8300_OPTIONS; + +static SIM_RC +h8300_option_handler (SIM_DESC sd, sim_cpu *cpu ATTRIBUTE_UNUSED, int opt, + char *arg, int is_command ATTRIBUTE_UNUSED) +{ + switch ((H8300_OPTIONS) opt) + { + case OPTION_H8300H: + set_h8300h (bfd_mach_h8300h); + break; + case OPTION_H8300S: + set_h8300h (bfd_mach_h8300s); + break; + case OPTION_H8300SX: + set_h8300h (bfd_mach_h8300sx); + break; + + default: + /* We'll actually never get here; the caller handles the error + case. */ + sim_io_eprintf (sd, "Unknown option `%s'\n", arg); + return SIM_RC_FAIL; + } + + return SIM_RC_OK; +} + +static const OPTION h8300_options[] = +{ + { {"h8300h", no_argument, NULL, OPTION_H8300H}, + 'h', NULL, "Indicate the CPU is H8/300H", + h8300_option_handler }, + { {"h8300s", no_argument, NULL, OPTION_H8300S}, + 'S', NULL, "Indicate the CPU is H8S", + h8300_option_handler }, + { {"h8300sx", no_argument, NULL, OPTION_H8300SX}, + 'x', NULL, "Indicate the CPU is H8SX", + h8300_option_handler }, + { {NULL, no_argument, NULL, 0}, '\0', NULL, NULL, NULL, NULL } +}; + static sim_cia h8300_pc_get (sim_cpu *cpu) { @@ -4872,6 +4920,12 @@ sim_open (SIM_OPEN_KIND kind, return 0; } + if (sim_add_option_table (sd, NULL, h8300_options) != SIM_RC_OK) + { + free_state (sd); + return 0; + } + /* getopt will print the error message so we just have to exit if this fails. FIXME: Hmmm... in the case of gdb we need getopt to call print_filtered. */ diff --git a/sim/h8300/tconfig.h b/sim/h8300/tconfig.h deleted file mode 100644 index 3da84b7..0000000 --- a/sim/h8300/tconfig.h +++ /dev/null @@ -1,5 +0,0 @@ -/* h8300 target configuration file. */ - -/* FIXME: This is a quick hack for run.c so it can support the `-h' option. - It will eventually be replaced by a more general facility. */ -#define SIM_H8300 |