public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH][gdb/testsuite] Make gdb.base/annota1.exp more robust
@ 2022-04-05 13:47 Tom de Vries
  2022-04-07 14:10 ` Tom Tromey
  2022-04-07 18:38 ` Simon Marchi
  0 siblings, 2 replies; 6+ messages in thread
From: Tom de Vries @ 2022-04-05 13:47 UTC (permalink / raw)
  To: gdb-patches

Hi,

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.

Any comments?

Thanks,
- Tom

[gdb/testsuite] Make gdb.base/annota1.exp more robust

---
 gdb/testsuite/gdb.base/annota1.exp | 71 +++++++++++++++++++++++++-------------
 1 file changed, 47 insertions(+), 24 deletions(-)

diff --git a/gdb/testsuite/gdb.base/annota1.exp b/gdb/testsuite/gdb.base/annota1.exp
index c9544eec0ec..40a13e7cf19 100644
--- a/gdb/testsuite/gdb.base/annota1.exp
+++ b/gdb/testsuite/gdb.base/annota1.exp
@@ -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 ""]
 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH][gdb/testsuite] Make gdb.base/annota1.exp more robust
  2022-04-05 13:47 [PATCH][gdb/testsuite] Make gdb.base/annota1.exp more robust Tom de Vries
@ 2022-04-07 14:10 ` Tom Tromey
  2022-04-07 18:38 ` Simon Marchi
  1 sibling, 0 replies; 6+ messages in thread
From: Tom Tromey @ 2022-04-07 14:10 UTC (permalink / raw)
  To: Tom de Vries via Gdb-patches

>>>>> "Tom" == Tom de Vries via Gdb-patches <gdb-patches@sourceware.org> writes:

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

Tom> Tested on x86_64-linux.

Tom> Any comments?

It seems fine to me.
Thank you.

