Fix crash in dwarf2read.c with template parameters
authorTom Tromey <tromey@adacore.com>
Mon, 22 Apr 2019 17:46:47 +0000 (11:46 -0600)
committerTom Tromey <tromey@adacore.com>
Tue, 30 Apr 2019 13:25:03 +0000 (07:25 -0600)
commita776957c8c3a9177345ee7ca91077234ed7f508e
tree2673729d55c956fc2059b1c71470104b6fbc98e0
parent066f4018ae7822d81cb6747fd9494e5dd63bfecf
Fix crash in dwarf2read.c with template parameters

PR c++/24470 concerns a crash in dwarf2read.c that occurs with a
particular test case.

The issue turns out to be that process_structure_scope will pass NULL
to symbol_symtab.  This happens because new_symbol decided not to
create a symbol for the particular DIE.

This patch fixes the problem by finding another reasonably-appropriate
symtab to use instead; issuing a complaint if one cannot be found for
some reason.

As mentioned in the bug, I think there are other bugs here.  For
example, when using "ptype" on the "l" object in the test case, I
think I would expect to see the template parameter.  I didn't research
this too closely, since it seemed more important to fix the crash.

Tested on x86-64 Fedora 29.

I'd like to check this in to the 8.3 branch as well.

2019-04-30  Tom Tromey  <tromey@adacore.com>

PR c++/24470:
* dwarf2read.c (process_structure_scope): Handle case where type
has template parameters but no symbol was created.

gdb/testsuite/ChangeLog
2019-04-30  Tom Tromey  <tromey@adacore.com>

PR c++/24470:
* gdb.cp/temargs.cc: Add test code from PR.
gdb/ChangeLog
gdb/dwarf2read.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.cp/temargs.cc
This page took 0.027207 seconds and 4 git commands to generate.