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.
This commit is contained in:
Mike Frysinger
2021-11-15 02:32:06 -05:00
parent 7b2ec4e46f
commit e8f20a28b1
31 changed files with 40 additions and 119 deletions

View File

@@ -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 == '?')