[PATCH v5 2/3] Implement "set cwd" command on GDB

Pedro Alves palves@redhat.com
Tue Oct 3 16:44:00 GMT 2017


On 10/03/2017 05:39 PM, Sergio Durigan Junior wrote:

>> But what if inferior_cwd _is_ NULL, when ...
>>
>>
>>>    memset (&si, 0, sizeof (si));
>>>    si.cb = sizeof (si);
>>>  
>>> @@ -2514,6 +2527,10 @@ windows_create_inferior (struct target_ops *ops, const char *exec_file,
>>>        flags |= DEBUG_PROCESS;
>>>      }
>>>  
>>> +  if (cygwin_conv_path (CCP_POSIX_TO_WIN_W, inferior_cwd,
>>> +			infcwd, strlen (inferior_cwd)) < 0)
>>> +    error (_("Error converting inferior cwd: %d"), errno);
>>
>> ... we get here?  It looks to me like this conversion should
>> skipped here then, and ...
> 
> You're right, this should be skipped.
> 
>>> +
>>>  #ifdef __USEWIDE
>>>    args = (cygwin_buf_t *) alloca ((wcslen (toexec) + wcslen (cygallargs) + 2)
>>>  				  * sizeof (wchar_t));
>>> @@ -2574,7 +2591,7 @@ windows_create_inferior (struct target_ops *ops, const char *exec_file,
>>>  		       TRUE,	/* inherit handles */
>>>  		       flags,	/* start flags */
>>>  		       w32_env,	/* environment */
>>> -		       NULL,	/* current directory */
>>> +		       infcwd,	/* current directory */
>>
>> ... here still pass NULL.
> 
> Here we pass NULL because that was the old behaviour when we did not
> care about the inferior's cwd.  This is the same approach that we use on
> fork_inferior: if the user hasn't provided any paths via "set cwd", then
> we don't do anything.

Exactly, I'm saying that you _should_ pass NULL iff
inferior_cwd is NULL.  That's what msdn's documentation of
CreateProcess says you should pass in order to have the
process inherit its parent's cwd.

Thanks,
Pedro Alves



More information about the Gdb-patches mailing list