From patchwork Wed Apr 17 21:04:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gustavo Romero X-Patchwork-Id: 88628 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D8A4F385F014 for ; Wed, 17 Apr 2024 21:06:06 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-pf1-x436.google.com (mail-pf1-x436.google.com [IPv6:2607:f8b0:4864:20::436]) by sourceware.org (Postfix) with ESMTPS id 9F3A0385842D for ; Wed, 17 Apr 2024 21:05:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9F3A0385842D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 9F3A0385842D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::436 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1713387904; cv=none; b=mrBVDni2+2Hl7TV08CUhhNj4qduuZOBl+MwDwCX2m7jHa4l2EoKH0GEStoDalnW5wc5xNABFznuzFeNVwIOksXBH6s9p5qyazHLXcEK/2tCGbVqEeuyd7W0dAayL9SGJWmwZClr4fCmmkOf0uPB2tNCQqfWIsDAJTZs+fY62h+c= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1713387904; c=relaxed/simple; bh=+QfJjJUE3LzPMo1UQ2j9fXd4ixSljIBqN3foFT3CnrM=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=Rd2kQcprKyMChBZFcq+gsYLMFmONCL7Oyxi21VdCAkjlx8ehJSK4JpbDG2B28dSC3CB1iiqTXHzp/gNVFg6C0CdTQzh2PfYJ9MW0RF/d3Boc9zdVNF1P9TRjWnvkvQQlLLxGr2X3tKcRC+dN7+3adFkmBPy1SdWpxu50ewe/s9M= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-6ed0e9ccca1so241726b3a.0 for ; Wed, 17 Apr 2024 14:05:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713387900; x=1713992700; darn=sourceware.org; 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=+i07Poky40jkXDYvyJqhBtQc5rB4/eUfwGp75gk+SQI=; b=pcUpt4Nkk0IcqbOtkkT4MMrlA2zOIPxSNzYQbSNKv/fzHHtiNWMxy8Ueq4lwj7uQM9 rnDctOqkQg6ePmN2WVPozKdeh+hmjT0EDmJGfCuTUsy/tV/qTwSB6BpbSoN/BKUBS0Hs 4sGB1UHKlksPQMGQxEuwx7hkGO2ntqapH8P6mUBgsBShhIQSx3kqxGZyjSyV2QZ8MB5B socZrrxnOMdUGX+YuLmFj6JF+J5rBOCf/JGQJ9jz0yGXFUt0eihlAY9e0XCzIbwg77KB kSzjHDFhnFolU6ssXZUVa5CpPiUDt5udAltgdzbB6Dk035mL7mQSIFCBMyKVmAgp+zcf gf9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713387900; x=1713992700; 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=+i07Poky40jkXDYvyJqhBtQc5rB4/eUfwGp75gk+SQI=; b=GLhFdoFLn2sVQol26nI3pjZktVQWsdVoAGOaME+BcD+DRPPSgB1qRCHM5HqV4L2B6q Sicf9w5HkfXPz0I7yLVLXXX8emLseXXuftYKDBCv8Lc5Y95GWaNNtrbkeKerByDarCkI ZNGSm8KIz24Ud1+G7RbS2nrbZFeTjBUgI8kp7j54a3htHh2DFSM3fKGtG3Y6xaDenJJb 10EzFTRJS30x6Dq/6vGP8zg3OinZWC3ePSAJurouwHzGEnP+QkG3QGAIOfX/2LQyZGWO P8X08ZQDrV0vxbueLgC/pLG5VvfV0h5J+4qh4dGMDFzra51z0iu9owExYGxxRh7iX6k4 ctoA== X-Gm-Message-State: AOJu0YzHaEFV5WftvB6YT/T+T+jBxX9gQeA1Zx3BX01jzlPfNsgYaxQy yFKnrmgGKOLJUM6vBeQlg4LnZGCAWPjv6i+9DwFsPzGbxobCDeneIArJKo2bQS4TFL6N4IDLEPZ I X-Google-Smtp-Source: AGHT+IH0scFPIQvaSFyb/+8duiLJJF9ZsLdqgqP+BCdWbxqCpRGDQy989G4nK9jO+IzynNu0K4v8iw== X-Received: by 2002:a05:6a21:2d8e:b0:1a7:23c0:24e7 with SMTP id ty14-20020a056a212d8e00b001a723c024e7mr1296222pzb.42.1713387900307; Wed, 17 Apr 2024 14:05:00 -0700 (PDT) Received: from amd.. ([2804:7f0:b403:ad57:3e7c:3fff:fe7a:e83b]) by smtp.gmail.com with ESMTPSA id l9-20020a170903120900b001e3e0aa9776sm80494plh.27.2024.04.17.14.04.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Apr 2024 14:04:59 -0700 (PDT) From: Gustavo Romero To: gdb-patches@sourceware.org Cc: luis.machado@arm.com, thiago.bauermann@linaro.org, eliz@gnu.org, tom@tromey.com, gustavo.romero@linaro.org Subject: [PATCH v5 7/8] gdb/testsuite: Add unit tests for qIsAddressTagged packet Date: Wed, 17 Apr 2024 21:04:23 +0000 Message-Id: <20240417210424.216374-8-gustavo.romero@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240417210424.216374-1-gustavo.romero@linaro.org> References: <20240417210424.216374-1-gustavo.romero@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-13.1 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 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Add unit tests for testing qIsAddressTagged packet request creation and reply checks. Signed-off-by: Gustavo Romero --- gdb/remote.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/gdb/remote.c b/gdb/remote.c index 2bb962955b5..bc2cfed2595 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -15681,6 +15681,8 @@ test_memory_tagging_functions () scoped_restore restore_memtag_support_ = make_scoped_restore (&config->support); + struct gdbarch *gdbarch = current_inferior ()->arch (); + /* Test memory tagging packet support. */ config->support = PACKET_SUPPORT_UNKNOWN; SELF_CHECK (remote.supports_memory_tagging () == false); @@ -15747,6 +15749,71 @@ test_memory_tagging_functions () create_store_memtags_request (packet, 0xdeadbeef, 255, 1, tags); SELF_CHECK (memcmp (packet.data (), expected.c_str (), expected.length ()) == 0); + + /* Test creating a qIsAddressTagged request. */ + expected = "qIsAddressTagged:deadbeef"; + create_is_address_tagged_request (gdbarch, packet, 0xdeadbeef); + SELF_CHECK (strcmp (packet.data (), expected.c_str ()) == 0); + + /* Test error reply on qIsAddressTagged request. */ + reply = "E00"; + strcpy (packet.data (), reply.c_str ()); + /* is_tagged must not change, hence it's tested too. */ + bool is_tagged = false; + SELF_CHECK (check_is_address_tagged_reply (&remote, packet, is_tagged) == + false); + SELF_CHECK (is_tagged == false); + + /* Test 'tagged' as reply. */ + reply = "01"; + strcpy (packet.data (), reply.c_str ()); + /* Because the byte is 01, is_tagged should be set to true. */ + is_tagged = false; + SELF_CHECK (check_is_address_tagged_reply (&remote, packet, is_tagged) == + true); + SELF_CHECK (is_tagged == true); + + /* Test 'not tagged' as reply. */ + reply = "00"; + strcpy (packet.data (), reply.c_str ()); + /* Because the byte is 00, is_tagged should be set to false. */ + is_tagged = true; + SELF_CHECK (check_is_address_tagged_reply (&remote, packet, is_tagged) == + true); + SELF_CHECK (is_tagged == false); + + /* Test an invalid reply (neither 00 nor 01). */ + reply = "04"; + strcpy (packet.data (), reply.c_str ()); + /* Because the byte is invalid is_tagged must not change. */ + is_tagged = false; + SELF_CHECK (check_is_address_tagged_reply (&remote, packet, is_tagged) == + false); + SELF_CHECK (is_tagged == false); + + /* Test proper first byte truncation. */ + reply = "0104A590001234006"; + strcpy (packet.data (), reply.c_str ()); + /* Because the first byte is 01, is_tagged should be set to true. */ + is_tagged = false; + SELF_CHECK (check_is_address_tagged_reply (&remote, packet, is_tagged) == + true); + SELF_CHECK (is_tagged == true); + + /* Test empty reply. */ + reply = ""; + strcpy (packet.data (), reply.c_str ()); + /* is_tagged must not change, hence it's tested too. */ + is_tagged = true; + /* On the previous tests, qIsAddressTagged packet was auto detected and set + as supported. But an empty reply means the packet is unsupported, so for + testing the empty reply the support is reset to unknown state, otherwise + packet_ok will complain. */ + remote.m_features.m_protocol_packets[PACKET_qIsAddressTagged].support = + PACKET_SUPPORT_UNKNOWN; + SELF_CHECK (check_is_address_tagged_reply (&remote, packet, is_tagged) == + false); + SELF_CHECK (is_tagged == true); } static void