Browse Source

sim: split program path out of argv vector

We use the program argv to both find the program to run (argv[0]) and
to hold the arguments to the program.  Most of the time this is fine,
but if we want to let programs specify argv[0] independently (which is
possible in standard *NIX programs), this double duty doesn't work.

So let's split the path to the program to run out into a separate
field by itself.  This simplifies the various sim_open funcs too.

By itself, this code is more of a logical cleanup than something that
is super useful.  But it will open up customization of argv[0] in a
follow up commit.  Split the changes to make it easier to review.
binutils-2_38-branch
Mike Frysinger 5 years ago
parent
commit
e8f20a28b1
  1. 5
      sim/aarch64/interp.c
  2. 5
      sim/arm/wrapper.c
  3. 5
      sim/avr/interp.c
  4. 5
      sim/bfin/interp.c
  5. 5
      sim/bpf/sim-if.c
  6. 2
      sim/common/nrun.c
  7. 5
      sim/common/sim-base.h
  8. 5
      sim/common/sim-options.c
  9. 1
      sim/common/sim-utils.c
  10. 5
      sim/cr16/interp.c
  11. 10
      sim/cris/sim-if.c
  12. 5
      sim/d10v/interp.c
  13. 5
      sim/example-synacor/interp.c
  14. 6
      sim/frv/sim-if.c
  15. 5
      sim/ft32/interp.c
  16. 5
      sim/h8300/compile.c
  17. 6
      sim/iq2000/sim-if.c
  18. 5
      sim/lm32/sim-if.c
  19. 6
      sim/m32r/sim-if.c
  20. 5
      sim/m68hc11/interp.c
  21. 5
      sim/mcore/interp.c
  22. 5
      sim/microblaze/interp.c
  23. 6
      sim/mips/interp.c
  24. 6
      sim/mn10300/interp.c
  25. 5
      sim/moxie/interp.c
  26. 5
      sim/msp430/msp430-sim.c
  27. 5
      sim/or1k/sim-if.c
  28. 5
      sim/pru/interp.c
  29. 5
      sim/riscv/interp.c
  30. 5
      sim/sh/interp.c
  31. 6
      sim/v850/interp.c

5
sim/aarch64/interp.c

@ -339,10 +339,7 @@ sim_open (SIM_OPEN_KIND kind,
if (sim_cpu_alloc_all (sd, 1) != SIM_RC_OK
|| sim_pre_argv_init (sd, argv[0]) != SIM_RC_OK
|| sim_parse_args (sd, argv) != SIM_RC_OK
|| sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK
|| sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK
|| sim_config (sd) != SIM_RC_OK
|| sim_post_argv_init (sd) != SIM_RC_OK)
{

5
sim/arm/wrapper.c

@ -825,10 +825,7 @@ sim_open (SIM_OPEN_KIND kind,
}
/* Check for/establish the a reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

5
sim/avr/interp.c

@ -1710,10 +1710,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *cb,
}
/* Check for/establish the a reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

5
sim/bfin/interp.c

@ -740,10 +740,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback,
}
/* Check for/establish the a reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

5
sim/bpf/sim-if.c

@ -147,10 +147,7 @@ sim_open (SIM_OPEN_KIND kind,
if (sim_parse_args (sd, argv) != SIM_RC_OK)
goto error;
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
goto error;
if (sim_config (sd) != SIM_RC_OK)

2
sim/common/nrun.c

@ -103,7 +103,7 @@ main (int argc, char **argv)
if (prog_argv == NULL || *prog_argv == NULL)
usage ();
name = *prog_argv;
name = STATE_PROG_FILE (sd);
/* For simulators that don't open prog during sim_open() */
if (prog_bfd == NULL)

5
sim/common/sim-base.h

@ -151,6 +151,11 @@ struct sim_state {
const char *model_name;
#define STATE_MODEL_NAME(sd) ((sd)->model_name)
/* In standalone simulator, this is the program to run. Not to be confused
with argv which are the strings passed to the program itself. */
char *prog_file;
#define STATE_PROG_FILE(sd) ((sd)->prog_file)
/* In standalone simulator, this is the program's arguments passed
on the command line. */
char **prog_argv;

5
sim/common/sim-options.c

@ -604,7 +604,10 @@ sim_parse_args (SIM_DESC sd, char * const *argv)
if (optc == -1)
{
if (STATE_OPEN_KIND (sd) == SIM_OPEN_STANDALONE)
STATE_PROG_ARGV (sd) = dupargv (argv + optind);
{
STATE_PROG_FILE (sd) = xstrdup (argv[optind]);
STATE_PROG_ARGV (sd) = dupargv (argv + optind);
}
break;
}
if (optc == '?')

1
sim/common/sim-utils.c

@ -97,6 +97,7 @@ sim_state_free (SIM_DESC sd)
SIM_STATE_FREE (sd);
#endif
free (STATE_PROG_FILE (sd));
free (sd);
}

5
sim/cr16/interp.c

@ -423,10 +423,7 @@ sim_open (SIM_OPEN_KIND kind, struct host_callback_struct *cb,
}
/* Check for/establish the a reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

10
sim/cris/sim-if.c

@ -690,11 +690,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd,
}
/* check for/establish the reference program image */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL),
abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
/* When there's an error, sim_analyze_program has already output
a message. Let's just clarify it, as "not an object file"
@ -717,9 +713,9 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd,
if (abfd != NULL && bfd_get_arch (abfd) == bfd_arch_unknown)
{
if (STATE_PROG_ARGV (sd) != NULL)
if (STATE_PROG_FILE (sd) != NULL)
sim_io_eprintf (sd, "%s: `%s' is not a CRIS program\n",
STATE_MY_NAME (sd), *STATE_PROG_ARGV (sd));
STATE_MY_NAME (sd), STATE_PROG_FILE (sd));
else
sim_io_eprintf (sd, "%s: program to be run is not a CRIS program\n",
STATE_MY_NAME (sd));

5
sim/d10v/interp.c

@ -780,10 +780,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *cb,
}
/* Check for/establish the a reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

5
sim/example-synacor/interp.c

@ -111,10 +111,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback,
}
/* Check for/establish the a reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

6
sim/frv/sim-if.c

@ -92,11 +92,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, bfd *abfd,
sim_do_commandf (sd, "memory region 0,0x%x", FRV_DEFAULT_MEM_SIZE);
/* check for/establish the reference program image */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL),
abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

