aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/testsuite/gdb.testsuite')
-rw-r--r--gdb/testsuite/gdb.testsuite/board-sanity.exp6
-rw-r--r--gdb/testsuite/gdb.testsuite/gdb-caching-proc-consistency.exp9
-rw-r--r--gdb/testsuite/gdb.testsuite/gdb-caching-proc.exp21
-rw-r--r--gdb/testsuite/gdb.testsuite/gdb_test_multiple-lbl.exp84
-rwxr-xr-x[-rw-r--r--]gdb/testsuite/gdb.testsuite/gdb_test_multiple-lbl.gdb (renamed from gdb/testsuite/gdb.testsuite/lmap.exp)19
-rw-r--r--gdb/testsuite/gdb.testsuite/mount-point-map.exp49
-rw-r--r--gdb/testsuite/gdb.testsuite/with-override.exp8
7 files changed, 174 insertions, 22 deletions
diff --git a/gdb/testsuite/gdb.testsuite/board-sanity.exp b/gdb/testsuite/gdb.testsuite/board-sanity.exp
index 9c80282..7b9a19e 100644
--- a/gdb/testsuite/gdb.testsuite/board-sanity.exp
+++ b/gdb/testsuite/gdb.testsuite/board-sanity.exp
@@ -44,7 +44,7 @@ proc test_remote { remote host_is_target } {
if { $host_is_target } {
set res [remote_file $other_remote exists $file]
gdb_assert { $res != $exists_ok } \
- "$other_remote copy does not exist"
+ "$other_remote copy does not exist"
}
}
@@ -80,7 +80,7 @@ proc test_remote { remote host_is_target } {
set build_file [remote_upload $remote $file]
gdb_assert { [string equal [file tail $build_file] $file] == 1 } \
"remote_upload returns valid value"
-
+
set res [remote_file $remote delete $file]
gdb_assert { [string equal $res $delete_ok] == 1 } \
"remove $remote copy"
@@ -92,7 +92,7 @@ proc test_remote { remote host_is_target } {
if { $host_is_target } {
set res [remote_file $other_remote exists $file]
gdb_assert { $res != $exists_ok } \
- "$other_remote copy does not exist"
+ "$other_remote copy does not exist"
}
set res [remote_file build exists $file]
diff --git a/gdb/testsuite/gdb.testsuite/gdb-caching-proc-consistency.exp b/gdb/testsuite/gdb.testsuite/gdb-caching-proc-consistency.exp
index 0957dbd..27f905e 100644
--- a/gdb/testsuite/gdb.testsuite/gdb-caching-proc-consistency.exp
+++ b/gdb/testsuite/gdb.testsuite/gdb-caching-proc-consistency.exp
@@ -63,8 +63,8 @@ proc test_file { file } {
set fp [open $file]
while { [gets $fp line] >= 0 } {
- if [regexp -- "^gdb_caching_proc \[ \t\]*(\[^ \t\]*)" $line \
- match procname] {
+ if { [regexp -- "^gdb_caching_proc \[ \t\]*(\[^ \t\]*)" $line \
+ match procname] } {
lappend procnames $procname
}
}
@@ -95,7 +95,8 @@ proc test_file { file } {
}
if { $setup_gdb } {
- clean_restart $obj
+ clean_restart
+ gdb_load $obj
}
test_proc $procname
@@ -113,7 +114,7 @@ if { ![gdb_simple_compile $me $src executable] } {
}
# Test gdb_caching_procs in gdb/testsuite/lib/*.exp
-set files [eval glob -types f $srcdir/lib/*.exp]
+set files [glob -types f $srcdir/lib/*.exp]
set files [lsort $files]
foreach file $files {
test_file $file
diff --git a/gdb/testsuite/gdb.testsuite/gdb-caching-proc.exp b/gdb/testsuite/gdb.testsuite/gdb-caching-proc.exp
index f9610af..6b46b1c 100644
--- a/gdb/testsuite/gdb.testsuite/gdb-caching-proc.exp
+++ b/gdb/testsuite/gdb.testsuite/gdb-caching-proc.exp
@@ -22,23 +22,32 @@ gdb_caching_proc gdb_testsuite_gdb_caching_proc_exp_arg { arg } {
return $arg
}
+gdb_caching_proc gdb_testsuite_gdb_caching_proc_exp_arg_nested { arg } {
+ incr ::count
+ return [gdb_testsuite_gdb_caching_proc_exp_arg $arg]
+}
+
+# List of "expected $::count after running expression" and
+# "expression".
set assertions {
- { [gdb_testsuite_gdb_caching_proc_exp_noarg] == 1 }
- { [gdb_testsuite_gdb_caching_proc_exp_arg 1] == 1 }
- { [gdb_testsuite_gdb_caching_proc_exp_arg "foo foo"] == "foo foo" }
+ 1 { [gdb_testsuite_gdb_caching_proc_exp_noarg] == 1 }
+ 1 { [gdb_testsuite_gdb_caching_proc_exp_arg 1] == 1 }
+ 1 { [gdb_testsuite_gdb_caching_proc_exp_arg "foo foo"] == "foo foo" }
+ 1 { [gdb_testsuite_gdb_caching_proc_exp_arg_nested "foo foo"] == "foo foo" }
+ 2 { [gdb_testsuite_gdb_caching_proc_exp_arg_nested "bar bar"] == "bar bar" }
}
set assertion_nr 0
-foreach assertion $assertions {
+foreach {expected_count assertion} $assertions {
with_test_prefix $assertion_nr {
set ::count 0
gdb_assert $assertion
- gdb_assert { $::count == 1 }
+ gdb_assert { $::count == $expected_count }
with_test_prefix cached {
gdb_assert $assertion
- gdb_assert { $::count == 1 }
+ gdb_assert { $::count == $expected_count }
}
}
incr assertion_nr
diff --git a/gdb/testsuite/gdb.testsuite/gdb_test_multiple-lbl.exp b/gdb/testsuite/gdb.testsuite/gdb_test_multiple-lbl.exp
new file mode 100644
index 0000000..a05ce61
--- /dev/null
+++ b/gdb/testsuite/gdb.testsuite/gdb_test_multiple-lbl.exp
@@ -0,0 +1,84 @@
+# Copyright 2025 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Test gdb_test_multiple -lbl, particularly with patterns that share a
+# common prefix.
+
+standard_testfile
+
+clean_restart
+
+gdb_test_no_output "source ${srcdir}/${subdir}/$testfile.gdb" \
+ "source gdb test script"
+
+set saw_prompt 0
+set saw_prefix 0
+set saw_command 0
+set saw_prefix_foo 0
+set saw_prefix_bar 0
+
+# #1 - We need anchors so that the "prefix foo" pattern below does not
+# match when the expect output buffer contains:
+#
+# "\r\nprefix xxx\r\n\prefix foo\r\n"
+#
+# #2 - We need an anchor on the prompt match as otherwise the prompt
+# regexp would match:
+#
+# "\r\nmeant-to-be-matched-by-lbl-2\r\nprefix xxx\r\n(gdb) "
+#
+# This test would fail if -lbl did not force the built-in prompt match
+# regexp to have an anchor as well, as without it, the built-in prompt
+# regexp would have the exact same issue as #2 above.
+
+gdb_test_multiple "command" "" -lbl {
+ -re "^command(?=\r\n)" {
+ verbose -log <COMMAND>
+ incr saw_command
+ exp_continue
+ }
+ -re "^\r\nprefix foo(?=\r\n)" {
+ verbose -log <PREFIX-FOO>
+ incr saw_prefix_foo
+ exp_continue
+ }
+ -re "^\r\nprefix bar(?=\r\n)" {
+ verbose -log <PREFIX-BAR>
+ incr saw_prefix_bar
+ exp_continue
+ }
+ -re "^\r\nprefix \[^\r\n\]*(?=\r\n)" {
+ verbose -log <PREFIX>
+ incr saw_prefix
+ exp_continue
+ }
+ -re "^\r\n$gdb_prompt $" {
+ verbose -log <PROMPT>
+ incr saw_prompt
+ pass $gdb_test_name
+ }
+}
+
+verbose -log "saw_command: $saw_command"
+verbose -log "saw_prefix_foo: $saw_prefix_foo"
+verbose -log "saw_prefix_bar: $saw_prefix_bar"
+verbose -log "saw_prefix: $saw_prefix"
+verbose -log "saw_prompt: $saw_prompt"
+
+gdb_assert {$saw_command == 1}
+gdb_assert {$saw_prefix_foo == 1}
+gdb_assert {$saw_prefix_bar == 1}
+gdb_assert {$saw_prefix == 3}
+gdb_assert {$saw_prompt == 1}
diff --git a/gdb/testsuite/gdb.testsuite/lmap.exp b/gdb/testsuite/gdb.testsuite/gdb_test_multiple-lbl.gdb
index da03722..8c94dfa 100644..100755
--- a/gdb/testsuite/gdb.testsuite/lmap.exp
+++ b/gdb/testsuite/gdb.testsuite/gdb_test_multiple-lbl.gdb
@@ -1,4 +1,5 @@
-# Copyright 2023-2025 Free Software Foundation, Inc.
+# Copyright 2025 Free Software Foundation, Inc.
+
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
@@ -12,9 +13,13 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-set one 1
-set l1 { $one 2 }
-set res1 [lmap item $l1 {expr $item + 1}]
-gdb_assert { [lindex $res1 0] == 2 }
-gdb_assert { [lindex $res1 1] == 3 }
-gdb_assert { $item == 2 }
+define command
+ echo prefix xxx\n
+ echo meant-to-be-matched-by-lbl-1\n
+ echo prefix foo\n
+ echo prefix bar\n
+ echo meant-to-be-matched-by-lbl-2\n
+ echo prefix xxx\n
+ echo prefix xxx\n
+ echo meant-to-be-matched-by-lbl-3\n
+end
diff --git a/gdb/testsuite/gdb.testsuite/mount-point-map.exp b/gdb/testsuite/gdb.testsuite/mount-point-map.exp
new file mode 100644
index 0000000..9e462bb
--- /dev/null
+++ b/gdb/testsuite/gdb.testsuite/mount-point-map.exp
@@ -0,0 +1,49 @@
+# Copyright 2025 Free Software Foundation, Inc.
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+set unix_to_win {
+ /bin C:/msys64/usr/bin
+ /c C:
+ / C:/msys64
+}
+
+# Test that FROM is normalized to TO.
+
+proc test {from to} {
+ set got [host_file_normalize_mingw $from $::unix_to_win]
+ verbose -log "input: $from"
+ verbose -log "expected: $to"
+ verbose -log "got: $got"
+ gdb_assert {$got == $to} $from
+}
+
+# Drive letters always get a '/' suffix, other Windows file names do
+# not.
+test "/" "C:/msys64"
+test "/c" "C:/"
+test "/bin" "C:/msys64/usr/bin"
+
+# A file name that already starts with a drive letter.
+test "C:/msys64" "C:/msys64"
+
+# A subdir/subfile under each mount.
+test "/foo" "C:/msys64/foo"
+test "/c/foo" "C:/foo"
+test "/bin/foo" "C:/msys64/usr/bin/foo"
+
+# Test slash normalization.
+test "//" "C:/msys64"
+test "/c///foo//bar//" "C:/foo/bar"
+# We don't currently handle UNC paths.
+test "//server///" "C:/msys64/server"
diff --git a/gdb/testsuite/gdb.testsuite/with-override.exp b/gdb/testsuite/gdb.testsuite/with-override.exp
index 9180150..2a316f9 100644
--- a/gdb/testsuite/gdb.testsuite/with-override.exp
+++ b/gdb/testsuite/gdb.testsuite/with-override.exp
@@ -42,6 +42,10 @@ with_test_prefix no-args {
gdb_assert { [foo] == 2 }
}
}
+
+ with_test_prefix "foo1 again" {
+ gdb_assert { [foo] == 1 }
+ }
}
with_test_prefix after {
@@ -50,11 +54,11 @@ with_test_prefix no-args {
}
proc foo { {a 0} } {
- return [expr $a + 1]
+ return [expr {$a + 1}]
}
proc foo_plus_1 { {a 0} } {
- return [expr $a + 2]
+ return [expr {$a + 2}]
}
with_test_prefix default-arg {