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 2090129c36
("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
This commit is contained in:
parent
b69ca137ac
commit
ace6b9195e
2 changed files with 6 additions and 2 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
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>
|
2020-05-25 Michael Weghorn <m.weghorn@posteo.de>
|
||||||
|
|
||||||
* server.cc (captured_main), (handle_v_run): No longer
|
* server.cc (captured_main), (handle_v_run): No longer
|
||||||
|
|
|
@ -357,7 +357,6 @@ nto_process_target::create_inferior (const char *program,
|
||||||
struct inheritance inherit;
|
struct inheritance inherit;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
sigset_t set;
|
sigset_t set;
|
||||||
std::string str_program_args = stringify_argv (program_args);
|
|
||||||
|
|
||||||
TRACE ("%s %s\n", __func__, program);
|
TRACE ("%s %s\n", __func__, program);
|
||||||
/* Clear any pending SIGUSR1's but keep the behavior the same. */
|
/* 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.flags |= SPAWN_SETGROUP | SPAWN_HOLD;
|
||||||
inherit.pgroup = SPAWN_NEWPGROUP;
|
inherit.pgroup = SPAWN_NEWPGROUP;
|
||||||
pid = spawnp (program, 0, NULL, &inherit,
|
pid = spawnp (program, 0, NULL, &inherit,
|
||||||
(char *) str_program_args.c_str (), 0);
|
program_args.data (), 0);
|
||||||
sigprocmask (SIG_BLOCK, &set, NULL);
|
sigprocmask (SIG_BLOCK, &set, NULL);
|
||||||
|
|
||||||
if (pid == -1)
|
if (pid == -1)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue