X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=sim%2Fiq2000%2Fsim-if.c;h=b1646e1c3c38effd3cc41f70a45e6e782f6dc944;hb=128e85e3ab36b8e30f6612fb50de3cbb4ede6824;hp=a72f5c0cb71181d06caddba768d14f96525ac6a7;hpb=6e4f085c7f459e0777a71bcb61ed3aa8257fa386;p=deliverable%2Fbinutils-gdb.git diff --git a/sim/iq2000/sim-if.c b/sim/iq2000/sim-if.c index a72f5c0cb7..b1646e1c3c 100644 --- a/sim/iq2000/sim-if.c +++ b/sim/iq2000/sim-if.c @@ -1,5 +1,5 @@ /* Main simulator entry points specific to the IQ2000. - Copyright (C) 2000-2015 Free Software Foundation, Inc. + Copyright (C) 2000-2016 Free Software Foundation, Inc. Contributed by Cygnus Solutions. This file is part of the GNU simulators. @@ -26,10 +26,6 @@ along with this program. If not, see . */ #include "bfd.h" static void free_state (SIM_DESC); - -/* Records simulator descriptor so utilities like iq2000_dump_regs can be - called from gdb. */ -SIM_DESC current_state; /* Cover function for sim_cgen_disassemble_insn. */ @@ -58,7 +54,7 @@ sim_open (kind, callback, abfd, argv) SIM_OPEN_KIND kind; host_callback *callback; struct bfd *abfd; - char **argv; + char * const *argv; { char c; int i; @@ -86,17 +82,7 @@ sim_open (kind, callback, abfd, argv) return 0; } -#if 0 /* FIXME: 'twould be nice if we could do this */ - /* These options override any module options. - Obviously ambiguity should be avoided, however the caller may wish to - augment the meaning of an option. */ - if (extra_options != NULL) - sim_add_option_table (sd, extra_options); -#endif - - /* 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. */ + /* The parser will print an error message for us, so we silently return. */ if (sim_parse_args (sd, argv) != SIM_RC_OK) { free_state (sd); @@ -149,10 +135,6 @@ sim_open (kind, callback, abfd, argv) Must be done after iq2000_cgen_cpu_open. */ cgen_init (sd); - /* Store in a global so things like sparc32_dump_regs can be invoked - from the gdb command line. */ - current_state = sd; - return sd; } @@ -160,8 +142,8 @@ SIM_RC sim_create_inferior (sd, abfd, argv, envp) SIM_DESC sd; struct bfd *abfd; - char **argv; - char **envp; + char * const *argv; + char * const *envp; { SIM_CPU *current_cpu = STATE_CPU (sd, 0); SIM_ADDR addr; @@ -172,10 +154,15 @@ sim_create_inferior (sd, abfd, argv, envp) addr = CPU2INSN(0); sim_pc_set (current_cpu, addr); -#if 0 - STATE_ARGV (sd) = sim_copy_argv (argv); - STATE_ENVP (sd) = sim_copy_argv (envp); -#endif + /* Standalone mode (i.e. `run`) will take care of the argv for us in + sim_open() -> sim_parse_args(). But in debug mode (i.e. 'target sim' + with `gdb`), we need to handle it because the user can change the + argv on the fly via gdb's 'run'. */ + if (STATE_PROG_ARGV (sd) != argv) + { + freeargv (STATE_PROG_ARGV (sd)); + STATE_PROG_ARGV (sd) = dupargv (argv); + } return SIM_RC_OK; }