Issue 100504.1: Extensions for D arrays, associative arrays, and delegates
Currently the D programming language (DW_LANG_D) uses extensions to the spec which conflict with DWARF 4,
I would like to propose their inclusion in DWARF 4 or above. The extensions are as follows:
DW_TAG_darray_type - D dynamic array type
DW_TAG_aarray_type - Associative array
DW_TAG_delegate_type - Delegates (function pointers with context)
In D, these are currently implemented as follows (see http://digitalmars.com/d/2.0/abi.html#dwarf):
DW_TAG_darray_type: This is a struct { size_t length; T* ptr; } where T is the type of the array.
This type is specified with a DW_AT_type.
DW_TAG_aarray_type: An associative array, where DW_AT_type is element type and DW_AT_containing_type
is the key type.
DW_TAG_delegate_type: A struct { T* ptr; U* funcptr; } Where T is the type of the context pointer,
and U is the type of the function. The context pointer can be a class this reference, a struct
this pointer, a pointer to a closure (nested functions) or a pointer to an enclosing function's
stack frame (nested functions). This is specified as DW_AT_type: the function type,
DW_AT_containing_type is 'this' (context pointer) type.
These details can be changed as required, but I believe it to be preferable to have these included
in DWARF so extensions are not needed. Sorry if any of these can already be done, I have not had
chance to check the specification fully.
---
Rejected -- April 18, 2012.
Preferred method would be adding attributes to existing types. Unclear whether anyone
is using or still interested in these (or similar) extensions.