public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Bruno Larsen <blarsen@redhat.com>
To: gdb-patches@sourceware.org
Subject: [PATCH v4 01/15] gdb/testsuite: introduce gdb_step_until_regexp
Date: Wed, 20 Jul 2022 16:44:27 -0300	[thread overview]
Message-ID: <20220720194441.168906-3-blarsen@redhat.com> (raw)
In-Reply-To: <20220720194441.168906-1-blarsen@redhat.com>

Currently, GDB's testsuite uses a set amount of step commands to exit
functions. This is a problem if a compiler emits different epilogue
information from gcc, or emits no epilogue information at all. It was
most noticeable if Clang was used to test GDB.

To fix this unreliability, this commit introduces a new proc that will
step the inferior until it is stopped at a line that matches the given
regexp, or until it steps too many times - defined as an optional
argument. If the line is found, it shows up as a single PASS in the
test, and if the line is not found, a single FAIL is emitted.

This patch only introduces this proc, but does not add it to any
existing tests, these will be introduced in the following commit.
---
 gdb/testsuite/lib/gdb.exp | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 698dd14504e..aae5cb31255 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -8832,5 +8832,35 @@ gdb_caching_proc arm_cc_for_target {
     return ""
 }
 
+# Step until the pattern REGEXP is found.  Step at most
+# MAX_STEPS times, but stop stepping once REGEXP is found.
+#
+# If REGEXP is found then a single pass is emitted, otherwise, after
+# MAX_STEPS steps, a single fail is emitted.
+#
+# TEST_NAME is the name used in the pass/fail calls.
+
+proc gdb_step_until { regexp {test_name ""} {max_steps 10} } {
+    if { $test_name == "" } {
+	set test_name "stepping until regexp"
+    }
+
+    set count 0
+    gdb_test_multiple "step" "$test_name" {
+	-re "$regexp\r\n$::gdb_prompt $" {
+	    pass $test_name
+	}
+	-re ".*$::gdb_prompt $" {
+	    if {$count < $max_steps} {
+		incr count
+		send_gdb "step\n"
+		exp_continue
+	    } else {
+		fail $test_name
+	    }
+	}
+    }
+}
+
 # Always load compatibility stuff.
 load_lib future.exp
-- 
2.31.1


  parent reply	other threads:[~2022-07-20 19:45 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-20 19:44 [PATCH v4 00/15] Clean gdb.base when testing with clang Bruno Larsen
2022-07-20 19:44 ` [PATCH v4 01/15] gdb/testsuite: introduce gdb_step_until Bruno Larsen
2022-07-20 19:44 ` Bruno Larsen [this message]
2022-07-20 19:44 ` [PATCH v4 02/15] gdb/testsuite: Add a proc to test where compiler links the epilogue Bruno Larsen
2022-09-13 12:17   ` Andrew Burgess
2022-07-20 19:44 ` [PATCH v4 03/15] Change gdb.base/skip-solib.exp deal with lack of epilogue information Bruno Larsen
2022-09-10  9:53   ` Andrew Burgess
2022-07-20 19:44 ` [PATCH v4 04/15] gdb/testsuite: change gdb.base/nodebug.exp to not fail with clang Bruno Larsen
2022-09-12  9:08   ` Andrew Burgess
2022-09-12 12:17     ` Bruno Larsen
2022-07-20 19:44 ` [PATCH v4 05/15] update gdb.base/info-program.exp " Bruno Larsen
2022-09-12  9:34   ` Andrew Burgess
2022-09-12 12:18     ` Bruno Larsen
2022-07-20 19:44 ` [PATCH v4 06/15] fix gdb.base/access-mem-running.exp for clang testing Bruno Larsen
2022-09-12  9:41   ` Andrew Burgess
2022-09-12 12:18     ` Bruno Larsen
2022-07-20 19:44 ` [PATCH v4 07/15] Fix gdb.base/call-ar-st to work with Clang Bruno Larsen
2022-09-12 10:30   ` Andrew Burgess
2022-09-12 12:18     ` Bruno Larsen
2022-07-20 19:44 ` [PATCH v4 08/15] add xfails to gdb.base/complex-parts.exp when testing with clang Bruno Larsen
2022-09-12 10:49   ` Andrew Burgess
2022-09-12 12:18     ` Bruno Larsen
2022-07-20 19:44 ` [PATCH v4 09/15] gdb/testsuite: fix gdb.base/msym-bp-shl when running with Clang Bruno Larsen
2022-09-12 10:58   ` Andrew Burgess
2022-09-12 12:30     ` Bruno Larsen
2022-07-20 19:44 ` [PATCH v4 10/15] explicitly test for stderr in gdb.base/dprintf.exp Bruno Larsen
2022-09-12 12:20   ` Andrew Burgess
2022-09-13 12:08     ` Bruno Larsen
2022-07-20 19:44 ` [PATCH v4 11/15] gdb/testsuite: Update gdb.base/so-impl-ld.exp Bruno Larsen
2022-09-12 12:30   ` Andrew Burgess
2022-09-13 12:08     ` Bruno Larsen
2022-07-20 19:44 ` [PATCH v4 12/15] [gdb/testsuite]: fix gdb.base/jit-elf.exp when testing with clang Bruno Larsen
2022-09-12 12:54   ` Andrew Burgess
2022-07-20 19:44 ` [PATCH v4 13/15] gdb/testsuite: fix gdb.base/info-types-c++ " Bruno Larsen
2022-09-12 14:35   ` Andrew Burgess
2022-09-14 11:31     ` Bruno Larsen
2022-07-20 19:44 ` [PATCH v4 14/15] gdb.base/skip.exp: Use finish to exit functions Bruno Larsen
2022-09-12 16:57   ` Andrew Burgess
2022-07-20 19:44 ` [PATCH v4 15/15] gdb/testsuite: Add test to step through function epilogue Bruno Larsen
2022-09-08 12:04   ` Andrew Burgess
2022-08-09 16:53 ` [PIING][PATCH v4 00/15] Clean gdb.base when testing with clang Bruno Larsen
2022-08-18  7:25 ` [PINGv2][PATCH " Bruno Larsen
2022-08-25  7:51   ` [PINGv3][PATCH " Bruno Larsen
2022-09-05 14:59     ` [PINGv4][PATCH " Bruno Larsen

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=20220720194441.168906-3-blarsen@redhat.com \
    --to=blarsen@redhat.com \
    --cc=gdb-patches@sourceware.org \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).