From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd31.google.com (mail-io1-xd31.google.com [IPv6:2607:f8b0:4864:20::d31]) by sourceware.org (Postfix) with ESMTPS id A478B3858C83 for ; Tue, 14 Mar 2023 14:03:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A478B3858C83 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com Received: by mail-io1-xd31.google.com with SMTP id k17so6451878iob.1 for ; Tue, 14 Mar 2023 07:03:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1678802580; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RDKhUFvyoxhuuKnyuUs9KJsPdqXDW9XeazrTyROuGGA=; b=jWwZWDIUgrBOjtmR5/cpNWNQbkEA7VZ5CPKydcglr7rHU+8jwgUXNRevUKJIlpNXs1 H0Wb3Hi7CyTlWWg+vmlQRW5wiS8Ue0kDCH9Mv+w1wQlQP64dBc2Qc3WB9nJgc7BOZ2qG vxwYlnEmYJ1wCDDrzBOuDmoFQ1yroKVY9Qr3qmnYDdb3XAEqgHg+u68pGgU4LrEyAiLW sinPGIOhuatvcEzm9ZncWVjVrDpeL5XUrtl68na3gQskSJKZ9aNojktlJHfjRwZWBjYZ gx0wYNcJSyMJSEFFQvgKlpnA50VH7udT2ABlDi88YViBpFUUQtA+dUECRBNKNv3PIn33 XQQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678802580; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RDKhUFvyoxhuuKnyuUs9KJsPdqXDW9XeazrTyROuGGA=; b=poChOftOefpVAuESutXliPoG9eagQR+dusb+LqiBqtnCjr2JNzqnQoEeguZzu7Tc6d UXp+DpOUmOIJ2Cpzgr6ZHrqvbuGOP3HFfHAPvTVuLoL6rBQ4THk2Pml8KHMOjyNWJwhG gtT7jeTZCqsmo3egAg+RTngmkkbdahmuDXIMniFFqZDZt1W/rWbclVMLC9Ie0mwnD3Qw 2wcPBVxjDkAvk+6JyZJPYe4ga8c2wXDVRyNYd2ojM0huguA7BOBEJx0zH6uIJuMoqbWf YwE9g9bxS75qFTNl824FxmldmzQHMwdlJjh0GasxqtRNvfvXv9vA49gxFbJfEFF5IKvm XCqg== X-Gm-Message-State: AO0yUKXAUdoiq1hSqjzmUCMxi+egZZcw+1iqZiEXwT7FtrYH9ksNCuhW JNMY0q8wgGa4UVqNQRhzPrPeyYYWJ07YFKWSkFo= X-Google-Smtp-Source: AK7set9T3W/5yTFdpEQK/7Dk9xTt+C1RJ7R3YoiaXhRueg6bgyqo4+gEEs8n36QTIutHoKsxJ13ang== X-Received: by 2002:a5d:889a:0:b0:713:7b7c:46d7 with SMTP id d26-20020a5d889a000000b007137b7c46d7mr11529817ioo.21.1678802579508; Tue, 14 Mar 2023 07:02:59 -0700 (PDT) Received: from localhost.localdomain (71-211-185-113.hlrn.qwest.net. [71.211.185.113]) by smtp.gmail.com with ESMTPSA id q3-20020a02a303000000b003a971c488cesm778356jai.173.2023.03.14.07.02.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Mar 2023 07:02:59 -0700 (PDT) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH v2 2/3] Rewrite version_compare and rust_at_least Date: Tue, 14 Mar 2023 08:02:50 -0600 Message-Id: <20230314140251.1081243-3-tromey@adacore.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230314140251.1081243-1-tromey@adacore.com> References: <20230314140251.1081243-1-tromey@adacore.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This rewrites version_compare to allow the input lists to have different lengths, then rewrites rust_at_least to use version_compare. --- gdb/testsuite/lib/gdb-utils.exp | 51 ++++++++++++------------------ gdb/testsuite/lib/rust-support.exp | 22 ++----------- 2 files changed, 23 insertions(+), 50 deletions(-) diff --git a/gdb/testsuite/lib/gdb-utils.exp b/gdb/testsuite/lib/gdb-utils.exp index fb5c953a6c4..a010e14fc04 100644 --- a/gdb/testsuite/lib/gdb-utils.exp +++ b/gdb/testsuite/lib/gdb-utils.exp @@ -101,49 +101,40 @@ 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. +# Compare the version numbers in L1 to those in L2 using OP, and +# return 1 if the comparison is true. OP can be "<", "<=", or "==". +# It is ok if the lengths of the lists differ. 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 } { + foreach v1 $l1 v2 $l2 { + if {$v1 == ""} { + # This is: "1.2 OP 1.2.1". + if {$op != "=="} { return 1 - } else { - if { !$last && $v1 == $v2 } { - continue - } - return 0 } + return 0 } + if {$v2 == ""} { + # This is: "1.2.1 OP 1.2". + return 0 + } + if {$v1 == $v2} { + continue + } + return [expr $v1 $op $v2] } + if {$op == "<"} { + # They are equal. + return 0 + } return 1 } diff --git a/gdb/testsuite/lib/rust-support.exp b/gdb/testsuite/lib/rust-support.exp index 381871e22f4..e9a3c5c0543 100644 --- a/gdb/testsuite/lib/rust-support.exp +++ b/gdb/testsuite/lib/rust-support.exp @@ -116,24 +116,6 @@ gdb_caching_proc rust_compiler_version {} { # A helper that checks that the rust compiler is at least the given # version. This is handy for use with 'require'. proc rust_at_least {atleast} { - foreach n1 [split [rust_compiler_version] .] n2 [split $atleast .] { - if {$n1 == ""} { - # Have 1.2, wanted 1.2.1. - return 0 - } - if {$n2 == ""} { - # Have 1.2.1, wanted 1.2. - return 1 - } - if {$n1 > $n2} { - # Have 1.3, wanted 1.2. - return 1 - } - if {$n1 < $n2} { - # Have 1.1, wanted 1.2. - return 0 - } - } - # Completely equal. - return 1 + return [version_compare [split $atleast .] \ + <= [split [rust_compiler_version] .]] } -- 2.39.1