Pre-read DWZ file in DWARF reader
authorTom Tromey <tom@tromey.com>
Mon, 23 Oct 2023 22:44:53 +0000 (16:44 -0600)
committerTom Tromey <tom@tromey.com>
Sun, 5 Nov 2023 19:32:34 +0000 (12:32 -0700)
commit91874afabcd6491a00c4b6b79ac21c2b23061c36
tree5e811530b9c2958aeaa51c2a71e367fab4e93587
parent0a845aef62b8813275616bd399e8fca679161cfc
Pre-read DWZ file in DWARF reader

While working on background reading of DWARF, I came across the
DWZ-reading code.  This code can query the user (via the debuginfod
support) -- something that cannot be done off the main thread.

Looking into it, I realized that this code can be run much earlier,
avoiding this problem.  Digging a bit deeper, I also found a
discrepancy here between how the DWARF reader works in "readnow" mode
as compared to the normal modes.

This patch cleans this up by trying to read the DWZ file earlier, and
also by having the DWARF reader convert any exception here into a
warning.  This unifies the various cases, but also makes it so that
errors do not prevent gdb from continuing on to the extent possible.

Regression tested on x86-64 Fedora 38.
gdb/dwarf2/dwz.c
gdb/dwarf2/read.c
gdb/dwarf2/read.h
gdb/testsuite/gdb.dwarf2/dwzbuildid.exp
gdb/testsuite/gdb.dwarf2/no-gnu-debuglink.exp