summaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.cp
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2017-08-22 14:51:18 +0100
committerPedro Alves <palves@redhat.com>2017-08-22 17:02:14 +0100
commit5277199aeb328247d5d37ad6f34e4cf200fe42fa (patch)
tree6916fe13980e4336ce71abc1f8716f9ae11193b7 /gdb/testsuite/gdb.cp
parentb270e6f9e09814c82e198859f218b37118eaf098 (diff)
Add test for "List actual code around more than one location" change
This adds a test for the "list" command change done in 0d999a6ef0f9 ("List actual code around more than one location"). gdb/ChangeLog: 2017-08-22 Pedro Alves <palves@redhat.com> * gdb.cp/overload.exp (line_range_pattern): New procedure. (top level): Add "list all overloads" tests.
Diffstat (limited to 'gdb/testsuite/gdb.cp')
-rw-r--r--gdb/testsuite/gdb.cp/overload.exp34
1 files changed, 33 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.cp/overload.exp b/gdb/testsuite/gdb.cp/overload.exp
index 77a250505a..8cb9311d39 100644
--- a/gdb/testsuite/gdb.cp/overload.exp
+++ b/gdb/testsuite/gdb.cp/overload.exp
@@ -263,10 +263,24 @@ gdb_test "print bar(d)" "= 22"
# List overloaded functions.
+gdb_test_no_output "set listsize 1" ""
+
+# Build source listing pattern based on an inclusive line range.
+
+proc line_range_pattern { range_start range_end } {
+ global line_re
+
+ for {set i $range_start} {$i <= $range_end} {incr i} {
+ append pattern "\r\n$i\[ \t\]\[^\r\n\]*"
+ }
+
+ verbose -log "pattern $pattern"
+ return $pattern
+}
+
# The void case is tricky because some compilers say "(void)"
# and some compilers say "()".
-gdb_test_no_output "set listsize 1" ""
gdb_test_multiple "info func overloadfnarg" "list overloaded function with no args" {
-re ".*overloadfnarg\\(void\\).*$gdb_prompt $" {
# gcc 2
@@ -324,6 +338,24 @@ gdb_test "print N::nsoverload ()" " = 1"
gdb_test "print N::nsoverload (2)" " = 2"
gdb_test "print N::nsoverload (2, 3)" " = 5"
+# Test "list function" when there are multiple "function" overloads.
+
+with_test_prefix "list all overloads" {
+ # Bump up listsize again, to make sure the number of lines to
+ # display before/after each location is computed correctly.
+ gdb_test_no_output "set listsize 10"
+
+ set line_bar_A [gdb_get_line_number "int bar (A)"]
+ set line_bar_B [gdb_get_line_number "int bar (B)"]
+ set lines1 [line_range_pattern [expr $line_bar_A - 5] [expr $line_bar_A + 4]]
+ set lines2 [line_range_pattern [expr $line_bar_B - 5] [expr $line_bar_B + 4]]
+
+ set any "\[^\r\n\]*"
+ set h1_re "file: \"${any}overload.cc\", line number: $line_bar_A"
+ set h2_re "file: \"${any}overload.cc\", line number: $line_bar_B"
+ gdb_test "list bar" "${h1_re}${lines1}\r\n${h2_re}${lines2}"
+}
+
if ![runto 'XXX::marker2'] then {
perror "couldn't run to XXX::marker2"
continue