Fix regression in pointer-to-member printing
authorTom Tromey <tromey@adacore.com>
Tue, 18 Oct 2022 17:32:52 +0000 (11:32 -0600)
committerTom Tromey <tromey@adacore.com>
Mon, 31 Oct 2022 14:49:06 +0000 (08:49 -0600)
commit86430497337968e6163aef370c6312e7b5ed6504
treecc8e805321dc54a833dcc8fea91acf661a444373
parent1bf074fb6b5474f94e315d7047c0500535f0a2ef
Fix regression in pointer-to-member printing

PR c++/29243 points out that "info func" on a certain C++ executable
will cause an infinite loop in gdb.

I tracked this down to a bug introduced by commit 6b5a7bc76 ("Handle
member pointers directly in generic_value_print").  Before this
commit, the C++ code to print a member pointer would wind up calling
value_print_scalar_formatted; but afterward it simply calls
generic_value_print and gets into a loop.

This patch restores the previous behavior and adds a regression test.
gdb/testsuite/gdb.cp/member-ptr.cc
gdb/testsuite/gdb.cp/member-ptr.exp
gdb/valprint.c