Patchwork [RFA/commit] Ada/DWARF: Assume the Ada compiler produces descriptive type attributes

login
register
mail settings
Submitter Joel Brobecker
Date Jan. 10, 2018, 7:24 a.m.
Message ID <1515569098-36678-1-git-send-email-brobecker@adacore.com>
Download mbox | patch
Permalink /patch/25305/
State New
Headers show

Comments

Joel Brobecker - Jan. 10, 2018, 7:24 a.m.
Hello,

GCC was enhanced in 2011 to generate this attribute, so I think we can
now assume that it is available when using that compiler. Doing so
allows us to speed up what we call "parallel type" lookups when
processing certain types encoded using the GNAT encoding.

This patch changes need_gnat_info to always expect those attributes
to be generated when the language is Ada. This is an assumption
that on the surfcace looks like it might be a bit on the edge; but
in practice, it should be OK because this is only useful in the
context of handling GNAT-specific encodings. Other Ada compilers
would presumably produce debugging information using pure DWARF
constructs, so would not be impacted by this.

gdb/ChangeLog:

        * dwarf2read.c (need_gnat_info): Return nonzero if the cu's
        language is Ada.

Tested on x86_64-linux.
I will commit in a week or so unless there are any comments...

Thank you,
Joel Brobecker - Jan. 22, 2018, 4:25 a.m.
> gdb/ChangeLog:
> 
>         * dwarf2read.c (need_gnat_info): Return nonzero if the cu's
>         language is Ada.

Now pushed, after re-testing on x86_64-linux.

Thanks,

Patch

diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index dca2fe9..ad13d4b 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -21973,15 +21973,9 @@  die_type (struct die_info *die, struct dwarf2_cu *cu)
 static int
 need_gnat_info (struct dwarf2_cu *cu)
 {
-  /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
-     of GNAT produces this auxiliary information, without any indication
-     that it is produced.  Part of enhancing the FSF version of GNAT
-     to produce that information will be to put in place an indicator
-     that we can use in order to determine whether the descriptive type
-     info is available or not.  One suggestion that has been made is
-     to use a new attribute, attached to the CU die.  For now, assume
-     that the descriptive type info is not available.  */
-  return 0;
+  /* Assume that the Ada compiler was GNAT, which always produces
+     the auxiliary information.  */
+  return (cu->language == language_ada);
 }
 
 /* Return the auxiliary type of the die in question using its