binutils-gdb/gdb/dwarf2
Tom Tromey 4320a9c921 Correctly handle DIE parent computations
Tom de Vries pointed out that the combination of sharding,
multi-threading, and per-CU "racing" means that sometimes a cross-CU
DIE reference might not be correctly resolved.  However, it's
important to handle this correctly, due to some unfortunate aspects of
DWARF.

This patch implements this by arranging to preserve each worker's DIE
map through the end of index finalization.  The extra data is
discarded when finalization is done.  This approach also allows the
parent name resolution to be sharded, by integrating it into the
existing entry finalization loop.

In an earlier review, I remarked that addrmap couldn't be used here.
However, I was mistaken.  A *mutable* addrmap cannot be used, as those
are based on splay trees and restructure the tree even during lookups
(and thus aren't thread-safe).  A fixed addrmap, on the other hand, is
just a vector and is thread-safe.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30846
2024-04-16 11:54:46 -06:00
..
abbrev-cache.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
abbrev-cache.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
abbrev.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
abbrev.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
ada-imported.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
aranges.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
aranges.h Remove addrmap_fixed::set_entry 2024-01-15 11:50:24 -07:00
attribute.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
attribute.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
call-site.h gdb: pass frames as const frame_info_ptr & 2024-02-20 10:42:25 -05:00
comp-unit-head.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
comp-unit-head.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
cooked-index.c Correctly handle DIE parent computations 2024-04-16 11:54:46 -06:00
cooked-index.h Correctly handle DIE parent computations 2024-04-16 11:54:46 -06:00
cu.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
cu.h [gdb/symtab] Workaround PR gas/31115 2024-03-20 09:57:49 +01:00
die.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
die.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
dwz.c gdb: ensure has dwarf info before reading DWZ file 2024-04-03 13:47:03 +01:00
dwz.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
expr.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
expr.h gdb: pass frames as const frame_info_ptr & 2024-02-20 10:42:25 -05:00
file-and-dir.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
frame-tailcall.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
frame-tailcall.h gdb: pass frames as const frame_info_ptr & 2024-02-20 10:42:25 -05:00
frame.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
frame.h gdb: pass frames as const frame_info_ptr & 2024-02-20 10:42:25 -05:00
index-cache.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
index-cache.h Move the 'store' method to index_cache_store_context 2024-03-08 17:25:50 -07:00
index-common.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
index-common.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
index-write.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
index-write.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
leb.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
leb.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
line-header.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
line-header.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
loc.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
loc.h gdb: pass frames as const frame_info_ptr & 2024-02-20 10:42:25 -05:00
macro.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
macro.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
mapped-index.h Do not write the index cache from an index 2024-01-18 08:20:16 -07:00
parent-map.h Introduce class parent_map for DIE range map 2024-04-16 11:54:46 -06:00
public.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
read-debug-names.c Correctly handle DIE parent computations 2024-04-16 11:54:46 -06:00
read-debug-names.h Export dwarf5_augmentation 2024-01-18 08:20:17 -07:00
read-gdb-index.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
read-gdb-index.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
read.c Correctly handle DIE parent computations 2024-04-16 11:54:46 -06:00
read.h Use addrmap_fixed in a few spots 2024-03-21 12:21:23 -06:00
sect-names.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
section.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
section.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
stringify.c gdb, gdbserver, gdbsupport: remove includes of early headers 2024-03-26 21:13:22 -04:00
stringify.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00
tag.h Use the new symbol domains 2024-01-28 10:58:16 -07:00
types.h Update copyright year range in header of all files managed by GDB 2024-01-12 15:49:57 +00:00