diff options
author | Michael Weghorn <m.weghorn@posteo.de> | 2020-05-25 11:39:20 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@polymtl.ca> | 2020-05-25 11:39:35 -0400 |
commit | ace6b9195e34cafa68964fb898d887ed15003fca (patch) | |
tree | c0a5d5323d9ebe2fe4427b2fefe2add6310c338b /gdbserver | |
parent | b69ca137aca2e4aa72f3cad60e0389019ab14116 (diff) | |
download | gdb-ace6b9195e34cafa68964fb898d887ed15003fca.zip gdb-ace6b9195e34cafa68964fb898d887ed15003fca.tar.gz gdb-ace6b9195e34cafa68964fb898d887ed15003fca.tar.bz2 |
nto_process_target::create_inferior: Pass args as char **
According to [1], the fifth parameter
to the 'spawnp' function is 'char * const argv[]',
so just pass the args contained in the vector as
an array right away, rather than converting that
to a C string first and passing that one.
With commit 2090129c36c7e582943b7d300968d19b46160d84
("Share fork_inferior et al with gdbserver",
2016-12-22) the type had changed from 'char **'
to 'char *', but I can't see an apparent reason for
that, and 'nto_procfs_target::create_inferior'
(in gdb/nto-procfs.c) also passes a 'char **' to
'spawnp' instead.
I do not know much about that target and cannot actually
test this, however.
The main motivation to look at this was identifying
and replacing the remaining uses of the 'stringify_argv'
function which does not properly do escaping.
[1] http://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.neutrino.lib_ref/topic/s/spawnp.html
gdbserver/ChangeLog:
* nto-low.cc (nto_process_target::create_inferior): Pass
argv to spawnp function as char **.
Change-Id: Ic46fe745c2aa1118114240d149d4156032f84344
Diffstat (limited to 'gdbserver')
-rw-r--r-- | gdbserver/ChangeLog | 5 | ||||
-rw-r--r-- | gdbserver/nto-low.cc | 3 |
2 files changed, 6 insertions, 2 deletions
diff --git a/gdbserver/ChangeLog b/gdbserver/ChangeLog index b4e6fa6..7ed38d7 100644 --- a/gdbserver/ChangeLog +++ b/gdbserver/ChangeLog @@ -1,5 +1,10 @@ 2020-05-25 Michael Weghorn <m.weghorn@posteo.de> + * nto-low.cc (nto_process_target::create_inferior): Pass + argv to spawnp function as char **. + +2020-05-25 Michael Weghorn <m.weghorn@posteo.de> + * server.cc (captured_main), (handle_v_run): No longer insert extra NULL element to args vector. diff --git a/gdbserver/nto-low.cc b/gdbserver/nto-low.cc index 642fe9f..a88ad02 100644 --- a/gdbserver/nto-low.cc +++ b/gdbserver/nto-low.cc @@ -357,7 +357,6 @@ nto_process_target::create_inferior (const char *program, struct inheritance inherit; pid_t pid; sigset_t set; - std::string str_program_args = stringify_argv (program_args); TRACE ("%s %s\n", __func__, program); /* Clear any pending SIGUSR1's but keep the behavior the same. */ @@ -371,7 +370,7 @@ nto_process_target::create_inferior (const char *program, inherit.flags |= SPAWN_SETGROUP | SPAWN_HOLD; inherit.pgroup = SPAWN_NEWPGROUP; pid = spawnp (program, 0, NULL, &inherit, - (char *) str_program_args.c_str (), 0); + program_args.data (), 0); sigprocmask (SIG_BLOCK, &set, NULL); if (pid == -1) |