summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Weghorn <m.weghorn@posteo.de>2020-05-25 11:39:20 -0400
committerSimon Marchi <simon.marchi@polymtl.ca>2020-05-25 11:39:35 -0400
commitace6b9195e34cafa68964fb898d887ed15003fca (patch)
treec0a5d5323d9ebe2fe4427b2fefe2add6310c338b
parentb69ca137aca2e4aa72f3cad60e0389019ab14116 (diff)
downloadbinutils-gdb-ace6b9195e34cafa68964fb898d887ed15003fca.tar.gz
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
-rw-r--r--gdbserver/ChangeLog5
-rw-r--r--gdbserver/nto-low.cc3
2 files changed, 6 insertions, 2 deletions
diff --git a/gdbserver/ChangeLog b/gdbserver/ChangeLog
index b4e6fa66608..7ed38d7dbf7 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 642fe9ffd21..a88ad02f645 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)