Tom

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH][gdb/testsuite] Make gdb.base/annota1.exp more robust
  2022-04-05 13:47 [PATCH][gdb/testsuite] Make gdb.base/annota1.exp more robust Tom de Vries
  2022-04-07 14:10 ` Tom Tromey
@ 2022-04-07 18:38 ` Simon Marchi
  2022-04-08  9:04   ` Tom de Vries
  1 sibling, 1 reply; 6+ messages in thread
From: Simon Marchi @ 2022-04-07 18:38 UTC (permalink / raw)
  To: Tom de Vries, gdb-patches

On 2022-04-05 09:47, Tom de Vries via Gdb-patches wrote:
> Hi,
> 
> 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.
> 
> Any comments?
> 
> Thanks,
> - Tom

Hi Tom,

This introduces a failure on Ubuntu 20.04 and on Arch Linux.

    PASS: gdb.base/annota1.exp: breakpoint info
    run^M
    ^M
    ^Z^Zpost-prompt^M
    Starting program: /home/smarchi/build/binutils-gdb/gdb/testsuite/outputs/gdb.base/annota1/annota1 ^M
    ^M
    ^Z^Zbreakpoints-invalid^M
    ^M
    ^Z^Zstarting^M
    ^M
    ^Z^Zframes-invalid^M
    ^M
    ^Z^Zbreakpoints-invalid^M
    ^M
    ^Z^Zbreakpoint 1^M
    ^M
    Breakpoint 1, ^M
    ^Z^Zframe-begin 0 0x555555555183^M
    ^M
    ^Z^Zframe-function-name^M
    main^M
    ^Z^Zframe-args^M
     ()^M
    ^Z^Zframe-source-begin^M
     at ^M
    ^Z^Zframe-source-file^M
    /home/smarchi/src/binutils-gdb/gdb/testsuite/gdb.base/annota1.c^M
    ^Z^Zframe-source-file-end^M
    :^M
    ^Z^Zframe-source-line^M
    15^M
    ^Z^Zframe-source-end^M
    ^M
    ^M
    ^Z^Zsource /home/smarchi/src/binutils-gdb/gdb/testsuite/gdb.base/annota1.c:15:103:beg:0x555555555183^M
    ^M
    ^Z^Zframe-end^M
    ^M
    ^Z^Zstopped^M
    ^M
    ^Z^Zpre-prompt^M
    (gdb) ^M
    ^Z^Zprompt^M
    FAIL: gdb.base/annota1.exp: run until main breakpoint (timeout)

The issue is the now hardcoded order of "breakpoints-invalid" and
"frames-invalid" order in the test regexp, where the output happens in
the other order.  Before your change, we had:

	 "\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)*\r\n\r\n" \

Meaning we didn't care about the order of those, and we didn't care if
we saw them or not.  The change below moves those lines in optional_re,
and fixes things on my side.


From ce3aa014dc9739f2ccaccc6348b795ce1d86366a Mon Sep 17 00:00:00 2001
From: Simon Marchi <simon.marchi@polymtl.ca>
Date: Thu, 7 Apr 2022 14:36:27 -0400
Subject: [PATCH] fix

Change-Id: I9ea90dd0d162764b5b6d395c033d73e4d096cf51
---
 gdb/testsuite/gdb.base/annota1.exp | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/gdb/testsuite/gdb.base/annota1.exp b/gdb/testsuite/gdb.base/annota1.exp
index 40a13e7cf190..f7e108758b18 100644
--- a/gdb/testsuite/gdb.base/annota1.exp
+++ b/gdb/testsuite/gdb.base/annota1.exp
@@ -23,8 +23,6 @@ if ![target_can_use_run_cmd] {
     return 0
 }
 
-set breakpoints_invalid "\r\n\032\032breakpoints-invalid\r\n"
-
 #
 # test running programs
 #
@@ -140,6 +138,8 @@ set libthread_db_re \
     [multi_line \
 	 "\\\[Thread debugging using libthread_db enabled\\\]" \
 	 "Using host libthread_db library \[^\r\n\]+\r\n"]
+set breakpoints_invalid_re "\r\n\032\032breakpoints-invalid\r\n"
+set frames_invalid_re "\r\n\032\032frames-invalid\r\n"
 
 set optional_re \
     [list \
@@ -151,6 +151,10 @@ set optional_re \
 	 "\($libthread_db_re\)" \
 	 "|" \
 	 "\(\r\n$warning_gdb_index_re\)?" \
+	 "|" \
+	 "\($breakpoints_invalid_re\)" \
+	 "|" \
+	 "\($frames_invalid_re\)" \
 	 "\)*"]
 set optional_re [join $optional_re ""]
 
@@ -161,10 +165,6 @@ set run_re \
 	 $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, " \
@@ -267,7 +267,7 @@ gdb_test_multiple "break printf" "break printf" {
 #
 # get to printf
 #
-set pat_begin "\r\n\032\032post-prompt\r\nContinuing.\r\n\r\n\032\032starting\r\n\r\n\032\032frames-invalid\r\n${breakpoints_invalid}\r\n\032\032frames-invalid\r\n"
+set pat_begin "\r\n\032\032post-prompt\r\nContinuing.\r\n\r\n\032\032starting\r\n\r\n\032\032frames-invalid\r\n${breakpoints_invalid_re}\r\n\032\032frames-invalid\r\n"
 set pat_adjust "warning: Breakpoint 3 address previously adjusted from $hex to $hex.\r\n"
 set pat_end "\r\n\032\032breakpoint 3\r\n\r\nBreakpoint 3, \r\n\032\032frame-begin 0 $hex\r\n\r\n(\032\032frame-address\r\n$hex\r\n\032\032frame-address-end\r\n in \r\n)*.*\032\032frame-function-name\r\n.*printf(@.*)?\r\n\032\032frame-args\r\n.*\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$"
 
@@ -336,19 +336,19 @@ if [target_info exists gdb,nosignals] {
 # delete all the breakpoints
 #
 gdb_test_multiple "delete 1" "delete bp 1" {
-    -re "\r\n\032\032post-prompt\r\n${breakpoints_invalid}$gdb_prompt$" {
+    -re "\r\n\032\032post-prompt\r\n${breakpoints_invalid_re}$gdb_prompt$" {
 	pass $gdb_test_name
     }
 }
 
 gdb_test_multiple "delete 2" "delete bp 2" {
-    -re "\r\n\032\032post-prompt\r\n${breakpoints_invalid}$gdb_prompt$" {
+    -re "\r\n\032\032post-prompt\r\n${breakpoints_invalid_re}$gdb_prompt$" {
 	pass $gdb_test_name
     }
 }
 
 gdb_test_multiple "delete 3" "delete bp 3" {
-    -re "\r\n\032\032post-prompt\r\n${breakpoints_invalid}$gdb_prompt$" {
+    -re "\r\n\032\032post-prompt\r\n${breakpoints_invalid_re}$gdb_prompt$" {
 	pass $gdb_test_name
     }
 }

base-commit: 4f7df13ee75be36ae5c6046b6d6f60e04498b719
-- 
2.35.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH][gdb/testsuite] Make gdb.base/annota1.exp more robust
  2022-04-07 18:38 ` Simon Marchi
