This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: Fix gdb.ada/bp_c_mixed_case.exp (PR gdb/22670) (Re: [PATCH 3/3] Add new gdb.ada/bp_c_mixed_case testcase for PR gdb/22670)
Hi Pedro,
On Fri, Jan 05, 2018 at 04:34:39PM +0000, Pedro Alves wrote:
> 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 insert
> > a breakpoint on a C function while debugging Ada, even if the name
> > of the function includes uppercase letters, requiring us to use
> > Ada's "<...>" notation to tell the GDB that the symbol name should
> > be looked up verbatim.
> >
> > As of the commit above, GDB is no longer finding the function:
> >
> > (gdb) break <MixedCaseFunc>
> > Function "<MixedCaseFunc>" not defined.
> > Make breakpoint pending on future shared library load? (y or [n])
> >
> > Before the patch, the breakpoint was inserted without problem.
> >
>
> Below's a fix for this one.
Thanks!
I confirm the test now passes for me as well :). I have a question
though:
> >From 439f8c51ff8f6cd9fb3bbc330a40492a15992add Mon Sep 17 00:00:00 2001
> From: Pedro Alves <palves@redhat.com>
> Date: Fri, 5 Jan 2018 00:17:19 +0000
> Subject: [PATCH 1/2] Fix gdb.ada/bp_c_mixed_case.exp (PR gdb/22670)
>
> The problem here is that we were using the user-provided lookup name
> literally for linkage name comparisons. I.e., "<MixedCase>" with the
> "<>"s included. That obviously can't work since the "<>" are not
> really part of the linkage name. The original idea was that we'd use
> the symbol's language to select the right symbol name matching
> algorithm, but that doesn't work for Ada because it's not really
> possible to unambiguously tell from the linkage name alone whether
> we're dealing with Ada symbols, so Ada minsyms end up with no language
> set, or sometimes C++ set. So fix this by treating Ada mode specially
> when determining the linkage name to match against.
I am wondering why minimal symbols are involved in this case,
considering that the C file was build with debugging information.
Shouldn't we be getting the function's address from the partial/full
symtabs instead?
--
Joel