[PATCH v3 4/5] Implement "set cwd" command on GDB
Sergio Durigan Junior
sergiodj@redhat.com
Fri Sep 22 20:24:00 GMT 2017
On Friday, September 22 2017, Eli Zaretskii wrote:
>> From: Sergio Durigan Junior <sergiodj@redhat.com>
>> Cc: gdb-patches@sourceware.org, palves@redhat.com
>> Date: Fri, 22 Sep 2017 14:00:51 -0400
>>
>> On Friday, September 22 2017, Eli Zaretskii wrote:
>>
>> >> +@kindex set cwd
>> >> +@cindex change inferior's working directory
>> >> +@item set cwd @r{[}@var{directory}@r{]}
>> >> +Set the inferior's working directory to @var{directory}. If not
>> >> +given, @var{directory} uses @file{'~'}.
>> >
>> > I think we should document here what does "~" mean on MS-Windows,
>> > especially since, when HOME is not in the environment, Gnulib's glob
>> > module doesn't behave according to MS platform recommendations (which
>> > say not to create files directly below %HOMEDRIVE%%HOMEPATH%).
>>
>> Sure, but just to be clear, this text was strongly based on another part
>> of the docs, which also mentions '~' without explaining further.
>>
>> As I am totally out of the loop when it comes to Windows environments,
>> I'd appreciate a suggestion for the new text.
>
> If you write the Unix part, I can propose how to amend it to cover
> Windows. OK?
Deal. Thanks.
>> > This seems to pass the unexpanded cwd directly to CreateProcess. I
>> > don't think this will work on Windows, as this directory is not
>> > interpreted by any shell, so "~" will cause errors. I think we should
>> > pass this via gdb_tilde_expand, like we do in the Unix case, and I
>> > also think we should mirror all the slashes in the result, just in
>> > case.
>>
>> Hm, you're right. I will call "gdb_tilde_expand" here. I'm not sure
>> what you mean by "mirror all the slashes in the result". Do you mean
>> "escape the slashes"?
>
> No, I mean convert forward slashes to backslashes.
Sorry, I wasn't familiar with the term. Anyway, I think I can implement
that. In fact, I think gdbserver/win32-low.c:create_process already
does that, right?
wprogram = alloca ((strlen (program) + 1) * sizeof (wchar_t));
mbstowcs (wprogram, program, strlen (program) + 1);
for (p = wprogram; *p; ++p)
if (L'/' == *p)
*p = L'\\';
Anyway, I'll do the same for the inferior's cwd.
Thanks,
--
Sergio
GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36
Please send encrypted e-mail if possible
http://sergiodj.net/
More information about the Gdb-patches
mailing list