[gdb/testsuite] Make gdb.base/annota1.exp more robust
authorTom de Vries <tdevries@suse.de>
Thu, 7 Apr 2022 17:25:26 +0000 (19:25 +0200)
committerTom de Vries <tdevries@suse.de>
Thu, 7 Apr 2022 17:25:26 +0000 (19:25 +0200)
On openSUSE Tumbleweed I run into:
...
FAIL: gdb.base/annota1.exp: run until main breakpoint (timeout)
...

The problem is that the libthread_db message occurs at a location where it's
not expected:
...
Starting program: outputs/gdb.base/annota1/annota1 ^M
^M
^Z^Zstarting^M
^M
^Z^Zframes-invalid^M
[Thread debugging using libthread_db enabled]^M
Using host libthread_db library "/lib64/libthread_db.so.1".^M
^M
^Z^Zbreakpoints-invalid^M
^M
...

Fix this by making the matching more robust:
- rewrite the regexp such that each annotation is on a single line,
  starting with \r\n\032\032 and ending with \r\n
- add a regexp variable optional_re, that matches all possible optional
  output, and use it as a separator in the first part of the regexp

Tested on x86_64-linux.

gdb/testsuite/gdb.base/annota1.exp

index c9544eec0ec1701b57979c2c3a2b5beb35f76c9f..40a13e7cf19033f3dce92a4c4c767fa4a6128646 100644 (file)
@@ -128,41 +128,64 @@ gdb_test_multiple "info break" "breakpoint info" {
 set binexp [string_to_regexp $binfile]
 
 set warning_slow_re \
-    "warning: File transfers from remote targets can be slow\[^\r\n\]+"
+    "warning: File transfers from remote targets can be slow\[^\r\n\]+\r\n"
 set warning_gdb_index_re \
     [multi_line \
         "warning: Skipping \[^\r\n\]+ .gdb_index section in \[^\r\n\]+" \
         "Do \"set use-deprecated-index-sections on\" before the file is read" \
-        "to use the section anyway\\."]
+        "to use the section anyway\\.\r\n"]
 set reading_re \
-    "Reading \[^\r\n\]+"
+    "Reading \[^\r\n\]+\r\n"
 set libthread_db_re \
     [multi_line \
         "\\\[Thread debugging using libthread_db enabled\\\]" \
-        "Using host libthread_db library \[^\r\n\]+"]
+        "Using host libthread_db library \[^\r\n\]+\r\n"]
 
-set run_re \
+set optional_re \
     [list \
-        "\r\n\032\032post-prompt\r\nStarting program: $binexp " \
-        "\(\(\r\n$reading_re\)|\(\r\n$warning_slow_re\)\)*" \
+        "\(" \
+        "\($reading_re)" \
+        "|" \
+        "\($warning_slow_re\)" \
+        "|" \
+        "\($libthread_db_re\)" \
+        "|" \
         "\(\r\n$warning_gdb_index_re\)?" \
-        "\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)*\r\n\r\n" \
-        "\032\032starting\(\(\r\n$reading_re\)|\(\r\n$warning_slow_re\)|\r\n$libthread_db_re\)*" \
-        "\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)*\r\n\r\n" \
-        "\032\032breakpoint 1\r\n\r\n" \
-        "Breakpoint 1, \r\n" \
-        "\032\032frame-begin 0 $hex\r\n\r\n" \
-        "\032\032frame-function-name\r\n" \
-        "main\r\n" \
-        "\032\032frame-args\r\n \\(\\)\r\n" \
-        "\032\032frame-source-begin\r\n at \r\n" \
-        "\032\032frame-source-file\r\n.*annota1.c\r\n" \
-        "\032\032frame-source-file-end\r\n:\r\n" \
-        "\032\032frame-source-line\r\n$main_line\r\n" \
-        "\032\032frame-source-end\r\n\r\n\r\n" \
-        "\032\032source.*$srcfile:$main_line:.*:beg:$hex\r\n\r\n" \
-        "\032\032frame-end\r\n\r\n" \
-        "\032\032stopped"]
+        "\)*"]
+set optional_re [join $optional_re ""]
+
+set run_re \
+    [list \
+        "\r\n\032\032post-prompt\r\n" \
+        "Starting program: $binexp \r\n" \
+        $optional_re \
+        "\r\n\032\032starting\r\n" \
+        $optional_re \
+        "\r\n\032\032frames-invalid\r\n" \
+        $optional_re \
+        "\r\n\032\032breakpoints-invalid\r\n" \
+        $optional_re \
+        "\r\n\032\032breakpoint 1\r\n" \
+        "\r\n" \
+        "Breakpoint 1, " \
+        "\r\n\032\032frame-begin 0 $hex\r\n" \
+        "\r\n\032\032frame-function-name\r\n" \
+        "main" \
+        "\r\n\032\032frame-args\r\n" \
+        " \\(\\)" \
+        "\r\n\032\032frame-source-begin\r\n" \
+        " at " \
+        "\r\n\032\032frame-source-file\r\n" \
+        ".*annota1.c" \
+        "\r\n\032\032frame-source-file-end\r\n" \
+        ":" \
+        "\r\n\032\032frame-source-line\r\n" \
+        "$main_line" \
+        "\r\n\032\032frame-source-end\r\n" \
+        "\r\n" \
+        "\r\n\032\032source.*$srcfile:$main_line:.*:beg:$hex\r\n" \
+        "\r\n\032\032frame-end\r\n" \
+        "\r\n\032\032stopped\r\n"]
 
 set run_re [join $run_re ""]