From: Sergio Durigan Junior <sergiodj@redhat.com>
To: Pedro Alves <palves@redhat.com>
Cc: GDB Patches <gdb-patches@sourceware.org>, Eli Zaretskii <eliz@gnu.org>
Subject: Re: [PATCH v5 2/3] Implement "set cwd" command on GDB
Date: Tue, 03 Oct 2017 16:39:00 -0000 [thread overview]
Message-ID: <874lrg5goz.fsf@redhat.com> (raw)
In-Reply-To: <bcd35803-a7c2-8e49-e33c-fd8e807cab95@redhat.com> (Pedro Alves's message of "Tue, 3 Oct 2017 16:15:15 +0100")
On Tuesday, October 03 2017, Pedro Alves wrote:
> Hi Sergio,
>
> This looks largely OK to me now, though I still have a couple
> comments.
>
> On 09/29/2017 11:58 PM, Sergio Durigan Junior wrote:
>> @@ -2434,19 +2435,43 @@ variables to files that are only run when you sign on, such as
>> @section Your Program's Working Directory
>>
>> @cindex working directory (of your program)
>> -Each time you start your program with @code{run}, it inherits its
>> -working directory from the current working directory of @value{GDBN}.
>> -The @value{GDBN} working directory is initially whatever it inherited
>> -from its parent process (typically the shell), but you can specify a new
>> -working directory in @value{GDBN} with the @code{cd} command.
>> +Each time you start your program with @code{run}, the inferior will be
>> +initialized with the current working directory specified by the
>> +@kbd{set cwd} command. If no directory has been specified by this
>> +command, then the inferior will inherit @value{GDBN}'s current working
>> +directory as its working directory.
>> +
>> +You can also change @value{GDBN}'s current working directory by using
>> +the @code{cd} command.
>>
>> The @value{GDBN} working directory also serves as a default for the commands
>> that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to
>> Specify Files}.
>
> Rereading this, I think that this paragraph ("The GDB working directory
> also serves...") would be better moved below, where "cd" is
> documented (with the "also" probably dropped). Maybe add an xref here taking
> users there.
Done.
>> @kindex cd
>> -@cindex change working directory
>> +@cindex change @value{GDBN}'s working directory
>> @item cd @r{[}@var{directory}@r{]}
>> Set the @value{GDBN} working directory to @var{directory}. If not
>> given, @var{directory} uses @file{'~'}.
>
> Above I meant, move that paragraph here, where "cd" is documented.
> This is where I'd expect to see info about what does the command
> affect. Maybe also add an xref to "set cwd" here.
Done.
>> @@ -374,6 +389,14 @@ fork_inferior (const char *exec_file_arg, const std::string &allargs,
>> UIs. */
>> close_most_fds ();
>>
>> + /* Change to the requested working directory if the user
>> + requested it. */
>> + if (inferior_cwd != NULL)
>> + {
>> + if (chdir (inferior_cwd) < 0)
>> + trace_start_error_with_name (expanded_inferior_cwd.c_str ());
>
> Please also update the trace_start... statement:
>
> trace_start_error_with_name (expanded_inferior);
>
I could swear I had updated this. Anyway, did that now.
>
>> +proc_with_prefix test_cwd_reset { } {
>> + global decimal gdb_prompt tmpdir
>> +
>> + gdb_test_multiple "pwd" "GDB cwd" {
>> + -re "Working directory \(.*\)\.\r\n$gdb_prompt $" {
>> + set gdb_cwd $expect_out(1,string)
>> + }
>> + -re ".*$gdb_prompt $" {
>> + fail "failed to obtain GDB cwd before run"
>> + return -1
>> + }
>> + default {
>> + fail "failed to obtain GDB cwd before run"
>> + return -1
>> + }
>> + }
>
> Any reason you didn't update this one?
That's strange. I also could swear I updated this one. I'm starting to
use a new tool to manage my git repos, so maybe I made a confusion and
reverted some changes.
Updated.
>>
>> + const char *inferior_cwd = get_inferior_cwd ();
>> + std::string expanded_infcwd;
>> + if (inferior_cwd != NULL)
>> + {
>> + expanded_infcwd = gdb_tilde_expand (inferior_cwd);
>> + /* Mirror slashes on inferior's cwd. */
>> + std::replace (expanded_infcwd.begin (), expanded_infcwd.end (),
>> + '/', '\\');
>> + inferior_cwd = expanded_infcwd.c_str ();
>> + }
>> +
>
> 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.
>> &si,
>> &pi);
>> if (w32_env)
>> @@ -2697,7 +2714,7 @@ windows_create_inferior (struct target_ops *ops, const char *exec_file,
>> TRUE, /* inherit handles */
>> flags, /* start flags */
>> w32env, /* environment */
>> - NULL, /* current directory */
>> + inferior_cwd, /* current directory */
>> &si,
>> &pi);
>> if (tty != INVALID_HANDLE_VALUE)
>>
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/
next prev parent reply other threads:[~2017-10-03 16:39 UTC|newest]
Thread overview: 131+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-12 4:23 [PATCH 0/4] New "set cwd" command Sergio Durigan Junior
2017-09-12 4:23 ` [PATCH 4/4] Implement " Sergio Durigan Junior
2017-09-12 14:50 ` Eli Zaretskii
2017-09-12 4:23 ` [PATCH 2/4] Import "glob" module from gnulib Sergio Durigan Junior
2017-09-12 4:23 ` [PATCH 3/4] Introduce gdb_chdir Sergio Durigan Junior
2017-09-12 14:53 ` Eli Zaretskii
2017-09-13 23:00 ` Sergio Durigan Junior
2017-09-13 16:07 ` Pedro Alves
2017-09-14 15:14 ` Sergio Durigan Junior
2017-09-14 15:23 ` Pedro Alves
2017-09-14 15:33 ` Sergio Durigan Junior
2017-09-12 4:23 ` [PATCH 1/4] Make gdb_dirbuf local to functions Sergio Durigan Junior
2017-09-13 15:12 ` Pedro Alves
2017-09-13 22:03 ` Sergio Durigan Junior
2017-09-13 22:19 ` Pedro Alves
2017-09-13 22:46 ` Sergio Durigan Junior
2017-09-13 23:47 ` Pedro Alves
2017-09-12 14:55 ` [PATCH 0/4] New "set cwd" command Eli Zaretskii
2017-09-12 16:48 ` Sergio Durigan Junior
2017-09-12 16:57 ` Eli Zaretskii
2017-09-12 17:51 ` Sergio Durigan Junior
2017-09-13 15:00 ` Pedro Alves
2017-09-13 15:06 ` Eli Zaretskii
2017-09-13 21:56 ` Sergio Durigan Junior
2017-09-13 14:54 ` Pedro Alves
2017-09-13 21:54 ` Sergio Durigan Junior
2017-09-19 4:28 ` [PATCH v2 0/5] " Sergio Durigan Junior
2017-09-19 4:28 ` [PATCH v2 3/5] Introduce gdb_chdir Sergio Durigan Junior
2017-09-20 13:14 ` Pedro Alves
2017-09-20 17:25 ` Sergio Durigan Junior
2017-09-19 4:28 ` [PATCH v2 2/5] Get rid of "gdb_dirbuf" and use "getcwd (NULL, 0)" Sergio Durigan Junior
2017-09-20 12:24 ` Pedro Alves
2017-09-20 17:02 ` Sergio Durigan Junior
2017-09-19 4:28 ` [PATCH v2 4/5] Implement "set cwd" command Sergio Durigan Junior
2017-09-20 14:01 ` Pedro Alves
2017-09-20 23:08 ` Sergio Durigan Junior
2017-09-19 4:33 ` [PATCH v2 5/5] Extend "set cwd" to work on gdbserver Sergio Durigan Junior
2017-09-20 14:34 ` Pedro Alves
2017-09-20 23:49 ` Sergio Durigan Junior
2017-09-21 1:37 ` Sergio Durigan Junior
2017-09-22 10:47 ` Pedro Alves
2017-09-22 18:33 ` Sergio Durigan Junior
2017-09-27 13:28 ` Pedro Alves
2017-09-19 4:37 ` [PATCH v2 1/5] Import "glob" and "getcwd" modules from gnulib Sergio Durigan Junior
2017-09-20 12:17 ` Pedro Alves
2017-09-20 17:17 ` Sergio Durigan Junior
2017-09-20 17:33 ` Pedro Alves
2017-09-20 18:31 ` Sergio Durigan Junior
2017-09-20 20:30 ` Sergio Durigan Junior
2017-09-20 22:44 ` Pedro Alves
2017-09-20 23:12 ` Sergio Durigan Junior
2017-09-20 23:25 ` Pedro Alves
2017-09-21 22:59 ` New "set cwd" command Sergio Durigan Junior
2017-09-21 22:59 ` [PATCH v3 1/5] Import "glob" and "getcwd" modules from gnulib Sergio Durigan Junior
2017-09-22 11:01 ` Pedro Alves
2017-09-22 17:29 ` Sergio Durigan Junior
2017-09-21 22:59 ` [PATCH v3 4/5] Implement "set cwd" command on GDB Sergio Durigan Junior
2017-09-22 8:03 ` Eli Zaretskii
2017-09-22 12:31 ` Pedro Alves
2017-09-22 18:15 ` Sergio Durigan Junior
2017-09-22 18:00 ` Sergio Durigan Junior
2017-09-22 18:56 ` Eli Zaretskii
2017-09-22 19:24 ` Pedro Alves
2017-09-22 19:41 ` Eli Zaretskii
2017-09-22 20:27 ` Sergio Durigan Junior
2017-09-22 20:37 ` Pedro Alves
2017-09-23 5:55 ` Eli Zaretskii
2017-09-27 14:02 ` Pedro Alves
2017-09-29 15:31 ` Eli Zaretskii
2017-09-29 15:46 ` Pedro Alves
2017-09-29 17:51 ` Eli Zaretskii
2017-09-23 5:52 ` Eli Zaretskii
2017-09-22 20:24 ` Sergio Durigan Junior
2017-09-23 5:51 ` Eli Zaretskii
2017-09-22 20:55 ` Sergio Durigan Junior
2017-09-23 6:05 ` Eli Zaretskii
2017-09-23 17:01 ` Sergio Durigan Junior
2017-09-21 22:59 ` [PATCH v3 3/5] Introduce gdb_tilde_expand Sergio Durigan Junior
2017-09-22 11:57 ` Pedro Alves
2017-09-22 17:37 ` Sergio Durigan Junior
2017-09-22 17:41 ` Pedro Alves
2017-09-22 18:07 ` Sergio Durigan Junior
2017-09-22 18:20 ` Pedro Alves
2017-09-22 18:22 ` Sergio Durigan Junior
2017-09-21 22:59 ` [PATCH v3 2/5] Get rid of "gdb_dirbuf" and use "getcwd (NULL, 0)" Sergio Durigan Junior
2017-09-22 11:19 ` Pedro Alves
2017-09-22 17:30 ` Sergio Durigan Junior
2017-09-21 23:06 ` [PATCH v3 5/5] Extend "set cwd" to work on gdbserver Sergio Durigan Junior
2017-09-22 8:12 ` Eli Zaretskii
2017-09-22 18:46 ` Sergio Durigan Junior
2017-09-22 19:09 ` Eli Zaretskii
2017-09-22 20:47 ` Sergio Durigan Junior
2017-09-23 6:00 ` Eli Zaretskii
2017-09-27 14:42 ` Pedro Alves
2017-09-27 21:48 ` Sergio Durigan Junior
2017-09-29 14:03 ` Pedro Alves
2017-09-29 18:33 ` Sergio Durigan Junior
2017-09-28 4:10 ` [PATCH v4 0/3] New "set cwd" command Sergio Durigan Junior
2017-09-28 4:10 ` [PATCH v4 1/3] Introduce gdb_tilde_expand Sergio Durigan Junior
2017-09-29 14:08 ` Pedro Alves
2017-09-29 17:48 ` Sergio Durigan Junior
2017-09-28 4:11 ` [PATCH v4 3/3] Extend "set cwd" to work on gdbserver Sergio Durigan Junior
2017-09-29 15:21 ` Pedro Alves
2017-09-29 18:48 ` Sergio Durigan Junior
2017-10-03 15:13 ` Pedro Alves
2017-09-28 4:11 ` [PATCH v4 2/3] Implement "set cwd" command on GDB Sergio Durigan Junior
2017-09-29 15:20 ` Pedro Alves
2017-09-29 18:31 ` Sergio Durigan Junior
2017-09-29 22:58 ` [PATCH v5 0/3] New "set cwd" command Sergio Durigan Junior
2017-09-29 22:59 ` [PATCH v5 2/3] Implement "set cwd" command on GDB Sergio Durigan Junior
2017-10-03 15:15 ` Pedro Alves
2017-10-03 16:39 ` Sergio Durigan Junior [this message]
2017-10-03 16:44 ` Pedro Alves
2017-10-03 16:47 ` Sergio Durigan Junior
2017-10-03 16:58 ` Sergio Durigan Junior
2017-10-03 20:09 ` Sergio Durigan Junior
2017-10-03 21:29 ` Pedro Alves
2017-10-04 5:40 ` Eli Zaretskii
2017-10-04 6:10 ` Sergio Durigan Junior
2017-10-06 2:37 ` asmwarrior
2017-10-06 10:54 ` [pushed] Fix GDB build under msys+mingw gcc 32bit (Re: [PATCH v5 2/3] Implement "set cwd" command on GDB) Pedro Alves
2017-10-06 11:06 ` [pushed] Fix more GDB build breakage on mingw32 " Pedro Alves
2017-10-06 11:15 ` asmwarrior
2017-10-09 21:58 ` Sergio Durigan Junior
2017-09-29 22:59 ` [PATCH v5 3/3] Extend "set cwd" to work on gdbserver Sergio Durigan Junior
2017-10-03 15:15 ` Pedro Alves
2017-10-03 16:45 ` Sergio Durigan Junior
2017-10-04 6:09 ` Sergio Durigan Junior
2017-09-29 22:59 ` [PATCH v5 1/3] Introduce gdb_tilde_expand Sergio Durigan Junior
2017-10-03 15:15 ` Pedro Alves
2017-10-04 6:09 ` Sergio Durigan Junior
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=874lrg5goz.fsf@redhat.com \
--to=sergiodj@redhat.com \
--cc=eliz@gnu.org \
--cc=gdb-patches@sourceware.org \
--cc=palves@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox