From: Frederic RISS <frederic.riss@st.com>
To: Jim Blandy <jimb@red-bean.com>
Cc: GDB Patches <gdb-patches@sourceware.org>
Subject: Re: [RFC] Don't lose compilation directory in Dwarf2 line-tables
Date: Fri, 14 Apr 2006 08:23:00 -0000 [thread overview]
Message-ID: <1145002976.14807.744.camel@crx549.cro.st.com> (raw)
In-Reply-To: <8f2776cb0604140041o63c56c2xa9113d3c4ee259d@mail.gmail.com>
On Fri, 2006-04-14 at 00:41 -0700, Jim Blandy wrote:
> On 4/14/06, Frederic RISS <frederic.riss@st.com> wrote:
> > > - Then, at the top of dwarf2_start_subfile, check if dirname is
> > > relative, and if comp_dir is available, prepend comp_dir to it. At
> > > this point, we know dirname is as absolute as it can be. Then proceed
> > > as in the original unpatched code. (Watch out for allocation issues.)
> >
> > I don't think we should concat comp_dir and dirname. In my mind,
> > comp_dir makes only sense as an 'independant' information. Or the other
> > way around: dirname gives you information about your source tree
> > structure, and you lose it by prepending comp_dir to it. Have you an
> > objection to storing "dirname/filename" as filename and comp_dir as
> > directory? Maybe this makes only sense when dirname is also relative
> > like in the snippet that Jason posted. Once we agree on this part, I'll
> > post an updated patch.
>
> We agree that, when dirname is absolute, comp_dir shouldn't get used at all.
OK
> When dirname is relative, I guess we lose information by concatenating
> it with comp_dir, but I don't see where we would ever use that
> information.
I see 2 uses for that:
- differentiating identically named source files in different parts of
the source tree. One great example of that is a Linux kernel: try
something like 'find include -name cache.h' at the root. This works
for .c files because they get their relative directory in their
DW_AT_name.
- If you move your build tree (or in a networked environment, when you
access it from another mount point), then you just have to point 'dir'
at the new root, and all the files should be found. Right now, if you
have more than one include dir, you have to add themm all to the source
search path.
> I think the filename passed to start_subfile should be
> free of leading directory components; I believe this is necessary to
> make things like "print 'foo.c'::x" work.
I don't think it is necessary, because I have examples of this working
here. Moreover, if you're right on this, then we should add another
patch that sanitizes DW_AT_name before creating symtabs. Like I said in
my first mail, if the compiler accesses your source file with a relative
path, then you'll get a relative path in the comp unit's DW_AT_name. But
I'm quite sure that this would break some setups.
I just looked up why it isn't an issue to have relative paths in the
symtab's filename. In symtab.c::lookup_symtab, after a search on the
full symtab name we do:
/* Now, search for a matching tail (only if name doesn't have any dirs) */
if (lbasename (name) == name)
ALL_SYMTABS (objfile, s)
{
if (FILENAME_CMP (lbasename (s->filename), name) == 0)
return s;
}
next prev parent reply other threads:[~2006-04-14 8:23 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-04-13 11:25 [RFC] Don't loose " Frederic RISS
2006-04-13 17:49 ` Jim Blandy
2006-04-14 7:32 ` [RFC] Don't lose " Frederic RISS
2006-04-14 7:41 ` Jim Blandy
2006-04-14 8:23 ` Frederic RISS [this message]
2006-04-14 14:04 ` Daniel Jacobowitz
2006-04-14 14:51 ` Frederic RISS
2006-04-18 12:32 ` Frederic RISS
2006-04-18 13:04 ` Daniel Jacobowitz
2006-04-18 14:00 ` Frederic RISS
2006-04-20 16:27 ` Daniel Jacobowitz
2006-04-21 7:14 ` Frederic RISS
2006-04-21 1:10 ` Jim Blandy
2006-04-21 8:35 ` Frederic RISS
2006-04-21 16:46 ` Jim Blandy
2006-04-21 17:00 ` Frederic RISS
2006-04-24 12:49 ` Andrew STUBBS
2006-04-14 8:44 ` Eli Zaretskii
2006-04-14 11:44 ` Frederic RISS
2006-04-14 13:08 ` Eli Zaretskii
2006-04-14 13:42 ` Frederic RISS
2006-04-14 14:21 ` Eli Zaretskii
2006-04-14 14:58 ` Daniel Jacobowitz
2006-04-14 15:03 ` Eli Zaretskii
2006-04-14 18:39 ` Frédéric Riss
2006-04-13 19:58 ` [RFC] Don't loose " Jason Molenda
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=1145002976.14807.744.camel@crx549.cro.st.com \
--to=frederic.riss@st.com \
--cc=gdb-patches@sourceware.org \
--cc=jimb@red-bean.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