[8.3,backport] Fix crash in cp_print_value_fields
Commit Message
On 17-05-19 22:18, Tom Tromey wrote:
> From: Tom Tromey <tom@tromey.com>
>
> 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-17 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-17 Tom Tromey <tromey@adacore.com>
>
> PR c++/20020:
> * gdb.cp/constexpr-field.exp: New file.
> * gdb.cp/constexpr-field.cc: New file.
OK to backport to 8.3, as well as the followup patch "Fix two buglets in
cp_print_value_fields patch"?
Neither of the patches apply cleanly, so I'm attaching them here.
The difference in test results is:
...
+Running gdb/testsuite/gdb.cp/constexpr-field.exp ...
+XFAIL: gdb.cp/constexpr-field.exp: print x (PRMS gcc/90526)
+PASS: gdb.cp/constexpr-field.exp: print y
...
Thanks,
- Tom
Comments
>>>>> "Tom" == Tom de Vries <tdevries@suse.de> writes:
Tom> OK to backport to 8.3, as well as the followup patch "Fix two buglets in
Tom> cp_print_value_fields patch"?
Yes, thank you for doing this.
Tom
Fix buglet in cp_print_value_fields patch
[ Backport of master commit 3d507ff23b. ]
Pedro pointed out an issue in the cp_print_value_fields
patch, aka the fix for PR c++/20020.
This patch addresses the issue. Tested on x86-64 Fedora 29.
gdb/testsuite/ChangeLog
2019-06-27 Tom Tromey <tromey@adacore.com>
* gdb.cp/constexpr-field.exp: Use setup_xfail.
---
gdb/testsuite/ChangeLog | 4 ++++
gdb/testsuite/gdb.cp/constexpr-field.exp | 3 ++-
2 files changed, 6 insertions(+), 1 deletion(-)
@@ -1,3 +1,7 @@
+2019-06-27 Tom Tromey <tromey@adacore.com>
+
+ * gdb.cp/constexpr-field.exp: Use setup_xfail.
+
2019-05-29 Tom Tromey <tromey@adacore.com>
PR c++/20020:
@@ -31,6 +31,7 @@ if {![runto_main]} {
# "x" sometimes isn't available due to
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90526
-gdb_test "print x" " = {static f = .*}"
+setup_xfail *-*-* gcc/90526
+gdb_test "print x" " = {static f = true}"
gdb_test "print y" " = {static f = true}"