5
sim/ft32/interp.c

@ -842,10 +842,7 @@ sim_open (SIM_OPEN_KIND kind,
}
/* Check for/establish the reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

5
sim/h8300/compile.c

@ -4755,10 +4755,7 @@ sim_open (SIM_OPEN_KIND kind,
}
/* Check for/establish the a reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

6
sim/iq2000/sim-if.c

@ -93,11 +93,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd,
sim_do_commandf (sd, "memory region 0x%x,0x%x", IQ2000_DATA_VALUE, IQ2000_DATA_MEM_SIZE);
/* check for/establish the reference program image */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL),
abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

5
sim/lm32/sim-if.c

@ -133,10 +133,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd,
#endif
/* check for/establish the reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

6
sim/m32r/sim-if.c

@ -98,11 +98,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd,
sim_do_commandf (sd, "memory region 0,0x%x", M32R_DEFAULT_MEM_SIZE);
/* check for/establish the reference program image */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL),
abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

5
sim/m68hc11/interp.c

@ -436,10 +436,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback,
}
/* Check for/establish the a reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

5
sim/mcore/interp.c

@ -1371,10 +1371,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *cb,
}
/* Check for/establish the a reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

5
sim/microblaze/interp.c

@ -429,10 +429,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *cb,
}
/* Check for/establish the a reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

6
sim/mips/interp.c

@ -633,11 +633,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *cb,
}
/* check for/establish the a reference program image */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL),
abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
sim_module_uninstall (sd);
return 0;

6
sim/mn10300/interp.c

@ -268,11 +268,7 @@ sim_open (SIM_OPEN_KIND kind,
/* check for/establish the a reference program image */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL),
abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
sim_module_uninstall (sd);
return 0;

5
sim/moxie/interp.c

@ -1226,10 +1226,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *cb,
sim_do_command(sd," memory region 0xE0000000,0x10000") ;
/* Check for/establish the a reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

5
sim/msp430/msp430-sim.c

@ -152,10 +152,7 @@ sim_open (SIM_OPEN_KIND kind,
sim_do_commandf (sd, "memory-region 0x90000,0x70000"); /* HIGH ROM. */
/* Check for/establish the a reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
sim_state_free (sd);
return 0;

5
sim/or1k/sim-if.c

@ -201,10 +201,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd,
}
/* Check for/establish the reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

5
sim/pru/interp.c

@ -772,10 +772,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *cb,
}
/* Check for/establish a reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

5
sim/riscv/interp.c

@ -94,10 +94,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback,
}
/* Check for/establish the a reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

5
sim/sh/interp.c

@ -2367,10 +2367,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *cb,
}
/* Check for/establish the a reference program image. */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL), abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
free_state (sd);
return 0;

6
sim/v850/interp.c

@ -239,11 +239,7 @@ sim_open (SIM_OPEN_KIND kind,
}
/* check for/establish the a reference program image */
if (sim_analyze_program (sd,
(STATE_PROG_ARGV (sd) != NULL
? *STATE_PROG_ARGV (sd)
: NULL),
abfd) != SIM_RC_OK)
if (sim_analyze_program (sd, STATE_PROG_FILE (sd), abfd) != SIM_RC_OK)
{
sim_module_uninstall (sd);
return 0;

Loading…
Cancel
Save