This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 1/3] Add gdb.ada/info_addr_mixed_case new testcase
On 01/04/2018 08:35 AM, Joel Brobecker wrote:
> This patch adds a new testcase to demonstrate a regression introduced by:
>
> commit b5ec771e60c1a0863e51eb491c85c674097e9e13
> Date: Wed Nov 8 14:22:32 2017 +0000
> Subject: Introduce lookup_name_info and generalize Ada's FULL/WILD name matching
>
> The purpose of the testcase is to verify that a user can use any
> casing for an Ada symbol name passed to the "info address" command.
> After the patch above was applied, GDB was no longer able to find
> the symbol:
>
> (gdb) info address My_Table
> No symbol "My_Table" in current context.
The mixed-case aspect is actually a red herring here. Using
lowercase doesn't work either:
(gdb) info address my_table
No symbol "my_table" in current context.
I think the problem is instead that "info address" is doing a
symbol_name_match_type::FULL match, but the symbol's full name
is pck.my_table, which doesn't match.
If you pass the fully-qualified name, then it work, regardless
of casing:
(gdb) info address pck.My_Table
Symbol "pck.my_table" is static storage at address 0x6155e0.
(gdb) info address pck.my_table
Symbol "pck.my_table" is static storage at address 0x6155e0.
(gdb) info address Pck.My_Table
Symbol "pck.my_table" is static storage at address 0x6155e0.
Ada mode wants symbol names in expressions to be looked up
using wild matching, unlike other languages. To handle that
I had added symbol_name_match_type::EXPRESSION:
/* Expression matching. The same as FULL matching in most
languages. The same as WILD matching in Ada. */
EXPRESSION,
IIRC, this is mainly used in the completion paths.
I think we'll need to make "info address" use it too, and
possibly other commands that accept an expression as argument.
Thanks,
Pedro Alves