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.
}
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"