[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