From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id CON5DuBwx2D+RQAAWB0awg (envelope-from ) for ; Mon, 14 Jun 2021 11:08:16 -0400 Received: by simark.ca (Postfix, from userid 112) id 395301F163; Mon, 14 Jun 2021 11:08:16 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.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 282B01E813 for ; Mon, 14 Jun 2021 11:08:15 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id DF12D3951429 for ; Mon, 14 Jun 2021 15:08:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DF12D3951429 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1623683294; bh=GZFNy5ZVdnHIMhJ9woKb9xya1F52AK1n5NbCstJFbpY=; 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=PGKSLVficgb6rzACcNQmQdsY+13H0V/303CKukVcOHWzC8jNH1hLbPSBZRTbBBc0m pOvOYGlu3D8EDBaXuWBiTEyiH2uEhSmvXkMj4xNXik38SRhZGIkOYeAEUv5Tnyx88n 40k7BR9xqDP8w3zyO9DWdJRBTs9cV6ddH/WEQqTk= Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by sourceware.org (Postfix) with ESMTPS id AF0303948A8D for ; Mon, 14 Jun 2021 14:57:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org AF0303948A8D IronPort-SDR: R7Oewk4Pux4Iv7VUdsPRm0m1ssPEkpOJvcIXDQcWXeoeHB6cUtiozqbE24VYKpKXitpUZc3bah 2lLMxPBNptoQ== X-IronPort-AV: E=McAfee;i="6200,9189,10015"; a="205781946" X-IronPort-AV: E=Sophos;i="5.83,273,1616482800"; d="scan'208";a="205781946" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jun 2021 07:57:54 -0700 IronPort-SDR: xlZDpVuyLCKZIJToo9kdq17NkNMUHbr7yvuXavsMKk46adSYFoWGkviPFkQuAlkBabGQbqJHzs kwEh5RJB0vwQ== X-IronPort-AV: E=Sophos;i="5.83,273,1616482800"; d="scan'208";a="420806957" Received: from mulvlfelix.iul.intel.com (HELO localhost) ([172.28.48.31]) by orsmga002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jun 2021 07:57:52 -0700 To: markus.t.metzger@intel.com, gdb-patches@sourceware.org Subject: [PATCH v2 11/12] gdb, testsuite, lib: Add libipt version check. Date: Mon, 14 Jun 2021 16:54:10 +0200 Message-Id: <20210614145411.689277-7-felix.willgerodt@intel.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: <20210614145411.689277-1-felix.willgerodt@intel.com> References: <20210614145411.689277-1-felix.willgerodt@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 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: Felix Willgerodt via Gdb-patches Reply-To: Felix Willgerodt Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" This adds a version test for libipt, which is needed by future commits. gdb/testsuite/ChangeLog: 2021-06-14 Felix Willgerodt * lib/gdb.exp (version_at_least): Add revision args. (tcl_version_at_least): Adjust call of version_at_least. (readelf_prints_pie): Same. (require_libipt_version): New function. --- gdb/testsuite/lib/gdb.exp | 69 +++++++++++++++++++++++++++++++++++---- 1 file changed, 63 insertions(+), 6 deletions(-) diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index d8c684c7238..d77fac5ae3a 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -1313,12 +1313,18 @@ proc gdb_test { args } { return [gdb_test_multiple $command $message $user_code] } -# Return 1 if version MAJOR.MINOR is at least AT_LEAST_MAJOR.AT_LEAST_MINOR. -proc version_at_least { major minor at_least_major at_least_minor} { +# Return 1 if version MAJOR.MINOR.REVISION is at least +# AT_LEAST_MAJOR.AT_LEAST_MINOR.AT_LEAST_REVISION. +proc version_at_least { major minor revision at_least_major at_least_minor \ + at_least_revision } { if { $major > $at_least_major } { return 1 } elseif { $major == $at_least_major \ - && $minor >= $at_least_minor } { + && $minor > $at_least_minor } { + return 1 + } elseif { $major == $at_least_major \ + && $minor == $at_least_minor \ + && $revision >= $at_least_revision } { return 1 } else { return 0 @@ -1330,8 +1336,8 @@ proc tcl_version_at_least { major minor } { global tcl_version regexp {^([0-9]+)\.([0-9]+)$} $tcl_version \ dummy tcl_version_major tcl_version_minor - return [version_at_least $tcl_version_major $tcl_version_minor \ - $major $minor] + return [version_at_least $tcl_version_major $tcl_version_minor 0 \ + $major $minor 0] } if { [tcl_version_at_least 8 5] == 0 } { @@ -3451,6 +3457,57 @@ gdb_caching_proc skip_btrace_pt_tests { return $skip_btrace_tests } +# Run a test on the target to see if we have a minimum libipt version. +# Return 0 if so, 1 if it does not. + +proc require_libipt_version { major minor revision } { + global srcdir subdir gdb_prompt inferior_exited_re + + set me "libipt_version_tests" + if { ![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"] } { + verbose "$me: target does not support btrace, returning 1" 2 + return 1 + } + + # Compile a test program. + set src { int main() { return 0; } } + if {![gdb_simple_compile $me $src executable]} { + return 1 + } + + # No error message, compilation succeeded so now run it via gdb. + + gdb_exit + gdb_start + gdb_reinitialize_dir $srcdir/$subdir + gdb_load $obj + if ![runto_main] { + return 1 + } + + gdb_test_no_output "record btrace pt" "$me: record btrace pt" + set actual_major "" + set actual_minor "" + set actual_revision "" + gdb_test_multiple "maint info btrace" "$me: maint info btrace" { + -re ".*Version: (\[0-9\]+)\.(\[0-9\]+)\.(\[0-9\]+).*$gdb_prompt $" { + append actual_major $expect_out(1,string) + append actual_minor $expect_out(2,string) + append actual_revision $expect_out(3,string) + } + default {} + } + + gdb_exit + remote_file build delete $obj + + verbose "$me: Using version: $actual_major.$actual_minor.$actual_revision" 2 + verbose "$me: Required minimum version: $major.$minor.$revision" 2 + + return [expr ![version_at_least $actual_major $actual_minor \ + $actual_revision $major $minor $revision]] +} + # Run a test on the target to see if it supports Aarch64 SVE hardware. # Return 0 if so, 1 if it does not. Note this causes a restart of GDB. @@ -6059,7 +6116,7 @@ proc readelf_prints_pie { } { # flag is printed by readelf, but we cannot reliably construct a PIE # executable if the multilib_flags dictate otherwise # (--target_board=unix/-no-pie/-fno-PIE). - return [version_at_least $major $minor 2 26] + return [version_at_least $major $minor 0 2 26 0] } # Return 1 if EXECUTABLE is a Position Independent Executable, 0 if it is not, -- 2.25.4 Intel Deutschland GmbH Registered Address: Am Campeon 10, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928