public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [RFC 0/7] [gdb/symtab, cc-with-dwz] Fix gdb.cp/breakpoint-locs.exp
@ 2023-08-25 15:55 Tom de Vries
  2023-08-25 15:55 ` [RFC 1/7] [gdb/symtab] Factor out m_die_range_map and m_deferred_entries usage Tom de Vries
                   ` (7 more replies)
  0 siblings, 8 replies; 12+ messages in thread
From: Tom de Vries @ 2023-08-25 15:55 UTC (permalink / raw)
  To: gdb-patches

When running test-case gdb.cp/breakpoint-locs.exp with target board
cc-with-dwz, we occasionally run into:
...
FAIL: gdb.cp/breakpoint-locs.exp: break N1::C1::baz
...
due to the breakpoint having one instead of two locations.

This is PR symtab/30728.  This series fixes it.

The first five patches are preparation, the fix is in the last two patches.

The fix consists of adding entries to the cooked index for
DW_TAG_inlined_subroutine DIEs, with correct qualified names.

The fix is split up in two patches, as follows:
- the first fixes the target board unix case, and
- the second fixes the target board cc-with-dwz case.

Currently resolving deferred entries is done in the parallel for that
computes the cooked index.  The last patch moves resolving of deferred entries
out of the parallel for.

We can add two optimizations to move some of that computation back into the
parallel for:
- resolve intra-shard dependencies at the end of generating the shard, and
- don't defer backward intra-shard dependencies.

Both of these require to keep track of the range of DIEs that was indexed
in the shard, because currently the parent tracking cannot distuinguish
between the "no parent" and "don't know" cases.

I'd like to have some feedback on the current series before I proceed with
these optimizations, hence this is an RFC at this point.

Tested on x86_64-linux, with target boards unix, cc-with-dwz and
cc-with-dwz-m.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30728

Tom de Vries (7):
  [gdb/symtab] Factor out m_die_range_map and m_deferred_entries usage
  [gdb/symtab] Check effect in parent_map::set_parent
  [gdb/symtab] Handle nullptr parent in parent_map::set_parent
  [gdb/symtab] Add parent_map::dump
  [gdb/symtab] Add debug_handle_deferred_entries
  [gdb/symtab] Add DW_TAG_inlined_subroutine entries in the cooked index
    for c++
  [gdb/symtab] Resolve deferred entries, inter-shard case

 gdb/addrmap.c             |  19 ++++--
 gdb/addrmap.h             |   7 ++-
 gdb/dwarf2/cooked-index.c |  60 +++++++++++++++++++
 gdb/dwarf2/cooked-index.h | 114 +++++++++++++++++++++++++++++++++++-
 gdb/dwarf2/read.c         | 120 +++++++++++++++++++++++++-------------
 5 files changed, 269 insertions(+), 51 deletions(-)


base-commit: b73ffa23bf6ed7f48ce67881d97b4111ce3b8181
-- 
2.35.3


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-10-02 12:52 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-25 15:55 [RFC 0/7] [gdb/symtab, cc-with-dwz] Fix gdb.cp/breakpoint-locs.exp Tom de Vries
2023-08-25 15:55 ` [RFC 1/7] [gdb/symtab] Factor out m_die_range_map and m_deferred_entries usage Tom de Vries
2023-08-25 15:55 ` [RFC 2/7] [gdb/symtab] Check effect in parent_map::set_parent Tom de Vries
2023-08-25 15:55 ` [RFC 3/7] [gdb/symtab] Handle nullptr parent " Tom de Vries
2023-08-25 15:55 ` [RFC 4/7] [gdb/symtab] Add parent_map::dump Tom de Vries
2023-08-25 15:55 ` [RFC 5/7] [gdb/symtab] Add debug_handle_deferred_entries Tom de Vries
2023-08-25 15:55 ` [RFC 6/7] [gdb/symtab] Add DW_TAG_inlined_subroutine entries in the cooked index for c++ Tom de Vries
2023-08-25 15:55 ` [RFC 7/7] [gdb/symtab] Resolve deferred entries, inter-shard case Tom de Vries
2023-09-08 18:56 ` [RFC 0/7] [gdb/symtab, cc-with-dwz] Fix gdb.cp/breakpoint-locs.exp Tom Tromey
2023-09-12 15:23   ` Tom de Vries
2023-09-13 14:37   ` Tom de Vries
2023-10-02 12:52     ` Tom de Vries

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).