]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Use DW_TAG_module for Ada
authorTom Tromey <tromey@adacore.com>
Wed, 12 Jun 2024 14:26:05 +0000 (08:26 -0600)
committerTom Tromey <tromey@adacore.com>
Thu, 6 Mar 2025 21:17:17 +0000 (14:17 -0700)
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.

gdb/dwarf2/cooked-index.c
gdb/dwarf2/index-write.c
gdb/dwarf2/tag.h

index bbe14adcd56e41ad52b15a1104d739c031c41a97..5184e0c8ae2d9bd381f27d3927cce7e08f02af93 100644 (file)
@@ -358,7 +358,7 @@ cooked_index_shard::handle_gnat_encoded_entry (cooked_index_entry *entry,
        {
          gdb::unique_xmalloc_ptr<char> 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;
index fc78cfda613e9b2c2adb6e53bdef443c0937b86d..eb81f4c434ceaa2003320de1ae55d26351cae7f9 100644 (file)
@@ -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);
index d82690b806ac7fa86be9659c085610d073b37c6a..865c2bc109d1bf41aa4365a5cf9bda66a1ced65b 100644 (file)
@@ -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;
     }