This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
RE: gdb_realpath: dealing with ./ and ../
- From: Aleksandar Ristovski <ARistovski at qnx dot com>
- To: Mark Kettenis <mark dot kettenis at xs4all dot nl>
- Cc: brobecker at adacore dot com, dje at google dot com, gdb at sourceware dot org, Ryan Mansfield <RMansfield at qnx dot com>
- Date: Tue, 8 Jan 2008 14:20:23 -0500
- Subject: RE: gdb_realpath: dealing with ./ and ../
>
> > If we can confirm for sure that "normalize_path" is safe, I think the
> idea
> > is good (please read my comment about normalize_path here:
> > http://sourceware.org/ml/gdb-patches/2008-01/msg00138.html)
> >
> > Example
> > DW_AT_name=../main.cc
> > DW_AT_comp_dir=/foo/bar/obj
> > The Directory Table:
> > ..
> > The File Name Table:$
> > Entry>Dir>~~~~Time>~~~Size>~~~Name$
> > 1>~~~~1>~~~~~~0>~~~~~~0>~~~~~~main.cc$
> >
> > Now we get rid of the comp_dir information (this is what effectively
> > happens):
> >
> > NAME=main.cc
> > DIR=/foo/bar
> >
> > And there is no info about /foo/bar/obj.
> >
> >
> > I would think that this is safe.
>
> Unfortunately it isn't. If /foo/bar/obj is a symlink to /bar/foo/obj,
> then ../main.cc actually refers to /bar/foo/main.cc, and not
> /foo/bar/main.cc. So just "normalizing" names is defenitely unsafe.
>
> The big question here is, whether a compiler will actually set
> DW_AT_comp_dir to /foo/bar/obj in that case. One can argue that the
> compilation directory really is /bar/foo/obj in that case and that
> DW_AT_comp_dir should be set to /bar/foo/obj.
Therefore, this concludes this trail of thoughts and this topic should
probably be considered closed.
Any further discussion related to the issue mentioned at the beginning of
the topic should be continued here:
http://sourceware.org/ml/gdb-patches/2008-01/msg00148.html