[5/7] gdb: 'list' command, tweak handling of +/- arguments.
Commit Message
There is an inconsistency with the handling of the special +/- arguments
to the list command.
For the very first time that list is used (after the inferior has
changed locations) then only the first character of the argument string
is checked, so 'list +BLAH' will operate as 'list +' and 'list -----FOO'
will operate as 'list -'. This compares to each subsequent use of list,
where the whole argument string is checked, so 'list +BLAH' will try to
list lines of code around the function '+BLAH'.
This commit unifies the behaviour so that the whole argument string is
checked, in order to list the next 10, or previous 10 lines from a file
only 'list +' and 'list -' are now valid.
gdb/ChangeLog:
* cli/cli-cmds.c (list_command): Check that the argument string is
a single character, either '+' or '-'.
gdb/testsuite/ChangeLog:
* gdb.base/list.exp (test_list_invalid_args): New function,
defined, and called.
---
gdb/ChangeLog | 5 +++++
gdb/cli/cli-cmds.c | 6 +++---
gdb/testsuite/ChangeLog | 5 +++++
gdb/testsuite/gdb.base/list.exp | 19 +++++++++++++++++++
4 files changed, 32 insertions(+), 3 deletions(-)
Comments
On 11/25/2015 12:34 AM, Andrew Burgess wrote:
> gdb/ChangeLog:
>
> * cli/cli-cmds.c (list_command): Check that the argument string is
> a single character, either '+' or '-'.
>
> gdb/testsuite/ChangeLog:
>
> * gdb.base/list.exp (test_list_invalid_args): New function,
> defined, and called.
> + clean_restart ${binfile}
> + gdb_test "list -INVALID" \
> + "invalid explicit location argument, \"-INVALID\"" \
> + "First use of \"list -INVALID\""
> + gdb_test "list -INVALID" \
> + "invalid explicit location argument, \"-INVALID\"" \
> + "Second use of \"list -INVALID\""
Nit: please use lowercase in test messages like mostly
everywhere else (including this file).
OK with that fixed.
Thanks,
Pedro Alves
@@ -1,5 +1,10 @@
2015-11-24 Andrew Burgess <andrew.burgess@embecosm.com>
+ * cli/cli-cmds.c (list_command): Check that the argument string is
+ a single character, either '+' or '-'.
+
+2015-11-24 Andrew Burgess <andrew.burgess@embecosm.com>
+
* cli/cli-cmds.c (list_command): Move all handling of +/-
arguments into a single if block.
@@ -907,7 +907,7 @@ list_command (char *arg, int from_tty)
cleanup = make_cleanup (null_cleanup, NULL);
/* Pull in the current default source line if necessary. */
- if (arg == NULL || arg[0] == '+' || arg[0] == '-')
+ if (arg == NULL || ((arg[0] == '+' || arg[0] == '-') && arg[1] == '\0'))
{
set_default_source_symtab_and_line ();
cursal = get_current_source_symtab_and_line ();
@@ -935,7 +935,7 @@ list_command (char *arg, int from_tty)
/* "l" or "l +" lists next ten lines. */
- if (arg == NULL || strcmp (arg, "+") == 0)
+ if (arg == NULL || arg[0] == '+')
{
print_source_lines (cursal.symtab, cursal.line,
cursal.line + get_lines_to_list (), 0);
@@ -944,7 +944,7 @@ list_command (char *arg, int from_tty)
/* "l -" lists previous ten lines, the ones before the ten just
listed. */
- if (strcmp (arg, "-") == 0)
+ if (arg[0] == '-')
{
print_source_lines (cursal.symtab,
max (get_first_line_listed ()
@@ -1,5 +1,10 @@
2015-11-24 Andrew Burgess <andrew.burgess@embecosm.com>
+ * gdb.base/list.exp (test_list_invalid_args): New function,
+ defined, and called.
+
+2015-11-24 Andrew Burgess <andrew.burgess@embecosm.com>
+
* gdb.base/list.exp (test_list): Make test names unique.
2015-11-23 Simon Marchi <simon.marchi@ericsson.com>
@@ -505,6 +505,24 @@ proc test_only_end {} {
gdb_test "list ,5" "list ,5\r\n4\[ \t\]\[^\r\n\]*\r\n5\[ \t\]\[^\r\n\]*"
}
+proc test_list_invalid_args {} {
+ global binfile
+
+ clean_restart ${binfile}
+ gdb_test "list -INVALID" \
+ "invalid explicit location argument, \"-INVALID\"" \
+ "First use of \"list -INVALID\""
+ gdb_test "list -INVALID" \
+ "invalid explicit location argument, \"-INVALID\"" \
+ "Second use of \"list -INVALID\""
+
+ clean_restart ${binfile}
+ gdb_test "list +INVALID" "Function \"\\+INVALID\" not defined." \
+ "First use of \"list +INVALID\""
+ gdb_test "list +INVALID" "Function \"\\+INVALID\" not defined." \
+ "Second use of \"list +INVALID\""
+}
+
# Start with a fresh gdb.
gdb_exit
@@ -527,6 +545,7 @@ if [ set_listsize 10 ] then {
test_list_filename_and_function
test_forward_search
test_only_end
+ test_list_invalid_args
}
# Follows tests that require execution.