X-Git-Url: https://repo.jachan.dev/binutils.git/blobdiff_plain/3cb2ab1a46e0764d4bf712f22c66c64c02dffb64..HEAD:/sim/m32c/gdb-if.c diff --git a/sim/m32c/gdb-if.c b/sim/m32c/gdb-if.c index 83e9f1e956..2b33f40306 100644 --- a/sim/m32c/gdb-if.c +++ b/sim/m32c/gdb-if.c @@ -1,6 +1,6 @@ /* gdb.c --- sim interface to GDB. -Copyright (C) 2005-2013 Free Software Foundation, Inc. +Copyright (C) 2005-2022 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of the GNU simulators. @@ -18,16 +18,20 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include "config.h" +/* This must come before any other includes. */ +#include "defs.h" + #include #include #include +#include #include #include #include "ansidecl.h" -#include "gdb/callback.h" -#include "gdb/remote-sim.h" +#include "libiberty.h" +#include "sim/callback.h" +#include "sim/sim.h" #include "gdb/signals.h" #include "gdb/sim-m32c.h" @@ -54,15 +58,15 @@ static struct sim_state the_minisim = { "This is the sole m32c minisim instance. See libsim.a's global variables." }; -static int open; +static int is_open; SIM_DESC sim_open (SIM_OPEN_KIND kind, struct host_callback_struct *callback, - struct bfd *abfd, char **argv) + struct bfd *abfd, char * const *argv) { setbuf (stdout, 0); - if (open) + if (is_open) fprintf (stderr, "m32c minisim: re-opened sim\n"); /* The 'run' interface doesn't use this function, so we don't care @@ -84,7 +88,7 @@ sim_open (SIM_OPEN_KIND kind, init_mem (); init_regs (); - open = 1; + is_open = 1; return &the_minisim; } @@ -103,7 +107,7 @@ sim_close (SIM_DESC sd, int quitting) /* Not much to do. At least free up our memory. */ init_mem (); - open = 0; + is_open = 0; } static bfd * @@ -128,7 +132,7 @@ open_objfile (const char *filename) SIM_RC -sim_load (SIM_DESC sd, char *prog, struct bfd * abfd, int from_tty) +sim_load (SIM_DESC sd, const char *prog, struct bfd * abfd, int from_tty) { check_desc (sd); @@ -143,7 +147,8 @@ sim_load (SIM_DESC sd, char *prog, struct bfd * abfd, int from_tty) } SIM_RC -sim_create_inferior (SIM_DESC sd, struct bfd * abfd, char **argv, char **env) +sim_create_inferior (SIM_DESC sd, struct bfd * abfd, + char * const *argv, char * const *env) { check_desc (sd); @@ -154,7 +159,7 @@ sim_create_inferior (SIM_DESC sd, struct bfd * abfd, char **argv, char **env) } int -sim_read (SIM_DESC sd, SIM_ADDR mem, unsigned char *buf, int length) +sim_read (SIM_DESC sd, SIM_ADDR mem, void *buf, int length) { check_desc (sd); @@ -167,7 +172,7 @@ sim_read (SIM_DESC sd, SIM_ADDR mem, unsigned char *buf, int length) } int -sim_write (SIM_DESC sd, SIM_ADDR mem, const unsigned char *buf, int length) +sim_write (SIM_DESC sd, SIM_ADDR mem, const void *buf, int length) { check_desc (sd); @@ -179,7 +184,7 @@ sim_write (SIM_DESC sd, SIM_ADDR mem, const unsigned char *buf, int length) /* Read the LENGTH bytes at BUF as an little-endian value. */ static DI -get_le (unsigned char *buf, int length) +get_le (const unsigned char *buf, int length) { DI acc = 0; while (--length >= 0) @@ -286,7 +291,7 @@ reg_size (enum m32c_sim_reg regno) } int -sim_fetch_register (SIM_DESC sd, int regno, unsigned char *buf, int length) +sim_fetch_register (SIM_DESC sd, int regno, void *buf, int length) { size_t size; @@ -398,7 +403,7 @@ sim_fetch_register (SIM_DESC sd, int regno, unsigned char *buf, int length) } int -sim_store_register (SIM_DESC sd, int regno, unsigned char *buf, int length) +sim_store_register (SIM_DESC sd, int regno, const void *buf, int length) { size_t size; @@ -509,22 +514,14 @@ sim_store_register (SIM_DESC sd, int regno, unsigned char *buf, int length) return size; } -void -sim_info (SIM_DESC sd, int verbose) -{ - check_desc (sd); - - printf ("The m32c minisim doesn't collect any statistics.\n"); -} - static volatile int stop; static enum sim_stop reason; -int siggnal; +static int siggnal; /* Given a signal number used by the M32C bsp (that is, newlib), return a target signal number used by GDB. */ -int +static int m32c_signal_to_target (int m32c) { switch (m32c) @@ -560,7 +557,7 @@ m32c_signal_to_target (int m32c) /* Take a step return code RC and set up the variables consulted by sim_stop_reason appropriately. */ -void +static void handle_step (int rc) { if (M32C_STEPPED (rc) || M32C_HIT_BREAK (rc)) @@ -609,6 +606,8 @@ sim_resume (SIM_DESC sd, int step, int sig_to_deliver) interrupt signal handler. */ for (;;) { + int rc; + if (stop) { stop = 0; @@ -617,7 +616,7 @@ sim_resume (SIM_DESC sd, int step, int sig_to_deliver) break; } - int rc = decode_opcode (); + rc = decode_opcode (); #ifdef TIMER_A update_timer_a (); #endif @@ -650,39 +649,27 @@ sim_stop_reason (SIM_DESC sd, enum sim_stop *reason_p, int *sigrc_p) } void -sim_do_command (SIM_DESC sd, char *cmd) +sim_do_command (SIM_DESC sd, const char *cmd) { - check_desc (sd); + const char *arg; + char **argv = buildargv (cmd); - char *p = cmd; - - /* Skip leading whitespace. */ - while (isspace (*p)) - p++; - - /* Find the extent of the command word. */ - for (p = cmd; *p; p++) - if (isspace (*p)) - break; + check_desc (sd); - /* Null-terminate the command word, and record the start of any - further arguments. */ - char *args; - if (*p) + cmd = arg = ""; + if (argv != NULL) { - *p = '\0'; - args = p + 1; - while (isspace (*args)) - args++; + if (argv[0] != NULL) + cmd = argv[0]; + if (argv[1] != NULL) + arg = argv[1]; } - else - args = p; if (strcmp (cmd, "trace") == 0) { - if (strcmp (args, "on") == 0) + if (strcmp (arg, "on") == 0) trace = 1; - else if (strcmp (args, "off") == 0) + else if (strcmp (arg, "off") == 0) trace = 0; else printf ("The 'sim trace' command expects 'on' or 'off' " @@ -690,9 +677,9 @@ sim_do_command (SIM_DESC sd, char *cmd) } else if (strcmp (cmd, "verbose") == 0) { - if (strcmp (args, "on") == 0) + if (strcmp (arg, "on") == 0) verbose = 1; - else if (strcmp (args, "off") == 0) + else if (strcmp (arg, "off") == 0) verbose = 0; else printf ("The 'sim verbose' command expects 'on' or 'off'" @@ -701,6 +688,8 @@ sim_do_command (SIM_DESC sd, char *cmd) else printf ("The 'sim' command expects either 'trace' or 'verbose'" " as a subcommand.\n"); + + freeargv (argv); } char ** @@ -708,3 +697,15 @@ sim_complete_command (SIM_DESC sd, const char *text, const char *word) { return NULL; } + +char * +sim_memory_map (SIM_DESC sd) +{ + return NULL; +} + +void +sim_info (SIM_DESC sd, int verbose) +{ + printf ("The m32c minisim doesn't collect any statistics.\n"); +}