diff options
author | Pedro Alves <palves@redhat.com> | 2017-08-22 14:51:18 +0100 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2017-08-22 17:02:14 +0100 |
commit | 5277199aeb328247d5d37ad6f34e4cf200fe42fa (patch) | |
tree | 6916fe13980e4336ce71abc1f8716f9ae11193b7 /gdb/testsuite/gdb.cp | |
parent | b270e6f9e09814c82e198859f218b37118eaf098 (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.exp | 34 |
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 |