From: Tom de Vries via Gdb-patches <gdb-patches@sourceware.org>
To: gdb-patches@sourceware.org
Subject: [PATCH][gdb/testsuite] Add untested case in selftest_setup
Date: Thu, 2 Sep 2021 08:13:26 +0200 [thread overview]
Message-ID: <20210902061325.GA29918@delia> (raw)
Hi,
When building gdb with "-Wall -O2 -g -flto=auto", I run into:
...
FAIL: gdb.gdb/python-helper.exp: breakpoint in captured_main \
(got interactive prompt)
FAIL: gdb.gdb/python-helper.exp: run until breakpoint at captured_main
WARNING: Couldn't test self
...
and similar in gdb.gdb/selftest.exp.
The first FAIL in more detail:
...
(gdb) break captured_main^M
Function "captured_main" not defined.^M
Make breakpoint pending on future shared library load? (y or [n]) n^M
(gdb) FAIL: gdb.gdb/python-helper.exp: breakpoint in captured_main \
(got interactive prompt)
...
The problem is that lto has optimized away the captured_main function
and consequently the selftests dependent on that cannot run.
Fix this by:
- using gdb_breakpoint to detect failure to set the breakpoint
- handling the failure to set a breakpoint by calling untested
- not emitting the warning if we've already got untested
such that we have:
...
(gdb) UNTESTED: gdb.gdb/python-helper.exp: Cannot set breakpoint at \
captured_main, skipping testcase.
...
Any comments?
Thanks,
- Tom
[gdb/testsuite] Add untested case in selftest_setup
gdb/testsuite/ChangeLog:
2021-09-02 Tom de Vries <tdevries@suse.de>
* lib/selftest-support.exp: Emit untested when not being able to set
breakpoint.
---
gdb/testsuite/lib/selftest-support.exp | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/gdb/testsuite/lib/selftest-support.exp b/gdb/testsuite/lib/selftest-support.exp
index 4b96bf4f5f6..325ea997d5e 100644
--- a/gdb/testsuite/lib/selftest-support.exp
+++ b/gdb/testsuite/lib/selftest-support.exp
@@ -40,6 +40,8 @@ proc find_gdb { arg } {
# EXECUTABLE is the gdb to use.
# FUNCTION is the function to break in, either captured_main
# or captured_command_loop.
+# Return 0 in case of success, -1 in case of failure, and -2 in case of
+# skipping the test-case.
proc selftest_setup { executable function } {
global gdb_prompt
@@ -73,14 +75,14 @@ proc selftest_setup { executable function } {
if { $gdb_file_cmd_debug_info != "debug" } then {
untested "no debug information, skipping testcase."
- return -1
+ return -2
}
- # Set a breakpoint at main. Allow more than one location, as
- # workaround for PR26096 - "gdb sets breakpoint at cold clone".
- gdb_test "break $function" \
- "Breakpoint.*at.* (file.*, line|locations).*" \
- "breakpoint in $function"
+ # Set a breakpoint at $function.
+ if { [gdb_breakpoint $function "no-message"] != 1 } {
+ untested "Cannot set breakpoint at $function, skipping testcase."
+ return -2
+ }
# run yourself
# It may take a very long time for the inferior gdb to start (lynx),
@@ -165,7 +167,7 @@ proc do_self_tests {function body} {
gdb_exit
catch "remote_file host delete $file"
- if {$result < 0} then {
+ if {$result == -1} then {
warning "Couldn't test self"
}
}
next reply other threads:[~2021-09-02 6:13 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-02 6:13 Tom de Vries via Gdb-patches [this message]
2021-09-03 12:24 ` Simon Marchi via Gdb-patches
2021-09-03 14:40 ` [committed][gdb/testsuite] Add untested case in gdb.gdb/complaints.exp Tom de Vries via Gdb-patches
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210902061325.GA29918@delia \
--to=gdb-patches@sourceware.org \
--cc=tdevries@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox