This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH][debug] Add -gdescriptive-dies


On Wed, 22 Aug 2018, Tom de Vries wrote:

> [ was: Re: [PATCH][debug] Add -gforce-named-dies ]
> 
> On 08/22/2018 11:46 AM, Tom de Vries wrote:
> > On 08/22/2018 08:56 AM, Tom de Vries wrote:
> >> This is an undocumented developer-only option, because using this option may
> >> change behaviour of dwarf consumers, f.i., gdb shows the artificial variables:
> >> ...
> >> (gdb) info locals
> >> a = 0x7fffffffda90 "\005"
> >> D.4278 = <optimized out>
> >> ...
> > I just found in the dwarf 5 spec the attribute DW_AT_description
> > (present since version 3):
> > ...
> > 2.20 Entity Descriptions
> > Some debugging information entries may describe entities in the program
> > that are artificial, or which otherwise have a “name” that is not a
> > valid identifier in the programming language.
> > 
> > This attribute provides a means for the producer to indicate the purpose
> > or usage of the containing debugging infor
> > 
> > Generally, any debugging information entry that has, or may have, a
> > DW_AT_name attribute, may also have a DW_AT_description attribute whose
> > value is a null-terminated string providing a description of the entity.
> > 
> > It is expected that a debugger will display these descriptions as part
> > of displaying other properties of an entity.
> > ...
> > 
> > AFAICT, gdb currently does not explicitly handle this attribute, which I
> > think means it's ignored.
> > 
> > It seems applicable to use DW_AT_description at least for the artificial
> > decls.
> > 
> > Perhaps even for all cases that are added by the patch?
> > 
> 
> I've chosen for this option. Using DW_AT_desciption instead of
> DW_AT_name should minimize difference in gdb behaviour with and without
> -gdescriptive-dies.

-gdescribe-dies?

> > I'll rewrite the patch.
> 
> OK for trunk?

Few comments:

+static void
+add_desc_attribute (dw_die_ref die, tree decl)
+{
+  tree decl_name;
+
+  if (!flag_descriptive_dies || dwarf_version < 3)
+    return;
+

you said this is a DWARF5 "feature", I'd suggest changing the
check to

  if (!flag_desctiprive_dies || (dwarf_version < 5 && dwarf_strict))

given -gdescribe-dies is enough of a user request to enable the
feature.  Not sure if we should warn about -gstrict-dwarf
combination with it and -gdwarf-N < 5.

+  else if (TREE_CODE (decl) == VAR_DECL || TREE_CODE (decl) == 
CONST_DECL)
+    {
+      char buf[32];
+      char decl_letter = TREE_CODE (decl) == CONST_DECL ? 'C' : 'D';
+      sprintf (buf, "%c.%u", decl_letter, DECL_UID (decl));
+      add_desc_attribute (die, buf);
+    }

I wondered before if we can use pretty-printing of decl here.  At
least I wouldn't restrict it to VAR_DECLs, FUNCTION_DECLs can
certainly appear here I think.

+@item -gdescriptive-dies
+@opindex gdescriptive-dies
+Add description attribute to DWARF DIEs that have no name attribute.
+

Either "description attributes" or "a description attribute", not
100% sure being a non-native speaker.

Otherwise the patch looks OK to me but please leave Jason time
to comment.

Richard.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]