Doug, > > Does this sound like it would work? > > It seems like directory names need to be included in the file name > comparison by start_subfile to some extent, otherwise headers with the > same basename will match each other. Yes, it very much looks like I've been pretty naive in my first proposal :). I have thought this over some more, and it looks like indeed manual rewriting of the paths will be needed if we want to be able to handle all the situations currently discussed. So here is a new proposal that adds the dirname matching using a new function that will do the dirname matching first unmodified, and then "normalized". Now, back to your comment regarding changing the DWARF reader: > To what extent is the dwarf patch more complex because it handles the > possibility of multiple matches with the basename of the main source > file. Assume there's only one file with the basename of the main file > name and things become a lot simpler. See > http://sourceware.org/ml/gdb-patches/2008-01/msg00090.html. Maybe I shouldn't have talked about complexity as this may be just me needing time to understand the purpose of your patch. So I withdraw that comment. > Handling the issue in each debug info reader is an important > consideration and may or may not be a problem. One would need to > examine to what extent the issue exists in the other readers, and to > what extent start_subfile can solve it and still be debug-format > independent without being more complex. My suggestion has two ideas behind it: I reallly think that the wrapper around start_subfile that adjusts NAME and DIRNAME so that NAME is always a basename is a good step forward, because it reduces the number of combinations we need to handle during the matching phase later on. We don't have to handle the case where NAME is a full path, or a relative path of a basename. Second, I still believe at this point that the problem should be handled outside of the debug info reader. I know that at least stabs should have the same issues as DWARF. It would be very nice to have the problems fixed in both cases without having to duplicate the algorithms we're developing. > One could rewrite that patch to keep dwarf2_start_subfile, but one > would have to pass an additional parameter so it would know if it's > dealing with the main source file. The patch as submitted just > reorganizes things so that other solutions(/heuristics) are possible > without major reworking of the code (the patch itself had to do some > reworking, but once that's done it's done (in the problem space being > discussed)). Plus it simplifies all call sites to > dwarf2_start_subfile/start_subfile. Previously, each call site had to > process fe->dir_index, and there are three of them. I think that the reorganization will not be necessary. I'd like to make the subfile layer work in a way that the debug info reader would only have to pass the name and dirname as-is, and be confident that it'll just work. -- Joel