Re: [PATCH v3 4/6] nto_process_target::create_inferior: Pass args as char **

Simon Marchi
2020-05-12T18:34:46Z

On 2020-05-12 11:42 a.m., Michael Weghorn via Gdb-patches wrote:
> Both, [1] and [2] suggest that the fifth parameter
> to the 'spawnp' function is of type '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] https://support.sas.com/documentation/onlinedoc/sasc/doc750/html/lr2/zid-9360.htm
> [2] https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_74/apis/spawnp.htm

I would suggest using this reference instead, which is from QNX Neutrino (the
platform this port is for).

http://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.neutrino.lib_ref/topic/s/spawnp.html

Otherwise, this patch is OK.

Simon