(Putting this discussion back on the original thread…)

>>> ---[ sketch of DWARF for file 2 ]---
>>>
>>> DW_TAG_subprogram 'read_nml'
>>>   DW_TAG_imported_declaration '/nml'
>>>     DW_AT_import DW_FORM_ref_addr [ somehow a reference to $1 ]
>>
>> Well, that's probably the problem: The "somehow". If the files are generated 
>> independently, the "reference to $1" is not available. At least that's how I 
>> understand it. (My DWARF knowledge is rather weak.)
>
> At least on ELF and PECOFF platforms it's perfectly possible: you just insert 
> a reference to a global symbol declared in the DWARF section of another 
> object file. Our compiler doesn't use this particular tag, but at least for 
> e.g. DW_TAG_typedef it works fine with gdb.

Yes, but the compiler has to anticipate the need for the reference by
generating a global symbol when compiling the other file. This is why
DW_FORM_ref_addr isn't used much outside of contexts where the entire
program is visible (e.g., dwz).

Another problem with using DW_FORM_ref_addr is that it's not
compatible with split dwarf (aka "Fission"), because the .dwo files
are stripped of both ELF symbols and relocations.

I think it'd probably be simpler to just emit an empty
DW_TAG_namelist, maybe with the DW_AT_declaration flag set. Let the
debugger find the definition of the namelist via the DW_AT_name.

-cary
_______________________________________________
Dwarf-Discuss mailing list
Dwarf-Discuss@lists.dwarfstd.org
http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org

Reply via email to