Re: [RFA] patch for DW_AT_comp_dir/DW_AT_name vs .debug_line inco nsistencies

Doug Evans
2008-01-06T18:44:11Z

On Jan 5, 2008 10:43 PM, Aleksandar Ristovski <ARistovski@qnx.com> wrote:
> > > I took an easy out in scanning for a match, I just pick the first. I
> > > can add the requisite code if folks think this is the way to go.
>
> I would think that yes, we need to do more to try "perfect" v.s. "less than
> perfect" matches.

Yep. That's an "implementation detail left for later" :-). I wanted
to make sure the rest of the patch was "typing in the right direction"
first.

> I still believe we should do the following (I am assuming cu_file_name is an
> absolute path).

In the patch cu_file_name might not be an absolute path, but combined
with comp_dir generally it is.

> 1) Compare cu_file_name and fname; make sure fname is absolute, concat if
> needed. They match? Great - pick that one.
>
> 2) Try less than perfect match: compare base names; Loop, however, through
> all and see if exactly one match exists. If yes, great - pick that one.
>
> 3) If neither 1 or 2 worked, try with compacting absolute paths and
> comparing compacted paths. If it matches, pick that one. If not... don't
> know.
>
> Note: I don't think possibility of symlinks will spoil step 3. We simply try
> to match compiler's idea about what it saw. I.e., at this point we are
> playing with paths only (we can think of them as logical paths since
> physical paths at this point may not exist at all on the host system where
> gdb is running. In fact, we do not really care what the physical path is we
> just want to reconstruct what compiler thought it compiled).

(3) is where the fun begins, and symlinks can spoil things, but at
this point we're into heuristic-land so things are already spoiled.