Explicit locations: add UI features for CLI
authorKeith Seitz <keiths@redhat.com>
Wed, 12 Aug 2015 00:09:36 +0000 (17:09 -0700)
committerKeith Seitz <keiths@redhat.com>
Wed, 12 Aug 2015 00:09:36 +0000 (17:09 -0700)
commit87f0e7204722a986f79f245eee716f0870832d47
tree80936c86b139d303a7139c46ae00b55f89c91f8d
parent00e52e5376c7ec604a739e6242e6be36221162d7
Explicit locations: add UI features for CLI

This patch exposes explicit locations to the CLI user.  This enables
users to "explicitly" specify attributes of the breakpoint location
to avoid any ambiguity that might otherwise exist with linespecs.

The general syntax of explicit locations is:
-source SOURCE_FILENAME -line {+-}LINE -function FUNCTION_NAME
-label LABEL_NAME

Option names may be abbreviated, e.g., "-s SOURCE_FILENAME -li 3" and users
may use the completer with either options or values.

gdb/ChangeLog:

* completer.c: Include location.h.
(enum match_type): New enum.
(location_completer): Rename to ...
(linespec_completer): ... this.
(collect_explicit_location_matches, backup_text_ptr)
(explicit_location_completer): New functions.
(location_completer): "New" function; handle linespec
and explicit location completions.
(complete_line_internal): Remove all location completer-specific
handling.
* linespec.c (linespec_lexer_lex_keyword, is_ada_operator)
(find_toplevel_char): Export.
(linespec_parse_line_offset): Export.
Issue error if STRING is not numerical.
(gdb_get_linespec_parser_quote_characters): New function.
* linespec.h (linespec_parse_line_offset): Declare.
(get_gdb_linespec_parser_quote_characters): Declare.
(is_ada_operator): Declare.
(find_toplevel_char): Declare.
(linespec_lexer_lex_keyword): Declare.
* location.c (explicit_to_event_location): New function.
(explicit_location_lex_one): New function.
(string_to_explicit_location): New function.
(string_to_event_location): Handle explicit locations.
* location.h (explicit_to_event_location): Declare.
(string_to_explicit_location): Declare.

gdb/testsuite/ChangeLog:

* gdb.linespec/3explicit.c: New file.
* gdb.linespec/cpexplicit.cc: New file.
* gdb.linespec/cpexplicit.exp: New file.
* gdb.linespec/explicit.c: New file.
* gdb.linespec/explicit.exp: New file.
* gdb.linespec/explicit2.c: New file.
* gdb.linespec/ls-errs.exp: Add explicit location tests.
* lib/gdb.exp (capture_command_output): Regexp-escape `command'
before using in the matching pattern.
Clarify that `prefix' is a regular expression.
15 files changed:
gdb/ChangeLog
gdb/completer.c
gdb/linespec.c
gdb/linespec.h
gdb/location.c
gdb/location.h
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.linespec/3explicit.c [new file with mode: 0644]
gdb/testsuite/gdb.linespec/cpexplicit.cc [new file with mode: 0644]
gdb/testsuite/gdb.linespec/cpexplicit.exp [new file with mode: 0644]
gdb/testsuite/gdb.linespec/explicit.c [new file with mode: 0644]
gdb/testsuite/gdb.linespec/explicit.exp [new file with mode: 0644]
gdb/testsuite/gdb.linespec/explicit2.c [new file with mode: 0644]
gdb/testsuite/gdb.linespec/ls-errs.exp
gdb/testsuite/lib/gdb.exp