diff options
author | Tom Tromey <tromey@adacore.com> | 2024-06-12 08:26:05 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2025-03-06 14:17:17 -0700 |
commit | e382ede5ea0ef5b0e35a58ac5f67e170b1c69f2b (patch) | |
tree | ae8cd073ecef5d364e2da024b74179e489b0c503 | |
parent | 5fce64293afc4fdd216e8bfe5b7abd0fbae71f16 (diff) | |
download | binutils-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.c | 2 | ||||
-rw-r--r-- | gdb/dwarf2/index-write.c | 2 | ||||
-rw-r--r-- | gdb/dwarf2/tag.h | 5 |
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; } |