From: Mike Frysinger Date: Tue, 16 Nov 2021 08:16:09 +0000 (-0500) Subject: sim: run: support concise env var settings X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3b2934856f1370b320d8be5e1d4d82ef0c628f01;p=binutils-gdb.git sim: run: support concise env var settings Support the same syntax as other common utilities where env vars can be specified before the program to be run without an explicit option. This behavior can be suppressed by using the -- marker. --- diff --git a/sim/common/nrun.c b/sim/common/nrun.c index 320380e91d5..557a060e569 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 f94b814a6cb..8c9b7cfec37 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"); }