[8.3 backport] Fix crash in cp_print_value_fields
Tom de Vries
tdevries@suse.de
Fri Aug 2 15:14:00 GMT 2019
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Fix-crash-in-cp_print_value_fields.patch
Type: text/x-patch
Size: 5553 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20190802/040a6bf5/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-Fix-buglet-in-cp_print_value_fields-patch.patch
Type: text/x-patch
Size: 1374 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20190802/040a6bf5/attachment-0001.bin>
More information about the Gdb-patches
mailing list