From de4cb04a20782b817fc80b49bba83b43cf1cb85d Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Sun, 21 Jan 2018 23:23:34 -0500 Subject: [PATCH] Ada/DWARF: Assume the Ada compiler produces descriptive type attributes 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 | 5 +++++ gdb/dwarf2read.c | 12 +++--------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 095f6576bf4..6a5572faef8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2018-01-22 Joel Brobecker + + * dwarf2read.c (need_gnat_info): Return nonzero if the cu's + language is Ada. + 2018-01-22 Joel Brobecker * linespec.c (create_sals_line_offset): Remove code that preserved diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 215f3316847..96026a8be04 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -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 -- 2.30.2