Avoid crash on missing dwz file
authorTom Tromey <tom@tromey.com>
Sat, 6 Mar 2021 16:26:39 +0000 (09:26 -0700)
committerTom Tromey <tom@tromey.com>
Sat, 6 Mar 2021 16:26:39 +0000 (09:26 -0700)
commita7308ce01effdd143bfe5e3c7350fa2d5606d12b
tree0e10c305165080018d6c81067d0717927c45f473
parentfbedd54644116109834c0e0546e6c32ae3c482f9
Avoid crash on missing dwz file

If DWARF contains a reference to a "dwz" file, but there is no
.gnu_debugaltlink section, then gdb will crash.  This happens because
dwarf2_get_dwz_file will return NULL, but some callers do not expect
this.

This patch changes dwarf2_get_dwz_file so that callers can require a
dwz file.  Then, it updates the callers that are attempting to process
references to the dwz file to require one.

This includes a new testcase.  The dwarf.exp changes don't handle the
new forms exactly correctly -- they are only handled well enough to
let this test case complete.

gdb/ChangeLog
2021-03-06  Tom Tromey  <tom@tromey.com>

* dwarf2/read.h (dwarf2_get_dwz_file): Add 'require' parameter.
* dwarf2/read.c (dwarf2_get_dwz_file): Add 'require' parameter.
(get_abbrev_section_for_cu, read_attribute_value)
(get_debug_line_section): Update.
* dwarf2/macro.c (dwarf_decode_macro_bytes): Update.

gdb/testsuite/ChangeLog
2021-03-06  Tom Tromey  <tom@tromey.com>

* lib/dwarf.exp (_handle_DW_FORM): Treat DW_FORM_GNU_ref_alt and
DW_FORM_GNU_strp_alt like DW_FORM_sec_offset.
* gdb.dwarf2/dwznolink.exp: New file.
gdb/ChangeLog
gdb/dwarf2/macro.c
gdb/dwarf2/read.c
gdb/dwarf2/read.h
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.dwarf2/dwznolink.exp [new file with mode: 0644]
gdb/testsuite/lib/dwarf.exp
This page took 0.028456 seconds and 4 git commands to generate.