binutils-gdb/gdb/dwarf2
Tom Tromey 1fd5fd5817 Fix file-name handling regression with DWARF index
When run with the gdb-index or debug-names target boards, dup-psym.exp
fails.  This came up for me because my new DWARF scanner reuses this
part of the existing index code, and so it registers as a regression.
This is PR symtab/25834.

Looking into this, I found that the DWARF index code here is fairly
different from the psymtab code.  I don't think there's a deep reason
for this, and in fact, it seemed to me that the index code could
simply mimic what the psymtab code already does.

That is what this patch implements.  The DW_AT_name and DW_AT_comp_dir
are now stored in the quick file names table.  This may require
allocating a quick file names table even when DW_AT_stmt_list does not
exist.  Then, the functions that work with this data are changed to
use find_source_or_rewrite, just as the psymbol code does.  Finally,
line_header::file_full_name is removed, as it is no longer needed.

Currently, the index maintains a hash table of "quick file names".
The hash table uses a deletion function to free the "real name"
components when necessary.  There's also a second such function to
implement the forget_cached_source_info method.

This bug fix patch will create a quick file name object even when
there is no DW_AT_stmt_list, meaning that the object won't be entered
in the hash table.  So, this patch changes the memory management
approach so that the entries are cleared when the per-BFD object is
destroyed.  (A dwarf2_per_cu_data destructor is not introduced,
because we have been avoiding adding a vtable to that class.)

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=25834
2021-07-17 11:08:18 -06:00
..
abbrev.c
abbrev.h
attribute.c
attribute.h
comp-unit-head.c Rename dwarf2/comp-unit.h 2021-05-17 14:16:07 -06:00
comp-unit-head.h Rename dwarf2/comp-unit.h 2021-05-17 14:16:07 -06:00
cu.c Remove dwarf2_cu::language 2021-06-25 12:23:05 -06:00
cu.h Remove dwarf2_cu::language 2021-06-25 12:23:05 -06:00
die.h
dwz.c
dwz.h
expr.c
expr.h
frame-tailcall.c gdb: add names to unwinders, add debug messages when looking for unwinder 2021-06-29 12:05:03 -04:00
frame-tailcall.h
frame.c gdb: add names to unwinders, add debug messages when looking for unwinder 2021-06-29 12:05:03 -04:00
frame.h
index-cache.c gdb: generate the prefix name for prefix commands on demand 2021-05-12 11:19:22 +01:00
index-cache.h
index-common.c
index-common.h Handle unaligned mapping of .gdb_index 2021-04-17 13:56:36 -06:00
index-write.c Simplify debug_names index writing 2021-07-05 12:24:00 -06:00
index-write.h Introduce dwarf2/public.h 2021-03-20 17:23:40 -06:00
leb.c
leb.h
line-header.c Fix file-name handling regression with DWARF index 2021-07-17 11:08:18 -06:00
line-header.h Fix file-name handling regression with DWARF index 2021-07-17 11:08:18 -06:00
loc.c gdb: Support DW_LLE_start_end 2021-06-22 16:39:01 +02:00
loc.h gdb: remove unused struct call_site_stuff forward declaration 2021-06-11 11:36:48 -04:00
macro.c
macro.h
public.h Simplify DWARF reader initialization 2021-03-28 10:43:15 -06:00
read.c Fix file-name handling regression with DWARF index 2021-07-17 11:08:18 -06:00
read.h Fix file-name handling regression with DWARF index 2021-07-17 11:08:18 -06:00
sect-names.h
section.c gdb: Handle missing .debug_str section 2021-04-07 11:31:30 +01:00
section.h
stringify.c Reimplement dwarf_unit_type_name 2021-03-18 12:08:41 -06:00
stringify.h Fix typo in dwarf2/stringify.h 2021-03-31 09:48:56 -06:00