[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 16:38:59 +02:00
parent 0b99a66053
commit 7a6cb96b71

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"