]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gdb/testsuite/lib/gdb-utils.exp
[gdb/testsuite] Add xfail in gdb.arch/i386-pkru.exp
[thirdparty/binutils-gdb.git] / gdb / testsuite / lib / gdb-utils.exp
index 78724f8b622c43f95222f83c88fa8629b8ce7cd1..fb5c953a6c436b25c6e80f383a8f8f73e4ed59c8 100644 (file)
@@ -100,3 +100,50 @@ proc gdb_get_bp_addr { num } {
     }
     return ""
 }
+
+# Compare the version numbers in L1 to those in L2 using OP, and return
+# 1 if the comparison is true.
+
+proc version_compare { l1 op l2 } {
+    set len [llength $l1]
+    if { $len != [llength $l2] } {
+       error "l2 not the same length as l1"
+    }
+
+    switch -exact $op {
+       "=="    -
+       "<"     {}
+       "<="    { return [expr [version_compare $l1 < $l2] \
+                             || [version_compare $l1 == $l2]]}
+       default { error "unsupported op: $op" }
+    }
+
+    # Handle ops < and ==.
+    set idx 0
+    foreach v1 $l1 {
+       set v2 [lindex $l2 $idx]
+       incr idx
+       set last [expr $len == $idx]
+
+       set cmp [expr $v1 $op $v2]
+       if { $op == "==" } {
+           if { $cmp } {
+               continue
+           } else {
+               return 0
+           }
+       } else {
+           # $op == "<".
+           if { $cmp } {
+               return 1
+           } else {
+               if { !$last && $v1 == $v2 } {
+                   continue
+               }
+               return 0
+           }
+       }
+    }
+
+    return 1
+}