[gdb/testsuite] Handle with_set arch
authorTom de Vries <tdevries@suse.de>
Mon, 14 Nov 2022 11:12:19 +0000 (12:12 +0100)
committerTom de Vries <tdevries@suse.de>
Mon, 14 Nov 2022 11:12:19 +0000 (12:12 +0100)
I realized that the more irregular output of show arch:
...
(gdb) show arch^M
The target architecture is set to "auto" (currently "i386").^M
...
would be a problem for something like:
...
with_set arch powerpc:common64 {}
...
and indeed:
...
(gdb) set arch powerpc:common64^M
The target architecture is set to "powerpc:common64".^M
(gdb) FAIL: gdb.base/foo.exp: set arch powerpc:common64
...
and:
...
(gdb) set arch set to "auto" (currently "i386")^M
Undefined item: "set".^M
...

Fix this in with_set by handling this type of output.

Tested on x86_64-linux.

gdb/testsuite/lib/gdb.exp

index 40a7c7728d1db5866e78f31b32842c64d2d29f29..bdb8da9daf98660fbd9bda4d6d68e410aec0bb29 100644 (file)
@@ -5924,18 +5924,36 @@ proc with_set { var val body } {
        }
     }
 
+    # Handle 'set to "auto" (currently "i386")'.
+    set save [regsub {^set to} $save ""]
+    set save [regsub {\([^\r\n]+\)$} $save ""]
+    set save [string trim $save]
+    set save [regsub -all {^"|"$} $save ""]
+
     if { $save == "" } {
        perror "Did not manage to set $var"
     } else {
        # Set var.
-       gdb_test_no_output -nopass "set $var $val"
+       set cmd "set $var $val"
+       gdb_test_multiple $cmd "" {
+           -re -wrap "^$cmd" {
+           }
+           -re -wrap " is set to \"?$val\"?\\." {
+           }
+       }
     }
 
     set code [catch {uplevel 1 $body} result]
 
     # Restore saved setting.
     if { $save != "" } {
-       gdb_test_no_output -nopass "set $var $save"
+       set cmd "set $var $save"
+       gdb_test_multiple $cmd "" {
+           -re -wrap "^$cmd" {
+           }
+           -re -wrap "is set to \"?$save\"?( \\(\[^)\]*\\))?\\." {
+           }
+       }
     }
 
     if {$code == 1} {