From nobody Sun Sep 28 16:28:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1758520039; cv=none; d=zohomail.com; s=zohoarc; b=hZkmLbI01kAxF8v1H5w4I8RCFVp+pNV9tI9F+gAnAJFlTWMqb6OFeWOBG7XHolbyexZDVK4yiB2JSMdAdzUDshpUXCa3tRtkCivl+pz7567cRGRDtI6pAVKaWyStJFd0L7+exdLHa4Ao2NnIGZ1Mk8hoyA+Ksv5mwWRlwLOEiKc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758520039; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=d8uv1IOkBodejatxXR4c2fUFX0VB+sboU5kl+xqzijE=; b=CWWhuoMzWbYeiq6ILjclHnIL0OkwVk8mbKLXmL5RQG9ukoQ1gZ9ovlAh6D4Q4Iwv5W/Uxm+HxRtQDGNMv00QxKN4PtuQo+QRE+Fp663DPME69IWqwRFtdqzFBhieEeqVdbeO3pgBRwxyr8PmxZx/Hb5a3GUoFuaKmqVmUHrrM8Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758520039928236.58208073188848; Sun, 21 Sep 2025 22:47:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v0ZMa-00085Y-Oh; Mon, 22 Sep 2025 01:45:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v0ZMV-00083H-Hl for qemu-devel@nongnu.org; Mon, 22 Sep 2025 01:45:19 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v0ZMI-0004uV-DM for qemu-devel@nongnu.org; Mon, 22 Sep 2025 01:45:15 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-b54c86f3fdfso3655990a12.1 for ; Sun, 21 Sep 2025 22:45:05 -0700 (PDT) Received: from gromero0.. (200-162-224-93.static-corp.ajato.com.br. [200.162.224.93]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b551c279cd5sm7691377a12.3.2025.09.21.22.45.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 21 Sep 2025 22:45:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1758519904; x=1759124704; darn=nongnu.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=d8uv1IOkBodejatxXR4c2fUFX0VB+sboU5kl+xqzijE=; b=ySPzAwIzuR/+xB51nS3i+3lYMpxdk8BGl9vemwj5rsA88sRakJK7PiRV9yYHx3TMqa 5keiO3fF9Lr5TXQDHf5xXAQorjFLN4ld02ph0Yy+seBXLsaWhrDOj/ZvPJch0W+1k3cm F1BBJtAOo85WtoLRaU2ndxbKQIGry6+qjPc0fEfQ65Vijh8IadiXqeQA5sOlVZAMkHuV KXAEQVm9Gr3ddI5ZIVpYobtIUM5U6u3/tA7y+ET1844wnXlt4Ea6JlV5H9FhYSbb8OY0 SF4IEVG6o+hHYtHutca3JH+HsN5DD0kEiDisjhpVSuhrQoWU1eOJN7o5ZRDBV40Po3lm lRYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758519904; x=1759124704; 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=d8uv1IOkBodejatxXR4c2fUFX0VB+sboU5kl+xqzijE=; b=KsuVwm7bpeDe5GMEj1M3Q9CEjqx6jGfaRDZgCLJuB3en5mbPB/lnS5HuDkWQsClk68 L0J+VC5qU2n7EjVvMaJgb4Hc3/PTlF1/gwWwjmRHWiBPoAU0RWuR545FTmtzFShsZsBx Wd9MjVPi8PaCkXF8VosBxdf8i+Wy5llfhs/kvp1yrktaTIy7HefqGCPfC+fgzd/gyfKG x+C2EAHtizggtUtHlsfaoRcnIqi3nOt55EYEoLUq6rQU6tV7aJUWA8AiAJxUw7e78GBn laMAoOpG5gGZQIwHDQsouMHYXK6cfHKS/62LQSK3F3az4RtYRPD/8NAewXPOSx8YgPt2 TvAA== X-Gm-Message-State: AOJu0YzOPHhaacs1HmAYhbDws5Xxzyluyu6ExmW0J3GB8Y9gqeHL8oaY ANCTaJxCO0HoUi44m7M8IemCgHJGgJbpok8mS7YMnEp4+KztwM01zQR9dxfaGC7/CX+9tIxhU/L KU8OP X-Gm-Gg: ASbGncswyp0khEO9jB5TRTu9G+8bbJ65vdm7tgECm+JjKlVtOQHYI/UG3FQ7y4ddLIA h0MrYxL606lEJ6vOoQchORsSE3Bxt9tQwDT7AObhaghR4e82ZG3A7e5z/ICIGaaay76eNhEL2bM 2+H49tb4k03o0l7G23ncNHF54B7jshm6Y7x4KtAP+hkwuPmVpGOcTup4lN8iSocgGAE99BLqzDJ gtj/DERiO5i4HI54deri3p7VNxMRdNTCJjqMhjlfy8v2o8XshYzdLlpsnii1wJxKoqAcPdHjJpC Iwd6LSdWtStNYErTqpT9mEgCi64R233AjlONyBFp6/ax6ZcCQbCVx6rwpAeZAz0AevNR4P0Sdud 8vqbNb4XoIRtTWbq9fPbOZKd0qaXZDOg6bveeAkzwFyAdUzHGfhnqREBQPsDya3UXtGrxyCaFjq OPYIDwJ24= X-Google-Smtp-Source: AGHT+IFepu/JwIb0/EhfInczv3G10RcU2NuZb03HLCnT/mEcKSN7UsddnrD1YLCO2NJWaN0zGHfgDw== X-Received: by 2002:a17:903:2344:b0:26b:3cb5:a906 with SMTP id d9443c01a7336-26b3cb5ab33mr137917895ad.16.1758519904046; Sun, 21 Sep 2025 22:45:04 -0700 (PDT) From: Gustavo Romero To: qemu-devel@nongnu.org, alex.bennee@linaro.org, thuth@redhat.com, berrange@redhat.com Cc: qemu-arm@nongnu.org, gustavo.romero@linaro.org, manos.pitsidianakis@linaro.org, peter.maydell@linaro.org Subject: [PATCH v3 1/4] python: Install pygdbmi in venv Date: Mon, 22 Sep 2025 05:43:48 +0000 Message-Id: <20250922054351.14289-2-gustavo.romero@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250922054351.14289-1-gustavo.romero@linaro.org> References: <20250922054351.14289-1-gustavo.romero@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::536; envelope-from=gustavo.romero@linaro.org; helo=mail-pg1-x536.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1758520041712116600 Content-Type: text/plain; charset="utf-8" Install pygdbmi in Meson's venv. pygdbmi is required by functional tests that interact with GDB. pygdbmi size is only 21 kB. The wheel file has been obtained with: pyvenv/bin/pip3 download --only-binary :all: --dest . --no-cache pygdbmi Signed-off-by: Gustavo Romero --- python/wheels/pygdbmi-0.11.0.0-py3-none-any.whl | Bin 0 -> 21258 bytes pythondeps.toml | 1 + 2 files changed, 1 insertion(+) create mode 100644 python/wheels/pygdbmi-0.11.0.0-py3-none-any.whl diff --git a/python/wheels/pygdbmi-0.11.0.0-py3-none-any.whl b/python/wheel= s/pygdbmi-0.11.0.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..3009f180cb802312ad694494a60= 660b53ffdeebd GIT binary patch literal 21258 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 lOYnJ*1_k_YOP=3D-8|74_Vx=3D1.5.0", installed =3D "1.9.0", canary =3D "m= eson" } pycotap =3D { accepted =3D ">=3D1.1.0", installed =3D "1.3.1" } +pygdbmi =3D { accepted =3D ">=3D0.11.0.0", installed =3D "0.11.0.0" } =20 [meson-rust] # The install key should match the version in python/wheels/ --=20 2.34.1 From nobody Sun Sep 28 16:28:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1758519974; cv=none; d=zohomail.com; s=zohoarc; b=Kq0afQ2vJTWzAGiJZM4eRA9JEYSqEiCpsageVQaG6hlqBPydGVg7POHsTLFgAgBAkFSbfCYrmOiTAiOLBjdadKoC5kHbN7ueVcjtP06X9ABIxMTHBEMOanmSyGMB/PttSiQCrvNk8Xgtc+MaWB2tzivi5hQqQ/yJC+CN59bbHR8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758519974; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6597SlNNvp2+Kx/YZgVhVqlqizhj7ztCNH2v/Gmt3HA=; b=S8x4r32PHg/5b97/LFUZvb/onetLQ7Fzd91W0OxARBfRUlMIHu8paKnsvlXGSw8SHCtHxbwKrx33T+gaTRBI8pcU8gmHWgrLCyQubU4EmNOwZ14jGLDZMqpLTbOgHVDpyJNBllnTw2U4DjO3qlQvBU+d2eRTTPTRoBoOX3kKMow= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758519974111221.62656107968394; Sun, 21 Sep 2025 22:46:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v0ZMe-0008Ah-BW; Mon, 22 Sep 2025 01:45:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v0ZMV-00083M-JK for qemu-devel@nongnu.org; Mon, 22 Sep 2025 01:45:21 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v0ZMM-0004uk-Ty for qemu-devel@nongnu.org; Mon, 22 Sep 2025 01:45:15 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-26c209802c0so22982085ad.0 for ; Sun, 21 Sep 2025 22:45:08 -0700 (PDT) Received: from gromero0.. (200-162-224-93.static-corp.ajato.com.br. [200.162.224.93]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b551c279cd5sm7691377a12.3.2025.09.21.22.45.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 21 Sep 2025 22:45:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1758519907; x=1759124707; darn=nongnu.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=6597SlNNvp2+Kx/YZgVhVqlqizhj7ztCNH2v/Gmt3HA=; b=YkhLJCiTOYLispt9r5nYCc89KskKhCLkhOJeQhuf7RpdvJLtwyzqIfSZbD+Fou5BDS qkCKVm3I0ozbDPg+daNINNS3wkrHsGJ7lTkFG+SETR744QUlqKuy8AEEjkCmTpWzIoje 4oesJaGB8fmyCMWcK7Ryz4ZFoYKFWFO0089YDS5pOqu6PJ/c8NoSNqC3H0CMC4IuUtZH 9eHexKh75bHJ8jyFMMNx7BYwcE0B4mo3dm5tRpdeqwE7EkVb2oNMwuyqIcJGm0O2xKS6 E9rIASCNGycvDU0ZLj8hNAdJ1hSFhPK34tQlTureWQqya56a77QgsGoPZf4uK/qvJOWH 4CzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758519907; x=1759124707; 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=6597SlNNvp2+Kx/YZgVhVqlqizhj7ztCNH2v/Gmt3HA=; b=ZKlIvdztRcovC1SZMc5XTmq4HV7QSGajQBnv374oHwFXYA2nXUZZf6iQR2MPx7wW9o 1Mx4gTPuIq/oQSRMsFDaR6WHOx90Q5r9Vm9GfTeHVkuI9QaL3TR0UxsCAh8HnHTiqhST TrOA//+Jm2mb22Q+8L6hb0pb14sNZNFkgJyVr5ObxFeVuIbom2+gZZlEYTjiRwDnmu9l XyKdUoNBR9m2QewLId/D3o0xAVUmI0XwsxGHQONcPOe8/ZgkXGw5JZGsmBFgg3q9zNMe lThZ18w7NMAlxEEuTn44gZPO5oulMYyfPHb+Qlk+IGQG+kfuWXw2eyzWur/cRdG9+G0Q LMig== X-Gm-Message-State: AOJu0Yy12uvhTuKF8JOA/lSUmiFdKrZJJWB+P9+o/7/VwUe9edWK+YcV NoT/jm3EyOexdM1XrlkQN07JvYG4PKGK90BeFmI7MOi8wYqPVydk9hSeI9FJriZLfNwJS660bF8 lX6yG X-Gm-Gg: ASbGncsA+BuuYLC+ewO7kRl2IFo8lz3lKFGsCON1jo0nE2D9IQ0lc2r5LcarwRQXsTO bIPx7cy0xSbZ4lu21t5w6G0bZyKeK7sULbEFbZPxuNe1jqIm8+Ek5mPkx36bepUk61G/aI6DKB6 KVMDyXko4ufVH/x3tZK0xr5aLlj0DzNiINI6E66bW0J5nZO6LAGfgvyWiaIO8M9BiHBF6McyeGt VljAhpAz1ieDT+QxzuCIkoJyrwRTgl/p0A1L++qmYwbUplHfZiMb8oBPgt20vO6XJYnO9pTiwSc HM+gAj/g1Q7ELnEjAWNMGqmUGBgf1G8w+LN8atdJsIqI2h2I/QjJe0d0HRq5utxdllflB7xzU4G dt2wN3PssLUfjVmknUbRNy493/jle/jL7Ed52C0clAnOxQENwfohCwDb96UDdoZUBHavrXToO X-Google-Smtp-Source: AGHT+IG9jxvg65RwoQOWsTZ3WbOLcMpEmewwz081Vv3UOdEYX5gplS3TkA5tRp7lo4ugn22uMJExgw== X-Received: by 2002:a17:902:f645:b0:269:a4c5:f442 with SMTP id d9443c01a7336-269ba527e9emr160722005ad.47.1758519906724; Sun, 21 Sep 2025 22:45:06 -0700 (PDT) From: Gustavo Romero To: qemu-devel@nongnu.org, alex.bennee@linaro.org, thuth@redhat.com, berrange@redhat.com Cc: qemu-arm@nongnu.org, gustavo.romero@linaro.org, manos.pitsidianakis@linaro.org, peter.maydell@linaro.org Subject: [PATCH v3 2/4] tests/functional: Provide GDB to the functional tests Date: Mon, 22 Sep 2025 05:43:49 +0000 Message-Id: <20250922054351.14289-3-gustavo.romero@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250922054351.14289-1-gustavo.romero@linaro.org> References: <20250922054351.14289-1-gustavo.romero@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::635; envelope-from=gustavo.romero@linaro.org; helo=mail-pl1-x635.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1758519974956116600 The probe of gdb is done in 'configure' and the full path is passed to meson.build via the -Dgdb=3Doption. Meson then can pass the location of GDB to the test via an environment variable: QEMU_TEST_GDB. Signed-off-by: Gustavo Romero Signed-off-by: Thomas Huth Reviewed-by: Alex Benn=C3=A9e --- configure | 2 ++ meson_options.txt | 2 ++ scripts/meson-buildoptions.sh | 2 ++ tests/functional/meson.build | 6 ++++++ 4 files changed, 12 insertions(+) diff --git a/configure b/configure index 0f7eb95586..7226ddd589 100755 --- a/configure +++ b/configure @@ -1984,6 +1984,8 @@ if test "$skip_meson" =3D no; then test -n "${LIB_FUZZING_ENGINE+xxx}" && meson_option_add "-Dfuzzing_engin= e=3D$LIB_FUZZING_ENGINE" test "$plugins" =3D yes && meson_option_add "-Dplugins=3Dtrue" test "$tcg" !=3D enabled && meson_option_add "-Dtcg=3D$tcg" + test -n "$gdb_bin" && meson_option_add "-Dgdb=3D$gdb_bin" + run_meson() { NINJA=3D$ninja $meson setup "$@" "$PWD" "$source_path" } diff --git a/meson_options.txt b/meson_options.txt index fff1521e58..5bb41bcbc4 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -36,6 +36,8 @@ option('trace_file', type: 'string', value: 'trace', option('coroutine_backend', type: 'combo', choices: ['ucontext', 'sigaltstack', 'windows', 'wasm', 'auto'], value: 'auto', description: 'coroutine backend to use') +option('gdb', type: 'string', value: '', + description: 'Path to GDB') =20 # Everything else can be set via --enable/--disable-* option # on the configure script command line. After adding an option diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh index 0ebe6bc52a..f4bd21220e 100644 --- a/scripts/meson-buildoptions.sh +++ b/scripts/meson-buildoptions.sh @@ -58,6 +58,7 @@ meson_options_help() { printf "%s\n" ' --enable-ubsan enable undefined behaviour san= itizer' printf "%s\n" ' --firmwarepath=3DVALUES search PATH for firmware fil= es [share/qemu-' printf "%s\n" ' firmware]' + printf "%s\n" ' --gdb=3DVALUE Path to GDB' printf "%s\n" ' --iasl=3DVALUE Path to ACPI disassembler' printf "%s\n" ' --includedir=3DVALUE Header file directory [inclu= de]' printf "%s\n" ' --interp-prefix=3DVALUE where to find shared librari= es etc., use %M for' @@ -323,6 +324,7 @@ _meson_option_parse() { --disable-fuzzing) printf "%s" -Dfuzzing=3Dfalse ;; --enable-gcrypt) printf "%s" -Dgcrypt=3Denabled ;; --disable-gcrypt) printf "%s" -Dgcrypt=3Ddisabled ;; + --gdb=3D*) quote_sh "-Dgdb=3D$2" ;; --enable-gettext) printf "%s" -Dgettext=3Denabled ;; --disable-gettext) printf "%s" -Dgettext=3Ddisabled ;; --enable-gio) printf "%s" -Dgio=3Denabled ;; diff --git a/tests/functional/meson.build b/tests/functional/meson.build index 2a0c5aa141..725630d308 100644 --- a/tests/functional/meson.build +++ b/tests/functional/meson.build @@ -77,6 +77,12 @@ foreach speed : ['quick', 'thorough'] test_env.set('PYTHONPATH', meson.project_source_root() / 'python:' + meson.current_source_dir()) =20 + # Define the GDB environment variable if gdb is available. + gdb =3D get_option('gdb') + if gdb !=3D '' + test_env.set('QEMU_TEST_GDB', gdb) + endif + foreach test : target_tests testname =3D '@0@-@1@'.format(target_base, test) if fs.exists('generic' / 'test_' + test + '.py') --=20 2.34.1 From nobody Sun Sep 28 16:28:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1758519972; cv=none; d=zohomail.com; s=zohoarc; b=EbU7GEArAhtIxLK1swHTGoMU+RsGJi98WAA/ElFJBGe5jcoLRcRWgllanUVKlnA+pwQ9qYHKyWdjjQvAf+MrvOU2Vf5F9qwLXDv42pZ7vXwyvmghjEDXbH05YYOWLuFEqOJRT4c1oNEm72B/YDPL93GFWcZ4C4ZPoy1cz4lziD8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758519972; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mNCgENo9nE5qZpUTa2mjhnOx7lkfEjj5d10yyAbw+Ik=; b=en16FZrwy6X0RH5/b3Y3iKW42o1yKTxRxZuw/XacZRVlyOaskFBYYQzf125AcuUfCcuCgpHQ90kiAAliEWnLnFPqbPyerpCnD2RNCuQqFjpRZNlhNZcG9JZCNJLlqdcSRLAr9nHhboVmO30/xL7x4ctxCImNxqQDc/JSn1k2WUs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758519971936688.4787174425745; Sun, 21 Sep 2025 22:46:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v0ZMg-0008Dq-VF; Mon, 22 Sep 2025 01:45:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v0ZMV-00083I-IC for qemu-devel@nongnu.org; Mon, 22 Sep 2025 01:45:21 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v0ZMN-0004v0-F2 for qemu-devel@nongnu.org; Mon, 22 Sep 2025 01:45:19 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-267fac63459so37602945ad.1 for ; Sun, 21 Sep 2025 22:45:10 -0700 (PDT) Received: from gromero0.. (200-162-224-93.static-corp.ajato.com.br. [200.162.224.93]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b551c279cd5sm7691377a12.3.2025.09.21.22.45.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 21 Sep 2025 22:45:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1758519909; x=1759124709; darn=nongnu.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=mNCgENo9nE5qZpUTa2mjhnOx7lkfEjj5d10yyAbw+Ik=; b=xqJ/klNnKh0gxvzPzbEHYm38EYkftYKZ6DliZMdJR9kXMGKqfrk6JSS0KEWEjBPSp8 UyqjCBwFub0KHdIxj5IyCe/lfUawLz/orQc8P0wZTplNPcr+YMR3Lip7Iws0nJIdzmGS Cr6pxR30LVHwxpGMeP8FhIdwHH67a18+9sp88kyvqmwaTaa7Y2LQSYO7Q6twE54RpDXN kqxykVs4VGcVazDed3w0vZG832g0eP1ttUfHPWZqQxGCELTqFpeMkue2M33zRfmj0WYl Cu/MkD8EWUyYoazccoQM7XSxFjDffjwyPf7zZReGZCbAErC6BhxG2ZqyN9LPySEImxBU jqbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758519909; x=1759124709; 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=mNCgENo9nE5qZpUTa2mjhnOx7lkfEjj5d10yyAbw+Ik=; b=g2wT8iNTtIuCqxMB9IinRHQ6PjxwCXM/lOG+ZxMuC7a2zmKlN0NH2gXHGHlNj/KyW0 kqQS63WrCtPcnYgy4naTEdX/lom4QyXytnnhiGr+9Xym9TBLZpP0QJK7V77imPbffx7H hvuER6tvT0IYGp+awo1KfXHtSkvvUkurPKMTAqKX/1RMKRU67wAuq63GsRJ1ZngfAMtq DGYJJzPE01uU+LoMlWp590v4D+CyZvp0bD+93blqXszAjAcFx6ivFY8LLBauugfg2thL yAeExIIPcwynVzNGHCS8XKgdG8tTOKGphwJz2RjH4G+tUEPZB11FotU4WtHtemeJk+L+ 9tHQ== X-Gm-Message-State: AOJu0Ywn2/qsq3YXcxjg1/+stDdNMBipTKEmxYOLg2l8w97vKAE1O56Z yxmsh3GAmytxW17cud3HhTW44kicDWSgu789W+eAIzd04PPMJfiLtcjBatj/cDmwa2eM++Qojgx oQ05t X-Gm-Gg: ASbGncvmNdwCno9CE700BTem5z3Wsa6QSa6X/2hI424A2XpAwg8AvLEpTcbej4tjfe3 Ma16Ktg+DzuS8Dz9oRR+RT5Ob6tDWZro5454VQ3iSp83qjKmyw2/5JVDfkW/SCXECAxnBjbMetE +fuCl2Q3e8NxeVoUykZv6ZP4pskumbGW6GUemxjerqyxgefcv78nya5LopgVCa0ES4Jq2GHfqO1 Og3w4Vis4qjLPfM+o/y6tcn9eUs0CoLspXPjDqqqKWkjn5C/QofHN+EYLw0tVpuVTkuFNKe+Fa6 OLgcURLrfBgq5F5NoOBpckZbHITu+PLP4+Bw7IXQBjyBs/MvdIlDjh5aUs0hWyngARk3C5dwg3n kwEoRpwfssswaU23zs6GPijM9tkICqIDiK+6UMl11UY1rEYo1NoW68PIcUlHEWrOtSQW+0/dE X-Google-Smtp-Source: AGHT+IEdHk9lgFGER+L9MZ5+8C5vZhfAbXFdko6OaYPCN6Waf/7FSt0Q0ZC6TsfNLtnq7FffZFBM/g== X-Received: by 2002:a17:902:e805:b0:267:a55a:8684 with SMTP id d9443c01a7336-269ba40b48dmr162881955ad.2.1758519909516; Sun, 21 Sep 2025 22:45:09 -0700 (PDT) From: Gustavo Romero To: qemu-devel@nongnu.org, alex.bennee@linaro.org, thuth@redhat.com, berrange@redhat.com Cc: qemu-arm@nongnu.org, gustavo.romero@linaro.org, manos.pitsidianakis@linaro.org, peter.maydell@linaro.org Subject: [PATCH v3 3/4] tests/functional: Adapt reverse_debugging to run w/o Avocado Date: Mon, 22 Sep 2025 05:43:50 +0000 Message-Id: <20250922054351.14289-4-gustavo.romero@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250922054351.14289-1-gustavo.romero@linaro.org> References: <20250922054351.14289-1-gustavo.romero@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=gustavo.romero@linaro.org; helo=mail-pl1-x62b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1758519975121116600 Content-Type: text/plain; charset="utf-8" This commit removes Avocado as a dependency for running the reverse_debugging test. The main benefit, beyond eliminating an extra dependency, is that there is no longer any need to handle GDB packets manually. This removes the need for ad-hoc functions dealing with endianness and arch-specific register numbers, making the test easier to read. The timeout variable is also removed, since Meson now manages timeouts automatically. reverse_debugging now uses the pygdbmi module to interact with GDB, if it's available in the test environment, otherwise the test is skipped. GDB is detect via the QEMU_TEST_GDB env. variable. This commit also significantly improves the output for the test and now prints all the GDB commands used in sequence. It also adds some clarifications to existing comments, for example, clarifying that once the replay-break is reached, a SIGINT is captured in GDB. reverse_debugging is kept "skipped" for aarch64, ppc64, and x86_64, so won't run unless QEMU_TEST_FLAKY_TESTS=3D1 is set in the test environment, before running 'make check-functional' or 'meson test [...]'. Signed-off-by: Gustavo Romero --- tests/functional/reverse_debugging.py | 308 ++++++++++++++++---------- 1 file changed, 188 insertions(+), 120 deletions(-) diff --git a/tests/functional/reverse_debugging.py b/tests/functional/rever= se_debugging.py index f9a1d395f1..38161beab8 100644 --- a/tests/functional/reverse_debugging.py +++ b/tests/functional/reverse_debugging.py @@ -1,21 +1,94 @@ -# Reverse debugging test -# # SPDX-License-Identifier: GPL-2.0-or-later # +# Reverse debugging test +# # Copyright (c) 2020 ISP RAS +# Copyright (c) 2025 Linaro Limited # # Author: # Pavel Dovgalyuk +# Gustavo Romero (Run without Avocado) # # This work is licensed under the terms of the GNU GPL, version 2 or # later. See the COPYING file in the top-level directory. -import os + import logging +import os +import re +import subprocess +from pygdbmi.gdbcontroller import GdbController +from pygdbmi.constants import GdbTimeoutError + =20 from qemu_test import LinuxKernelTest, get_qemu_img from qemu_test.ports import Ports =20 =20 +class GDB: + def __init__(self, gdb_path, echo=3DTrue, suffix=3D'# ', prompt=3D"$ "= ): + gdb_cmd =3D [gdb_path, "-q", "--interpreter=3Dmi2"] + self.gdbmi =3D GdbController(gdb_cmd) + self.echo =3D echo + self.suffix =3D suffix + self.prompt =3D prompt + + + def get_payload(self, response, kind): + output =3D [] + for o in response: + # Unpack payloads of the same type. + _type, _, payload, *_ =3D o.values() + if _type =3D=3D kind: + output +=3D [payload] + + # Some output lines do not end with \n but begin with it, + # so remove the leading \n and merge them with the next line + # that ends with \n. + lines =3D [line.lstrip('\n') for line in output] + lines =3D "".join(lines) + lines =3D lines.splitlines(keepends=3DTrue) + + return lines + + + def cli(self, cmd, timeout=3D4.0): + self.response =3D self.gdbmi.write(cmd, timeout_sec=3Dtimeout) + self.cmd_output =3D self.get_payload(self.response, "console") + if self.echo: + print(self.suffix + self.prompt + cmd) + + if len(self.cmd_output) > 0: + cmd_output =3D self.suffix.join(self.cmd_output) + print(self.suffix + cmd_output, end=3D"") + + return self + + + def get_addr(self): + pattern =3D r"0x[0-9A-Fa-f]+" + cmd_output =3D "".join(self.cmd_output) + match =3D re.search(pattern, cmd_output) + + return int(match[0], 16) if match else None + + + def get_log(self): + r =3D self.get_payload(self.response, kind=3D"log") + r =3D "".join(r) + + return r + + + def get_console(self): + r =3D "".join(self.cmd_output) + + return r + + + def exit(self): + self.gdbmi.exit() + + class ReverseDebugging(LinuxKernelTest): """ Test GDB reverse debugging commands: reverse step and reverse continue. @@ -28,21 +101,17 @@ class ReverseDebugging(LinuxKernelTest): that the execution is stopped at the last of them. """ =20 - timeout =3D 10 STEPS =3D 10 - endian_is_le =3D True =20 def run_vm(self, record, shift, args, replay_path, image_path, port): - from avocado.utils import datadrainer - logger =3D logging.getLogger('replay') vm =3D self.get_vm(name=3D'record' if record else 'replay') vm.set_console() if record: - logger.info('recording the execution...') + logger.info('Recording the execution...') mode =3D 'record' else: - logger.info('replaying the execution...') + logger.info('Replaying the execution...') mode =3D 'replay' vm.add_args('-gdb', 'tcp::%d' % port, '-S') vm.add_args('-icount', 'shift=3D%s,rr=3D%s,rrfile=3D%s,rrsnapshot= =3Dinit' % @@ -52,145 +121,144 @@ def run_vm(self, record, shift, args, replay_path, i= mage_path, port): if args: vm.add_args(*args) vm.launch() - console_drainer =3D datadrainer.LineLogger(vm.console_socket.filen= o(), - logger=3Dself.log.getChild('console'), - stop_check=3D(lambda : not vm.is_runni= ng())) - console_drainer.start() - return vm =20 - @staticmethod - def get_reg_le(g, reg): - res =3D g.cmd(b'p%x' % reg) - num =3D 0 - for i in range(len(res))[-2::-2]: - num =3D 0x100 * num + int(res[i:i + 2], 16) - return num - - @staticmethod - def get_reg_be(g, reg): - res =3D g.cmd(b'p%x' % reg) - return int(res, 16) - - def get_reg(self, g, reg): - # value may be encoded in BE or LE order - if self.endian_is_le: - return self.get_reg_le(g, reg) - else: - return self.get_reg_be(g, reg) - - def get_pc(self, g): - return self.get_reg(g, self.REG_PC) - - def check_pc(self, g, addr): - pc =3D self.get_pc(g) - if pc !=3D addr: - self.fail('Invalid PC (read %x instead of %x)' % (pc, addr)) - - @staticmethod - def gdb_step(g): - g.cmd(b's', b'T05thread:01;') - - @staticmethod - def gdb_bstep(g): - g.cmd(b'bs', b'T05thread:01;') + return vm =20 @staticmethod def vm_get_icount(vm): return vm.qmp('query-replay')['return']['icount'] =20 def reverse_debugging(self, shift=3D7, args=3DNone): - from avocado.utils import gdb - from avocado.utils import process - logger =3D logging.getLogger('replay') =20 - # create qcow2 for snapshots - logger.info('creating qcow2 image for VM snapshots') + # Create qcow2 for snapshots + logger.info('Creating qcow2 image for VM snapshots') image_path =3D os.path.join(self.workdir, 'disk.qcow2') qemu_img =3D get_qemu_img(self) if qemu_img is None: self.skipTest('Could not find "qemu-img", which is required to= ' 'create the temporary qcow2 image') cmd =3D '%s create -f qcow2 %s 128M' % (qemu_img, image_path) - process.run(cmd) + r =3D subprocess.run(cmd, capture_output=3DTrue, shell=3DTrue, tex= t=3DTrue) + logger.info(r.args) + logger.info(r.stdout) =20 replay_path =3D os.path.join(self.workdir, 'replay.bin') =20 - # record the log + # Record the log. vm =3D self.run_vm(True, shift, args, replay_path, image_path, -1) while self.vm_get_icount(vm) <=3D self.STEPS: pass last_icount =3D self.vm_get_icount(vm) vm.shutdown() =20 - logger.info("recorded log with %s+ steps" % last_icount) + logger.info("Recorded log with %s+ steps" % last_icount) + + # Replay and run debug commands. + gdb_cmd =3D os.getenv('QEMU_TEST_GDB') + if not gdb_cmd: + test.skipTest(f"Test skipped because there is no GDB available= !") =20 - # replay and run debug commands with Ports() as ports: port =3D ports.find_free_port() vm =3D self.run_vm(False, shift, args, replay_path, image_path= , port) - logger.info('connecting to gdbstub') - g =3D gdb.GDBRemote('127.0.0.1', port, False, False) - g.connect() - r =3D g.cmd(b'qSupported') - if b'qXfer:features:read+' in r: - g.cmd(b'qXfer:features:read:target.xml:0,ffb') - if b'ReverseStep+' not in r: - self.fail('Reverse step is not supported by QEMU') - if b'ReverseContinue+' not in r: - self.fail('Reverse continue is not supported by QEMU') - - logger.info('stepping forward') - steps =3D [] - # record first instruction addresses - for _ in range(self.STEPS): - pc =3D self.get_pc(g) - logger.info('saving position %x' % pc) - steps.append(pc) - self.gdb_step(g) - - # visit the recorded instruction in reverse order - logger.info('stepping backward') - for addr in steps[::-1]: - self.gdb_bstep(g) - self.check_pc(g, addr) - logger.info('found position %x' % addr) - - # visit the recorded instruction in forward order - logger.info('stepping forward') - for addr in steps: - self.check_pc(g, addr) - self.gdb_step(g) - logger.info('found position %x' % addr) - - # set breakpoints for the instructions just stepped over - logger.info('setting breakpoints') - for addr in steps: - # hardware breakpoint at addr with len=3D1 - g.cmd(b'Z1,%x,1' % addr, b'OK') - - # this may hit a breakpoint if first instructions are executed - # again - logger.info('continuing execution') - vm.qmp('replay-break', icount=3Dlast_icount - 1) - # continue - will return after pausing - # This could stop at the end and get a T02 return, or by - # re-executing one of the breakpoints and get a T05 return. - g.cmd(b'c') - if self.vm_get_icount(vm) =3D=3D last_icount - 1: - logger.info('reached the end (icount %s)' % (last_icount - 1)) - else: - logger.info('hit a breakpoint again at %x (icount %s)' % - (self.get_pc(g), self.vm_get_icount(vm))) =20 - logger.info('running reverse continue to reach %x' % steps[-1]) - # reverse continue - will return after stopping at the breakpoint - g.cmd(b'bc', b'T05thread:01;') + try: + gdb =3D GDB(gdb_cmd) =20 - # assume that none of the first instructions is executed again - # breaking the order of the breakpoints - self.check_pc(g, steps[-1]) - logger.info('successfully reached %x' % steps[-1]) + logger.info('Connecting to gdbstub...') =20 - logger.info('exiting gdb and qemu') - vm.shutdown() + gdb.cli("set debug remote 1") + + c =3D gdb.cli(f"target remote localhost:{port}").get_console() + if not f"Remote debugging using localhost:{port}" in c: + self.fail("Could not connect to gdbstub!") + + # Remote debug messages are in 'log' payloads. + r =3D gdb.get_log() + if 'ReverseStep+' not in r: + self.fail('Reverse step is not supported by QEMU') + if 'ReverseContinue+' not in r: + self.fail('Reverse continue is not supported by QEMU') + + gdb.cli("set debug remote 0") + + logger.info('Stepping forward') + steps =3D [] + # Record first instruction addresses. + for _ in range(self.STEPS): + pc =3D gdb.cli("print $pc").get_addr() + logger.info('Saving position %x' % pc) + steps.append(pc) + + gdb.cli("stepi") + + # Visit the recorded instructions in reverse order. + logger.info('Stepping backward') + for saved_pc in steps[::-1]: + logger.info('Found position %x' % saved_pc) + gdb.cli("reverse-stepi") + pc =3D gdb.cli("print $pc").get_addr() + if pc !=3D saved_pc: + logger.info('Invalid PC (read %x instead of %x)' % (pc= , saved_pc)) + self.fail('Reverse stepping failed!') + + # Visit the recorded instructions in forward order. + logger.info('Stepping forward') + for saved_pc in steps: + logger.info('Found position %x' % saved_pc) + pc =3D gdb.cli("print $pc").get_addr() + if pc !=3D saved_pc: + logger.info('Invalid PC (read %x instead of %x)' % (pc= , saved_pc)) + self.fail('Forward stepping failed!') + + gdb.cli("stepi") + + # Set breakpoints for the instructions just stepped over. + logger.info('Setting breakpoints') + for saved_pc in steps: + gdb.cli(f"break *{hex(saved_pc)}") + + # This may hit a breakpoint if first instructions are executed= again. + logger.info('Continuing execution') + vm.qmp('replay-break', icount=3Dlast_icount - 1) + # continue - will return after pausing. + # This can stop at the end of the replay-break and gdb gets a = SIGINT, + # or by re-executing one of the breakpoints and gdb stops at a + # breakpoint. + gdb.cli("continue") + + pc =3D gdb.cli("print $pc").get_addr() + current_icount =3D self.vm_get_icount(vm) + if current_icount =3D=3D last_icount - 1: + print(f"# **** Hit replay-break at icount=3D{current_icoun= t}, pc=3D{hex(pc)} ****") + logger.info('Reached the end (icount %s)' % (current_icoun= t)) + else: + print(f"# **** Hit breakpoint at icount=3D{current_icount}= , pc=3D{hex(pc)} ****") + logger.info('Hit a breakpoint again at %x (icount %s)' % + (pc, current_icount)) + + logger.info('Running reverse continue to reach %x' % steps[-1]) + # reverse-continue - will return after stopping at the breakpo= int. + gdb.cli("reverse-continue") + + # Assume that none of the first instructions are executed again + # breaking the order of the breakpoints. + # steps[-1] is the first saved $pc in reverse order. + pc =3D gdb.cli("print $pc").get_addr() + first_pc_in_rev_order =3D steps[-1] + if pc =3D=3D first_pc_in_rev_order: + print(f"# **** Hit breakpoint at the first PC in reverse o= rder ({hex(pc)}) ****") + logger.info('Successfully reached breakpoint at %x' % firs= t_pc_in_rev_order) + else: + logger.info('Failed to reach breakpoint at %x' % first_pc_= in_rev_order) + self.fail("'reverse-continue' did not hit the first PC in = reverse order!") + + logger.info('Exiting GDB and QEMU...') + gdb.exit() + vm.shutdown() + + logger.info('Test passed.') + + except GdbTimeoutError: + self.fail("Connection to gdbstub timeouted...") --=20 2.34.1 From nobody Sun Sep 28 16:28:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1758520004; cv=none; d=zohomail.com; s=zohoarc; b=bD0fC8R6m7S5fOB3GsK317zt6h4Gvv53m/lAg9TLNoDEtAk3Ii1dFJ3s+hM7imYcT6LcqYkO3DJFd2kLsF/S6IjNev68r1h4o1tVyf8D2z7/fpGY6Nuj1zg6o4h6bty4VJXdrL0NhDjhhMvvlO6/IwNK81qgHmFHTpfndTNEuZc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758520004; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=51lPqiebpu5zL2+dy3jcywPPraPkvqTAkxbf02qUiQA=; b=KajFxU2ynHO/p6AJsJvS5AHwDemcnqOoj7/W+F8p/6F+FxgWLv/Y3kg2gGarvBivjKhYbGdT9ePNG5yKobAL8kp9A5NIw9AyvkSNq4SFJVeOAeBl+iYxfHQD5/79RgHDDqlpWsNMckBJmdOjQjaPfJ8AefDzwGvKUXM9ZCSvhsU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1758520004176680.8215001936179; Sun, 21 Sep 2025 22:46:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v0ZMb-00086D-1v; Mon, 22 Sep 2025 01:45:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v0ZMX-00083d-OT for qemu-devel@nongnu.org; Mon, 22 Sep 2025 01:45:21 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v0ZMT-0004vN-M0 for qemu-devel@nongnu.org; Mon, 22 Sep 2025 01:45:20 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-25669596955so36105145ad.0 for ; Sun, 21 Sep 2025 22:45:13 -0700 (PDT) Received: from gromero0.. (200-162-224-93.static-corp.ajato.com.br. [200.162.224.93]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b551c279cd5sm7691377a12.3.2025.09.21.22.45.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 21 Sep 2025 22:45:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1758519912; x=1759124712; darn=nongnu.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=51lPqiebpu5zL2+dy3jcywPPraPkvqTAkxbf02qUiQA=; b=RAjmBSgitotc+Hj5B9bhIctzGybJIflv0YCucFlS7T2wO0FEPxlDeCkVO69QSbtets Bq/Ti67AZakyPl5eU7+AnNQVOVGw2g2q3Fj1i/v6c423afLFaTVd+46WkX+3C9mijO2Y v7yi8qFkJlSu0t//IBqUZWlU1ma+6mg2/Af349icWVVbmb617oqCK0MoN+4pFOQCKOJe 5Ir3w0lyAh7Zr5byg9Cu5e8oDWRwiOhU3sNmO3NScDm/dR1V4xAV2UwUaSCcQMlAaZA7 Rics70PSMqodNbR94upPDoNSgF4hzyWWHn3LABtRfLq5EfBRoE4XmQbbp3eaDmH2MzO4 2+pA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758519912; x=1759124712; 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=51lPqiebpu5zL2+dy3jcywPPraPkvqTAkxbf02qUiQA=; b=KcG/9xz9yp2RaHEZLS4MeYS/cgl21LNoED5A31ySt74b/iYb7owHKIw9NuCrrkO7gh 779BxfgBzQ5js7rOwX2rxV3xIDuVUwFV2Ao18s2meLf2I2x7tk0r99ztTjTPG3jDsLlO jtFrGD34Tv9l97ckYsC8UceF5CNJh66w2J+0dcKh47yr6bFlZlUogQkcSsyn6o1fK2Pk fL/C2f2xj75kUdc+nuwpoxUuBavaTJm4d9ATFxU0MF/YXgcZDlWeEodiMQ/qTxP4YwT9 hnkxdqrzGLGNIPFIIK1iPBP1hZFLcEjwui0c3viPIpoc7qDoWZQh90bn1k8KE1FBfEb0 jvrQ== X-Gm-Message-State: AOJu0YyHP2ZBCRdNQyQM6X3udwqwn3q2x+JxeRu/UP4EeuGya+FQjh4M TAC7u4WbmwM6tdIVANC1k+ZG/qbxsvYngQlYZ8pvDXHR8BPRrTpUg2ATV6432ipAX5c4ELHOHgT 6wlbL X-Gm-Gg: ASbGnctG/h7ai98Mx8FoMXXIfdlChQAUFL9398rNkZHalZbc0mHxREmvCr3PTkUSMtf PTt26Dc7Lshb1Jrfj5VG3rF8V6ud1PB4ggkPPHyoc3OeeJBB/Xmzj6sNidRzqIDEt48M/+4Jqv5 be4r8k0Oi2qQqdFydvshpTouQzdkUSpN0RC+oIL+OcRno4UYqGacL5KuWn9DC4rrI407yu+5nBl 2/bQt5o78vO/pYQejCU93ymaFjDfC0Z6tKsdba5ZC5in6Fdlzw6RIswfIratTTzpRyQZok2vh4z CEdVBsRocO4p0ILDMvQAXhOn5l4yx5ilonNG6P7WKrNXccVQZzL9WXbD3RsI2V+eGhUhfdWYbbk 4/n7oJU/LZy57UZd/Ws7HZTkUzSK+Y+3bx0gfaoqrrQsdHZ9bis4gBjGJmSJlLViMX1xRLu5M X-Google-Smtp-Source: AGHT+IEHJhfrMzTumGa4LxUTFUsaVLT+ZBq0rsm/EQTIMJA3R24yC3wRxIbTgvQyS035IHtfYUzjeQ== X-Received: by 2002:a17:903:4b04:b0:24f:dbe7:73a2 with SMTP id d9443c01a7336-269ba514490mr130608025ad.31.1758519912135; Sun, 21 Sep 2025 22:45:12 -0700 (PDT) From: Gustavo Romero To: qemu-devel@nongnu.org, alex.bennee@linaro.org, thuth@redhat.com, berrange@redhat.com Cc: qemu-arm@nongnu.org, gustavo.romero@linaro.org, manos.pitsidianakis@linaro.org, peter.maydell@linaro.org Subject: [PATCH v3 4/4] tests/functional: Adapt arches to reverse_debugging w/o Avocado Date: Mon, 22 Sep 2025 05:43:51 +0000 Message-Id: <20250922054351.14289-5-gustavo.romero@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250922054351.14289-1-gustavo.romero@linaro.org> References: <20250922054351.14289-1-gustavo.romero@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=gustavo.romero@linaro.org; helo=mail-pl1-x630.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1758520005637116600 Content-Type: text/plain; charset="utf-8" reverse_debugging no longer depends on Avocado, so remove the import checks for Avocado, the per-arch endianness tweaks, and the per-arch register settings. All of these are now handled in the ReverseDebugging class. Signed-off-by: Gustavo Romero --- .../functional/aarch64/test_reverse_debug.py | 13 +++++-------- tests/functional/ppc64/test_reverse_debug.py | 15 +++++---------- tests/functional/x86_64/test_reverse_debug.py | 19 ++++++------------- 3 files changed, 16 insertions(+), 31 deletions(-) diff --git a/tests/functional/aarch64/test_reverse_debug.py b/tests/functio= nal/aarch64/test_reverse_debug.py index 8bc91ccfde..7f816025a9 100755 --- a/tests/functional/aarch64/test_reverse_debug.py +++ b/tests/functional/aarch64/test_reverse_debug.py @@ -1,26 +1,23 @@ -#!/usr/bin/env python3 -# # SPDX-License-Identifier: GPL-2.0-or-later # -# Reverse debugging test +# Reverse debugging test for aarch64 # # Copyright (c) 2020 ISP RAS +# Copyright (c) 2025 Linaro Limited # # Author: # Pavel Dovgalyuk +# Gustavo Romero (Run without Avocado) # # This work is licensed under the terms of the GNU GPL, version 2 or # later. See the COPYING file in the top-level directory. =20 -from qemu_test import Asset, skipIfMissingImports, skipFlakyTest +from qemu_test import Asset, skipFlakyTest from reverse_debugging import ReverseDebugging =20 =20 -@skipIfMissingImports('avocado.utils') class ReverseDebugging_AArch64(ReverseDebugging): =20 - REG_PC =3D 32 - ASSET_KERNEL =3D Asset( ('https://archives.fedoraproject.org/pub/archive/fedora/linux/' 'releases/29/Everything/aarch64/os/images/pxeboot/vmlinuz'), @@ -35,4 +32,4 @@ def test_aarch64_virt(self): =20 =20 if __name__ =3D=3D '__main__': - ReverseDebugging.main() + ReverseDebugging_AArch64.main() diff --git a/tests/functional/ppc64/test_reverse_debug.py b/tests/functiona= l/ppc64/test_reverse_debug.py index 5931adef5a..2b7b18e9a8 100755 --- a/tests/functional/ppc64/test_reverse_debug.py +++ b/tests/functional/ppc64/test_reverse_debug.py @@ -1,41 +1,36 @@ -#!/usr/bin/env python3 -# # SPDX-License-Identifier: GPL-2.0-or-later # -# Reverse debugging test +# Reverse debugging test for ppc64 # # Copyright (c) 2020 ISP RAS +# Copyright (c) 2025 Linaro Limited # # Author: # Pavel Dovgalyuk +# Gustavo Romero (Run without Avocado) # # This work is licensed under the terms of the GNU GPL, version 2 or # later. See the COPYING file in the top-level directory. =20 -from qemu_test import skipIfMissingImports, skipFlakyTest +from qemu_test import skipFlakyTest from reverse_debugging import ReverseDebugging =20 =20 -@skipIfMissingImports('avocado.utils') class ReverseDebugging_ppc64(ReverseDebugging): =20 - REG_PC =3D 0x40 - @skipFlakyTest("https://gitlab.com/qemu-project/qemu/-/issues/1992") def test_ppc64_pseries(self): self.set_machine('pseries') # SLOF branches back to its entry point, which causes this test # to take the 'hit a breakpoint again' path. That's not a problem, # just slightly different than the other machines. - self.endian_is_le =3D False self.reverse_debugging() =20 @skipFlakyTest("https://gitlab.com/qemu-project/qemu/-/issues/1992") def test_ppc64_powernv(self): self.set_machine('powernv') - self.endian_is_le =3D False self.reverse_debugging() =20 =20 if __name__ =3D=3D '__main__': - ReverseDebugging.main() + ReverseDebugging_ppc64.main() diff --git a/tests/functional/x86_64/test_reverse_debug.py b/tests/function= al/x86_64/test_reverse_debug.py index d713e91e14..408e5d1f48 100755 --- a/tests/functional/x86_64/test_reverse_debug.py +++ b/tests/functional/x86_64/test_reverse_debug.py @@ -1,36 +1,29 @@ -#!/usr/bin/env python3 -# # SPDX-License-Identifier: GPL-2.0-or-later # -# Reverse debugging test +# Reverse debugging test for x86_64 # # Copyright (c) 2020 ISP RAS +# Copyright (c) 2025 Linaro Limited # # Author: # Pavel Dovgalyuk +# Gustavo Romero (Run without Avocado) # # This work is licensed under the terms of the GNU GPL, version 2 or # later. See the COPYING file in the top-level directory. =20 -from qemu_test import skipIfMissingImports, skipFlakyTest +from qemu_test import skipFlakyTest from reverse_debugging import ReverseDebugging =20 =20 -@skipIfMissingImports('avocado.utils') class ReverseDebugging_X86_64(ReverseDebugging): =20 - REG_PC =3D 0x10 - REG_CS =3D 0x12 - def get_pc(self, g): - return self.get_reg_le(g, self.REG_PC) \ - + self.get_reg_le(g, self.REG_CS) * 0x10 - @skipFlakyTest("https://gitlab.com/qemu-project/qemu/-/issues/2922") def test_x86_64_pc(self): self.set_machine('pc') - # start with BIOS only + # Start with BIOS only self.reverse_debugging() =20 =20 if __name__ =3D=3D '__main__': - ReverseDebugging.main() + ReverseDebugging_X86_64.main() --=20 2.34.1