Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Sergio Durigan Junior <sergiodj@redhat.com>
To: Pedro Alves <palves@redhat.com>
Cc: GDB Patches <gdb-patches@sourceware.org>
Subject: Re: [PATCH 1/4] Make gdb_dirbuf local to functions
Date: Wed, 13 Sep 2017 22:46:00 -0000	[thread overview]
Message-ID: <8760cmz06a.fsf@redhat.com> (raw)
In-Reply-To: <0e5b1e93-20fa-b6ee-f7b9-eec4f8a50064@redhat.com> (Pedro Alves's	message of "Wed, 13 Sep 2017 23:19:27 +0100")

On Wednesday, September 13 2017, Pedro Alves wrote:

> On 09/13/2017 11:03 PM, Sergio Durigan Junior wrote:
>> On Wednesday, September 13 2017, Pedro Alves wrote:
>
>>>> --- a/gdb/cli/cli-cmds.c
>>>> +++ b/gdb/cli/cli-cmds.c
>>>> @@ -380,6 +380,8 @@ quit_command (char *args, int from_tty)
>>>>  static void
>>>>  pwd_command (char *args, int from_tty)
>>>>  {
>>>> +  char gdb_dirbuf[BUFSIZ];
>>>
>>> I don't recall offhand -- what's "BUFSIZ"?  What defines it
>>> and is it guaranteed to be the right size for getcwd?
>> 
>> BUFSIZ is defined by stdio.h, and is 8192 on my Fedora 25.  This is much
>> greater than the previous "1024" that was being used before.  
>
> Ah, that BUFSIZ.  That's the FILE* stream buffer size [1], so I don't
> see it makes sense to use it for paths over PATH_MAX.  It happens to be
> greater that 1024 on your system, but that's not guaranteed, no?
>
> [1] - http://pubs.opengroup.org/onlinepubs/9699919799/functions/setbuf.html
>       http://pubs.opengroup.org/onlinepubs/009695399/basedefs/stdio.h.html

AFAIK that's not a guarantee, indeed.  Although "1024" is also a very
low value for path names on some systems (for example, here PATH_MAX is
defined as 4096), we already had this problem before.

>> For reproducibility reasons I didn't want to use PATH_MAX.
>
> I don't understand this.  Can you expand?  What's not reproducible
> about PATH_MAX?  How's that different from BUFSIZ?
>
>>> As an extension, on GNU/Linux, you can call 'getcwd (NULL, 0)' and
>>> that returns a heap-allocated buffer of the necessary size.  Can we
>>> rely on gnulib to implement that behavior everywhere?  Since
>>> it seems like we're xstrdup'ing the dir anyway, that likely would
>>> simplify things, and remove one arbitrary hardcoded limit, while
>>> at it.
>> 
>> That's true, and it's better when you consider reproducible builds as
>> well.
>
> /me confused about that.
>
>> 
>> According to gnulib:
>> 
>>   https://www.gnu.org/software/gnulib/manual/html_node/getcwd.html
>> 
>> It is better to rely on this better version of getcwd.
>
> Alright.  This makes the above moot, though I'd still like to
> understand the reproducibility argument, since I suspect that
> may come back in other cases.

Well, maybe this is more a question of portability than reproducibility,
but I mentioned the latter because I remember doing some fixes in some
Debian packages that were failing the reproducible tests due to the
presence of PATH_MAX.  They were actually failing to build on certain
targets, but that can be seen as non-reproducibility as well.

PATH_MAX is defined by POSIX but is not used by every system.  GNU/Hurd,
for example, doesn't define it.  As usual with GNU programs the
"correct" thing to do is not to rely on some hard-coded limit imposed by
a header file, but rather to make use of the fact that glibc's getcwd
offers the possibility to allocate the variable that holds the path
according to its actual size.

There are some other problems with PATH_MAX, e.g., the fact that the
maximum length of a pathname is really defined by the underlying
filesystem you're using, so just using "4096" doesn't really reflect the
reality.

Again, maybe I should have said "portability issues", but I consider
them reproducibility issues as well.

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-13 22:46 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 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 [this message]
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 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 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 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 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-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-29 22:58 ` [PATCH v5 0/3] New "set cwd" command 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
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 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

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=8760cmz06a.fsf@redhat.com \
    --to=sergiodj@redhat.com \
    --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