From: "Eli Zaretskii" <eliz@gnu.org>
To: gdb-patches@sources.redhat.com
Subject: Re: [RFC] fullname attribute for GDB/MI stack frames
Date: Wed, 04 May 2005 21:42:00 -0000 [thread overview]
Message-ID: <01c550f2$Blat.v2.4$07cfe520@zahav.net.il> (raw)
In-Reply-To: <20050504210717.GA2419@nevyn.them.org> (message from Daniel Jacobowitz on Wed, 4 May 2005 17:07:17 -0400)
> Date: Wed, 4 May 2005 17:07:17 -0400
> From: Daniel Jacobowitz <drow@false.org>
> Cc: gdb-patches@sources.redhat.com
>
> The value of those functions if they can not find the file is _nil_.
No, it's not. Given enough information, e.g., the leading directories
and the basename, one can reconstruct the absolute file name even if
it no longer exists.
> realpath() returns ENOENT if you hand it a path that does not exist.
Does GetFullPathName on Windows fails in similar ways for non-existent
files?
In any case, the fact that realpath fails for non-existent files does
not seem to be documented, and I, for one, would not necessarily
expect that, as some similar functions and system calls I've met over
the years on other platforms didn't fail like that.
> There are five calls to xfullpath in GDB. One is for debugging use
> (maint print msymbols). Two are interested in canonicalizing
> paths which already meet IS_ABSOLUTE_PATH, for the purposes of
> comparison. And the last two are in openp, after successfully opening
> the file.
>
> There are six calls to gdb_realpath. One is QNX-specific and I'm not
> precisely sure what it's for. Four are used on symtabs for string
> comparison. And the last one is in the implementation of xfullpath.
I don't follow the rationale for enumerating the current uses. These
are sufficiently general-purpose functions; even if today they are
used in certain contexts, tomorrow someone could use them in a
different context. We need to think about potential uses even if they
aren't currently in the sources.
> > If the front end is going to open the file, it doesn't matter. If it
> > is going to compare files for equality, it should not use string
> > comparison, for the reasons I explained in another message.
>
> If it's going to open files, it _does_ matter. You said that the
> current directory (and presumably the current drive) are global on this
> platform. But the current directory is not stable across time. If the
> front end changes the current directory after talking to GDB, suddenly
> it won't be able to open files.
In some (hopefully rare) cases, yes. \abc will remain correct as long
as you don't change the drive; d:foo and d:./foo will remain correct
as long as you don't change the cwd on drive d:. Both changes are
rare in practice.
However, similar changes that invalidate file names can happen on Unix
as well: mounted file systems can be unmounted, symlinks can be
broken, etc. When that happens, GDB will no longer be able to open the
file, even if its name is 100% absolute.
> Can you give me an example of when canonicalization would be harmful?
It's gratuitous, even if the result is correct. And we don't know how
to detect when it is correct.
> The only one I can think of is "the current directory was wrong when we
> tried to open the file, so we change the current directory and things
> start working". This relies on a DJGPP specific property
??? What DJGPP specific property? What I had in mind was the GDB "cd"
command typed by the user (who presumably knows where to go), not
something specific to DJGPP.
next prev parent reply other threads:[~2005-05-04 21:42 UTC|newest]
Thread overview: 103+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-01 19:13 Dennis Brueni
2005-04-02 9:22 ` Eli Zaretskii
2005-04-30 19:18 ` Daniel Jacobowitz
2005-05-01 2:19 ` Bob Rossi
2005-05-01 18:24 ` Eli Zaretskii
2005-05-01 18:34 ` Bob Rossi
2005-05-01 19:02 ` Daniel Jacobowitz
2005-05-02 0:55 ` Bob Rossi
2005-05-02 0:54 ` Bob Rossi
2005-05-02 0:58 ` Daniel Jacobowitz
2005-05-02 19:30 ` Eli Zaretskii
2005-05-02 19:36 ` Bob Rossi
2005-05-02 19:52 ` Eli Zaretskii
2005-05-02 19:55 ` Daniel Jacobowitz
2005-05-02 20:42 ` Eli Zaretskii
2005-05-02 20:49 ` Daniel Jacobowitz
2005-05-02 21:20 ` Bob Rossi
2005-05-03 3:49 ` Eli Zaretskii
2005-05-03 3:42 ` Eli Zaretskii
2005-05-03 3:46 ` Daniel Jacobowitz
2005-05-03 19:36 ` Eli Zaretskii
2005-05-03 19:49 ` Daniel Jacobowitz
2005-05-03 20:05 ` Bob Rossi
2005-05-03 20:49 ` Eli Zaretskii
2005-05-04 13:34 ` Daniel Jacobowitz
2005-05-04 13:51 ` Bob Rossi
2005-05-04 13:52 ` Daniel Jacobowitz
2005-05-04 17:51 ` Eli Zaretskii
2005-05-04 18:06 ` Bob Rossi
2005-05-04 20:32 ` Eli Zaretskii
2005-05-04 18:05 ` Eli Zaretskii
2005-05-04 18:32 ` Daniel Jacobowitz
2005-05-04 20:53 ` Eli Zaretskii
2005-05-04 21:07 ` Daniel Jacobowitz
2005-05-04 21:42 ` Eli Zaretskii [this message]
2005-05-04 22:01 ` Daniel Jacobowitz
2005-05-04 23:42 ` Christopher Faylor
2005-05-05 4:15 ` Eli Zaretskii
2005-05-04 23:40 ` Christopher Faylor
2005-05-05 0:05 ` Bob Rossi
2005-05-05 4:02 ` Eli Zaretskii
2005-05-04 23:37 ` Christopher Faylor
2005-05-05 4:05 ` Eli Zaretskii
2005-05-03 19:57 ` Bob Rossi
2005-05-03 21:15 ` Eli Zaretskii
2005-05-03 21:39 ` Bob Rossi
2005-05-03 22:14 ` Christopher Faylor
2005-05-04 4:08 ` Eli Zaretskii
2005-05-04 13:39 ` Daniel Jacobowitz
2005-05-04 17:49 ` Eli Zaretskii
2005-05-04 4:18 ` Eli Zaretskii
2005-05-03 21:39 ` Christopher Faylor
2005-05-03 22:24 ` Daniel Jacobowitz
2005-05-03 22:27 ` Christopher Faylor
2005-05-04 2:32 ` Bob Rossi
2005-05-04 3:05 ` Christopher Faylor
2005-05-04 17:42 ` Eli Zaretskii
2005-05-04 4:12 ` Eli Zaretskii
2005-05-04 13:00 ` Daniel Jacobowitz
2005-05-04 4:27 ` Eli Zaretskii
2005-05-04 11:48 ` Bob Rossi
2005-05-04 14:55 ` Christopher Faylor
2005-05-04 15:02 ` Bob Rossi
2005-05-04 17:43 ` Eli Zaretskii
2005-05-04 17:58 ` Christopher Faylor
2005-05-04 18:29 ` Eli Zaretskii
2005-05-04 20:39 ` Eli Zaretskii
2005-05-04 23:34 ` Christopher Faylor
2005-05-05 4:08 ` Eli Zaretskii
2005-05-04 13:45 ` Daniel Jacobowitz
2005-05-04 20:20 ` Eli Zaretskii
2005-05-04 20:30 ` Daniel Jacobowitz
2005-05-04 21:24 ` Eli Zaretskii
2005-05-04 14:52 ` Christopher Faylor
2005-05-04 17:48 ` Eli Zaretskii
2005-05-04 18:03 ` Christopher Faylor
2005-05-04 18:26 ` Eli Zaretskii
2005-05-03 22:50 ` Bob Rossi
2005-05-04 4:04 ` Eli Zaretskii
2005-05-05 17:20 ` Bob Rossi
2005-05-05 18:04 ` Eli Zaretskii
2005-05-05 19:18 ` Christopher Faylor
2005-05-05 23:53 ` Bob Rossi
2005-05-05 16:22 ` Bob Rossi
2005-05-05 16:26 ` Daniel Jacobowitz
2005-05-05 16:46 ` Bob Rossi
2005-05-05 17:17 ` Daniel Jacobowitz
2005-05-18 4:44 ` Daniel Jacobowitz
-- strict thread matches above, loose matches on Subject: below --
2005-05-05 15:15 Dennis Brueni
2005-05-05 15:25 ` Bob Rossi
2005-05-05 15:28 ` Daniel Jacobowitz
2005-05-05 15:32 ` Bob Rossi
2005-05-02 14:22 Dennis Brueni
2005-05-02 19:38 ` Eli Zaretskii
2005-04-01 15:09 Dennis Brueni
2005-03-29 20:43 Dennis Brueni
2005-03-30 4:46 ` Eli Zaretskii
2005-04-01 1:41 ` Bob Rossi
2005-03-26 13:43 Eli Zaretskii
2005-03-26 13:50 ` Bob Rossi
2005-03-24 20:49 Dennis Brueni
2005-03-23 22:22 Dennis Brueni
2005-03-23 22:34 ` Bob Rossi
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='01c550f2$Blat.v2.4$07cfe520@zahav.net.il' \
--to=eliz@gnu.org \
--cc=gdb-patches@sources.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