aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2018-12-08 15:03:29 +0000
committerPedro Alves <palves@redhat.com>2018-12-08 15:03:29 +0000
commit73e8dc90a8a94bc52e29596b1cc176b882fbbc8e (patch)
treeb1ab53e4e6cde9695e59eef91a210008f632680d /gdb/testsuite
parentc0ab2ae3cc9af434ba926015d82a39cdf42c70bf (diff)
downloadgdb-73e8dc90a8a94bc52e29596b1cc176b882fbbc8e.zip
gdb-73e8dc90a8a94bc52e29596b1cc176b882fbbc8e.tar.gz
gdb-73e8dc90a8a94bc52e29596b1cc176b882fbbc8e.tar.bz2
Merge forward-search/reverse-search, use gdb::def_vector, remove limit
Back in: commit 85ae1317add94adef4817927e89cff80b92813dd Author: Stan Shebs <shebs@codesourcery.com> AuthorDate: Thu Dec 8 02:27:47 1994 +0000 * source.c: Various cosmetic changes. (forward_search_command): Handle very long source lines correctly. a buffer with a hard limit was converted to a heap buffer: @@ -1228,15 +1284,26 @@ forward_search_command (regex, from_tty) stream = fdopen (desc, FOPEN_RT); clearerr (stream); while (1) { -/* FIXME!!! We walk right off the end of buf if we get a long line!!! */ - char buf[4096]; /* Should be reasonable??? */ - register char *p = buf; + static char *buf = NULL; + register char *p; + int cursize, newsize; + + cursize = 256; + buf = xmalloc (cursize); + p = buf; However, reverse_search_command has the exact same problem, and that wasn't fixed. We still have that "we walk right off" comment... Recently, the xmalloc above was replaced with a xrealloc, because as can be seen above, that 'buf' variable above was a static local, otherwise we'd be leaking. This commit replaces that and the associated manual buffer growing with a gdb::def_vector<char>. I don't think there's much point in reusing the buffer across command invocations. While doing this, I realized that reverse_search_command is almost identical to forward_search_command. So this commit factors out a common helper function instead of duplicating a lot of code. There are some tests for "forward-search" in gdb.base/list.exp, but since they use the "search" alias, they were a bit harder to find than expected. That's now fixed, both by testing both variants, and by adding some commentary. Also, there are no tests for the "reverse-search" command, so this commit adds some for that too. gdb/ChangeLog: 2018-12-08 Pedro Alves <palves@redhat.com> * source.c (forward_search_command): Rename to ... (search_command_helper): ... this. Add 'forward' parameter. Tweak to use a gdb::def_vector<char> instead of a xrealloc'ed buffer. Handle backward searches too. (forward_search_command, reverse_search_command): Reimplement by calling search_command_helper. gdb/testsuite/ChangeLog: 2018-12-08 Pedro Alves <palves@redhat.com> * gdb.base/list.exp (test_forward_search): Rename to ... (test_forward_reverse_search): ... this. Also test reverse-search and the forward-search alias.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.base/list.exp17
2 files changed, 21 insertions, 2 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 66310d7..b6c6c4a 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2018-12-08 Pedro Alves <palves@redhat.com>
+
+ * gdb.base/list.exp (test_forward_search): Rename to ...
+ (test_forward_reverse_search): ... this. Also test reverse-search
+ and the forward-search alias.
+
2018-12-05 Andrew Burgess <andrew.burgess@embecosm.com>
* config/sim.exp (gdb_target_sim): Remove redundant adjustment of
diff --git a/gdb/testsuite/gdb.base/list.exp b/gdb/testsuite/gdb.base/list.exp
index abfb0e1..9b172e9 100644
--- a/gdb/testsuite/gdb.base/list.exp
+++ b/gdb/testsuite/gdb.base/list.exp
@@ -485,7 +485,9 @@ proc test_list_filename_and_function {} {
}
-proc test_forward_search {} {
+# Test the forward-search (aka search) and the reverse-search commands.
+
+proc test_forward_reverse_search {} {
global timeout
gdb_test_no_output "set listsize 4"
@@ -499,6 +501,17 @@ proc test_forward_search {} {
gdb_test "search 6789" "28\[ \t\]+oof .6789.;"
+ # Try again, we shouldn't re-find the same source line. Also,
+ # while at it, test using the "forward-search" alias.
+ gdb_test "forward-search 6789" " not found"
+
+ # Now test backwards. First make sure we start searching from
+ # the previous line, not the current line.
+ gdb_test "reverse-search 6789" " not found"
+
+ # Now find something in a previous line.
+ gdb_test "reverse-search 67" "26\[ \t\]+oof .67.;"
+
# Test that GDB won't crash if the line being searched is extremely long.
set oldtimeout $timeout
@@ -553,7 +566,7 @@ if [ set_listsize 10 ] then {
test_repeat_list_command
test_list_range
test_list_filename_and_function
- test_forward_search
+ test_forward_reverse_search
test_only_end
test_list_invalid_args
}