[gdb/testsuite] Add untested case in gdb.gdb/complaints.exp

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.
This commit is contained in:
Tom de Vries
2021-09-03 17:40:10 +02:00
parent 5c177fed07
commit e34a209edf
2 changed files with 25 additions and 0 deletions

View 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

View 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"