- DMD lacks information about
DW_AT_decl_file,DW_AT_decl_lineandDW_AT_decl_columnon some tags. - LDC lacks information about
DW_AT_decl_column. - LDC generates artificial DWARF variables and don't properly mark then as
DW_AT_artificial.
-
GDC produces an error on LLDB:
error: need to add support for DW_TAG_base_type 'dchar' encoded with DW_ATE = 0x8, bit_size = 32 -
DMD for some reason, unknown to my current compiler knowledge, is generating
_Booltype name forbooltypes.
- DMD has a bug with
DW_TAG_enumerator. Currently that information is not being generated.
- No D compiler generates correct DWARF tags to represent dynamic arrays. They
should use
DW_TAG_array_typewithDW_TAG_subrange_typeand reference the size of it usingDW_AT_count/DW_AT_upper_boundvariable address or manually dereference a stack register, containing the size. This approach is used by C compilers when dealing with VLAs.
-
Every D compiler except DMD handles normal array type names with fully qualified names. I already pushed a fix to this.
-
Every D compiler writes array DWARF information as a struct with length and ptr fields.
-
No D compiler generates special DWARF tags when dealing with string arrays.
-
DMD has a bug for associative arrays with array types, reporting the wrong type in the name.
For an
int[string]it reports_AArray_ucent_intFor anstring[int]it reports_AArray_int_ucent -
Every D compiler except DMD handles associative array types with fully qualified names.
-
Associative array struct is not accessible on any D compiler
- GDC uses
DW_TAG_interface_typetags includingDW_AT_containing_typepointing to themselves as part of GNU extensions to DWARF, triggering an error on LLDB. This tag is not part of the DWARF structure for interfaces.