[gdb/testsuite] Add untested case in gdb.gdb/complaints.exp
authorTom de Vries <tdevries@suse.de>
Fri, 3 Sep 2021 15:40:10 +0000 (17:40 +0200)
committerTom de Vries <tdevries@suse.de>
Fri, 3 Sep 2021 15:40:10 +0000 (17:40 +0200)
When building gdb with "-Wall -O2 -g -flto=auto", I run into:
...
(gdb) call clear_complaints()^M
No symbol "clear_complaints" in current context.^M
(gdb) FAIL: gdb.gdb/complaints.exp: clear complaints
...

The problem is that lto has optimized away clear_complaints, and consequently
the selftests cannot run.

Fix this by:
- using info function to detect presence of clear_complaints
- handling the absence of clear_complaints by calling untested
...
(gdb) UNTESTED: gdb.gdb/complaints.exp: \
  Cannot find clear_complaints, skipping test
...

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2021-09-03  Tom de Vries  <tdevries@suse.de>

* gdb.gdb/complaints.exp: Use untested if clear_complaints cannot
be found.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.gdb/complaints.exp

index 42aae6b30a6e062b886bc3b5adbb3e9a2329b437..ba3eb59f773bea10f852a8a806a1bd3964200009 100644 (file)
@@ -1,3 +1,8 @@
+2021-09-03  Tom de Vries  <tdevries@suse.de>
+
+       * gdb.gdb/complaints.exp: Use untested if clear_complaints cannot
+       be found.
+
 2021-09-03  Tom de Vries  <tdevries@suse.de>
 
        * lib/selftest-support.exp: Emit untested when not being able to set
index c70825b662315508f0faa5a300c12e02a1d7767b..2391d66125076a651eb2cc7bee23a9a9ea8f9d78 100644 (file)
@@ -104,6 +104,26 @@ proc test_empty_complaint { cmd msg } {
 }
 
 proc test_empty_complaints { } {
+    global decimal
+
+    set re [multi_line \
+               "All functions matching regular expression \[^:\]*:" \
+               "" \
+               "File \[^\r\n\]*/complaints\\.c:" \
+               "$decimal:\tvoid clear_complaints\\(\\);"]
+
+    set found 0
+    gdb_test_multiple "info function ^clear_complaints()$" "" {
+       -re -wrap $re {
+           set found 1
+       }
+       -re -wrap "" {
+       }
+    }
+    if { ! $found } {
+       untested "Cannot find clear_complaints, skipping test"
+       return 0
+    }
 
     test_empty_complaint "call clear_complaints()" \
            "clear complaints"
This page took 0.03287 seconds and 4 git commands to generate.