Ada/DWARF: Assume the Ada compiler produces descriptive type attributes
authorJoel Brobecker <brobecker@adacore.com>
Mon, 22 Jan 2018 04:23:34 +0000 (23:23 -0500)
committerJoel Brobecker <brobecker@adacore.com>
Mon, 22 Jan 2018 04:23:34 +0000 (23:23 -0500)
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.

gdb/ChangeLog
gdb/dwarf2read.c

index 095f6576bf427f1c85e44298caca9d470f7610a7..6a5572faef8890bb58cacc40d2b6c629fc556658 100644 (file)
@@ -1,3 +1,8 @@
+2018-01-22  Joel Brobecker  <brobecker@adacore.com>
+
+       * dwarf2read.c (need_gnat_info): Return nonzero if the cu's
+       language is Ada.
+
 2018-01-22  Joel Brobecker  <brobecker@adacore.com>
 
        * linespec.c (create_sals_line_offset): Remove code that preserved
index 215f331684759d816f15371775f63aa3fd2bf517..96026a8be043f15be468267910aa44f61bc59b65 100644 (file)
@@ -21816,15 +21816,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