This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH/RFC] Implement the ability to set the current working directory in GDBserver


On Wednesday, August 30 2017, Eli Zaretskii wrote:

>> From: Sergio Durigan Junior <sergiodj@redhat.com>
>> Cc: Pedro Alves <palves@redhat.com>,
>> 	Eli Zaretskii <eliz@gnu.org>,
>> 	Sergio Durigan Junior <sergiodj@redhat.com>
>> Date: Wed, 30 Aug 2017 00:38:11 -0400
>> 
>> --- a/gdb/NEWS
>> +++ b/gdb/NEWS
>> @@ -17,11 +17,22 @@
>>       "target remote", you can disable the startup with shell by using the
>>       new "--no-startup-with-shell" GDBserver command line option.
>>  
>> +  ** On Unix systems, GDBserver is now able to enter a directory
>> +     before starting an inferior.
>
> Can you tell why this is limited to Unix systems?  The chdir function
> is available much wider than just on Unix.

No particular reason.  This is the same text I've been using in my
latest patches for gdbserver, so I chose to use it again.  I'll rewrite
it to remove this part.

>> +     This is done by using the "cd" command in GDB, which instructs it
>> +     to tell GDBserver about this directory change the next time an
>> +     inferior is run.  If you want to make GDBserver enter the
>> +     directory your GDB is currently in, you can do a "cd ." in GDB.
>
> Couldn't GDB do this "cd ." step under the hood, without bothering
> users with that?

The problem is that we don't really know if the user will want to change
gdbserver's current directory or not.  If we always assume so, this will
lead to many breakages as the directory tree will not be always the same
on host and target.  That's why 'user_set_cwd' is initially false.
However, there's the case when the user may want to change gdbserver's
directory to the same directory GDB is in.  That's why I included this
explanation in the docs.

The more I think about this, the less I'm satisfied with the current
solution.  But I can't really think of a better alternative that doesn't
involve having a separate command to manipulate gdbserver's cwd.

>> +Whenever you specify a new working directory in @value{GDBN}, and if
>> +you are performing a remote debug (@pxref{Remote Debugging}), this
>> +change will be reflected in @command{gdbserver} the next time you run
>> +the program being debugged (@pxref{QSetWorkingDir packet}).  Sometimes
>> +you may want to make @command{gdbserver} enter a directory in which
>> +@value{GDBN} is already in; in this case, you can perform a @code{cd
>> +.} which will not change the current directory in @value{GDBN} but
>> +will force @command{gdbserver} to enter it.
>
> The "@code{cd .}" part should be @kbd{cd .}, and I'd take it in @w{..}
> for a good measure, to prevent it from being broken between 2 lines.

Thanks, fixed.

>> +This packet is only transmitted when the user issues a @code{cd}
>> +command in @value{GDBN} (@xref{Working Directory, ,Your Program's
>> +Working Directory}).
>
> The @xref should be @pxref, as the former is not appropriate in
> parentheses.

Fixed.

> The documentation parts are okay with these nits fixed.

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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]