]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[gdb/testsuite] Fix gdb.mi/mi-dprintf.exp with read1
authorTom de Vries <tdevries@suse.de>
Sun, 14 Jan 2024 09:21:46 +0000 (10:21 +0100)
committerTom de Vries <tdevries@suse.de>
Sun, 14 Jan 2024 09:21:46 +0000 (10:21 +0100)
When running test-case gdb.mi/mi-dprintf.exp with check-read1, I run into:
...
(gdb) ^M
PASS: gdb.mi/mi-dprintf.exp: gdb: mi 2nd dprintf stop
-data-evaluate-expression stderr^M
^done,value="0x7ffff7e4a420 <_IO_2_1_stderr_>"^M
(gdb) FAIL: gdb.mi/mi-dprintf.exp: stderr symbol check
...

The problem is in proc mi_gdb_is_stderr_available:
...
proc mi_gdb_is_stderr_available {} {
    set has_stderr_symbol false
    gdb_test_multiple "-data-evaluate-expression stderr" "stderr symbol check" {
-re "\\^error,msg=\"'stderr' has unknown type; cast it to its declared type\"\r\n$::mi_gdb_prompt$" {
}
-re "$::mi_gdb_prompt$" {
    set has_stderr_symbol true
}
     }
...
which uses a gdb_test_multiple that is supposed to use the mi prompt, but
doesn't use -prompt to indicate this.  Consequently, the default patterns use
the regular gdb prompt, which trigger earlier than the two custom patterns
which use "$::mi_gdb_prompt$".

Fix this by adding the missing -prompt "$::mi_gdb_prompt$" arguments.

While we're at it, make the gdb_test_multiple call a bit more readable by
using variables, and by using -wrap.

Tested on x86_64-linux, with:
- gcc and clang (to trigger both the has_stderr_symbol true and false cases)
- make check and make check-read1.

gdb/testsuite/lib/mi-support.exp

index 86868c54ffa46ae0f0ee97784f08b582ab47cc1f..001e4ee0970c15b7645d3d962a581b6f53f99ca1 100644 (file)
@@ -2946,13 +2946,18 @@ proc foreach_mi_ui_mode { var_name body } {
 # Check if GDB has information about the stderr symbol.
 proc mi_gdb_is_stderr_available {} {
     set has_stderr_symbol false
-    gdb_test_multiple "-data-evaluate-expression stderr" "stderr symbol check" {
-       -re "\\^error,msg=\"'stderr' has unknown type; cast it to its declared type\"\r\n$::mi_gdb_prompt$" {
+
+    set cmd "-data-evaluate-expression stderr"
+    set test "stderr symbol check"
+    set msg_re {"'stderr' has unknown type; cast it to its declared type"}
+    gdb_test_multiple $cmd $test -prompt "$::mi_gdb_prompt$" {
+       -re -wrap "\\^error,msg=$msg_re" {
            # Default value of false is fine.
        }
-       -re "$::mi_gdb_prompt$" {
+       -re -wrap "" {
            set has_stderr_symbol true
        }
     }
+
     return $has_stderr_symbol
 }