@ 2022-04-08  9:04   ` Tom de Vries
  2022-04-11  8:43     ` Tom de Vries
  0 siblings, 1 reply; 6+ messages in thread
From: Tom de Vries @ 2022-04-08  9:04 UTC (permalink / raw)
  To: Simon Marchi, gdb-patches

[-- Attachment #1: Type: text/plain, Size: 3118 bytes --]

On 4/7/22 20:38, Simon Marchi wrote:
> On 2022-04-05 09:47, Tom de Vries via Gdb-patches wrote:
>> Hi,
>>
>> 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.
>>
>> Any comments?
>>
>> Thanks,
>> - Tom
> 
> Hi Tom,
> 
> This introduces a failure on Ubuntu 20.04 and on Arch Linux.
> 
>      PASS: gdb.base/annota1.exp: breakpoint info
>      run^M
>      ^M
>      ^Z^Zpost-prompt^M
>      Starting program: /home/smarchi/build/binutils-gdb/gdb/testsuite/outputs/gdb.base/annota1/annota1 ^M
>      ^M
>      ^Z^Zbreakpoints-invalid^M
>      ^M
>      ^Z^Zstarting^M
>      ^M
>      ^Z^Zframes-invalid^M
>      ^M
>      ^Z^Zbreakpoints-invalid^M
>      ^M
>      ^Z^Zbreakpoint 1^M
>      ^M
>      Breakpoint 1, ^M
>      ^Z^Zframe-begin 0 0x555555555183^M
>      ^M
>      ^Z^Zframe-function-name^M
>      main^M
>      ^Z^Zframe-args^M
>       ()^M
>      ^Z^Zframe-source-begin^M
>       at ^M
>      ^Z^Zframe-source-file^M
>      /home/smarchi/src/binutils-gdb/gdb/testsuite/gdb.base/annota1.c^M
>      ^Z^Zframe-source-file-end^M
>      :^M
>      ^Z^Zframe-source-line^M
>      15^M
>      ^Z^Zframe-source-end^M
>      ^M
>      ^M
>      ^Z^Zsource /home/smarchi/src/binutils-gdb/gdb/testsuite/gdb.base/annota1.c:15:103:beg:0x555555555183^M
>      ^M
>      ^Z^Zframe-end^M
>      ^M
>      ^Z^Zstopped^M
>      ^M
>      ^Z^Zpre-prompt^M
>      (gdb) ^M
>      ^Z^Zprompt^M
>      FAIL: gdb.base/annota1.exp: run until main breakpoint (timeout)
> 
> The issue is the now hardcoded order of "breakpoints-invalid" and
> "frames-invalid" order in the test regexp, where the output happens in
> the other order.  Before your change, we had:
> 
> 	 "\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)*\r\n\r\n" \
> 
> Meaning we didn't care about the order of those, and we didn't care if
> we saw them or not.  The change below moves those lines in optional_re,
> and fixes things on my side.
> 

Hi Simon,

thanks for reporting this.

I managed to reproduce on openSUSE Leap 15.3 with target board 
unix/-pie/-fPIE, and on ubuntu 20.04.

AFAICT, the issue is not a different order, but an additional 
annotation, and looking at the log you've posted above, I see the same.

I've wrote attached patch which fixes it, I've tested on both openSUSE 
and Ubuntu.

WDYT?

Thanks,
- Tom

[-- Attachment #2: 0001-gdb-testsuite-Fix-gdb.base-annota1.exp-with-pie.patch --]
[-- Type: text/x-patch, Size: 1229 bytes --]

[gdb/testsuite] Fix gdb.base/annota1.exp with pie

Since commit 359efc2d894 ("[gdb/testsuite] Make gdb.base/annota1.exp more
robust") we see this fail with target board unix/-fPIE/-pie:
...
FAIL: gdb.base/annota1.exp: run until main breakpoint (timeout)
...

The problem is that the commit makes the number and order of matched
annotations fixed, while between target boards unix and unix/-fPIE/-pie there
is a difference:
...
 \032\032post-prompt
 Starting program: outputs/gdb.base/annota1/annota1

+\032\032breakpoints-invalid
+
 \032\032starting

 \032\032frames-invalid
...

Fix this by optionally matching the additional annotation.

Tested on x86_64-linux.

---
 gdb/testsuite/gdb.base/annota1.exp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gdb/testsuite/gdb.base/annota1.exp b/gdb/testsuite/gdb.base/annota1.exp
index 40a13e7cf19..ac6ad6478f4 100644
--- a/gdb/testsuite/gdb.base/annota1.exp
+++ b/gdb/testsuite/gdb.base/annota1.exp
@@ -159,6 +159,8 @@ set run_re \
 	 "\r\n\032\032post-prompt\r\n" \
 	 "Starting program: $binexp \r\n" \
 	 $optional_re \
+	 "\(\r\n\032\032breakpoints-invalid\r\n\)?" \
+	 $optional_re \
 	 "\r\n\032\032starting\r\n" \
 	 $optional_re \
 	 "\r\n\032\032frames-invalid\r\n" \

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH][gdb/testsuite] Make gdb.base/annota1.exp more robust
  2022-04-08  9:04   ` Tom de Vries
@ 2022-04-11  8:43     ` Tom de Vries
  2022-04-11 15:21       ` Simon Marchi
  0 siblings, 1 reply; 6+ messages in thread
From: Tom de Vries @ 2022-04-11  8:43 UTC (permalink / raw)
  To: Simon Marchi, gdb-patches

On 4/8/22 11:04, Tom de Vries wrote:
> On 4/7/22 20:38, Simon Marchi wrote:
>> On 2022-04-05 09:47, Tom de Vries via Gdb-patches wrote:
>>> Hi,
>>>
>>> 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.
>>>
>>> Any comments?
>>>
>>> Thanks,
>>> - Tom
>>
>> Hi Tom,
>>
>> This introduces a failure on Ubuntu 20.04 and on Arch Linux.
>>
>>      PASS: gdb.base/annota1.exp: breakpoint info
>>      run^M
>>      ^M
>>      ^Z^Zpost-prompt^M
>>      Starting program: 
>> /home/smarchi/build/binutils-gdb/gdb/testsuite/outputs/gdb.base/annota1/annota1 
>> ^M
>>      ^M
>>      ^Z^Zbreakpoints-invalid^M
>>      ^M
>>      ^Z^Zstarting^M
>>      ^M
>>      ^Z^Zframes-invalid^M
>>      ^M
>>      ^Z^Zbreakpoints-invalid^M
>>      ^M
>>      ^Z^Zbreakpoint 1^M
>>      ^M
>>      Breakpoint 1, ^M
>>      ^Z^Zframe-begin 0 0x555555555183^M
>>      ^M
>>      ^Z^Zframe-function-name^M
>>      main^M
>>      ^Z^Zframe-args^M
>>       ()^M
>>      ^Z^Zframe-source-begin^M
>>       at ^M
>>      ^Z^Zframe-source-file^M
>>      /home/smarchi/src/binutils-gdb/gdb/testsuite/gdb.base/annota1.c^M
>>      ^Z^Zframe-source-file-end^M
>>      :^M
>>      ^Z^Zframe-source-line^M
>>      15^M
>>      ^Z^Zframe-source-end^M
>>      ^M
>>      ^M
>>      ^Z^Zsource 
>> /home/smarchi/src/binutils-gdb/gdb/testsuite/gdb.base/annota1.c:15:103:beg:0x555555555183^M 
>>
>>      ^M
>>      ^Z^Zframe-end^M
>>      ^M
>>      ^Z^Zstopped^M
>>      ^M
>>      ^Z^Zpre-prompt^M
>>      (gdb) ^M
>>      ^Z^Zprompt^M
>>      FAIL: gdb.base/annota1.exp: run until main breakpoint (timeout)
>>
>> The issue is the now hardcoded order of "breakpoints-invalid" and
>> "frames-invalid" order in the test regexp, where the output happens in
>> the other order.  Before your change, we had:
>>
>>      
>> "\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)*\r\n\r\n" 
>> \
>>
>> Meaning we didn't care about the order of those, and we didn't care if
>> we saw them or not.  The change below moves those lines in optional_re,
>> and fixes things on my side.
>>
> 
> Hi Simon,
> 
> thanks for reporting this.
> 
> I managed to reproduce on openSUSE Leap 15.3 with target board 
> unix/-pie/-fPIE, and on ubuntu 20.04.
> 
> AFAICT, the issue is not a different order, but an additional 
> annotation, and looking at the log you've posted above, I see the same.
> 
> I've wrote attached patch which fixes it, I've tested on both openSUSE 
> and Ubuntu.
> 
> WDYT?

Pushed, but now that I reply here I see I didn't fully read the 
rationale for the patch you posted, and didn't follow up on that, 
apologies for that.

So, perhaps you're right, perhaps we don't care about the order (though 
it would be nice for me to understand why we don't care).

I understood the matching in the test-case to be very loose due to 
having to juggle mostly the variance in non-annotation output.  So I 
decided to "fix" this by being as strict as possible in matching 
annotations, and as simple as possible in matching non-annotations.

I hope the committed patch will be sufficient though.

I you think there's still an issue, then I can revert and apply your patch.

Thanks,
- Tom

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH][gdb/testsuite] Make gdb.base/annota1.exp more robust
  2022-04-11  8:43     ` Tom de Vries
@ 2022-04-11 15:21       ` Simon Marchi
  0 siblings, 0 replies; 6+ messages in thread
From: Simon Marchi @ 2022-04-11 15:21 UTC (permalink / raw)
  To: Tom de Vries, gdb-patches

> Pushed, but now that I reply here I see I didn't fully read the rationale for the patch you posted, and didn't follow up on that, apologies for that.
>
> So, perhaps you're right, perhaps we don't care about the order (though it would be nice for me to understand why we don't care).
>
> I understood the matching in the test-case to be very loose due to having to juggle mostly the variance in non-annotation output.  So I decided to "fix" this by being as strict as possible in matching annotations, and as simple as possible in matching non-annotations.
>
> I hope the committed patch will be sufficient though.
>
> I you think there's still an issue, then I can revert and apply your patch.

I'm happy with your explanation and your patch.  It seems to fix the
issue I observed, it's possible that I did not analyze the problem
correctly.  Thanks!

Simon

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-04-11 15:21 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-05 13:47 [PATCH][gdb/testsuite] Make gdb.base/annota1.exp more robust Tom de Vries
2022-04-07 14:10 ` Tom Tromey
2022-04-07 18:38 ` Simon Marchi
2022-04-08  9:04   ` Tom de Vries
2022-04-11  8:43     ` Tom de Vries
2022-04-11 15:21       ` Simon Marchi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).