Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Sergio Durigan Junior <sergiodj@redhat.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: gdb-patches@sourceware.org,  palves@redhat.com
Subject: Re: [PATCH v3 5/5] Extend "set cwd" to work on gdbserver
Date: Fri, 22 Sep 2017 20:47:00 -0000	[thread overview]
Message-ID: <87o9q2zcip.fsf@redhat.com> (raw)
In-Reply-To: <837ewqczzs.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 22 Sep	2017 22:08:55 +0300")

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:45:59 -0400
>> 
>> >> +  if (inferior_cwd != NULL)
>> >> +    {
>> >> +      size_t cwdlen = strlen (inferior_cwd);
>> >> +
>> >> +      wcwd = alloca ((cwdlen + 1) * sizeof (wchar_t));
>> >> +      mbstowcs (wcwd, inferior_cwd, cwdlen + 1);
>> >> +    }
>> >
>> > no error checking of the mbstowcs conversion?
>> 
>> Sorry, I am not a Windows programmer.  Other places in the code also
>> don't check for errors.
>
> Not checking for errors in these conversions can be worse on Windows
> than on other platforms, because the Windows' wchar_t supports only
> the BMP, so the chances of getting a conversion error are higher than
> on Unix.
>
>> I'd be happy to improve this code, but I refuse to touch a Windows
>> machine so I'm doing this all this without any testing.  But please,
>> feel absolutely free to point out how this code should look like.
>
> mbstowcs returns NULL if it fails, so I suggest to throw an error in
> that case.  I see no reason for anything fancier.

OK, that I can do :-).

>> >> +static void
>> >> +extended_remote_set_inferior_cwd (struct remote_state *rs)
>> >> +{
>> >> +  if (packet_support (PACKET_QSetWorkingDir) != PACKET_DISABLE)
>> >> +    {
>> >> +      const char *inferior_cwd = get_inferior_cwd ();
>> >> +
>> >> +      if (inferior_cwd != NULL)
>> >> +	{
>> >> +	  std::string hexpath = bin2hex ((const gdb_byte *) inferior_cwd,
>> >> +					 strlen (inferior_cwd));
>> >> +
>> >
>> > Shouldn't this do some encoding conversion, from the GDB charset to
>> > the target charset, before encoding in hex?
>> 
>> I don't know.  There's nothing related to charset on gdb/gdbserver/, but
>> then again I don't know if we've ever encountered a case that demanded
>> conversions.  I can investigate this a bit more.
>
> GDB does know about target-charset and host-charset.  I'd expect file
> names that are sent to the target be in the target charset, but since
> what get_inferior_cwd returns is in host charset (it was typed by the
> user), I think a conversion might be in order.

I don't know.  We never seem to do that in other cases.  For example,
when we are starting the inferior remotely:

  static int
  extended_remote_run (const std::string &args)
  {
    ...
    if (strlen (remote_exec_file) * 2 + len >= get_remote_packet_size ())
      error (_("Remote file name too long for run packet"));
    len += 2 * bin2hex ((gdb_byte *) remote_exec_file, rs->buf + len,
                        strlen (remote_exec_file));


The "remote_exec_file" variable is also something that the user inputs
through the "set remote exec-file" command.  It doesn't seem like we
need to worry about charset conversion here.

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/


  reply	other threads:[~2017-09-22 20:47 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 2/4] Import "glob" module from gnulib Sergio Durigan Junior
2017-09-12  4:23 ` [PATCH 4/4] Implement "set cwd" command Sergio Durigan Junior
2017-09-12 14:50   ` Eli Zaretskii
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  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 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 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 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 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 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 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 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 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 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 [this message]
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
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=87o9q2zcip.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