On 16/05/2024 18:46, David Blaikie via Dwarf-discuss wrote:
On Thu, May 16, 2024 at 7:10 AM Martin via Dwarf-discuss
<dwarf-discuss@lists.dwarfstd.org
<mailto:dwarf-discuss@lists.dwarfstd.org>> wrote:
If a compiler adds a DW_TAG_subprogram for a routine from a different
compilation unit ...
Maybe because
- the other CU has no debug info
- The compiler does not support referencing cross CU
None that I can think of.
This happens in some cases in more normal situations - such as concrete
definitions of inline functions - you'd have multiple CUs with
subprograms that describe the same function definition, with low/high pc.
In the "doesn't support cross-CU references" - I'd expect in that case
to only produce a subprogram declaration (eg: if you need a call_site
for a call to a function defined in another object file). In the first
case (other CU has no debug info) yeah, theoretically, I guess, maybe
you'd want to produce debug info for the thing you didn't define.
But generally my understanding is producers don't do that.
Thanks for the answer, but I am not quite sure how to interpret it.
"None that I can think of" => So, it would be ok for a producer to add a
DW_AT_low_pc ?
But
- "producers don't do that" => It would not be ok?
- "only produce a subprogram declaration" => not ok
If there is code (with debug info) that uses a class/struct that is
defined in a unit with debug info (or at least a base class is in such a
unit), then IMHO the debugger should be able to show the entire
structure, including fields/methods from that unit without debug info.
(because only the type is in the other unit, but the variable itself is
in a unit with debug info).
For that, the declaration of that class can be repeated. But if the user
then wants to call (from the debugger) a function on that (base-) class,
then it needs the DW_AT_low_pc?
What is the recommended way for the producer to supply this?
About your answers regarding the linking, I will keep that in mind, when
discussing it with the others involved.
For info, my background is on implementing the debugger. The compiler is
done by others. But obviously both ends need to work together.
Thanks
Martin
--
Dwarf-discuss mailing list
Dwarf-discuss@lists.dwarfstd.org
https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss