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

Michael Weghorn
2020-05-13T09:56:53Z

On 12/05/2020 20.34, Simon Marchi wrote:
> 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.

Thanks for the hint, I have update the commit message for v4 of the patch.

Michael