aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sim/common/nrun.c3
-rw-r--r--sim/common/sim-options.c22
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");
}