From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id Cel+DZOg5mnAci0AWB0awg (envelope-from ) for ; Mon, 20 Apr 2026 17:54:27 -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=kjI8l4w/; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=kjI8l4w/; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 327461E0C3; Mon, 20 Apr 2026 17:54:27 -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 831E11E093 for ; Mon, 20 Apr 2026 17:54:25 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 195534CCCA31 for ; Mon, 20 Apr 2026 21:54:25 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 195534CCCA31 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=kjI8l4w/; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=kjI8l4w/ Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013038.outbound.protection.outlook.com [52.101.83.38]) by sourceware.org (Postfix) with ESMTPS id E6DE84CCCA31 for ; Mon, 20 Apr 2026 21:53:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E6DE84CCCA31 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 E6DE84CCCA31 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=52.101.83.38 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1776722036; cv=pass; b=e7z0ZpYks4gR5IfIkiE6KU74e9aPRtQmV5O/bjfFKdWF9OeB8un4c55wy0QdBNvyusetbg4sznyfg/RWR3Yx4rK8l9PK6bs0O/OB2oSmmfXHInE4tETfI/kuKeswBY99Wl1cWkB2AzI2gE4WttzVySR7mlaDyTFws8xxboM89HE= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1776722036; c=relaxed/simple; bh=JyXQmc/Z/ngGnuAhIwe9JnMTcKTxfWbQMmuu72PgZFE=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=sVTpB64FPsUxQ5N+SZyL6wVB5tKgstFX5Sr/ICnl2S3iYLRPCypROTVgZ6zOraZICYjNY8kShmE+/33MPI5kuPGpDHVj+6QqnOHERkKJvQydxvd/i4TAXaS/pzafuxFJMZcMh2h0h30rupVddmsCp8o7os5PBct9Hhjk90jAMMA= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E6DE84CCCA31 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=NLPuhqfIhMFrB7AUagI4zY3nX7NSY7fivFcAkMsOPYOTXwYwNvom4Sj4BMKx27FgMly7S9EVKQBR5HM3icWyc0ViDW9LD74hPSTetC/4kp1BKAO11azVU9uiW9b3H6sF0jl9u6NyTnWngQq8pTiHrK88hjBKlGYohnuYdZWUfFebiHO8OO86ksp6veU3Djm2bizVPzyRuMvh57LOYJ6dPESssXUzKO+ZzJY4f+zhY5cBo6jjaxHBl55nIuml4a1awTxuVlN3Xd+v6bkH4ZCcycQup7noGtyqdFqg9vD065NdTmqAZdyX5JPTF6DSUCQOMiU5vmqhXt08nWkgKUUzLw== 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=eM5rQt5z5adWJfNNCx0iFQYQTGThPz2mRlQ8WatutQA=; b=UFb1pX1RS2aDEzRl08zduB+ZMb8PONPrbwOxlgPlTvTbex+4tQMxpgNAHqturOn4O4m8NQKmzCTdKtvbKRtJOOYcdR+MQvwkpCyGz+cG+MQ02s9imY0PY6fmLkVTL1DZjJPoZsZ3tIrqwaHUzwmM4Ib127sJyRXtSMVlaaURjnM/4l4dfTZGHC24ORkB6LIgJMVJHm5SAYf6y2GRVslnM3hAmuVY8ZEJX9cogr1r6s9R4dc0PTzr3FLc3JHhfEdXMMD4ojE7XPUMJ8C+h1q/zbkcapc0nIlFvsvQBrrBJO+LyFjVqJaOBMzleK4gzdeZkUThjnHT8lXqglQW6WUzyg== 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=eM5rQt5z5adWJfNNCx0iFQYQTGThPz2mRlQ8WatutQA=; b=kjI8l4w/x4XjhnQMQ30SeFFTGclpvDyzmCZV6HwlYbD+gVXjx2/4pQs9saBXsFGlpXyb6iwURBwifyutiPy13zv7yUEo/G8legHaD57ran+hNXe/yAdmG9p4ywHONu6Ja6GIDLu0By5bDRGH9g28guwc0pyRicqvFvJ1okPAY1A= Received: from DU2P251CA0030.EURP251.PROD.OUTLOOK.COM (2603:10a6:10:230::30) by VI0PR08MB10485.eurprd08.prod.outlook.com (2603:10a6:800:1b9::13) 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:40 +0000 Received: from DB1PEPF00039230.eurprd03.prod.outlook.com (2603:10a6:10:230:cafe::ed) by DU2P251CA0030.outlook.office365.com (2603:10a6:10:230::30) 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 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 DB1PEPF00039230.mail.protection.outlook.com (10.167.8.103) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Mon, 20 Apr 2026 21:53:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qA1AYen0uVUuC1WrNvk7YQPBUUNopv0q/2hkEB3iPyxyDRFaGpUB6zaoIFLQOZ2wd54u3Pu8aKK2s89kIoYoPkhM0jE5ScWmyisQmbo2+eQcAyUUEpPtIC5i5H4ip1KDkUeKBce8s2lEuXuny8z61I13LQ3g95jCc5dz75XGGKxebVj3Z4SV3PKzmrDeLvilUFIFuJNUiOB2sRyKbBKWDG6ybZvSL2oAzRPC4PH22Y/K5ZiYe0ErB0QM0bgpdKVlBXYf7mjp0F47mtZkwJLhS5IBUTKcJBPcGacFLLfkN//kBiP3b98gKcO9cbQDWkki3AknaLj1b0cXY0fQoOC7Dw== 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=eM5rQt5z5adWJfNNCx0iFQYQTGThPz2mRlQ8WatutQA=; b=cpjE6pdA0MIj3Fjhy/xEESJ//EkdxVS+RgcqB3xkQyqJynW8lJOpZwFAMlN/i3AqXaLnW0Oe/FUp3EPwtCaRaW/0RdUyVijIXO4EJOB0dkOUbNTopnXdwfWvy/KKqGvnOuXNdPSU3KPz5WTIYoBqJc1A+rsnYjsJ3F2rhyXdn6ZD9FxWdpXaoI5Pz0lvYUPu7ruEt1sC7Z7LfdW+mrUvjZ2GiYhnB/0gIn6DrT6QkuRdle5atxoG63b52sFAPkpUj1PIJLAqnE7bUJdDyi+akJWRksrSyII2ipYMKY7wgfywMupiua1Gju9a+V3/0OVTbL48yQyzmsw2Zm5Y5DrqXQ== 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=eM5rQt5z5adWJfNNCx0iFQYQTGThPz2mRlQ8WatutQA=; b=kjI8l4w/x4XjhnQMQ30SeFFTGclpvDyzmCZV6HwlYbD+gVXjx2/4pQs9saBXsFGlpXyb6iwURBwifyutiPy13zv7yUEo/G8legHaD57ran+hNXe/yAdmG9p4ywHONu6Ja6GIDLu0By5bDRGH9g28guwc0pyRicqvFvJ1okPAY1A= Received: from AS4P192CA0040.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:658::16) by AMDPR08MB11334.eurprd08.prod.outlook.com (2603:10a6:20b:717::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.33; Mon, 20 Apr 2026 21:52:35 +0000 Received: from AMS0EPF00000190.eurprd05.prod.outlook.com (2603:10a6:20b:658:cafe::da) by AS4P192CA0040.outlook.office365.com (2603:10a6:20b:658::16) 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 AMS0EPF00000190.mail.protection.outlook.com (10.167.16.213) 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-EX03.Arm.com (10.240.25.137) 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:33 +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:33 +0000 From: To: CC: , , Ezra Sitorus Subject: [PATCH 2/4] gdb/aarch64: Test record/replay support for CSSC Date: Mon, 20 Apr 2026 22:52:30 +0100 Message-ID: <20260420215232.68675-3-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: AMS0EPF00000190:EE_|AMDPR08MB11334:EE_|DB1PEPF00039230:EE_|VI0PR08MB10485:EE_ X-MS-Office365-Filtering-Correlation-Id: 1b9da861-3822-411f-ee72-08de9f274861 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|36860700016|1800799024|376014|82310400026|13003099007|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info-Original: tBE+7HQJuXfjtWwetFy6AKUJnGIGbiNHR+qOzI/vxcIxMXL9rO6Cst6X/4cYyj0/woqIn3AEcu6uGXESNaqf+lPOSZmnVu16BsQ7QlpreWUVn5EQvRnH/SF6nenrrFm3kW533RXxtyt8RPaJoLMQOxw4bEdPVWLklOY8gtcmWBt03r+4pLZhsqpOec5+nGp29p/92BUCytwnnnVMpA+p86fMRzOk1TCwVYHT5SCsomTXaBPzg09s8czxOw0b0iecQ2ZNR5mJh8Xwa3RhWcil43odrm5Sk5xk9ATUTSfGy9vMV/jeOiN063vaqzZ8HBd592lYGbd1nmliTK1ja0WXELm57ejiD3Z2YwqZnqk/llVSnIUyLxFR0MKY9IIxEIFMA0sFab1gThkYIE8RUSHxNCkQqBoT8RX/K1w78eZBE4ArOCwnfgLl0Cy8W29hHR/VFFqJe3TdwQVWxWvoGUswTZ9P8NGRnq3RECRO7yMUCfveVBUuosdlmFaMtXUKYwA8sWgvby0Jbow/WNSmJgN1g2EZ/gQtwpKtmIMQ7Td2QA5SrvlkTDuj/OJFNV8WfgFbHazQi7PtaLo3V7nh1X8heAoUOZbrb7q3dpMIGJeEqCy3/uKaHBFwQ2L/ZhnNdkx3/v9+NdZ87eY/fR4ZWVHaTZCtyWWWN6ZzGTEj4Yfj/aqa6UJtql1UPD1pBWqLN1+kjl7g4IbAw91TYhLr5kdd5qVmc6xhDEnbjlieq+W194k= 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)(36860700016)(1800799024)(376014)(82310400026)(13003099007)(56012099003)(22082099003)(18002099003); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: TuH18LqLDi43J3Q7YCGx3Jta+ofTri8nXM+OCuesTN0LBEsAB+UFNiUciPuO3sjdj9uypIl12xwMb+QBrC1yDDUcUSVeQabTpXDO1UZkHfjfS6mTA/bEItALs6Odn7nGR/ANvBUDdyZxK81XRwyjevedOmvVv7bozfGUx6Z8KUjYmN1WN647DGzQX/qNqDH+Flc6snFZlgHIJcng0KWVJvQNxw/GHqouNIpvHfiep9xx0GLwFL8d1HqbqABY3hCFo7Pj0tWtbMojwfG+jEkOc6eS9REy2SR2wMwx0+g/xVpB4HrqTDNJak9lXZLTuJiLtCe+0skuAotqN1aSFmn3cw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMDPR08MB11334 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF00039230.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: d46ab436-5fca-4d33-a2fa-08de9f2721b9 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|14060799003|36860700016|35042699022|82310400026|1800799024|13003099007|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: eT8aHBKEk2iYY0xeOdH1Q1L2cwUwAcUcYwoqotBgLLoB31KKZmmi5ZgfDa3izGxWsxFVTbyqbm9eQoBb3XHCte/Z72pMtTDg4SA6rIhH63DqqVxwMntOFy13VUQl9pw9s25WBT845shmBRadduNNfi0zzAXKy9foLkp6d+j9c/eCgt40IxM647fIDlcN6gB8twjzmqEi/9L8/5HDttzg6hc2mDbp0lEa+Yy7c1Iue1L47OKuSgUBfLpghHY6O5NoFEhcLAmil5Xgow+q1t93J4+XobCjQXl8xKnKcjDJMy9ugxgrKbVrCKhLxOLhHpg8S+XpUQwZ11WWDH2Ucb1Fyd2tZRvF8uBXHkJeu9o7uI+QRKupfjVCkt8xo0u8Ds7bpkLlbtDyYNkMy8r4g3VxzechvMCAmcKQz1jp5p9vHpuunXfk94GFuUze7fWWz1nkfiWaT9lStI7NH3ciWt84GX/m6kd5EBHiJngD2PQsfFNdlAN5b8420HsJHSYa7hj+ovFBtfa9DBZQSaig5FDajYxez0c4qz6xDqYPekhAc0bkrMtvQS90UYSmktmAJrt1rnWz4GVonqPrnTS/bp8oE0+hWs6URIiTKbabnnteS2F13E1Zfx+yWzvEZql5lzieAZI5gdvVo3+nYyJV9T3+UMwq8Dsw7R0hDPV5PN2dUUcxSVwTRPDZ9mwRkdwlX+77iHPilCiUzJks8qjbVl2xzyLnJ/KiLB7sGCUoFOP0K3k= 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)(376014)(14060799003)(36860700016)(35042699022)(82310400026)(1800799024)(13003099007)(56012099003)(22082099003)(18002099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: XoOJHNiR5HxsM5WQewTVsCf429A89UIrIvMvGqhVEdK6iQqu3vhuC8z4kpgqLnYiiirD5oi7rwXFrZeoOoQIaQz5/HYSH55IM/XMyBtFOMgh0EKjjTA1cP0My2o4BlkqoFEJWFjYEs6fRibMAHVyKe0xrQicU75nzszpyGmynAOyL+RTySmu5ierYMe8+HrHxXbMTogYTDdWRkHIHdc18okfQlH/+Gx67lVI96+rQPJlNZZABsnKeFM+ChIN39lfziHLw2tmTetPJX6DMO5nubxAUvrdcqRQPjWPsTLfXxhAXDDvahUzrlk5bxVZTROsA8uCd7iAi74GwhIjPi4dnw7461lDyRl0wRmY1PRXnToFzsvYMsTVes6Estng16nudjbsjfErQUCljSd2+qJ3UIe6Ecputd3rLYFbT9xl3IfcXuv8jF1ZRtzzOXPLfiWG X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 21:53:39.9026 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1b9da861-3822-411f-ee72-08de9f274861 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: DB1PEPF00039230.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB10485 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 This patch checks that the handling of CSSC instructions is correct. There is no explicit support for handling these instructions which is why this patch is composed of tests. Regression tested on aarch64-none-linux-gnu on QEMU with CSSC support. I observe unrelated regressions that appear to be environmental rather than caused by this patch. --- gdb/testsuite/gdb.reverse/aarch64-cssc.c | 113 +++++++++++++++++ gdb/testsuite/gdb.reverse/aarch64-cssc.exp | 141 +++++++++++++++++++++ gdb/testsuite/lib/gdb.exp | 52 ++++++++ 3 files changed, 306 insertions(+) create mode 100644 gdb/testsuite/gdb.reverse/aarch64-cssc.c create mode 100644 gdb/testsuite/gdb.reverse/aarch64-cssc.exp diff --git a/gdb/testsuite/gdb.reverse/aarch64-cssc.c b/gdb/testsuite/gdb.reverse/aarch64-cssc.c new file mode 100644 index 00000000000..d80d202590c --- /dev/null +++ b/gdb/testsuite/gdb.reverse/aarch64-cssc.c @@ -0,0 +1,113 @@ +/* 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 + +#define PREPARE_REGS(X, Y, Z) \ + __asm__ volatile ("mov %0, %1\n" : "=r"(xa): "r"(X):); \ + __asm__ volatile ("mov %0, %1\n" : "=r"(xb): "r"(Y):); \ + __asm__ volatile ("mov %0, %1\n" : "=r"(xc): "r"(Z):); \ + +int +main (void) +{ + register uint64_t xa asm ("x19"); + register uint32_t xb asm ("x20"); + register uint64_t xc asm ("x21"); + const uint64_t a = 0x0123456789abcdef; + const uint64_t b = 0xfedbca9876543210; + const uint64_t c = 0xdeadbeefc001face; + + PREPARE_REGS (a, b, c); + /* Before abs. */ + __asm__ volatile ("abs %0, %1\n" + : "+r"(xa) + : "r"(xb)); + /* After abs. */ + + PREPARE_REGS (a, b, c); + /* Before cnt. */ + __asm__ volatile ("cnt %0, %1\n" + : "+r"(xa) + : "r"(xb)); + /* After cnt. */ + + PREPARE_REGS (a, b, c); + /* Before ctz. */ + __asm__ volatile ("ctz %0, %1\n" + : "+r"(xa) + : "r"(xb)); + /* After ctz. */ + + PREPARE_REGS (a, b, c); + /* Before smax-1. */ + __asm__ volatile ("smax %0, %1, #10\n" + : "+r"(xa) + : "r"(xb)); + /* After smax-1. */ + + PREPARE_REGS (a, b, c); + /* Before smax-2. */ + __asm__ volatile ("smax %0, %1, %2\n" + : "+r"(xa) + : "r"(xb), "r"(xc)); + /* After smax-2. */ + + PREPARE_REGS (a, b, c); + /* Before smin-1. */ + __asm__ volatile ("smin %0, %1, #10\n" + : "+r"(xa) + : "r"(xb)); + /* After smin-1. */ + + PREPARE_REGS (a, b, c); + /* Before smin-2. */ + __asm__ volatile ("smin %0, %1, %2\n" + : "+r"(xa) + : "r"(xb), "r"(xc)); + /* After smin-2. */ + + PREPARE_REGS (a, b, c); + /* Before umax-1. */ + __asm__ volatile ("umax %0, %1, #10\n" + : "+r"(xa) + : "r"(xb)); + /* After umax-1. */ + + PREPARE_REGS (a, b, c); + /* Before umax-2. */ + __asm__ volatile ("umax %0, %1, %2\n" + : "+r"(xa) + : "r"(xb), "r"(xc)); + /* After umax-2. */ + + PREPARE_REGS (a, b, c); + /* Before umin-1. */ + __asm__ volatile ("umin %0, %1, #10\n" + : "+r"(xa) + : "r"(xb)); + /* After umin-1. */ + + PREPARE_REGS (a, b, c); + /* Before umin-2. */ + __asm__ volatile ("umin %0, %1, %2\n" + : "+r"(xa) + : "r"(xb), "r"(xc)); + /* After umin-2. */ + + return 0; +} diff --git a/gdb/testsuite/gdb.reverse/aarch64-cssc.exp b/gdb/testsuite/gdb.reverse/aarch64-cssc.exp new file mode 100644 index 00000000000..640ea4ae19f --- /dev/null +++ b/gdb/testsuite/gdb.reverse/aarch64-cssc.exp @@ -0,0 +1,141 @@ +# 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_CSSC 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. + +require allow_aarch64_cssc_tests +standard_testfile + +if { + [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \ + [list debug additional_flags=-march=armv8-a+cssc]] +} { + return -1 +} + +if {![runto_main]} { + return -1 +} + +gdb_test_no_output "record full" + +proc test_single_asm { name } { + global decimal hex + + set before_seq [gdb_get_line_number "Before ${name}"] + set after_seq [gdb_get_line_number "After ${name}"] + set regs { x19 x20 x21 } + + set insn [lindex [split $name "-"] 0] + + gdb_test "break $before_seq" \ + "Breakpoint $decimal at $hex: file .*/aarch64-cssc.c, line $decimal\\." \ + "$insn: break before instruction sequence" + gdb_continue_to_breakpoint "$insn: about to execute instruction sequence" \ + [multi_line ".*/aarch64-cssc.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-cssc.c, line $decimal\\." \ + "$insn: break at prologue instruction" + + # Record the initial register values. + foreach r $regs { + set ${r}_initial [capture_command_output "info register $r" ""] + } + + gdb_test "break $after_seq" \ + "Breakpoint $decimal at $hex: file .*/aarch64-cssc.c, line $decimal\\." \ + "$insn: break after instruction sequence" + gdb_continue_to_breakpoint "$insn: executed instruction sequence" \ + [multi_line ".*/aarch64-cssc.c:$decimal" ".*"] + + # Record the new register values. + foreach r $regs { + set ${r}_new [capture_command_output "info register $r" ""] + } + + # 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-cssc.c:$decimal" \ + "$decimal\[ \t\]+__asm__ volatile \\(\"${insn} \[^\r\n\]+\""] + + # Record the final register values. + foreach r $regs { + set ${r}_final [capture_command_output "info register $r" ""] + } + + foreach v { x19 x20 x21 } { + gdb_assert ![string compare [set ${v}_initial] [set ${v}_final]] \ + "$insn: check $v initial value versus $v final value" + } + + gdb_assert [string compare [set x19_initial] [set x19_new]] \ + "$insn: check x19 initial value versus x19 new value" + + foreach v { x20 x21 } { + 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-cssc.c:$decimal" \ + ".*"] +} + +set cases { + { abs } + { cnt } + { ctz } + { smax-1 } + { smax-2 } + { smin-1 } + { smin-2 } + { umax-1 } + { umax-2 } + { umin-1 } + { umin-2 } +} + +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 c6afc556548..7d400e9028a 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -5350,6 +5350,58 @@ gdb_caching_proc allow_aarch64_lrcpc3_tests {} { return $allow_lrcpc3_tests } +# Run a test on the target to see if it supports the AArch64 CSSC feature. +# Return 1 if so, 0 if it does not. Note this causes a restart of GDB. + +gdb_caching_proc allow_aarch64_cssc_tests {} { + global srcdir subdir gdb_prompt inferior_exited_re + + set me "allow_aarch64_cssc_tests" + + if { ![is_aarch64_target]} { + return 0 + } + + set compile_flags "{additional_flags=-march=armv8-a+cssc}" + + # Compile a test program reading CSSC. + set src { + int main() { + asm volatile ("abs x0, x1"); + 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 cssc support not detected" + set allow_cssc_tests 0 + } + -re ".*$inferior_exited_re normally.*${gdb_prompt} $" { + verbose -log "\n$me: cssc support detected" + set allow_cssc_tests 1 + } + default { + warning "\n$me: default case taken" + set allow_cssc_tests 0 + } + } + gdb_exit + remote_file build delete $obj + + verbose "$me: returning $allow_cssc_tests" 2 + return $allow_cssc_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