From: Tom Tromey Date: Wed, 12 Jun 2024 14:26:05 +0000 (-0600) Subject: Use DW_TAG_module for Ada X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e382ede5ea0ef5b0e35a58ac5f67e170b1c69f2b;p=thirdparty%2Fbinutils-gdb.git Use DW_TAG_module for Ada In GCC we decided to use DW_TAG_module to represent Ada packages, so make this same decision in gdb. This also updates tag_matches_domain to handle this case. --- diff --git a/gdb/dwarf2/cooked-index.c b/gdb/dwarf2/cooked-index.c index bbe14adcd56..5184e0c8ae2 100644 --- a/gdb/dwarf2/cooked-index.c +++ b/gdb/dwarf2/cooked-index.c @@ -358,7 +358,7 @@ cooked_index_shard::handle_gnat_encoded_entry (cooked_index_entry *entry, { gdb::unique_xmalloc_ptr new_name = make_unique_xstrndup (name.data (), name.length ()); - last = create (entry->die_offset, DW_TAG_namespace, + last = create (entry->die_offset, DW_TAG_module, 0, language_ada, new_name.get (), parent, entry->per_cu); last->canonical = last->name; diff --git a/gdb/dwarf2/index-write.c b/gdb/dwarf2/index-write.c index fc78cfda613..eb81f4c434c 100644 --- a/gdb/dwarf2/index-write.c +++ b/gdb/dwarf2/index-write.c @@ -678,7 +678,7 @@ public: { /* These entries are synthesized by the reader, and so should not be written. */ - if (entry->lang == language_ada && entry->tag == DW_TAG_namespace) + if (entry->lang == language_ada && entry->tag == DW_TAG_module) return; m_name_to_value_set[entry->name].emplace_back (entry); diff --git a/gdb/dwarf2/tag.h b/gdb/dwarf2/tag.h index d82690b806a..865c2bc109d 100644 --- a/gdb/dwarf2/tag.h +++ b/gdb/dwarf2/tag.h @@ -135,7 +135,10 @@ tag_matches_domain (dwarf_tag tag, domain_search_flags search, language lang) break; case DW_TAG_module: - flags = SEARCH_MODULE_DOMAIN; + if (lang == language_ada) + flags = SEARCH_TYPE_DOMAIN; + else + flags = SEARCH_MODULE_DOMAIN; break; }