[fpc-devel] DW_AT_external and other additions to FPC generated dwarf

Florian Klämpfl florian at freepascal.org
Sun Mar 26 15:50:41 CEST 2023

Am 23.03.23 um 09:45 schrieb Martin Frb via fpc-devel:

It's a little hard to comment all at once, but at least I start with one :)

> 4) "official" marker for string vs pchar vs array
> Not sure if that is reported already. Depending on dwarf version 
> "string" (ansistring) is a pointer (either TAG pointer/reference or 
> location expression) to
> - char  (dwarf 2)
> - array of char (dwarf 3)
> Currently for dwarf 2, the debugger can't tell the difference. If the 
> user says:  foo[1]
> The debugger does not know, if the first or second char is meant (0 or 1 
> based index)
> With dwarf 3 the difference would be in the display format "('a', 'b', 
> 'c') vs 'abc'.
> But currently the debugger (fpdebug) can tell the difference, because 
> fpc has a tiny difference in how it encodes the "stride".
> That is obviously an implementation detail, and not very future proof.
> Therefore an "official" marker would be nice.
> - it appears there is none in dwarf
> - it could be a custom addition to dwarf
> - documenting an "implementation detail" (such as the stride), so 
> fpdebug can safely rely on it.

What about using DW_TAG_string_type for this? IIRC, when I implemented 
dwarf, it was not available/not supported, but fpdebug can do they. I am 
not sure about the status of GDB about it though :)

More information about the fpc-devel mailing list