From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id abcFMMQI5WhT7iIAWB0awg (envelope-from ) for ; Tue, 07 Oct 2025 08:34:12 -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=m3PHqAFI; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=m3PHqAFI; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id BEE431E0B6; Tue, 07 Oct 2025 08:34:12 -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 server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (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 6EDB41E047 for ; Tue, 07 Oct 2025 08:34:11 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 15AF33858C40 for ; Tue, 7 Oct 2025 12:34:11 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 15AF33858C40 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=m3PHqAFI; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=m3PHqAFI Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [IPv6:2a01:111:f403:c200::5]) by sourceware.org (Postfix) with ESMTPS id C96653858C40 for ; Tue, 7 Oct 2025 12:32:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C96653858C40 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 C96653858C40 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c200::5 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1759840359; cv=pass; b=ZYWF86oP5InRQ+c2Lpo+OuXPCH5/6Zq+Guf89R2W/5tiOUIhRhW6fIrh59kv3Pjt0mUESmw87q0/t88lw+9KkgHbiVwpfJ5krafmK6jORV82hd0tb4IlQvmdsZ21LG4Clin7oo2zBFF0mdx5Mn0sfLVRv0x93a/xr46gSME3avQ= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1759840359; c=relaxed/simple; bh=m6nyB++WHokpiEm1l8qiDBK3piIKQ7e/V7E9wtig0NE=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=s5LslA9pRuf+FAIfyStIsmEhTsRNfKcSsOJgCP3jIgK67470SR3JiYduZPI417hR1S36yjX2ig8ems1v+MD3736RkZTh9EnzZ144saWn7IVbLnyiHkWZeoXPMqz0pkoFNrQLbeiGxLKXIb9b/AOpBmuEGN0CSvxVUjc5T/WSvnU= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C96653858C40 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=ef5k6LqmzGWJHduEhJlg26ZPebwJ+rlvo+h4kuIzJUtFi0A1VRXT6R47Atksumx1+jFkd18oj7s11VzdEG7ZN1IYTP/kGqWnxUSOolcuNvY+9/Otr9B10IJ9AHcdwYVWEF3Jq9c2366HQqD1Pkxj3Kahgb80T/7oiLLfi0ivK/6JvbFsE63wyULQ3fCBf/QXrcrnJ6JbQkCiPMV0zTjf2jnBiwGdjSSiZJe5EO7EuQiG085FOqWPrpvU3liCZyTJbVtV+ZS/OibNs5M5NUT6zooORw3ciwfobfGwaD4BQK0CpZqEjygWUXkVXT9sNFU+DXgyjB0BCjz3hqnHD0QNLQ== 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=lb5fX1TAMEhLSwbdO6kz+5AzcQShJ1RhVHXlhjhS5wc=; b=oF4+MKRKMifeOTrtPFp3p5ANWwfAaIwbjfMWtLLMomhaCgIivEmMe5admvkf3DFH8+FVfNdDHvwAKMcthD3PoyfM6zDDVBnBBr9EDJG1CzzqVLWvM67/3eyX0kAadcqnwvLHiUPoZMpiA6xY4KDiW5rOIaGqGniPCb1xrG4cScOE/x+7dLE+wwDkpaO3M89usQ9oNvT1iCJ4u0TV3RPrroSJ3XfTtJ9x6ugnPU200mZYvyIGUodrN5arfO2Co59dnibyNiVks2yFtJlO4PKmFuXKeHBgRJfouM4RqCx0lLmHlo2Xm636S1nGKlSOWSj262BjN6l5tE5IUr5QPJwVuw== 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=lb5fX1TAMEhLSwbdO6kz+5AzcQShJ1RhVHXlhjhS5wc=; b=m3PHqAFIgW0q3NQOs3X6H74VvYEy1tm6B3spG5G1bKy3OHDZVKI9XUzqTjrcHpIhlfxVkshwYnpOfLdo2RydbPKdURXByaUSKjfYIFlU6+b/L/gU8mCZ2xiI1ldlyslKwkML6JeZlT11V234OY0r4LvjPv8jYDYroupK7+wufzc= Received: from AS4P195CA0028.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:5d6::13) by AS8PR08MB10345.eurprd08.prod.outlook.com (2603:10a6:20b:57d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9182.20; Tue, 7 Oct 2025 12:32:29 +0000 Received: from AMS0EPF000001A9.eurprd05.prod.outlook.com (2603:10a6:20b:5d6:cafe::d9) by AS4P195CA0028.outlook.office365.com (2603:10a6:20b:5d6::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9182.20 via Frontend Transport; Tue, 7 Oct 2025 12:32:21 +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 AMS0EPF000001A9.mail.protection.outlook.com (10.167.16.149) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9203.9 via Frontend Transport; Tue, 7 Oct 2025 12:32:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sVIMJ66ilobPZKJT+9+AxHQf80vxAGfzJgSe9+zz7CSdywmKSOIEa4PmyUgySbMM6BxDUOyrEsaHOtZAeE6L3kRBVZopzqufTBk5DoByMrLixVdXW6kz+CMBKB3xS4GQOnC9vkkeQlBWhbu34R2C+aQHrF6rCxJr5QV5rqBkmOuTpyi25oOxgB0dcnBDyWNDqxMqbcFGtlyRak+ZLYVi7T4hipy21AsFtD4UGnilYYRgty8lD4ctmIUGnE+ow5UlyQ9NAybTkosALf15GW0GmAl8PV3ahKVKq2Wd5qEohQo58giavjVVEAVszmWpA0PTmESRSmsao4f4LVJ++/jfaw== 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=lb5fX1TAMEhLSwbdO6kz+5AzcQShJ1RhVHXlhjhS5wc=; b=Vk0/h0VvwcRJZZBmqw4NORsCtWxoJTTERMq6fzwruLi7c+4MOF79benlXRQIaoK191QDb6YtLvD3knjInAP3n/dGYBlkQJCNH5i2Bgs51Olmhc7Yr5xCdDooA0T+16CZVPKI8T+lhvDH0JIsEPNXu52gVeHmCsdUwMTkgibiwloAtZrTRuBh/AEnRWgAMWsySCrIjWacjeuAYt+36LdlfUQPHo7g/fObkpEqblN/PZLXyTVPKX/Qo8abqtvkWiTJ+oyDQrZg75/LIbKLMIoRT1QbsVjp/L+6UD8SLWeavQSw1v9bdEB8VbndS54//BQQ5KbHgPZHyhe0ck1yGTHBqA== 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=lb5fX1TAMEhLSwbdO6kz+5AzcQShJ1RhVHXlhjhS5wc=; b=m3PHqAFIgW0q3NQOs3X6H74VvYEy1tm6B3spG5G1bKy3OHDZVKI9XUzqTjrcHpIhlfxVkshwYnpOfLdo2RydbPKdURXByaUSKjfYIFlU6+b/L/gU8mCZ2xiI1ldlyslKwkML6JeZlT11V234OY0r4LvjPv8jYDYroupK7+wufzc= Received: from AS4PR10CA0027.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:5d8::17) by AS8PR08MB9621.eurprd08.prod.outlook.com (2603:10a6:20b:61a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9182.20; Tue, 7 Oct 2025 12:31:49 +0000 Received: from AM2PEPF0001C70D.eurprd05.prod.outlook.com (2603:10a6:20b:5d8:cafe::eb) by AS4PR10CA0027.outlook.office365.com (2603:10a6:20b:5d8::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9182.20 via Frontend Transport; Tue, 7 Oct 2025 12:31:43 +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 AM2PEPF0001C70D.mail.protection.outlook.com (10.167.16.201) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.9 via Frontend Transport; Tue, 7 Oct 2025 12:31:49 +0000 Received: from AZ-NEU-EXJ02.Arm.com (10.240.25.139) 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.27; Tue, 7 Oct 2025 12:31:45 +0000 Received: from AZ-NEU-EX05.Arm.com (10.240.25.133) by AZ-NEU-EXJ02.Arm.com (10.240.25.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.27; Tue, 7 Oct 2025 12:31:45 +0000 Received: from D2G2X7XGD1.arm.com (10.57.82.107) by mail.arm.com (10.240.25.133) with Microsoft SMTP Server id 15.1.2507.39 via Frontend Transport; Tue, 7 Oct 2025 12:31:45 +0000 From: To: CC: , , Ezra Sitorus Subject: [PATCH v2 5/5] gdb/aarch64: Tests for fpmr Date: Tue, 7 Oct 2025 13:31:32 +0100 Message-ID: <20251007123132.26769-6-Ezra.Sitorus@arm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251007123132.26769-1-Ezra.Sitorus@arm.com> References: <20251007123132.26769-1-Ezra.Sitorus@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: AM2PEPF0001C70D:EE_|AS8PR08MB9621:EE_|AMS0EPF000001A9:EE_|AS8PR08MB10345:EE_ X-MS-Office365-Filtering-Correlation-Id: db52385b-940a-4184-0399-08de059d93e2 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|36860700013|1800799024|376014|82310400026|13003099007; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?f1ionqEY0zX4T/PXFy0WPIKCYrZ2ylPumGjmvxs3MvL23Bv974iaMglUvMq5?= =?us-ascii?Q?tXGq5Mr7BVZHhnWkjwXBC4oNvrvB+ULrjVDzTOlN5hwLJy/kDrN4Tt4Kajhn?= =?us-ascii?Q?sWoWvhRvIaZFOrQ1BdnKvJi3NaL3afa0jospqhwQ3prZ3IZ6zdNkrKBsIxrM?= =?us-ascii?Q?MuoNu+cmmwdV4CCCSXwAsDkt2tp7j01jJWc8KxMu/weesq5cTih+2OYv1i22?= =?us-ascii?Q?1o8gH1upZViY26dFFGAZ05ZHQdr8RpxcxeIuhNtRYWCOH29aMhRJbbklyBrW?= =?us-ascii?Q?IWRCQMQGijcJ+ZIzNNMFkjeyx5GFLRINKUZn8tgcQlj+7ebc1vBm5gmxQGvS?= =?us-ascii?Q?LN+ELN4J917T/wziDUkPm+uyoZmdLrvGDC6Mi4J3flGWpw+gHA2T3g7YBFcJ?= =?us-ascii?Q?Z2Z4zftkz0qGvfLzKB1VWTx96wmzg/uTYdQ1MulUF1CVp83ixowjipGOcE1q?= =?us-ascii?Q?w7N3m+uNKMzdQ4bHdscx3YO2TKyARRaKnA/oeof0bm0efeE9u4TjxYm4eljB?= =?us-ascii?Q?w00H1t9FLpjNjq2IqqoSdVjEeMqzpW8NEZTlgWCXj0cQUp1y4s5frfXoDEsQ?= =?us-ascii?Q?qmeG6c+TF9A4JddVdFXd3VT+eKHKs7R6j2dkfrsC13P5dcL6Wf3HIWc8W6eQ?= =?us-ascii?Q?pm4t+4CYP1jJROx/jl/+XgS5qzD2+9FezFzgKehwVrkzPuuCNuY+TPizdK8h?= =?us-ascii?Q?hZgwPxMLLAb9bQElQgUho+QW6K50GdhSZYuBdv/gkbtIE4WuK7JwOa6H4GJP?= =?us-ascii?Q?PcJWEbnChSdeWV5YuaNW3Lzrrx/vLVq/ZNxc+2/TDGRm+QOpieXWPG70m8MK?= =?us-ascii?Q?5TIH8cUWk0dTKbo2Q/XYkTORqyerEzQml7ubbyY8crRL9xL17y5NHjevn4rb?= =?us-ascii?Q?sbe8g8GohWaBGo8I8Q3QzYnJstV2GJkgC0teqGbG1nNaFSoCkneoqSYh8gWO?= =?us-ascii?Q?EzJT4SwGEz08ox0EUxUbU0kGU8C+t5dK97l/1c7RTbCOgdCH5Sk9/HneVThw?= =?us-ascii?Q?5Ll9mzFPx9HiXJQbgDtDFN1N5rsFL2n2Qja45wG/ht7Epx8PLx/2b9IEvqx7?= =?us-ascii?Q?QYEDoiGZNvMnb6JQ+xNIFAV+NsWQD1sb321RpBGYqvxN8D9xmgnpL9+IST/C?= =?us-ascii?Q?8WQBxqw5oum2R5KvLkMfV411VbdNPy30uYhNbpqe5gwkasaOB9VhVqlbs12Q?= =?us-ascii?Q?+/YgEUIUt/i6efzoOaRwunWMoBKE0FX7/pH4E4gg5i+t3nwvQFjKeKMrfXSC?= =?us-ascii?Q?d7U3CcWQQVXzpPAACNQqeVLd4x/sq/kZTu+qiQb8OkL8a8XfCP8XOWonmJXW?= =?us-ascii?Q?vT8Ib91ufeCkwoYFVdnZvBIVsbL1/c/EMMLKr78mg667jU5NOPmHf04HeAgT?= =?us-ascii?Q?jWTfy4ilWAiP0yKKJlqxR3Ux5wi71xCJwzv16YZBhAzlSrQ0i02hTG/7wBSt?= =?us-ascii?Q?AI98TlrK4VIOgppK40LMWXQfoux1Vr+BkX/xTJR43vCJzXQEBd0wIldpF6Fv?= =?us-ascii?Q?Zk/mbnBDHzTJxjqVQihV68jSCqEyI+EBVOVE7ajlf1JC089aXbnaqg7a7/2R?= =?us-ascii?Q?3WH2f5SMfkCrpOkC2yI=3D?= 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)(36860700013)(1800799024)(376014)(82310400026)(13003099007); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9621 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS0EPF000001A9.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: cd01149b-2591-40de-c1b4-08de059d7cc9 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|14060799003|376014|35042699022|36860700013|1800799024|13003099007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?0xZskVFxhdjiDF21/AgOy8UORFeHb1jMwwP60fXXGNQ4TW+gRm6pIOT01irr?= =?us-ascii?Q?6SUUZkC2LAlYf/ttW96vzcx4OGP8KgpDM3JqrGlKaxyudNEPl5GVOyJiaBzu?= =?us-ascii?Q?YXaqPmP6Qf7nRGCvGX3r1XidYfwdxpmhxaFI8gSgXbvKgYW0ruxDWVDKexVn?= =?us-ascii?Q?XZQXc8+zoKSQxnjH3hYXtmCsEZl9QXabzWaRLYHbkkcppXAfvuaoV+pAwv4l?= =?us-ascii?Q?txi3RQ4mILg9FF7RQYirfPFDBF0JA/xYjb0KLWn2Ge4eLzXm/gupMNcSpQPh?= =?us-ascii?Q?41NW5i4zDZx4a6LiBNloZZf7GQufeIdSqeVftwsQ5DN5n1RURECv9WUQmRl3?= =?us-ascii?Q?P3SVGWeShbyjSDbfqclycVXht8AfConClHk3xKnDqAskAJtXVtdK6pGGXVEx?= =?us-ascii?Q?2W2nX7l7YzhORTLFmIh374puKVK8KUCc/88n2qvFvLCNimW0flv7015Gn4mu?= =?us-ascii?Q?SqO4BC3woIhMahpD2+JDrQEjOdt/mtBdCAPOcuQktAioKDFOv8XpWvNWJYzv?= =?us-ascii?Q?2jLYn+DjLX5PS2JKel6m155F4xKW0bao4Mfp5pLr1iaq6XPCC5Fftm5N0Dy2?= =?us-ascii?Q?2zD0ai7GNwAVN04hqzhL5MP2wTCpllJbHThHRdCyHjKUMC+WdaWY+GEstd7q?= =?us-ascii?Q?0QRVuiUB4q6f5E2dsAbgXJBrA69dGtwItATXpZ5RjxtXznE4Dp1l/R6uXQ3b?= =?us-ascii?Q?lMRzzDVA4NiQ4JaNO7samdib4srxxxDjadqbzjIo2B1fTHVQAIV4gnBkLCRW?= =?us-ascii?Q?Ha1fENwB/cGSJucm+dkjfQkc9jB5Kpbq9ALO//Mfp9+MCMCyzkvk69Pw2uy2?= =?us-ascii?Q?If4ADX9+oO3SYyYHPCdK2xOA42CLTIBbFsjMBDZxEtNrQS5HZR0CUnoXWksm?= =?us-ascii?Q?n/FoLIvhlZg9lTKBZRHWYnYGYYaFNwuaoNjmh4JWnPqsnv0oqx2jZBcXuDOe?= =?us-ascii?Q?+Ljj/QAffHLJB+Yi7vwEzZhP2/f6SdISvHcNciBV1WyjOHGrkf+g9IO8x+BF?= =?us-ascii?Q?/y4KjnPoN7wFSt4ZTkGBXXcUmyUjWteN40Z3qiAKwn981lrt8LR1cA43neI3?= =?us-ascii?Q?TmBC+dzlQ/JN2915yiTXTJFlp4hszQm4JZcJTYcpEI4eDWRAYElm72p21Y2Y?= =?us-ascii?Q?r7KE3C2oJsDByXbgogPzLdptSVpUcoqct4rlZW3vhBTLjuiOhW3IxOX6m8ge?= =?us-ascii?Q?h+tyUzC83gOq9ZRZFGv7ks4M1Gmxcm4a/h1vYV3v5NMu+UOA2iJ0xKact7vB?= =?us-ascii?Q?THbpL+EokGN0EY3E6jHdIZZ26phej+wgkQr16xmF9Cs5JSTQuewgQzt0owki?= =?us-ascii?Q?ttzIFbu2v/S8+YmfE/H2OGikNTfeD/1OAc1LzSQhFeUuDdzmg0qkmueWAnov?= =?us-ascii?Q?HqdQuA0hsXe7qh9Ue2VhwSB0oKKqFlkFSHxF9TLumbQCdqstEq8MGHAqB/tc?= =?us-ascii?Q?yIwYNZ6d18bUM7gJJrCHWh0mbTGsJM8sNBSu4/qmOFpAACLGv60fLkuZeJt/?= =?us-ascii?Q?YSNTTQD9zkeA82fM06skLXg889ecvj9+HvL7kts7997PXiHDQI0XdAhGixFr?= =?us-ascii?Q?En6X5FGM+KQtTmao4Jc=3D?= 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)(82310400026)(14060799003)(376014)(35042699022)(36860700013)(1800799024)(13003099007); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2025 12:32:28.1270 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: db52385b-940a-4184-0399-08de059d93e2 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: AMS0EPF000001A9.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB10345 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 Add tests for FPMR support in gdb/gdbserver. These tests check availability of FPMR, reading/writing to FPMR, core file generation and preservation under sighandler frame unwinding. A run of the full gdb testsuite has been done on aarch64-none-linux-gnu without FPMR support. I have run the gdb.arch tests on Shrinkwrap with FPMR support. --- Changes from v1->v2: * Removed fpmr modification functions to make the tests easier to follow. * Test writing to fpmr in aarch64-fpmr.exp from outside the inferior program. * Rewrite allow_aarch64_fpmr_tests to follow allow_aarch64_sve_tests. Ezra gdb/testsuite/gdb.arch/aarch64-fpmr-core.c | 40 ++++++ gdb/testsuite/gdb.arch/aarch64-fpmr-core.exp | 97 +++++++++++++++ .../gdb.arch/aarch64-fpmr-sighandler.c | 55 ++++++++ .../gdb.arch/aarch64-fpmr-sighandler.exp | 77 ++++++++++++ gdb/testsuite/gdb.arch/aarch64-fpmr.c | 117 ++++++++++++++++++ gdb/testsuite/gdb.arch/aarch64-fpmr.exp | 72 +++++++++++ gdb/testsuite/lib/gdb.exp | 66 ++++++++++ 7 files changed, 524 insertions(+) create mode 100644 gdb/testsuite/gdb.arch/aarch64-fpmr-core.c create mode 100644 gdb/testsuite/gdb.arch/aarch64-fpmr-core.exp create mode 100644 gdb/testsuite/gdb.arch/aarch64-fpmr-sighandler.c create mode 100644 gdb/testsuite/gdb.arch/aarch64-fpmr-sighandler.exp create mode 100644 gdb/testsuite/gdb.arch/aarch64-fpmr.c create mode 100644 gdb/testsuite/gdb.arch/aarch64-fpmr.exp diff --git a/gdb/testsuite/gdb.arch/aarch64-fpmr-core.c b/gdb/testsuite/gdb.arch/aarch64-fpmr-core.c new file mode 100644 index 00000000000..785fbd42d5c --- /dev/null +++ b/gdb/testsuite/gdb.arch/aarch64-fpmr-core.c @@ -0,0 +1,40 @@ +/* This file is part of GDB, the GNU debugger. + + Copyright 2008-2025 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 + +uint64_t crash_address = 0; + +void +set_fpmr (uint64_t value) +{ + register uint64_t x0_val asm ("x0") = value; + /* msr fpmr, x0 */ + __asm__ volatile (".inst 0xd51b4440" : : ); +} + +int +main (void) +{ + set_fpmr (0x3fff7fc049); + + /* Check FPMR */ + + *((uint64_t *) crash_address) = 0xDEAD; /* crash point */ + + return 1; +} diff --git a/gdb/testsuite/gdb.arch/aarch64-fpmr-core.exp b/gdb/testsuite/gdb.arch/aarch64-fpmr-core.exp new file mode 100644 index 00000000000..6f8ee996d27 --- /dev/null +++ b/gdb/testsuite/gdb.arch/aarch64-fpmr-core.exp @@ -0,0 +1,97 @@ +# Copyright (C) 2018-2025 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 . + +# This file is part of the gdb testsuite. + +# Test generating and reading a core file with FPMR. + +proc check_fpmr_core_file { core_filename } { + # Load the core file. + if [gdb_test "core $core_filename" \ + [multi_line \ + "Core was generated by .*" \ + "Program terminated with signal SIGSEGV, Segmentation fault\\." \ + "#0 ${::hex} in main \\(.*\\) at .*" \ + ".* \\*\\(\\(uint64_t \\*\\) crash_address\\) = 0xDEAD.*"] \ + "load core file"] { + untested "failed to generate core file" + return -1 + } + + # Check the value of FPMR in the core file. + gdb_test "print/x \$fpmr" " = 0x3fff7fc049" \ + "fpmr contents from core file" +} + +require is_aarch64_target +require allow_aarch64_fpmr_tests + +standard_testfile +if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } { + return -1 +} + +set binfile [standard_output_file ${testfile}] + +if ![runto_main] { + untested "could not run to main" + return -1 +} + +set crash_breakpoint "crash point" +gdb_breakpoint [gdb_get_line_number $crash_breakpoint] +gdb_continue_to_breakpoint $crash_breakpoint + +gdb_test "print/x \$fpmr" " = 0x3fff7fc049" \ + "fpmr contents from core file" + +gdb_test "continue" \ +[multi_line \ + "Program received signal SIGSEGV, Segmentation fault\\." \ + "${::hex} in main \\(\\).* at .*" \ + ".* \\*\\(\\(uint64_t \\*\\) crash_address\\) = 0xDEAD.*"] \ + "run to crash" + +# Generate the gcore core file. +set gcore_filename [standard_output_file "${testfile}.gcore"] +set gcore_generated [gdb_gcore_cmd "$gcore_filename" "generate gcore file"] + +# Generate a native core file. +set core_filename [core_find ${binfile}] +set core_generated [expr {$core_filename != ""}] + +# At this point we have a couple core files, the gcore one generated by GDB +# and the native one generated by the Linux Kernel. Make sure GDB can read +# both correctly. + +if {$gcore_generated} { + clean_restart + gdb_load ${binfile} + with_test_prefix "gcore corefile" { + check_fpmr_core_file $gcore_filename + } +} else { + fail "gcore corefile not generated" +} + +if {$core_generated} { + clean_restart + gdb_load ${binfile} + with_test_prefix "native corefile" { + check_fpmr_core_file $core_filename + } +} else { + untested "native corefile not generated" +} diff --git a/gdb/testsuite/gdb.arch/aarch64-fpmr-sighandler.c b/gdb/testsuite/gdb.arch/aarch64-fpmr-sighandler.c new file mode 100644 index 00000000000..bbdfbb0597c --- /dev/null +++ b/gdb/testsuite/gdb.arch/aarch64-fpmr-sighandler.c @@ -0,0 +1,55 @@ +/* This file is part of GDB, the GNU debugger. + + Copyright 2008-2025 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 +#include + +void +set_fpmr (uint64_t value) +{ + register uint64_t x0_val asm ("x0") = value; + /* msr fpmr, x0 */ + __asm__ volatile (".inst 0xd51b4440" : : ); +} + +void +handler (int sig) +{ + set_fpmr (0xff008041); + exit(0); +} + +int +main () +{ + /* Ensure all the signals aren't blocked. */ + sigset_t newset; + sigemptyset (&newset); + sigprocmask (SIG_SETMASK, &newset, NULL); + + signal (SIGILL, handler); + + set_fpmr (0x3fff7fc049); + + /* 0x06000000 : Cause an illegal instruction. Value undefined as per ARM + Architecture Reference Manual ARMv8, Section C4.1. */ + __asm __volatile (".inst 0x06000000"); + + return 0; +} diff --git a/gdb/testsuite/gdb.arch/aarch64-fpmr-sighandler.exp b/gdb/testsuite/gdb.arch/aarch64-fpmr-sighandler.exp new file mode 100644 index 00000000000..a776976eb7d --- /dev/null +++ b/gdb/testsuite/gdb.arch/aarch64-fpmr-sighandler.exp @@ -0,0 +1,77 @@ +# Copyright 2018-2025 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 . +# +# This file is part of the gdb testsuite. +# +# Test FPMR register set is properly preserved when unwiding sighandler frames. + +require is_aarch64_target +require allow_aarch64_fpmr_tests + +standard_testfile +if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } { + return -1 +} + +if ![runto_main] { + return -1 +} + +set reg_main_value "0x3fff7fc049" +set reg_handler_value "0xff008041" + +proc check_fpmr {value} { + gdb_test "print /x \$fpmr" \ + ".* = {?$value}?" \ + "check register \$fpmr has value $value" +} + +# Run until end of signal handler + +gdb_test "continue" \ + "Continuing.*Program received signal SIGILL.*" \ + "continue until signal" + +gdb_breakpoint [gdb_get_line_number "exit(0)"] +gdb_continue_to_breakpoint "exit" ".*exit.*" + +set handlerframe [get_current_frame_number] +set mainframe [expr $handlerframe + 2] + +# Check register values + +with_test_prefix "handler frame 1st" { + check_fpmr $reg_handler_value +} + +# Switch to the frame for main(), and check register values + +gdb_test "frame $mainframe" \ + "#$mainframe.*main ().*" \ + "set to main frame" + +with_test_prefix "main frame" { + check_fpmr $reg_main_value +} + +# Switch back to the signal handler frame, and check register values + +gdb_test "frame $handlerframe" \ + "#$handlerframe.*handler \\\(sig=4\\\).*" \ + "set to signal handler frame" + +with_test_prefix "handler frame 2nd" { + check_fpmr $reg_handler_value +} diff --git a/gdb/testsuite/gdb.arch/aarch64-fpmr.c b/gdb/testsuite/gdb.arch/aarch64-fpmr.c new file mode 100644 index 00000000000..f4bf889c3a8 --- /dev/null +++ b/gdb/testsuite/gdb.arch/aarch64-fpmr.c @@ -0,0 +1,117 @@ +/* This file is part of GDB, the GNU debugger. + + Copyright 2008-2025 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 + +enum FPM_FORMAT +{ + E5M2, + E4M3, +}; + +enum FPM_OVERFLOW +{ + INFNAN, + SATURATE, +}; + +void +set_fpmr (uint64_t value) +{ + register uint64_t x0_val asm ("x0") = value; + __asm__ volatile (".inst 0xd51b4440" : : ); +} + +uint64_t +modify_src1_fmt (uint64_t fpmr, uint64_t fmt) +{ + return (fpmr & ~(0x7)) | (fmt & 0x7); +} + +uint64_t +modify_src2_fmt (uint64_t fpmr, uint64_t fmt) +{ + return (fpmr & ~((0x7) << 3)) | ((fmt & 0x7) << 3); +} + +uint64_t +modify_dst_fmt (uint64_t fpmr, uint64_t fmt) +{ + return (fpmr & ~((0x7) << 6)) | ((fmt & 0x7) << 6); +} + +uint64_t +modify_osm (uint64_t fpmr, uint64_t overflow) +{ + return (fpmr & ~((0x1) << 14)) | ((overflow & 0x1) << 14); +} + +uint64_t +modify_osc (uint64_t fpmr, uint64_t overflow) +{ + return (fpmr & ~((0x1) << 15)) | ((overflow & 0x1) << 15); +} + +uint64_t +modify_lscale (uint64_t fpmr, uint64_t scale) +{ + return (fpmr & ~((0x7f) << 16)) | ((scale & 0x7f) << 16); +} + +uint64_t +modify_nscale (uint64_t fpmr, uint64_t scale) +{ + return (fpmr & ~((0xff) << 24)) | ((scale & 0xff) << 24); +} + +uint64_t +modify_lscale2 (uint64_t fpmr, uint64_t scale) +{ + return (fpmr & ~((uint64_t)(0x3f) << 32)) | ((uint64_t)(scale & 0x3f) << 32); +} + +int +main (void) +{ + uint64_t fpmr = 0; + + fpmr = modify_src1_fmt (fpmr, E4M3); + set_fpmr (fpmr); /* MODIFY SRC1 */ + + fpmr = modify_src2_fmt (fpmr, E4M3); + set_fpmr (fpmr); /* MODIFY SRC2 */ + + fpmr = modify_dst_fmt (fpmr, E4M3); + set_fpmr (fpmr); /* MODIFY DST */ + + fpmr = modify_osm (fpmr, SATURATE); + set_fpmr (fpmr); /* MODIFY OSM */ + + fpmr = modify_osc (fpmr, SATURATE); + set_fpmr (fpmr); /* MODIFY OSC */ + + fpmr = modify_lscale (fpmr, -1); + set_fpmr (fpmr); /* MODIFY LSCALE */ + + fpmr = modify_nscale (fpmr, -1); + set_fpmr (fpmr); /* MODIFY NSCALE */ + + fpmr = modify_lscale2 (fpmr, -1); + set_fpmr (fpmr); /* MODIFY LSCALE2 */ + + return 1; +} diff --git a/gdb/testsuite/gdb.arch/aarch64-fpmr.exp b/gdb/testsuite/gdb.arch/aarch64-fpmr.exp new file mode 100644 index 00000000000..947d47e981d --- /dev/null +++ b/gdb/testsuite/gdb.arch/aarch64-fpmr.exp @@ -0,0 +1,72 @@ +# Copyright 2023-2025 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 . */ + +# Exercise reading/writing FPMR when it is present. + +require is_aarch64_target +require allow_aarch64_fpmr_tests + +standard_testfile +if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } { + return -1 +} + +if ![runto_main] { + untested "could not run to main" + return -1 +} + +gdb_test_multiple "info register \$fpmr" "Test FPMR SRC1 E5M2" { + -re ".*\r\n.*\[ F8S1=E5M2 F8S2=E5M2 F8D=E5M2 OSM=Inf OSC=Inf/NaN LSCALE=0 NSCALE=0 LSCALE2=0 \]" { + pass "FPMR SRC1 matches E5M2" + } +} + +set breakpoints [list "MODIFY SRC1" "MODIFY SRC2" "MODIFY DST" "MODIFY OSM" "MODIFY OSC" "MODIFY LSCALE" "MODIFY NSCALE" "MODIFY LSCALE2"] +set reg_values [list \ + ".*\r\n.*\[ F8S1=E4M3 F8S2=E5M2 F8D=E5M2 OSM=Inf OSC=Inf/NaN LSCALE=0 NSCALE=0 LSCALE2=0 \]" \ + ".*\r\n.*\[ F8S1=E4M3 F8S2=E4M3 F8D=E5M2 OSM=Inf OSC=Inf/NaN LSCALE=0 NSCALE=0 LSCALE2=0 \]" \ + ".*\r\n.*\[ F8S1=E4M3 F8S2=E4M3 F8D=E4M3 OSM=Inf OSC=Inf/NaN LSCALE=0 NSCALE=0 LSCALE2=0 \]" \ + ".*\r\n.*\[ F8S1=E4M3 F8S2=E4M3 F8D=E4M3 OSM=MaxNormal OSC=Inf/NaN LSCALE=0 NSCALE=0 LSCALE2=0 \]" \ + ".*\r\n.*\[ F8S1=E4M3 F8S2=E4M3 F8D=E4M3 OSM=MaxNormal OSC=MaxNormal LSCALE=0 NSCALE=0 LSCALE2=0 \]" \ + ".*\r\n.*\[ F8S1=E4M3 F8S2=E4M3 F8D=E4M3 OSM=MaxNormal OSC=MaxNormal LSCALE=127 NSCALE=0 LSCALE2=0 \]" \ + ".*\r\n.*\[ F8S1=E4M3 F8S2=E4M3 F8D=E4M3 OSM=MaxNormal OSC=MaxNormal LSCALE=127 NSCALE=255 LSCALE2=0 \]" \ + ".*\r\n.*\[ F8S1=E4M3 F8S2=E4M3 F8D=E4M3 OSM=MaxNormal OSC=MaxNormal LSCALE=127 NSCALE=255 LSCALE2=63 \]" \ +] +set pass_messages [list "FPMR SRC1 matches E4M3" "FPMR SRC2 matches E4M3" "FPMR DST matches E4M3" "FPMR OSM matches MaxNormal" "FPMR OSC matches MaxNormal" "FPMR LSCALE matches" "FPMR NSCALE matches" "FPMR LSCALE2 matches"] + +for {set i 0} {$i < 8} {incr i} { + set bp [lindex $breakpoints $i] + gdb_breakpoint [gdb_get_line_number $bp] + gdb_continue_to_breakpoint $bp + + gdb_test_multiple "info register \$fpmr" "" { + -re [lindex $reg_values $i] { + pass [lindex $pass_messages $i] + } + } +} + +gdb_test_multiple "set \$fpmr=0x0" "" { + -re ".*\r\n.*\[ F8S1=E5M2 F8S2=E5M2 F8D=E5M2 OSM=Inf OSC=Inf/NaN LSCALE=0 NSCALE=0 LSCALE2=0 \]" { + pass "Reset FPMR to 0 from GDB" + } +} + +gdb_test_multiple "set \$fpmr=0x3f007f4008" "" { + -re ".*\r\n.*\[ F8S1=E5M2 F8S2=E4M3 F8D=E5M2 OSM=MaxNormal OSC=Inf/NaN LSCALE=127 NSCALE=0 LSCALE2=63 \]" { + pass "Write to FPMR from GDB" + } +} diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 930462f63fa..0d0369511bb 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -5201,6 +5201,72 @@ proc aarch64_supports_sme_svl { length } { return 1 } +# Run a test on the target to see if it supports AArch64 FPMR hardware. +# Return 1 if so, 0 if it does not. Note this causes a restart of GDB. + +gdb_caching_proc allow_aarch64_fpmr_tests {} { + global srcdir subdir gdb_prompt inferior_exited_re + + set me "allow_aarch64_fpmr_tests" + + if { ![is_aarch64_target]} { + return 0 + } + + set compile_flags "{additional_flags=-march=armv8-a}" + + # Compile a test program that writes to FPMR. + set src { + int main() { + asm volatile ("msr x0, fpmr"); + return 0; + } + } + if {![gdb_simple_compile $me $src executable $compile_flags]} { + # Try again, but with a raw hex instruction so we don't rely on + # assembler support for FPMR. + + set compile_flags "{additional_flags=-march=armv8-a}" + + # Compile a test program reading FPMR. + set src { + int main() { + asm volatile (".word 0xD51B4440"); + 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 fpmr support not detected" + set allow_fpmr_tests 0 + } + -re ".*$inferior_exited_re normally.*${gdb_prompt} $" { + verbose -log "\n$me: fpmr support detected" + set allow_fpmr_tests 1 + } + default { + warning "\n$me: default case taken" + set allow_fpmr_tests 0 + } + } + gdb_exit + remote_file build delete $obj + + verbose "$me: returning $allow_fpmr_tests" 2 + return $allow_fpmr_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.45.2