From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 0DyqOVRb2GJkTRcAWB0awg (envelope-from ) for ; Wed, 20 Jul 2022 15:45:24 -0400 Received: by simark.ca (Postfix, from userid 112) id E8CF61E5EA; Wed, 20 Jul 2022 15:45:24 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=VjUESI9/; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RDNS_DYNAMIC,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 9C6091E21F for ; Wed, 20 Jul 2022 15:45:24 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 03F8A3858404 for ; Wed, 20 Jul 2022 19:45:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 03F8A3858404 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1658346324; bh=JSZkCQLLmSAGeR6aDjjBRwwVBPryernrljCrOLaUEZw=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=VjUESI9/wcKP3XlEt3JmjV195C5aMd0MomkTf+TJt+kdAnKuTcbmCgN72+T0EK9qx NZpA9TX2zQvAhdaSeYQfcvqfKCih1qEM0B1P9evA4R93rR7iUzn2EjYCXUffiwe9a6 2USsIp1diPLFrerRWCsImP8o09NW9uMBfU8KD+g0= Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id B689038582B3 for ; Wed, 20 Jul 2022 19:45:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B689038582B3 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-655-qb2kC13mOKqPym4OVR4e4g-1; Wed, 20 Jul 2022 15:44:57 -0400 X-MC-Unique: qb2kC13mOKqPym4OVR4e4g-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id AEB8B800124 for ; Wed, 20 Jul 2022 19:44:56 +0000 (UTC) Received: from blarsen.com (ovpn-116-8.gru2.redhat.com [10.97.116.8]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D72D240C1288; Wed, 20 Jul 2022 19:44:55 +0000 (UTC) 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 Message-Id: <20220720194441.168906-3-blarsen@redhat.com> In-Reply-To: <20220720194441.168906-1-blarsen@redhat.com> References: <20220720194441.168906-1-blarsen@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Bruno Larsen via Gdb-patches Reply-To: Bruno Larsen Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" 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