diff options
author | Simon Marchi <simon.marchi@polymtl.ca> | 2021-12-07 21:56:48 -0500 |
---|---|---|
committer | Simon Marchi <simon.marchi@efficios.com> | 2021-12-09 14:03:08 -0500 |
commit | 3d950cb72ded46673bafb21a00252afd5bc1cbbe (patch) | |
tree | f34a7498cce2eef826ce4df25dfa26de42093e4a | |
parent | ab7baf103d2fb381361da3257b971a372a449f50 (diff) | |
download | gdb-3d950cb72ded46673bafb21a00252afd5bc1cbbe.zip gdb-3d950cb72ded46673bafb21a00252afd5bc1cbbe.tar.gz gdb-3d950cb72ded46673bafb21a00252afd5bc1cbbe.tar.bz2 |
gdb/testsuite: fix default behavior of runto
The documented behavior of proc runto is to not emit a PASS when
succeeding to to run to the specified location, but emit a FAIL when
failing to do so. I suppose the intent is that it won't pollute the
results normally passing tests (although I don't see why we would care),
but make visible any problems.
However, it seems like the implementation makes it default to never
print anything. "no-message" is prependend to "args", so if "message"
is not passed, we will always take the path that sets print_fail to 0,
which will silence any failure.
This unfortunately means that tests relying on runto_main won't emit a
FAIL if failing to run to main. And since commit 4dfef5be6812
("gdb/testsuite: make runto_main not pass no-message to runto"), tests
don't emit a FAIL themselves when failing to run to main. This means
that tests failing to run to main just fail silently, and that's bad.
This can be reproduced by hacking gdb.base/template.exp like so:
diff --git a/gdb/testsuite/gdb.base/template.c b/gdb/testsuite/gdb.base/template.c
index bcf39c377d92..052be5b79d73 100644
--- a/gdb/testsuite/gdb.base/template.c
+++ b/gdb/testsuite/gdb.base/template.c
@@ -15,6 +15,14 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
+#include <stdlib.h>
+
+__attribute__((constructor))
+static void c (void)
+{
+ exit (1);
+}
+
int
main (void)
{
Running the modified gdb.base/template.exp shows that it exits without
printing any result.
Remove the line that prepends no-message to args, that should make
runto's behavior match its documentation.
This patch will appear to add many failures, but in reality they already
existed, they were just silenced.
Change-Id: I2a730d5bc72b6ef0698cd6aad962d9902aa7c3d6
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 8b7445b..95220f6 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -616,7 +616,7 @@ proc gdb_breakpoint { function args } { # # If there are additional arguments, pass them to gdb_breakpoint. # We recognize no-message/message ourselves. -# The default is no-message. +# # no-message is messed up here, like gdb_breakpoint: to preserve # historical usage fails are always printed by default. # no-message: turns off printing of fails (and passes, but they're already off) @@ -628,9 +628,6 @@ proc runto { function args } { delete_breakpoints - # Default to "no-message". - set args "no-message $args" - set print_pass 0 set print_fail 1 set no_message_loc [lsearch -exact $args no-message] |