From: Felix Willgerodt via Gdb-patches <gdb-patches@sourceware.org>
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 [thread overview]
Message-ID: <20210614145411.689277-7-felix.willgerodt@intel.com> (raw)
In-Reply-To: <20210614145411.689277-1-felix.willgerodt@intel.com>
This adds a version test for libipt, which is needed by future commits.
gdb/testsuite/ChangeLog:
2021-06-14 Felix Willgerodt <felix.willgerodt@intel.com>
* 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 <http://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
next prev parent reply other threads:[~2021-06-14 15:08 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-14 14:54 [PATCH v2 05/12] python: Introduce gdb.RecordAuxiliary class Felix Willgerodt via Gdb-patches
2021-06-14 14:54 ` [PATCH v2 06/12] python: Add clear() to gdb.Record Felix Willgerodt via Gdb-patches
2021-06-14 15:52 ` Eli Zaretskii via Gdb-patches
2021-06-14 14:54 ` [PATCH v2 07/12] btrace, gdbserver: Add ptwrite to btrace_config_pt Felix Willgerodt via Gdb-patches
2021-06-14 15:53 ` Eli Zaretskii via Gdb-patches
2021-06-14 14:54 ` [PATCH v2 08/12] btrace, linux: Enable ptwrite packets Felix Willgerodt via Gdb-patches
2021-06-14 14:54 ` [PATCH v2 09/12] btrace, python: Enable ptwrite listener registration Felix Willgerodt via Gdb-patches
2021-06-15 23:41 ` Lancelot SIX via Gdb-patches
2021-06-16 7:26 ` Willgerodt, Felix via Gdb-patches
2021-06-14 14:54 ` [PATCH v2 10/12] btrace, python: Enable calling the ptwrite listener Felix Willgerodt via Gdb-patches
2021-06-14 14:54 ` Felix Willgerodt via Gdb-patches [this message]
2021-06-14 14:54 ` [PATCH v2 12/12] btrace: Extend ptwrite event decoding Felix Willgerodt via Gdb-patches
2021-06-15 11:50 ` Eli Zaretskii via Gdb-patches
2021-06-15 13:40 ` Willgerodt, Felix via Gdb-patches
2021-06-15 13:52 ` Eli Zaretskii via Gdb-patches
2021-06-14 15:51 ` [PATCH v2 05/12] python: Introduce gdb.RecordAuxiliary class Eli Zaretskii 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=20210614145411.689277-7-felix.willgerodt@intel.com \
--to=gdb-patches@sourceware.org \
--cc=felix.willgerodt@intel.com \
--cc=markus.t.metzger@intel.com \
/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