Correctly handle forward DIE references in scanner
authorTom Tromey <tom@tromey.com>
Fri, 28 Apr 2023 19:04:15 +0000 (13:04 -0600)
committerTom Tromey <tom@tromey.com>
Mon, 15 May 2023 14:49:24 +0000 (08:49 -0600)
commitb10f2cd3f3c3b25c71e50a342fb46f9eb9eba792
tree03f156b3ff8198d3e44dedbb5a6d46da83c3df76
parent6a1cf1bfedbcdb977d9ead3bf6a228360d78cc1b
Correctly handle forward DIE references in scanner

The cooked index scanner has special code to handle forward DIE
references.  However, a bug report lead to the discovery that this
code does not work -- the "deferred_entry::spec_offset" field is
written to but never used, i.e., the lookup is done using the wrong
key.

This patch fixes the bug and adds a regression test.

The test in the bug itself used a thread_local variable, which
provoked a failure at runtime.  This test instead uses "maint print
objfiles" and then inspects to ensure that the entry in question has a
parent.  This lets us avoid a clang dependency in the test.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30271
gdb/dwarf2/read.c
gdb/testsuite/gdb.dwarf2/forward-spec.exp [new file with mode: 0644]