From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 0a9aFpeg5mnAci0AWB0awg (envelope-from ) for ; Mon, 20 Apr 2026 17:54:31 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=IyjkJ60E; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=IyjkJ60E; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 52EA51E0C3; Mon, 20 Apr 2026 17:54:31 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id C8FC71E093 for ; Mon, 20 Apr 2026 17:54:29 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id F41954D108F0 for ; Mon, 20 Apr 2026 21:54:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org F41954D108F0 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=IyjkJ60E; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=IyjkJ60E Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazlp170110003.outbound.protection.outlook.com [IPv6:2a01:111:f403:c201::3]) by sourceware.org (Postfix) with ESMTPS id 12D014A98F0B for ; Mon, 20 Apr 2026 21:53:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 12D014A98F0B Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 12D014A98F0B Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c201::3 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1776722029; cv=pass; b=k6cBuRaIMxLqNCRiM+FtVRnYK7cgFO+g/0ahm0M2z9llLuySa4EZwNfDCkxs8bjZ4gHtZu6yKJyHNK6r9l2BeDqxN82rRq/J2Cn0Shw0wwd3acXh2MNbiitVZdjA67THNezr+Un4kI6uVVYeWGodjZEJGP6kn+czL/9b1G22QNk= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1776722029; c=relaxed/simple; bh=KwIzs0xUogzPhThA0+fqnSc3RlHEkoj+cOgj9PpYZxE=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=eRtxw880oN6Bg/485ZEly16LXcmy0qATnZ1W4MhETUtJLxS6YPD/DXsjhvlhCs3jnqlHYqxQcmQMvSaObiG/6iEhMN9EbX+lHsB8FDyH9/SZW7F24PfnFtAf4uXpQ2OgQ/LN6j2Nr9cpIU1rSDdhW0ME/GgS3fG0nXK5TXwRrrk= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 12D014A98F0B ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=jbv973U2fPcrVdLw3TxKjFv/zQKhebA/5DZvhjczAc/m+TP/EwBUnqxGat0Tat5YEgwzH37ZewhKX0fd8dwJmTF1pVNW2NDWE6J+/PNyG6/u3J8yWvHwheKQQAUNaCDvD3BSv3VO0VANP9HifRjd3G7gfSueyLO/ROju5opRhjNYlhCSj3ZjVwutvxKKEH8YCnjXP6tzMlGAlL14OSOMizPqIMcQSHkFEG9ZLHN6mFP1ws+ZCBv5HGnCoXdkkfMxy87QCjqzihDd4jo+pa8cwVmwm5MsdLpaIlUmB2vPYzVWHL/TWgsYflz9XDzpC/0EZMdkSEOHnwuDvG/rN4elyA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ka+K0dOlnHuQVLecQlmFSF/qgvDy/8pJ9lqk8aV8Mw8=; b=szRH2rtGFWWL4g/r82wThw4B5u7uQFmgEQO6UlWq+gX7x8FpulM/w7QJ2KbJ1rAgxBGYUNjGSbWiqBo6qCt84phmOdKIYIuucNMkXjT1VTNZlGYBFFqe8Dj0tC7Xv4eFBz+JIgLckuXF9Y5eyg1yy0bya5G60kP/U1Ex+mqFY9kdzx9kOr6aByuKJjZ9QcEaS8P0M1gbKKIN0LbX4BsTV5rjLQUqLvE6nBCZasNd2A7yHlT+ZjCDFsctzwWgipkVTa9axrlnFDyp9vUETgXhQ8XUoaFdprmEhlWvK+eyR5XSJkopQ4/8TokjYBEGPjm83fT8TymtaKxZnDqzsLQbuQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ka+K0dOlnHuQVLecQlmFSF/qgvDy/8pJ9lqk8aV8Mw8=; b=IyjkJ60EYIfOraJ3w5EPIbMtgXCnmI0h8pSTX4sII734zg827y+BiOc2qXsRw0NT44vLT5KvsGTDL8h3uPiffeCdRpp5Xtn9g6hUjrSgwH9n/n0e3IurlM/3EWeIbLi5kSvJujYMfRJGCJMU3t56jI7fLiKVyPEkYLTFsTB5pGc= Received: from CWLP265CA0489.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:18a::10) by AS8PR08MB8802.eurprd08.prod.outlook.com (2603:10a6:20b:5bc::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr 2026 21:53:41 +0000 Received: from DU6PEPF0000B61C.eurprd02.prod.outlook.com (2603:10a6:400:18a:cafe::1d) by CWLP265CA0489.outlook.office365.com (2603:10a6:400:18a::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:53:41 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU6PEPF0000B61C.mail.protection.outlook.com (10.167.8.135) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:53:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZD/qJ0KLgMpviGpJN4W+lbF57boYy9njBkm4xDGBpPKTPMS+PAUTkyx/wQEooOWAJvYPbqfQmhcD234Aastra22Cwh62UeCDiOy2V02br4CyBH3N+g+8x2am/lVYoMMk6GakirUsR8LV4cTaHHug/tEpqz9NDeTv6qHSmeOSpWAMzuUP+qHgCrzg8GQ7AQTOUijIm1kCbHvEEEZrG+HP7iUv6N6YnWtWeyOrb0Rj6wXPFKvOknKrzKpOyP5SFlJRfJCzJTCtYTquPP/M3GtDqe3B/IpQadYHeJI62wYUrtqnpFKDLdtQvG4994NIz5WvzQP0qHoRoEeST7tjqUVlXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ka+K0dOlnHuQVLecQlmFSF/qgvDy/8pJ9lqk8aV8Mw8=; b=iiUuVeuCYoBXb1csscAnbsM45IVqgOhXs/ZVywLbXrhxulHYKT86F4dM7KQGr4+PQ5CmmL0btpdog2BE2NML6fQchEma2F+0Ws/m8WM7LwnRKqqGcDoSqXYzHScwNeqnXSJMIrLp7mwbXowPJHUQrhkqe4uSeDQzf3tdN9A0vph/tQaYQeG5qoZMObZlmDyJmOaIkR7d9pUYkPzK27ynmLggGomtvhFbxTJVcNfpgISzfHMvJ3PoPzNX5Co+7kUVXRaCQ6Bx5d6Q/T0FE3PuwOZbCMGjmL0dDoNYY7wQI1XSx73WlVY16NoMX1CbrIFIYpfepDNHiTV6zakm3OSrLQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 172.205.89.229) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ka+K0dOlnHuQVLecQlmFSF/qgvDy/8pJ9lqk8aV8Mw8=; b=IyjkJ60EYIfOraJ3w5EPIbMtgXCnmI0h8pSTX4sII734zg827y+BiOc2qXsRw0NT44vLT5KvsGTDL8h3uPiffeCdRpp5Xtn9g6hUjrSgwH9n/n0e3IurlM/3EWeIbLi5kSvJujYMfRJGCJMU3t56jI7fLiKVyPEkYLTFsTB5pGc= Received: from DUZPR01CA0222.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b4::29) by DBAPR08MB5656.eurprd08.prod.outlook.com (2603:10a6:10:1a2::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr 2026 21:52:35 +0000 Received: from DU2PEPF00028D0F.eurprd03.prod.outlook.com (2603:10a6:10:4b4:cafe::4f) by DUZPR01CA0222.outlook.office365.com (2603:10a6:10:4b4::29) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:52:35 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 172.205.89.229) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 172.205.89.229 as permitted sender) receiver=protection.outlook.com; client-ip=172.205.89.229; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (172.205.89.229) by DU2PEPF00028D0F.mail.protection.outlook.com (10.167.242.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon, 20 Apr 2026 21:52:35 +0000 Received: from AZ-NEU-EX04.Arm.com (10.240.25.138) by AZ-NEU-EX04.Arm.com (10.240.25.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Mon, 20 Apr 2026 21:52:35 +0000 Received: from D2G2X7XGD1.arm.com (10.57.64.95) by mail.arm.com (10.240.25.138) with Microsoft SMTP Server id 15.2.2562.29 via Frontend Transport; Mon, 20 Apr 2026 21:52:34 +0000 From: To: CC: , , Ezra Sitorus Subject: [PATCH 4/4] gdb/aarch64: record/replay support for LSE128 Date: Mon, 20 Apr 2026 22:52:32 +0100 Message-ID: <20260420215232.68675-5-Ezra.Sitorus@arm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260420215232.68675-1-Ezra.Sitorus@arm.com> References: <20260420215232.68675-1-Ezra.Sitorus@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DU2PEPF00028D0F:EE_|DBAPR08MB5656:EE_|DU6PEPF0000B61C:EE_|AS8PR08MB8802:EE_ X-MS-Office365-Filtering-Correlation-Id: 7d7adac4-6abd-4dcc-2224-08de9f2748a8 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|82310400026|36860700016|376014|1800799024|13003099007|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: 2KTH+lZUvxifNNFGMO1Xx70zldquZnGSqx4JdHKS2AWNoHAf8ZqU/KMcCjCV204qkAEzHRa/Khs5f9yCOEWtm/s3kT7QWTQqXY2dXwBgL7EdUT+6eeA+4ZJO9LVkyCGooXNYjdj7bekT73biaMZxX+HlLp4L+KasqRcsjTkucDsE0ER36m5PQMroH7Z8FSunJAxwRv5YZXTqw8FRR+ljMzjEINrvp2zdtgpJA9dzsDjlT2g88rtVa+lmZDFQYXfeFr6An1k73f8MwgY5ZOTOXcH5Ys67jsx2SpkShPxN2O7oJbjR4Zn5wn8jFC6Ju1NC8hYOOn0ror7X3uzbF/608H60cXOPaRixmIYB9mufBltzH2Gq+fZSPLBrssnnTBXumVfgf1NJIf/maAyiqwTE9smFAPSXQPOxhMWsI5t4UB0/ftgIK8L6Pw6wMe4Ok8dLP1QJKCKW/gi8601oqS6zyd4eZ/mb9fxb6+i09A78ip13SEuy2rjTyAZMgvYlxGnc5aQLNyIFjOyxHKeE5r3gUEq+LIlyl9DgMyffr502r5J3aEox5nhCXhM/2caQl6l62WmYd5r1Um5yUja0Wqx345j5K24T5QNpLtdQaJhb7ELRc+x9mlcz9zQ3TS8zcI1LTH3NKpcvkv+7e9kLzX0WRiX7svqxxKS0kp/NF7rLQEqg/v5GDCnaYsoY8I8/WBRmCvnp+Hfj9VKwPzs+0haECMNVwrj+sL+Yc4ICRiBMcAA= X-Forefront-Antispam-Report-Untrusted: CIP:172.205.89.229; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(36860700016)(376014)(1800799024)(13003099007)(56012099003)(18002099003)(22082099003); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: c2kkp8w8FxbuuaguYzTQGrRGcj2+yfqE+zbf5UIxovS07DWe0Dw2yLKsEm8m/8jocMcxAWLTIMOak0dKC6mRGFqvsWadnfR2MeHsIhCstgYVB61yMc5ppIvoRmN4RlakeBO/7V1ksEsI3fIRd1cIkXXWQxUvwKOj7tIx0JPbWAQ9+5IYAg0jccQl6Mp4gV+lqIvwhc1fCiPgv3JJpJCT4ygA/9OIVuOS7CA4mdF8Y4nc15b37aNbGUuVErTa2yxy8Jlsbvj1oTDHuQXl+x07sMCH2JNs7+qS6m3+ulv7OEcmPoMwSmF8zwsh9jffmcWDMhqubwZWpAThXfpJItAVvw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR08MB5656 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU6PEPF0000B61C.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 4e2b60e5-ae33-437c-2dee-08de9f27220c X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700016|14060799003|35042699022|376014|82310400026|13003099007|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: MobLMassio6U9Js0sFejem5iU5+ef4KibODTrJM7LS2coaO8YTokym9DZYe1SYizD6bIDKTu1p/1QOeeWqiVkmjn6/aDV/F7I7cJSl9WAxmCLKcKXlTSyZTg6qjpKUaM67b711rQxdJC73l593vzlP+1JKE6aYP1zeQjwGh1KaLInOgTo14mK2M6jDR0M0bN3D1MG+UJLTbjsYEMzOTPxDWIzn7OF94pfzFFhIbXmrydGW311fA6FKLPZHkMwhN1CbwO9hFo3V8rRPBzTYyqv8G+3L8KnNz4Um/yNKlQr7hUN6Ahlb3ZJ221WlQWWwyyVksMoiQDIhUWviKNX4205I51wimPI7P015cSjZFg+45B7aKp9AN8j/t4dQogl1CJ/M7RhXPmC5trGyjv7XsVc286EIlPhd4ySyeri4xp9o80pBCrPSgHCo0COCsCmpXxAy1PnQQN7hkH0mtQrsIadFiS8Y+R/fC58VRts25xGC0ILtOvVjeAVcuoD1t8h54fViv4V4yPhRTDz+EVfJ+4Mvry/kOzajFJGt+2Ej1o+LTmwusHerFPvg3+QUteEb/tSZfoiAbwtW++Id9H9FAba92ntrdWHeBDW3Z/NynR2y4It0ukXPlrPnsx4m5RYoYyVwLSDTbAL7F6WsbYCxAhsuSQrgvwlr8hEF59FVLuM8cN+YIuZa+Pm4bEwmCcAjAUn/P//KhL2HMWByOXRjYbu0oDjhnHKuajdQoujDt/Obg= X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(36860700016)(14060799003)(35042699022)(376014)(82310400026)(13003099007)(56012099003)(18002099003)(22082099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KWRD1ELZVSrrWbuh4TKoL2BaR5iziTPu8B3vbQyOLmuJms9YoXhjmjcMPpfhSHxnO4eIKD/ZkqJfgCfgzvg78BBHxf7SkY9XMVfn+KwZXSY1kn9L4I/LE9D8nADn7GkTSwKuSSkT2qlCm5/96OeBw8L3tagLMndYbmHJXsC0lTbZwMOPGy2EW/gy4cJ4rBWZ9S+/E/mFKCVLsroPJBhFgQlICFBA+tA8Jitj0V8Ep7YymYYEteHLhmRATfn5Px6mloq5XhFaYvLahChOD9uZv3ihiVxTiMG3MRdRfZRCF8K41vQaoBPxE9qpk6Y83HenUJT3cjxjMo3y6k/cdF8zv43oWfwYSP4w0mCxoBYe16O6Y+Vdy75MaTl+mCePvJHNTw1grMh7KKiW1wlPbesKfFizf8uJ6WJhQfdWN9ez8t3KQ5alvmdQfH85vBCmyvHF X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:53:40.3506 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7d7adac4-6abd-4dcc-2224-08de9f2748a8 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DU6PEPF0000B61C.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8802 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~public-inbox=simark.ca@sourceware.org From: Ezra Sitorus FEAT_LSE128 introduces support for 128-bit atomic instructions. This patch teaches GDB to decode these instructions for recording and reversing. Regression tested on aarch64-none-linux-gnu on QEMU with LSE128 support. I observe unrelated regressions that appear to be environmental rather than caused by this patch. --- gdb/aarch64-tdep.c | 13 ++ gdb/testsuite/gdb.reverse/aarch64-lse128.c | 139 +++++++++++++++++++ gdb/testsuite/gdb.reverse/aarch64-lse128.exp | 138 ++++++++++++++++++ gdb/testsuite/lib/gdb.exp | 56 ++++++++ 4 files changed, 346 insertions(+) create mode 100644 gdb/testsuite/gdb.reverse/aarch64-lse128.c create mode 100644 gdb/testsuite/gdb.reverse/aarch64-lse128.exp diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index 61c462979b3..aff8b294bd5 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -6004,6 +6004,19 @@ aarch64_record_load_store (aarch64_insn_decode_record *aarch64_insn_r) else if ((insn_bits24_27 & 1) == 1 && insn_bits28_29 == 1 && insn_bits10_11 == 1 && !insn_bit21) return aarch64_record_memcopy_memset (aarch64_insn_r); + /* Large System Extension 128 (LSE128) instructions. */ + else if (vector_flag == 0 && insn_bits10_11 == 0 && insn_bit21 + && size_bits == 0 && !bit (aarch64_insn_r->aarch64_insn, 29) + && bits (aarch64_insn_r->aarch64_insn, 24, 25) == 0x1) + { + regcache_raw_read_unsigned (aarch64_insn_r->regcache, reg_rn, &address); + record_buf_mem[0] = 128 >> 3; + record_buf_mem[1] = address; + aarch64_insn_r->mem_rec_count = 1; + record_buf[0] = reg_rt; + record_buf[1] = bits (aarch64_insn_r->aarch64_insn, 16, 20); + aarch64_insn_r->reg_rec_count = 2; + } /* Advanced SIMD load/store instructions. */ else return aarch64_record_asimd_load_store (aarch64_insn_r); diff --git a/gdb/testsuite/gdb.reverse/aarch64-lse128.c b/gdb/testsuite/gdb.reverse/aarch64-lse128.c new file mode 100644 index 00000000000..906c303d904 --- /dev/null +++ b/gdb/testsuite/gdb.reverse/aarch64-lse128.c @@ -0,0 +1,139 @@ +/* This test program is part of GDB, the GNU debugger. + + Copyright 2024-2026 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include +#include +#include + +#define INITIAL_STRING "This is just some string." +#define BUF_SIZE sizeof (INITIAL_STRING) + +#define PREPARE_REGS(X, Y) \ + strcpy (src, INITIAL_STRING); \ + __asm__ volatile ("mov %0, %1\n" : "=r"(xa): "r"(X):); \ + __asm__ volatile ("mov %0, %1\n" : "=r"(xb): "r"(Y):); \ + ptr = (uint64_t *)src; \ + +int +main (void) +{ + alignas(16) char src[BUF_SIZE]; + + register uint64_t xa asm ("x19"); + register uint64_t xb asm ("x20"); + register uint64_t *ptr asm ("x21"); + uint64_t a = 0x0123456789abcdef; + uint64_t b = 0xfedbca9876543210; + + PREPARE_REGS (a, b); + /* Before ldclrp. */ + __asm__ volatile ("ldclrp %0, %1, [%2]\n" + : "+r"(xa), "+r"(xb) + : "r"(ptr) + : "memory"); + /* After ldclrp. */ + + PREPARE_REGS (a, b); + /* Before ldclrpa. */ + __asm__ volatile ("ldclrpa %0, %1, [%2]\n" + : "+r"(xa), "+r"(xb) + : "r"(ptr) + : "memory"); + /* After ldclrpa. */ + + PREPARE_REGS (a, b); + /* Before ldclrpal. */ + __asm__ volatile ("ldclrpal %0, %1, [%2]\n" + : "+r"(xa), "+r"(xb) + : "r"(ptr) + : "memory"); + /* After ldclrpal. */ + + PREPARE_REGS (a, b); + /* Before ldclrpl. */ + __asm__ volatile ("ldclrpl %0, %1, [%2]\n" + : "+r"(xa), "+r"(xb) + : "r"(ptr) + : "memory"); + /* After ldclrpl. */ + + PREPARE_REGS (a, b); + /* Before ldsetp. */ + __asm__ volatile ("ldsetp %0, %1, [%2]\n" + : "+r"(xa), "+r"(xb) + : "r"(ptr) + : "memory"); + /* After ldsetp. */ + + PREPARE_REGS (a, b); + /* Before ldsetpa. */ + __asm__ volatile ("ldsetpa %0, %1, [%2]\n" + : "+r"(xa), "+r"(xb) + : "r"(ptr) + : "memory"); + /* After ldsetpa. */ + + PREPARE_REGS (a, b); + /* Before ldsetpal. */ + __asm__ volatile ("ldsetpal %0, %1, [%2]\n" + : "+r"(xa), "+r"(xb) + : "r"(ptr) + : "memory"); + /* After ldsetpal. */ + + PREPARE_REGS (a, b); + /* Before ldsetpl. */ + __asm__ volatile ("ldsetpl %0, %1, [%2]\n" + : "+r"(xa), "+r"(xb) + : "r"(ptr) + : "memory"); + /* After ldsetpl. */ + + PREPARE_REGS (a, b); + /* Before swpp. */ + __asm__ volatile ("swpp %0, %1, [%2]\n" + : "+r"(xa), "+r"(xb) + : "r"(ptr) + : "memory"); + /* After swpp. */ + + PREPARE_REGS (a, b); + /* Before swppa. */ + __asm__ volatile ("swppa %0, %1, [%2]\n" + : "+r"(xa), "+r"(xb) + : "r"(ptr) + : "memory"); + /* After swppa. */ + + PREPARE_REGS (a, b); + /* Before swppal. */ + __asm__ volatile ("swppal %0, %1, [%2]\n" + : "+r"(xa), "+r"(xb) + : "r"(ptr) + : "memory"); + /* After swppal. */ + + PREPARE_REGS (a, b); + /* Before swppl. */ + __asm__ volatile ("swppl %0, %1, [%2]\n" + : "+r"(xa), "+r"(xb) + : "r"(ptr) + : "memory"); + /* After swppl. */ + + return 0; +} diff --git a/gdb/testsuite/gdb.reverse/aarch64-lse128.exp b/gdb/testsuite/gdb.reverse/aarch64-lse128.exp new file mode 100644 index 00000000000..273e239ec66 --- /dev/null +++ b/gdb/testsuite/gdb.reverse/aarch64-lse128.exp @@ -0,0 +1,138 @@ +# Copyright 2024-2026 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Test instruction record for AArch64 FEAT_LSE128 instructions. +# Based on gdb.reverse/aarch64-mops.exp +# +# The basic flow of the record tests are: +# 1) Stop before executing the instructions of interest. Record +# the initial value of the registers that the instruction will +# change, i.e. the destination register. +# 2) Execute the instructions. Record the new value of the +# registers that changed. +# 3) Reverse the direction of the execution and execute back to +# just before the instructions of interest. Record the final +# value of the registers of interest. +# 4) Check that the initial and new values of the registers are +# different, i.e. the instruction changed the registers as expected. +# 5) Check that the initial and final values of the registers are +# the same, i.e. GDB record restored the registers to their +# original values. + +standard_testfile + +require allow_aarch64_lse128_tests + +if { + [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \ + [list debug additional_flags=-march=armv8-a+lse128]] +} { + return -1 +} + +if {![runto_main]} { + return -1 +} + +gdb_test_no_output "record full" + +proc test_single_asm {insn} { + global decimal hex + + set before_seq [gdb_get_line_number "Before ${insn}"] + set after_seq [gdb_get_line_number "After ${insn}"] + set regs { x19 x20 } + + gdb_test "break $before_seq" \ + "Breakpoint $decimal at $hex: file .*/aarch64-lse128.c, line $decimal\\." \ + "$insn: break before instruction sequence" + gdb_continue_to_breakpoint "$insn: about to execute instruction sequence" \ + [multi_line ".*/aarch64-lse128.c:$decimal" \ + "$decimal\[ \t\]+__asm__ volatile \\(\"${insn} \[^\r\n\]+\""] + + # Depending on the compiler, the line number information may put GDB a few + # instructions before the beginning of the asm statement. + arrive_at_instruction $insn + # Add a breakpoint that we're sure is at the prologue instruction. + gdb_test "break *\$pc" \ + "Breakpoint $decimal at $hex: file .*/aarch64-lse128.c, line $decimal\\." \ + "$insn: break at prologue instruction" + + # Record the initial memory and register values. + foreach r $regs { + set ${r}_initial [capture_command_output "info register $r" ""] + } + set ptr_initial [capture_command_output "x/4gwx ptr" ""] + + gdb_test "break $after_seq" \ + "Breakpoint $decimal at $hex: file .*/aarch64-lse128.c, line $decimal\\." \ + "$insn: break after instruction sequence" + gdb_continue_to_breakpoint "$insn: executed instruction sequence" \ + [multi_line ".*/aarch64-lse128.c:$decimal" ".*"] + + # Record the new memory and register values. + foreach r $regs { + set ${r}_new [capture_command_output "info register $r" ""] + } + set ptr_new [capture_command_output "x/4gwx ptr" ""] + + # Execute in reverse to before the instruction sequence. + gdb_test_no_output "set exec-direction reverse" + + gdb_continue_to_breakpoint "reversed execution of instruction sequence" \ + [multi_line ".*/aarch64-lse128.c:$decimal" \ + "$decimal\[ \t\]+__asm__ volatile \\(\"${insn} \[^\r\n\]+\""] + + # Record the final memory and register values. + foreach r $regs { + set ${r}_final [capture_command_output "info register $r" ""] + } + set ptr_final [capture_command_output "x/4gwx ptr" ""] + + foreach v [concat $regs {ptr}] { + gdb_assert ![string compare [set ${v}_initial] [set ${v}_final]] \ + "$insn: check $v initial value versus $v final value" + gdb_assert [string compare [set ${v}_initial] [set ${v}_new]] \ + "$insn: check $v initial value versus $v new value" + } + + # Restore forward execution and go to end of recording. + gdb_test_no_output "set exec-direction forward" + gdb_test "record goto end" \ + [multi_line \ + "Go forward to insn number $decimal" \ + "#0 main \\(\\) at .*/aarch64-lse128.c:$decimal" \ + ".*"] +} + +set cases { + { ldclrp } + { ldclrpa } + { ldclrpal } + { ldclrpl } + { ldsetp } + { ldsetpa } + { ldsetpal } + { ldsetpl } + { swpp } + { swppa } + { swppal } + { swppl } +} + +foreach c $cases { + lassign $c insn + test_single_asm $insn +} diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 7d400e9028a..d5f9008470a 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -5402,6 +5402,62 @@ gdb_caching_proc allow_aarch64_cssc_tests {} { return $allow_cssc_tests } +# Run a test on the target to see if it supports the AArch64 LSE128 feature. +# Return 1 if so, 0 if it does not. Note this causes a restart of GDB. + +gdb_caching_proc allow_aarch64_lse128_tests {} { + global srcdir subdir gdb_prompt inferior_exited_re + + set me "allow_aarch64_lse128_tests" + + if { ![is_aarch64_target]} { + return 0 + } + + set compile_flags "{additional_flags=-march=armv8-a+lse128}" + + # Compile a test program reading LSE128. + set src { + #include + + int main() { + __attribute__((aligned(16))) uint64_t mem[2] = { 0x0, 0x1 }; + uint64_t *ptr = mem; + __asm__ volatile ("ldclrp x0, x1, [%0]\n" :: "r"(ptr) : "x0", "x1", "memory"); + return 0; + } + } + + if {![gdb_simple_compile $me $src executable $compile_flags]} { + return 0 + } + + # Compilation succeeded so now run it via gdb. + clean_restart + gdb_load $obj + gdb_run_cmd + + gdb_expect { + -re ".*Illegal instruction.*${gdb_prompt} $" { + verbose -log "\n$me lse128 support not detected" + set allow_lse128_tests 0 + } + -re ".*$inferior_exited_re normally.*${gdb_prompt} $" { + verbose -log "\n$me: lse128 support detected" + set allow_lse128_tests 1 + } + default { + warning "\n$me: default case taken" + set allow_lse128_tests 0 + } + } + gdb_exit + remote_file build delete $obj + + verbose "$me: returning $allow_lse128_tests" 2 + return $allow_lse128_tests +} + # Run a test on the target to see if it supports AArch64 MOPS (Memory # Operations) extensions. Return 1 if so, 0 if it does not. Note this # causes a restart of GDB. -- 2.43.0