Fix crash in cp_print_value_fields
authorTom Tromey <tromey@adacore.com>
Wed, 29 May 2019 15:34:50 +0000 (09:34 -0600)
committerTom Tromey <tromey@adacore.com>
Wed, 29 May 2019 15:44:09 +0000 (09:44 -0600)
commit4330d61dfb05d77fd925efdca45091f12e3a6266
treedf204aed8586f17ce5b39768483887a843ce036a
parent6ff185b89017b16e9092142515f0a119b684ac72
Fix crash in cp_print_value_fields

PR c++/20020 concerns a crash in cp_print_value_fields.  The immediate
cause is that cp_print_value_fields does not handle the case where
value_static_field fails.  This is fixed in this patch by calling
cp_print_static_field from the "try" block.

Digging a bit deeper, the error occurs because GCC does not emit a
DW_AT_const_value for a static constexpr member appearing in a
template class.  I've filed a GCC bug for this.

Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-05-29  Tom Tromey  <tromey@adacore.com>

PR c++/20020:
* cp-valprint.c (cp_print_value_fields): Call
cp_print_static_field inside "try".

gdb/testsuite/ChangeLog
2019-05-29  Tom Tromey  <tromey@adacore.com>

PR c++/20020:
* gdb.cp/constexpr-field.exp: New file.
* gdb.cp/constexpr-field.cc: New file.
gdb/ChangeLog
gdb/cp-valprint.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.cp/constexpr-field.cc [new file with mode: 0644]
gdb/testsuite/gdb.cp/constexpr-field.exp [new file with mode: 0644]