summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2013-03-28 11:57:46 +0000
committerPedro Alves <palves@redhat.com>2013-03-28 11:57:46 +0000
commitbbd07c787c959329c2fac126ca3764b396e433ec (patch)
tree82b419b25edf8a94e8f64d7595f2a634a9152bf3
parent59c3faf79f0d90ada48a0e25824580fb893c9215 (diff)
downloadgdb-bbd07c787c959329c2fac126ca3764b396e433ec.tar.gz
Fix PR gdb/15294: list with unlimited listsize broken
Currently, "set listsize -1" is supposed to mean "unlimited" source lines, but, alas, it doesn't actually work: (gdb) set listsize -1 (gdb) show listsize Number of source lines gdb will list by default is unlimited. (gdb) list 1 (gdb) list 1 (gdb) list 1 (gdb) set listsize 10 (gdb) list 1 1 /* Main function for CLI gdb. 2 Copyright (C) 2002-2013 Free Software Foundation, Inc. 3 4 This file is part of GDB. 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 3 of the License, or 9 (at your option) any later version. 10 Before this patch: http://sourceware.org/ml/gdb-patches/2012-08/msg00367.html was applied, the "set listsize" command was a var_integer command, and "unlimited" was set with 0. Internally, var_integer maps 0 to INT_MAX case var_integer: { ... if (val == 0 && c->var_type == var_integer) val = INT_MAX; The change in that patch to zuinteger_unlimited command, meant that -1 is left as -1 in the command's control variable (lines_to_list), and the code in source.c isn't expecting that -- it only expects positive numbers. I previously suggested fixing the code and keeping the new behavior, but I found that "set listsize 0" is currently used in the wild, and we do have a bunch of other commands where "0" means unlimited, so I'm thinking that changing this command alone in isolation is not a good idea. So I now strongly prefer reverting back the behavior in 7.6 to the same behavior the command has had since 2006 (0==unlimited, -1=error). Before that, set listsize -1 would be accepted as unlimited as well. After 7.6 is out, in mainline, we can get back to reconsidering changing this command's behavior, if there's a real need for being able to suppress output. For now, let's play it safe. The "list line 1 with unlimited listsize" test in list.exp was originally written years and years ago expecting 0 to mean "no output", but GDB never actually worked that way, even when the tests were written, so the tests had been xfailed then. This patch now adjusts the test to the new behavior, so that the test actually passes, and the xfail is removed. gdb/ 2013-03-28 Pedro Alves <palves@redhat.com> PR gdb/15294 * source.c (_initialize_source): Change back "set listsize" to an integer command. gdb/testsuite/ 2013-03-28 Pedro Alves <palves@redhat.com> PR gdb/15294 * gdb.base/list.exp (set_listsize): Adjust to accept $arg == 0 to mean unlimited instead of $arg < 0. (test_listsize): Remove "listsize of 0 suppresses output" test. Test that "set listsize 0" ends up with an unlimited listsize. gdb/doc/ 2013-03-28 Pedro Alves <palves@redhat.com> PR gdb/15294 * gdb.texinfo (List) <set listsize>: Adjust to document that listsize 0 means no limit, and remove mention of -1.
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/doc/ChangeLog7
-rw-r--r--gdb/doc/gdb.texinfo3
-rw-r--r--gdb/source.c8
-rw-r--r--gdb/testsuite/ChangeLog9
-rw-r--r--gdb/testsuite/gdb.base/list.exp10
6 files changed, 30 insertions, 14 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 95a9e75a9eb..a5f8963eeb9 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2013-03-28 Pedro Alves <palves@redhat.com>
+
+ PR gdb/15294
+
+ * source.c (_initialize_source): Change back "set listsize" to an
+ integer command.
+
2013-03-27 Gareth McMullin <gareth@blacksphere.co.nz>
PR gdb/15275
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 9a3f6b4d985..cab3ad9ae10 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,10 @@
+2013-03-28 Pedro Alves <palves@redhat.com>
+
+ PR gdb/15294
+
+ * gdb.texinfo (List) <set listsize>: Adjust to document that
+ listsize 0 means no limit, and remove mention of -1.
+
2013-03-22 Yao Qi <yao@codesourcery.com>
* gdb.texinfo (Embedded Processors): Remove menu item
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 38ce259e482..fc2aae1adcc 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -6916,8 +6916,7 @@ the @code{list} command. You can change this using @code{set listsize}:
@item set listsize @var{count}
Make the @code{list} command display @var{count} source lines (unless
the @code{list} argument explicitly specifies some other number).
-Setting @var{count} to -1 means there's no limit and 0 means suppress
-display of source lines.
+Setting @var{count} to 0 means there's no limit.
@kindex show listsize
@item show listsize
diff --git a/gdb/source.c b/gdb/source.c
index 2d9410ecc37..03c5253ba13 100644
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -2044,12 +2044,12 @@ The matching line number is also stored as the value of \"$_\"."));
add_com_alias ("?", "reverse-search", class_files, 0);
}
- add_setshow_zuinteger_unlimited_cmd ("listsize", class_support,
- &lines_to_list, _("\
+ add_setshow_integer_cmd ("listsize", class_support, &lines_to_list, _("\
Set number of source lines gdb will list by default."), _("\
Show number of source lines gdb will list by default."), NULL,
- NULL, show_lines_to_list,
- &setlist, &showlist);
+ NULL,
+ show_lines_to_list,
+ &setlist, &showlist);
add_cmd ("substitute-path", class_files, set_substitute_path_command,
_("\
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index ef1ebae4084..33c7bf4ae22 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,14 @@
2013-03-28 Pedro Alves <palves@redhat.com>
+ PR gdb/15294
+
+ * gdb.base/list.exp (set_listsize): Adjust to accept $arg == 0 to
+ mean unlimited instead of $arg < 0.
+ (test_listsize): Remove "listsize of 0 suppresses output" test.
+ Test that "set listsize 0" ends up with an unlimited listsize.
+
+2013-03-28 Pedro Alves <palves@redhat.com>
+
* gdb.base/list.exp (last_line): New global.
(last_line_re): New global.
(test_listsize, test_list_function, test_list_forward)
diff --git a/gdb/testsuite/gdb.base/list.exp b/gdb/testsuite/gdb.base/list.exp
index 915b255f2f9..96ca198efa0 100644
--- a/gdb/testsuite/gdb.base/list.exp
+++ b/gdb/testsuite/gdb.base/list.exp
@@ -67,7 +67,7 @@ proc set_listsize { arg } {
if [gdb_test_no_output "set listsize $arg" "setting listsize to $arg #$set_listsize_count"] {
return 0
}
- if { $arg < 0 } {
+ if { $arg == 0 } {
set arg "unlimited";
}
@@ -136,15 +136,9 @@ proc test_listsize {} {
gdb_test "list 10" "1\[ \t\]+#include \"list0.h\".*\r\n${last_line_re}" "list line 10 with listsize 100"
}
- # Try listsize of 0 which suppresses printing.
+ # Try listsize of 0 which is special, and means unlimited.
set_listsize 0
- gdb_test "list 1" "" "listsize of 0 suppresses output"
-
- # Try listsize of -1 which is special, and means unlimited.
-
- set_listsize -1
- setup_xfail "*-*-*"
gdb_test "list 1" "1\[ \t\]+#include .*\r\n${last_line_re}" "list line 1 with unlimited listsize"
}