Re: [PATCH v4] PR 18303, Tolerate malformed input for lookup_symbol-called functions.

Don Breazeal
2016-03-15T22:31:35Z

On 3/15/2016 1:30 PM, Doug Evans wrote:
> Don Breazeal writes:
> > Apologies -- the previous version of this patch was missing one file,
> > added here. Sorry for the noise.
> > --Don
> >
> > ---V3 Comment---
> > This patch differs from v2 in that the new test
> gdb.linespec/ls-errs-cp.exp
> > is gone, and instead (per Pedro's suggestion) gdb.linespec/ls-errs.exp
> has
> > been modified to test both C & C++, and to incorporate the small amount
> of
> > extra testing from ls-errs-cp.exp.
> >
> > It also includes, unchanged from the previous version of the patch:
> >
> > * an updated version of the alternate fix that Keith proposed for my
> > patch that addressed PR breakpoints/18303. Doug has approved (in
> > concept, at least) the code portion of the patch.
> >
> > * a couple of other new tests of colons in linespecs.
> >
> > Thanks,
> > --Don
> >
> > -----------
> > lookup_symbol is often called with user input. Consequently, any
> > function called from lookup_symbol{,_in_language} should attempt to
> > deal with malformed input gracefully. After all, malformed user
> > input is not a programming/API error.
> >
> > This patch does not attempt to find/correct all instances of this. It
> > only fixes locations in the code that trigger test suite failures.
> >
> > This patch fixes PR breakpoints/18303, "Assertion: -breakpoint-insert
> > with windows paths of file in non-current directory".
> >
> > The patch includes three new tests related to this. One is just
> > gdb.linespec/ls-errs.exp copied and converted to use C++ instead of C,
> and
> > to add a case using a file name containing a Windows-style logical drive
> > specifier. The others include an MI test to provide a regression test
> for
> > the specific case reported in PR 18303, and a C++ test for proper error
> > handling of access to a program variable when using a file scope
> specifier
> > that refers to a non-existent file.
> >
> > Tested on x86_64 native Linux.
> >
> > gdb/ChangeLog
> > 2016-01-28 Keith Seitz <keiths@redhat.com>
> >
> > PR breakpoints/18303
> > * cp-namespace.c (cp_lookup_bare_symbol): Change assertion to
> > look for "::" instead of simply ":".
> > (cp_search_static_and_baseclasses): Return null_block_symbol for
> > malformed input.
> > Remove assertions.
> > * cp-support.c (cp_find_first_component_aux): Do not return
> > a prefix length for ':' unless the next character is also ':'.
> >
> > gdb/testsuite/ChangeLog
> > 2016-01-28 Don Breazeal <donb@codesourcery.com>
> >
> > * gdb.cp/scope-err.cc: New test program.
> > * gdb.cp/scope-err.exp: New test script.
> > * gdb.linespec/ls-errs.c (myfunction): Expanded to have multiple
> > lines and "set breakpoint here" comment.
> > * gdb.linespec/ls-errs.exp: Added C++ testing and new test case.
> > * gdb.mi/mi-linespec-err-cp.cc: New test program.
> > * gdb.mi/mi-linespec-err-cp.exp: New test script.
> >...
>
> Hi.
> LGTM
>
This is now pushed. Keith FYI I made some whitespace/format changes per
your comments.
Thanks,
--Don