From: Tom Tromey <tom@tromey.com>
To: gdb-patches@sourceware.org
Subject: [PATCH 00/17] Rewrite .debug_names reader and writer
Date: Sun, 10 Dec 2023 09:44:49 -0700 [thread overview]
Message-ID: <20231210-debug-names-fix-v1-0-a8f6d2525018@tromey.com> (raw)
This series rewrites gdb's .debug_names reader and writer.
Currently, gdb can generate a .debug_names index, but the contents are
very wrong -- they use fully-qualified names, which is not at all what
is envisioned in the DWARF spec.
After this series, the section contents will be much closer to DWARF.
However, it's not really useful for gdb to follow DWARF exactly.
First, the DWARF spec has a few bugs affecting the generation of the
index. GDB fixes these -- you won't see these fixes in this series,
though, as they were all handled by the new DWARF scanner.
Second, gdb likes to have some information not readily available in
the DWARF-specified contents. You can see the new DW_IDX_* constants
patch for a list.
I've regression tested this using cc-with-debug-names on x86-64
Fedora 38.
It's possible that there are regressions with cc-with-debug-names at
some intermediate points in the series -- in particular I think it
would happen after the reader is rewritten but before the writer patch
is applied. I didn't test this situation, since I don't think it is
very important. It could be worked around by combining the two
patches, but I thought that would make review much more difficult.
This is based on my earlier series to read DWARF in the background.
This was done because (1) that's going to land eventually anyway and
(2) that series generalizes the cooked index code somewhat, making it
a nicer starting point.
---
Tom Tromey (17):
Refactor 'maint set dwarf synchronous' handling
Refactor quick-function installation in DWARF reader
Remove IS_ENUM_CLASS from cooked_index_flag
Add some new DW_IDX_* values
Document GDB extensions to DWARF .debug_names
Add language to cooked_index_entry
Move cooked_index_functions to cooked-index.h
Do not write the index cache from an index
Change cooked_index_worker to abstract base class
Remove cooked_index_worker::start_reading
Empty hash table fix in .debug_names reader
Fix dw2-zero-range.exp when an index is in use
Explicitly expand CUs in dw2-inline-with-lexical-scope.exp
Remove some .debug_names tests
Rewrite .debug_names reader
Export dwarf5_augmentation
Rewrite .debug_names writer
gdb/doc/gdb.texinfo | 39 +
gdb/dwarf2/cooked-index.c | 162 +++-
gdb/dwarf2/cooked-index.h | 184 +++-
gdb/dwarf2/index-write.c | 401 ++++-----
gdb/dwarf2/mapped-index.h | 4 +-
gdb/dwarf2/read-debug-names.c | 949 ++++++++-------------
gdb/dwarf2/read-debug-names.h | 2 +
gdb/dwarf2/read.c | 337 ++------
gdb/testsuite/gdb.dwarf2/clang-debug-names-2-foo.c | 22 -
gdb/testsuite/gdb.dwarf2/clang-debug-names-2.c | 27 -
gdb/testsuite/gdb.dwarf2/clang-debug-names-2.exp | 42 -
gdb/testsuite/gdb.dwarf2/clang-debug-names.c | 25 -
gdb/testsuite/gdb.dwarf2/clang-debug-names.exp | 42 -
gdb/testsuite/gdb.dwarf2/clang-debug-names.exp.tcl | 121 ---
.../gdb.dwarf2/dw2-inline-with-lexical-scope.exp | 4 +
gdb/testsuite/gdb.dwarf2/dw2-zero-range.exp | 10 +-
include/dwarf2.def | 9 +
17 files changed, 948 insertions(+), 1432 deletions(-)
---
base-commit: 98eea77e9ce69ba00d5f93dd2264f1d1971fd86f
change-id: 20231210-debug-names-fix-cfbaf8761ecc
Best regards,
--
Tom Tromey <tom@tromey.com>
next reply other threads:[~2023-12-10 16:45 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-10 16:44 Tom Tromey [this message]
2023-12-10 16:44 ` [PATCH 01/17] Refactor 'maint set dwarf synchronous' handling Tom Tromey
2023-12-10 16:44 ` [PATCH 02/17] Refactor quick-function installation in DWARF reader Tom Tromey
2023-12-10 16:44 ` [PATCH 03/17] Remove IS_ENUM_CLASS from cooked_index_flag Tom Tromey
2023-12-10 16:44 ` [PATCH 04/17] Add some new DW_IDX_* values Tom Tromey
2024-01-09 15:08 ` Tom Tromey
2024-01-09 19:02 ` Tom Tromey
2023-12-10 16:44 ` [PATCH 05/17] Document GDB extensions to DWARF .debug_names Tom Tromey
2023-12-10 17:37 ` Eli Zaretskii
2024-01-17 16:24 ` Tom Tromey
2023-12-10 16:44 ` [PATCH 06/17] Add language to cooked_index_entry Tom Tromey
2023-12-10 16:44 ` [PATCH 07/17] Move cooked_index_functions to cooked-index.h Tom Tromey
2023-12-10 16:44 ` [PATCH 08/17] Do not write the index cache from an index Tom Tromey
2023-12-10 16:44 ` [PATCH 09/17] Change cooked_index_worker to abstract base class Tom Tromey
2023-12-10 16:44 ` [PATCH 10/17] Remove cooked_index_worker::start_reading Tom Tromey
2023-12-10 16:45 ` [PATCH 11/17] Empty hash table fix in .debug_names reader Tom Tromey
2023-12-10 16:45 ` [PATCH 12/17] Fix dw2-zero-range.exp when an index is in use Tom Tromey
2023-12-10 16:45 ` [PATCH 13/17] Explicitly expand CUs in dw2-inline-with-lexical-scope.exp Tom Tromey
2023-12-10 16:45 ` [PATCH 14/17] Remove some .debug_names tests Tom Tromey
2023-12-10 16:45 ` [PATCH 15/17] Rewrite .debug_names reader Tom Tromey
2023-12-10 16:45 ` [PATCH 16/17] Export dwarf5_augmentation Tom Tromey
2023-12-10 16:45 ` [PATCH 17/17] Rewrite .debug_names writer Tom Tromey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231210-debug-names-fix-v1-0-a8f6d2525018@tromey.com \
--to=tom@tromey.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).