[Dwarf-Discuss] D.4 Member Function Example
Tue May 6 09:38:06 GMT 2014
On Tue, 2014-04-22 at 12:11 +0200, Mark Wielaard wrote:
> I was looking at the D.4 Member Function Example and noticed it flags
> member functions that don't return a value with a DW_AT_type pointing to
> a DW_TAG_unspecified_type with name "void". I haven't encountered
> producers that do this and it seems 5.5.7 Member Function Entries imply
> that DW_TAG_subprogram member function DIEs follow the same rules as
> non-member DW_TAG_subprogram function DIEs. Where 3.3.2 says:
> If the subroutine or entry point is a function that returns a
> value, then its debugging information entry has a DW_AT_type
> attribute to denote the type returned by that function.
> Debugging information entries for C void functions should not
> have an attribute for the return type.
> Was the example intended to show that a void function that doesn't
> return a value could still have a DW_AT_type and that it should point to
> a "void" DW_TAG_unspecified_type (are there producers out there which
> encode void member functions this way)? Or is it just an unfortunate
> example that doesn't represent the best practice of what the spec
> intended for no return value member functions? I can submit a
> clarification request in that case.
I think it is just an unfortunate example. I have submitted the
following clarification request to http://dwarfstd.org/Comment.php
Subject: D.4 Member Function Example wrong return type
Name: Mark Wielaard
Email: mjw at redhat.com
Section: D.4 Page: 235
As discussed on the DWARF discuss list:
http://thread.gmane.org/gmane.comp.standards.dwarf/142 The D.4 Member
Function Example flags member functions that don't return a value with a
DW_AT_type pointing to a DW_TAG_unspecified_type with name "void". This
is wrong because the functions don't actually return a "void", they
don't return a value at all and so according to section 3.3.2 they
should not have a DW_AT_type at all. Suggested change: In Figure 59.
Member function example: DWARF description remove the
DW_AT_type(reference to 1$) from the 7$, 10$ and 12$ DW_TAG_subprograms
for func1, func2 and func3.
More information about the Dwarf-discuss