diff options
-rw-r--r-- | sim/common/nrun.c | 3 | ||||
-rw-r--r-- | sim/common/sim-options.c | 22 |
2 files changed, 23 insertions, 2 deletions
diff --git a/sim/common/nrun.c b/sim/common/nrun.c index 320380e..557a060 100644 --- a/sim/common/nrun.c +++ b/sim/common/nrun.c @@ -229,7 +229,8 @@ main (int argc, char **argv) static void usage (void) { - fprintf (stderr, "Usage: %s [options] [--] program [program args]\n", myname); + fprintf (stderr, "Usage: %s [options] [VAR=VAL|--] program [program args]\n", + myname); fprintf (stderr, "Run `%s --help' for full list of options.\n", myname); exit (1); } diff --git a/sim/common/sim-options.c b/sim/common/sim-options.c index f94b814..8c9b7cf 100644 --- a/sim/common/sim-options.c +++ b/sim/common/sim-options.c @@ -719,6 +719,22 @@ sim_parse_args (SIM_DESC sd, char * const *argv) free (STATE_PROG_FILE (sd)); STATE_PROG_FILE (sd) = NULL; + /* Handle any inline variables if -- wasn't used. */ + if (argv[optind] != NULL && optind > 0 + && strcmp (argv[optind - 1], "--") != 0) + { + while (1) + { + const char *arg = argv[optind]; + + if (strchr (arg, '=') == NULL) + break; + + env_set (sd, arg); + ++optind; + } + } + new_argv = dupargv (argv + optind); freeargv (STATE_PROG_ARGV (sd)); STATE_PROG_ARGV (sd) = new_argv; @@ -914,7 +930,8 @@ void sim_print_help (SIM_DESC sd, int is_command) { if (STATE_OPEN_KIND (sd) == SIM_OPEN_STANDALONE) - sim_io_printf (sd, "Usage: %s [options] [--] program [program args]\n", + sim_io_printf (sd, + "Usage: %s [options] [VAR=VAL|--] program [program args]\n", STATE_MY_NAME (sd)); /* Initialize duplicate argument checker. */ @@ -950,6 +967,9 @@ sim_print_help (SIM_DESC sd, int is_command) if (STATE_OPEN_KIND (sd) == SIM_OPEN_STANDALONE) { sim_io_printf (sd, "\n"); + sim_io_printf (sd, + "VAR=VAL Environment variables to set. " + "Ignored if -- is used.\n"); sim_io_printf (sd, "program args Arguments to pass to simulated program.\n"); sim_io_printf (sd, " Note: Very few simulators support this.\n"); } |