> On Thu, Jan 03, 2008 at 01:25:55PM -0500, Aleksandar Ristovski wrote: > > 1. Problem one - relative NAME and absolute subfile->name case not > covered: > > I think you're right, but I can't tell for sure. I am pretty sure this is real problem as this is what I am seeing with our case (the instrumentation I posted proves it). This is easy and I think straight forward to fix. (please see the attachement buildsym.c.patch1). BUT... This does not solve all my problems. In fact, when debugging on linux a binary cross-compiled on windows, it won't work: IS_ABSOLUTE_PATH macro will differ depending on the configured gdb host. The problem with this is when one is debugging binary cross-compiled on windows, on a unix host, IS_ABSOLUTE_PATH will return 0 on "C:.." style paths which is not correct. Looking at the code, in many places we concatenate directory and file name if IS_ABSOLUTE_PATH returns zero so in case of cross-compiled binary I suspect there will be many issues. > > > 2. Problem two - one physical file is specified with two pathnames. > > The specific case that's important here is associating the main file > from a dwarf2 CU DIE with the right lines from .debug_line. When we > go to create that subfile we haven't created the other subfiles yet. > So what we need, I think, is to handle this in dwarf2read.c by walking > through the filename / directory table. dwarf2read.c calls start_subfile or start_symtab which in turn calls start_subfile. I think we should let our readers deal with "compiled" paths (i.e. as found in the binary), without conversion. In start_subfile, however, we can do something with paths. Currently, we do not try to substitute-path on paths coming from the binary, even though they are clearly our source paths and should be dealt with the same as with any other source path. My attempt would be patch2 attached (start_subfile.patch). Please take a look. This should solve both problems. Note: IS_ABSOLUTE_PATH issue will still exist since we deal with compiled paths throughout gdb code. Wherever IS_ABSOLUTE_PATH is used on a windows style path (and gdb was configured for *ix) it will return 0 leading to problems. Note2: for some reason, my post to gdb-patches didn't go through even after two attempts. There I submitted only source.c change dealing with rewriting source path in case when NAME is an absolute path and at the same time DIRNAME is not NULL (which can happen). Aleksandar Ristovski QNX Software Systems