[PATCH 0/6] Type unit + split DWARF fixes (PR 33307)

Simon Marchi
2025-11-07T21:11:37Z

This series fixes a regression that I introduced a few months ago,
causing a crash in very specific circumstances: type unit in a .dwo file
+ stub in the main file + gdb index. Luckily, this was caught by test
gdb.dwarf2/fission-reread.exp when ran with the cc-with-gdb-index board.

Patches 1-3 are improvements to the testsuite DWARF assembler, allowing
to generate better type units and split DWARF tests.

Patch 4 fixes the reported crash.

Patch 5 fixes another case of the same crash, for which I provide a test
/ reproducer.

Patch 6 is a trivial cleanup.

Simon Marchi (6):
gdb/testsuite/dwarf: use single abbrev table in .dwo files
gdb/testsuite/dwarf: convert _section proc to use parse_options
gdb/testsuite/dwarf: emit type unit sections as COMDAT
gdb/dwarf: when in dwarf2_cu, read addr_size from dwarf2_cu::header
gdb/dwarf: store addr/offset/ref_addr sizes in dwarf2_per_cu
gdb/dwarf: use dwarf2_per_cu::ref_addr_size in one spot

gdb/dwarf2/cu.c | 7 +-
gdb/dwarf2/read.c | 71 ++------
gdb/dwarf2/read.h | 56 ++++--
.../gdb.dwarf2/fission-type-unit-locexpr.c | 25 +++
.../gdb.dwarf2/fission-type-unit-locexpr.exp | 161 ++++++++++++++++++
.../gdb.dwarf2/fission-with-type-unit.exp | 29 ++--
gdb/testsuite/lib/dwarf.exp | 132 +++++++++++---
7 files changed, 362 insertions(+), 119 deletions(-)
create mode 100644 gdb/testsuite/gdb.dwarf2/fission-type-unit-locexpr.c
create mode 100644 gdb/testsuite/gdb.dwarf2/fission-type-unit-locexpr.exp

base-commit: 767c92a13e92d3c34b8ed6f3b6f1bf17eca57cbd
--
2.51.2