gdb/c++: Improve error messages in overload resolution
authorBruno Larsen <blarsen@redhat.com>
Wed, 5 Oct 2022 12:22:56 +0000 (14:22 +0200)
committerBruno Larsen <blarsen@redhat.com>
Thu, 10 Nov 2022 13:51:49 +0000 (14:51 +0100)
commit041de3d73aa121f2ff0c077213598963bfb34b79
tree5d6224170af2d32f340a3c28f06f30cff3bd39d5
parent2acccd0a59af7a04e341d31f68b370486d5fc474
gdb/c++: Improve error messages in overload resolution

When resolving overloaded functions, GDB relies on knowing relationships
between types, i.e. if a type inherits from another. However, some
compilers may not add complete information for given types as a way to
reduce unnecessary debug information. In these cases, GDB would just say
that it couldn't resolve the method or function, with no extra
information.

The problem is that sometimes the user may not know that the type
information is incomplete, and may just assume that there is a bug in
GDB. To improve the user experience, we attempt to detect if the
overload match failed because of an incomplete type, and warn the user
of this.

This commit also adds a testcase confirming that the message is only
triggered in the correct scenario. This test was not developed as an
expansion of gdb.cp/overload.cc because it needed the dwarf assembler,
and porting all of overload.cc seemed unnecessary.

Approved-By: Tom Tromey <tom@tromey.com>
gdb/testsuite/gdb.cp/incomplete-type-overload.cc [new file with mode: 0644]
gdb/testsuite/gdb.cp/incomplete-type-overload.exp [new file with mode: 0644]
gdb/valops.c