aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2024-06-12 08:26:05 -0600
committerTom Tromey <tromey@adacore.com>2025-03-06 14:17:17 -0700
commite382ede5ea0ef5b0e35a58ac5f67e170b1c69f2b (patch)
treeae8cd073ecef5d364e2da024b74179e489b0c503
parent5fce64293afc4fdd216e8bfe5b7abd0fbae71f16 (diff)
downloadbinutils-e382ede5ea0ef5b0e35a58ac5f67e170b1c69f2b.zip
binutils-e382ede5ea0ef5b0e35a58ac5f67e170b1c69f2b.tar.gz
binutils-e382ede5ea0ef5b0e35a58ac5f67e170b1c69f2b.tar.bz2
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.
-rw-r--r--gdb/dwarf2/cooked-index.c2
-rw-r--r--gdb/dwarf2/index-write.c2
-rw-r--r--gdb/dwarf2/tag.h5
3 files changed, 6 insertions, 3 deletions
diff --git a/gdb/dwarf2/cooked-index.c b/gdb/dwarf2/cooked-index.c
index bbe14ad..5184e0c 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<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;
diff --git a/gdb/dwarf2/index-write.c b/gdb/dwarf2/index-write.c
index fc78cfd..eb81f4c 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 d82690b..865c2bc 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;
}