[dmd-internals] Fwd: DWARF issue 100504, "Extensions for D arrays, associative arrays, and delegates"
Robert Clipsham
robert at octarineparrot.com
Mon Mar 26 14:17:09 PDT 2012
Hi all,
It's been a few years since I last did some real work on DWARF in dmd
(v2.044/2.045), other than touching on OS Xes debug info not too long ago.
At the time I submitted the following enhancement request for the DWARF
specification:
http://www.dwarfstd.org/ShowIssue.php?issue=100504.1
I know that some work on debug info has been done since then - does anyone
have any input they want to add to this?
Now would be a great time to map out any and all extensions that D needs so
they can be included for a future DWARF version.
You can see the forwarded message below.
Thanks,
Robert
---------- Forwarded message ----------
From: Bishop, John E <john.e.bishop at intel.com>
Date: 26 March 2012 21:11
Subject: DWARF issue 100504, "Extensions for D arrays, associative arrays,
and delegates"
To: "robert at octarineparrot.com" <robert at octarineparrot.com>
Robert,
I'm a member of the DWARF committee. In our last meeting, I was assigned
the task of understanding your proposal and helping to turn it into a
formal proposal (with page reference, edit directions and the final formal
text).
If you don't mind, I'd like to know a bit more about the background of the
proposal.
For example, are you working with a compiler, a debugger or both? Are
these concepts core features of D or standard user features (e.g., are they
like Fortran COMMON, which is a core feature with important semantics or
like Pascal WITH, which is a notational convenience)? Are these D features
primitives (like C++'s "bool") or the result of composition (like "const
long long int")?
As I understand your suggestion, I think it's possible to get the same
effect with a smaller change to DWARF. For example we could add a new
attribute and define dynamic array types this way:
DW_TAG_structure_type // A structure
DW_AT_D_language_dynamic_array_descriptor // Attribute tells consumer
what this is
DW_AT_name [pointer to "darray"]
[specification of an size_t named "length"}
[specification of a T* pointer named "ptr"]
In other words, as though it were this C code but with the D-language flag
added and something useful where I have "...":
typedef ... T;
typedef struct darray_struct {
size_t length;
T *ptr;
} darray;
Similarly we could add DW_AT_D_language_associative_array and
DW_A_D_language_delegate to standard structure definitions.
Would this simpler proposal work as well for your purposes?
Thanks for any help you can give me,
-John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/dmd-internals/attachments/20120326/6bd7f6d0/attachment.html>
More information about the dmd-internals
mailing list