[gdb/testsuite] Factor out proc linux_kernel_version
authorTom de Vries <tdevries@suse.de>
Tue, 14 Feb 2023 10:53:54 +0000 (11:53 +0100)
committerTom de Vries <tdevries@suse.de>
Tue, 14 Feb 2023 10:53:54 +0000 (11:53 +0100)
Factor out new proc linux_kernel_version from test-case
gdb.arch/i386-pkru.exp.

Tested on x86_64-linux.

gdb/testsuite/gdb.arch/i386-pkru.exp
gdb/testsuite/lib/gdb.exp

index 90d8c1d9d4c26702ea78eae90d5abd516d207b23..1f047df68ef670ef8f93261c69a47398dc9290b8 100644 (file)
@@ -59,20 +59,12 @@ if { !$supports_pkru } {
 # the PKRU using ptrace, see commit 4a804c4f8356 ("x86/fpu: Allow PKRU to be
 # (once again) written by ptrace.").
 set have_xfail 0
-if { [istarget *-*-linux*] } {
-    set res [remote_exec target "uname -r"]
-    set status [lindex $res 0]
-    set output [lindex $res 1]
-
-    set re ^($decimal)\\.($decimal)\\.($decimal)
-    if { $status == 0
-        && [regexp $re $output dummy v1 v2 v3] == 1 } {
-       set v [list $v1 $v2 $v3]
-       set have_xfail \
-           [expr \
-                [version_compare [list 5 14 0] <= $v] \
-                && [version_compare $v < [list 6 2 0]]]
-    }
+set v [linux_kernel_version]
+if { $v != {} } {
+    set have_xfail \
+       [expr \
+            [version_compare [list 5 14 0] <= $v] \
+            && [version_compare $v < [list 6 2 0]]]
 }
 
 # Test pkru register at startup
index 7f98f0803285ba854b2572e6aa323a01de73a8ea..e48228ed4f6590d8bf1461e88593e3fffb40a855 100644 (file)
@@ -9374,5 +9374,28 @@ proc has_dependency { file dep } {
     return [regexp $dep $output]
 }
 
+# Detect linux kernel version and return as list of 3 numbers: major, minor,
+# and patchlevel.  On failure, return an empty list.
+
+gdb_caching_proc linux_kernel_version {
+    if { ![istarget *-*-linux*] } {
+       return {}
+    }
+
+    set res [remote_exec target "uname -r"]
+    set status [lindex $res 0]
+    set output [lindex $res 1]
+    if { $status != 0 } {
+       return {}
+    }
+
+    set re ^($::decimal)\\.($::decimal)\\.($::decimal)
+    if { [regexp $re $output dummy v1 v2 v3] != 1 } {
+       return {}
+    }
+
+    return [list $v1 $v2 $v3]
+}
+
 # Always load compatibility stuff.
 load_lib future.exp