From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id YTRfEauh92iJqAEAWB0awg (envelope-from ) for ; Tue, 21 Oct 2025 11:07:23 -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=lxTpvhZE; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=lxTpvhZE; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 3A3291E0BA; Tue, 21 Oct 2025 11:07:23 -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 DD5EE1E04C for ; Tue, 21 Oct 2025 11:07:21 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 715773858427 for ; Tue, 21 Oct 2025 15:07:21 +0000 (GMT) Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazlp170130007.outbound.protection.outlook.com [IPv6:2a01:111:f403:c202::7]) by sourceware.org (Postfix) with ESMTPS id EE3143858C78 for ; Tue, 21 Oct 2025 15:03:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org EE3143858C78 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 EE3143858C78 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c202::7 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1761059040; cv=pass; b=gwBemnt5tcifUBtUiKmUD0QmjHqS9IclyxkjIofKf6GgA29WJRptONTYLaSWOZF29HFfsWzDuIF2UImcKMAZplzvMRFYDzN70Sx/hgLXv0VL4U2votqY78PeZHcKyHyWK8yMJSyb2R2dyKYJQN8FrZHa+mijtqd5xIc8y+iXTMU= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1761059040; c=relaxed/simple; bh=Np3/km6OlUmFXDwFmScwiSBuDUSIOtu/029rT/4hNK0=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=SDd6WzUmEPDzxocEh+AKJFfeze2byKOHtWEETsYyiW2eSRp40RohGGknQOc00OpUHpfnJmht1Zt9ppbuMvJo3Ec/3+r9jSLrSIEkrcG9khS19VdXUrFcjjDBQVRlHYfHCnA6jG6RFmIg2IRO5YaNoFSMR9cmF+6wFo+ldswYzh0= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=yJ6Gh1wMfPy5B5Vqk2rdapuxImxcl9zieQ1d+bSJ1bVnltTcWUg6K+MmE5uV2rydN/j/QfUg8eJj/Z4DaHCs8/w6FpRpzCmGDmNvXBOj2xMMtqMR43z+duRKfmqrD4wXi7lV1Oml1VbesQWKJz0YuMwZbYD+6soZ7P0bp6PeW45ZcwrzUOX3iSdCZUCVQoWnii2qhUv62Kyd7cswBjwoJAQLGtil7/9GS+Mo4q1ozk/n+eDQZjopy7peBJ6K6tBLgsx89NtSlBkr6UDppF8tZKfUN4Fgb2keSOXQRp5FBUTgQvUIz6r9rf1DhR/VGDdX7uLF8tH0v/gVYb0Pcnc+ag== 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=qXF8IA8J1JbRwmATUhASOM200IIDn/yL3jHjWZfGqWY=; b=JiqbugSO8qF/M4nZhFUmjXtaxdrAeVMeq+R/7be4FapHZT1ZARt7EYzZJrIShwQ7ReyNVu6ijKuPNAAsQ1bYK3+MU554U3gnxgjnYmyARUh+vQWoZrcxTqB3GyGZZZ0+qfQUM9W1SoDBfchigJPdrLI7eBom/ZUTUgThbbzuUCIB4sYWVo6Rax3JD0SuxObtfIGWwW/lJ7UU39z2b81SAgUs2XCwAnV3LjoIc/SQsRvXoRZctZrElIjTfjjx+nsjMarExTQ3F0ZBHDP5L6/E42OEaz+leh2SM1TozbT/OTf57AZ/FozJPvNRop3i0TarXEmoZcH+lun874VJz9ilcg== 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=qXF8IA8J1JbRwmATUhASOM200IIDn/yL3jHjWZfGqWY=; b=lxTpvhZEBDiPUrA1WZIFmTnYMno/v4hwvgktOQTpDYXnYJEcvUFfttSNBsWxU/tCLiNM/RI6YhQnbezZpQAW3h6PfO0kv5C2RjK6MkXykgwIsL/TOKPnrHkKOM4S/gh9nMyu5N9ou/hSGqOChvDzUy8tiL+B9Rvttgjc7RnPIm0= Received: from DU2PR04CA0059.eurprd04.prod.outlook.com (2603:10a6:10:234::34) by DB5PR08MB10022.eurprd08.prod.outlook.com (2603:10a6:10:4a7::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.12; Tue, 21 Oct 2025 15:03:37 +0000 Received: from DU2PEPF00028CFF.eurprd03.prod.outlook.com (2603:10a6:10:234:cafe::7e) by DU2PR04CA0059.outlook.office365.com (2603:10a6:10:234::34) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9253.12 via Frontend Transport; Tue, 21 Oct 2025 15:03:37 +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 DU2PEPF00028CFF.mail.protection.outlook.com (10.167.242.183) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9253.7 via Frontend Transport; Tue, 21 Oct 2025 15:03:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZtwpJXbtCLoy2jPuor3hbA3L04epWeno3aZqF6r5CZRkYcdSU20w32uE6qdG2nEHUzkBCjg9AoJl8/SoYLSiufIla7yyJiBm1GCrP2v50j29ZzR3suWfgaTGUK3GDIXNkmdsyxTCWLqLywaD7wAhP/eb7NDAlmXkR4vYt3PWGgYYBAQtU3ZYmbJgPCwVUeKjXBOvlm170bm4leUNSJMyw7DIe8v2VJTwBw0I+hUTZfU2TTZ/hwOxDgI4b2Erra6MFr7xAph2h4NneEeU+uX9PetZ+G4owEw/M0yZnWNoiQLMagkwBB0dTTFAMWXWzGl/eWgPbclLq5Z2In+Absf9Yg== 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=qXF8IA8J1JbRwmATUhASOM200IIDn/yL3jHjWZfGqWY=; b=vdBEQZItGQN4FFgACIsptzEtiSme3PDqyiXhMsstutH/33yJTuzjYUJjhyQEMzYEspG5SoDaVlgfImjFCe5VpJG/gelzjAy2GaIQdGnHgM5OViY1fNf9Krr6CftjdRmQJBDqsHlzEoCL7IoYhOHsSccC8s9Y576b3cIvD4AVXYpRmfwAXu67/yXy+qKClIiSaDDrXf64ZO9thEcyFlNV0hjGay72PkLXXOx11YNmgrQgJIR8IpJkNIJhumOsjNgeI4EaWjYXTma5iMJs4uGJH+l//Swv14/6DiYfTaXrI2tS0FjQyV4v9OuI8VrfTfqG6IyZ2zbAv+BhiTWC+RYi8Q== 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=qXF8IA8J1JbRwmATUhASOM200IIDn/yL3jHjWZfGqWY=; b=lxTpvhZEBDiPUrA1WZIFmTnYMno/v4hwvgktOQTpDYXnYJEcvUFfttSNBsWxU/tCLiNM/RI6YhQnbezZpQAW3h6PfO0kv5C2RjK6MkXykgwIsL/TOKPnrHkKOM4S/gh9nMyu5N9ou/hSGqOChvDzUy8tiL+B9Rvttgjc7RnPIm0= Received: from AM4PR05CA0024.eurprd05.prod.outlook.com (2603:10a6:205::37) by GV1PR08MB10718.eurprd08.prod.outlook.com (2603:10a6:150:15d::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.12; Tue, 21 Oct 2025 15:02:59 +0000 Received: from AM2PEPF0001C710.eurprd05.prod.outlook.com (2603:10a6:205:0:cafe::43) by AM4PR05CA0024.outlook.office365.com (2603:10a6:205::37) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9228.17 via Frontend Transport; Tue, 21 Oct 2025 15:02:59 +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 AM2PEPF0001C710.mail.protection.outlook.com (10.167.16.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.7 via Frontend Transport; Tue, 21 Oct 2025 15:02:59 +0000 Received: from AZ-NEU-EX05.Arm.com (10.240.25.133) by AZ-NEU-EX04.Arm.com (10.240.25.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.27; Tue, 21 Oct 2025 15:02:59 +0000 Received: from AZ-NEU-EX03.Arm.com (10.240.25.137) by AZ-NEU-EX05.Arm.com (10.240.25.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 21 Oct 2025 15:02:58 +0000 Received: from D2G2X7XGD1.arm.com (10.57.5.208) by mail.arm.com (10.240.25.137) with Microsoft SMTP Server id 15.2.2562.27 via Frontend Transport; Tue, 21 Oct 2025 15:02:58 +0000 From: To: CC: , , Ezra Sitorus Subject: [PATCH v3 5/6] gdb/aarch64: Tests for FPMR Date: Tue, 21 Oct 2025 16:02:59 +0100 Message-ID: <20251021150300.59860-6-Ezra.Sitorus@arm.com> X-Mailer: git-send-email 2.51.1 In-Reply-To: <20251021150300.59860-1-Ezra.Sitorus@arm.com> References: <20251021150300.59860-1-Ezra.Sitorus@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: AM2PEPF0001C710:EE_|GV1PR08MB10718:EE_|DU2PEPF00028CFF:EE_|DB5PR08MB10022:EE_ X-MS-Office365-Filtering-Correlation-Id: dafd5b28-6e71-4a7f-9be9-08de10b302ff x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|376014|82310400026|1800799024|36860700013|13003099007; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?KQGdx4gMwwUuCmRxBYrhSMCpChLo717aArW5+XrylxGVVKfzeQINh66Jq0KN?= =?us-ascii?Q?G0rD0/49e9h1a29paJscYtT5P42UlvYk3vRK9MYtNR3WslJgEOtE052Ul5DJ?= =?us-ascii?Q?GiK4Bo6oLDipxaEUc0J5xT3+DL4Y4qeWl/uMfUvzVXgohFM8DMkn9d1iCalN?= =?us-ascii?Q?lLGdq0dkG8s0sb30vUZdpJBiKBmI9pcsK7LjdoX4joWOXhshImp8VfXqDOYt?= =?us-ascii?Q?e4GjVe2gXzjt+GYx+EWKlNInlpT9xxYLbmSlxVhdAzN/pX0OxDYsCbNu/wdg?= =?us-ascii?Q?U7muhiIGQRP6KpbiuyBpwDm02L88BL85lcPxmvHd68g6TCZYue0rxe9GK7VL?= =?us-ascii?Q?CHgJIe59dL60xZeRVHcTR7aGSiVxrOKMKrzjEfCRWi4PLn/nCwZRnmeKX1uG?= =?us-ascii?Q?/ABSPsXme50Q1iok0q6CzJjJ569XIzMlGNSt4GjQpva9THpBg6Smf5u9zGlV?= =?us-ascii?Q?oN4mdcESVR2bzFRWMNOfy2jhVVPFedvdseuH0fRIPtput4yx7cLIb2qIvUub?= =?us-ascii?Q?LNtI0lqMyj4E0NpF0SehzyUWabnsS7rfVH3xj9gLcS+sXfVSHRsP7daP22HO?= =?us-ascii?Q?vhfQTBanIKAIaItyel2pmCD1kNDjjK2XuowCku4mgHsfEyUHzdwBb5RNXXHt?= =?us-ascii?Q?i/pxub305hcJ19lW2JWMjoDaq0kVM054RsvFHZrkCFSpeAVUJfF3ol83yQvJ?= =?us-ascii?Q?A1hPTJzD1k74F8daHccRaAY/7YraP2phlkxzSXsFA2bnSnpG59lR3MzoV2aD?= =?us-ascii?Q?kpHHv1hGW9lZ/G8iCGEruMAjYDSteOOymmDYJBoHXY1naiOrGqywDFYA4KFN?= =?us-ascii?Q?h6owauh+HavY8BGjiAvgI5OoroXWeeFxsvXqJCN/IogdwpX8GTHJzuyCupVA?= =?us-ascii?Q?ArxbyBH86k/+y833OtxHsEErFPBnPIg0i8O83dVrcSefQERYn8n0YWDH6vBv?= =?us-ascii?Q?p+xOUKLria835k6Sgpp8GzyL5jdqZSbHpV/N8sDupd3Ehd10gm64ApNQ4/zc?= =?us-ascii?Q?MQQnbelG2udpBhP2cDe0qKVtELha52IR+kZEBsI35PybHM8XvuFsH5rWUMo1?= =?us-ascii?Q?aIYyXAsl81nfIeCtQXOiG3TGuZT6chUXkZu+uTea06oX0u9qBNvJ8WHAgRn5?= =?us-ascii?Q?r3mR+17BmoZ5qcNtCWQ7i5ZNOvn8p6gxxWGZBY2AZanpR6syWjEAJx2bjIOn?= =?us-ascii?Q?cLB0dd6rWCptcJNtOyFgABmSwwkSK7Stjh5+8HPwJ2zfVDzYxN+fsAmz04h9?= =?us-ascii?Q?VJ6H/KItDJq/9NmziOd5I8kKhUQXhSBrkIH88k/mgWVeHQHgd7W32775O9TR?= =?us-ascii?Q?3jQdAlm/YSAzt16ttOFPxa9zAJmOq5/6WVpss/jIduSgQGax49fS4IAmTEVk?= =?us-ascii?Q?jeZgajvdIaw872tE0uGQbw+fuSJne0QLHyr4y6dtgXlZisziNs7agyTmmywS?= =?us-ascii?Q?aOAhi3mNv1jsNMI/A2WbowCBck7tCgS/Ht+nJiHSsQ93XvCexhOw0oqxirl/?= =?us-ascii?Q?DbcoBmZQ2e3w2w66rGJl+fd1XVgOffc0jcqkkwa0J+irak+O5Q7TxAqGM1r9?= =?us-ascii?Q?y1v7kHIsoJGWEvrBLqc=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)(376014)(82310400026)(1800799024)(36860700013)(13003099007); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB10718 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU2PEPF00028CFF.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 591eaee8-235d-4457-9ca9-08de10b2ecc0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700013|35042699022|14060799003|376014|82310400026|13003099007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Q9Hx0WWfTCEnxJTH6XVD3aPMPn6NRIhQ+MHJhr5wkAO8YGPYsvezIWd58QJl?= =?us-ascii?Q?zwMA0E91BQso8B8hkBKB+wnw9VoYxURqMAAWM/OoZn6V5nV6dDOWzpECEQJo?= =?us-ascii?Q?Sm2Lpvo4Cm6855wtQk6/3vbnj0JDZAIV7em+w4ZWxwpNRL2+URAy1UJh9QiE?= =?us-ascii?Q?lyaqAAbMzghMdDX1r1qegvOCCC9ndDsCQYA79DlGVE42MHPqMoeSFGfbBgKt?= =?us-ascii?Q?lSxkoZkMYHbFHunHwjKFpUm5N08IcBC2hrSedUGvixCdxxMREM9aKXDf/0oA?= =?us-ascii?Q?YIEfOJXSzp6IBRe2SnhoMf40RyesodfXm+Sfovla+t0eEg9nIdqG/nhdXakH?= =?us-ascii?Q?ZfIFhWYwyztbe5uqGqN64WjDnqsee5+JS4Z7mfPUSh8q/CdTAJBGoTirn5rO?= =?us-ascii?Q?Ln0bfXGO9mdupRxpbZLPf8GgM+zsIIZV0yrmKJXD0qTD2SekwIWCNPWh6TiE?= =?us-ascii?Q?HZlbz+ucsWRhsDvZZ4wAGckbkid/AvyRX/AD9AD07R5TOhdzFJ2w0hYcJZ10?= =?us-ascii?Q?IXDvMF9mXaAAaLfGukwJkEG/2jEvqtZxzDKxL7pgLuqhiVT96T1Yzegn/yCB?= =?us-ascii?Q?rYzNx0nchwhsNlSygFKEvOCIVfRLKSGK1VXleL+Utx/+Idbx3FRq0YvxoMvn?= =?us-ascii?Q?I23Tjo4om6GCcoVefoz2I6glBwEP+4b4v1QCTnVFynr1UUiBco2VOEW4riH1?= =?us-ascii?Q?IvHuS9A58nCwH84zLBe6wLzu7iwAw/5RkVMMzj0C1dI21FhMxtkM4YOvfuZ1?= =?us-ascii?Q?hhGvY/tifnjm3v1kJw13rD3RUeco9kDQh8gMaotiLw/3dAYsOHMrkbqbLKiX?= =?us-ascii?Q?cFf//ZTfuta5jf1LLq0tBjY/EqoVcCXxRnDAv1BWcNCpEzjGGLmp/eTqJWjD?= =?us-ascii?Q?WCzpMKdxVl8UTFqXpsklAY7By4Ek5duMZy8mVDQVfQvja20zoBSixW6eh7sh?= =?us-ascii?Q?ov9XhyrWM023XfxtqWoTMsWdrded0tkAzKHXEwwhKU25izlX1Z+P5Z2RcBJO?= =?us-ascii?Q?prkFKWhcJTy/mo9q/kLfYl9A9DiHuUEyNy4VfZuffx1M4xM10uYjrm6Ut1lK?= =?us-ascii?Q?ZWD7TIr7Z+deRXOK7Figc9yo3EG2hcriuMGOrBaOgcjIZJT+WXFX2P7clN8I?= =?us-ascii?Q?3K/h2wRkx3/8/GnwTOFybuQ2y384UEPS7s0bwY4/1pAiQUsJiP8lOoEAYrdZ?= =?us-ascii?Q?S9Qm/k8QTkjgqyqvhm14ON+gMhzJzgxFRPyZMEgZtgCyMRFsCFPNde912SRn?= =?us-ascii?Q?N77MBk/XOTir1JBfWv4IT15cvokOio31M5xTTgVCCsgyJZALmnUVxh2zmZNw?= =?us-ascii?Q?oD3SjfDdomBm1Juax1ole108RSzqxZh9d2Yx5BloyLP4hNqUtjhtnfr42ryF?= =?us-ascii?Q?ZDmAbAZOl/kfDoCbejLohLv3Xw9FHKOK5ZorPhUVJTbMavS0oF5Pz3ofKvDJ?= =?us-ascii?Q?ZqeCvifD3pBKhU486arOSZTHfPBMapVRVXUHaFhAcIaxt2zPczTUANQe+rdZ?= =?us-ascii?Q?M/2pTOX1ydt+ejv1a+aBJ9CrKwQr/xbwU0kP0iw1Iyfmc+Ajkl2eHlbPBSXG?= =?us-ascii?Q?zq1Yg0yg9wRmf0AHGXk=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)(1800799024)(36860700013)(35042699022)(14060799003)(376014)(82310400026)(13003099007); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2025 15:03:36.7608 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dafd5b28-6e71-4a7f-9be9-08de10b302ff 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: DU2PEPF00028CFF.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR08MB10022 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. Changes from v2->v3: * tclint: only messages now is for line length for aarch64-fpmr.exp. I think this is ok as it makes the test string readable. * Addressed comments/whitespace/formatting issues. * gdb.exp:allow_aarch64_fpmr_tests reads FPMR in both cases. 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 | 74 +++++++++++ gdb/testsuite/gdb.arch/aarch64-fpmr.c | 118 ++++++++++++++++++ gdb/testsuite/gdb.arch/aarch64-fpmr.exp | 99 +++++++++++++++ gdb/testsuite/lib/gdb.exp | 66 ++++++++++ 7 files changed, 549 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..c26b0b2bba7 --- /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]} { + 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..e8056d40b4c --- /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 no signals are blocked. */ + sigset_t newset; + sigemptyset (&newset); + sigprocmask (SIG_SETMASK, &newset, NULL); + + signal (SIGILL, handler); + + set_fpmr (0x3fff7fc049); + + /* 0x06000000 : Causes 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..89b5a5cc010 --- /dev/null +++ b/gdb/testsuite/gdb.arch/aarch64-fpmr-sighandler.exp @@ -0,0 +1,74 @@ +# 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..d29205fb63d --- /dev/null +++ b/gdb/testsuite/gdb.arch/aarch64-fpmr.c @@ -0,0 +1,118 @@ +/* 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" : : ); + /* msr fpmr, x0 */ +} + +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..142d8172332 --- /dev/null +++ b/gdb/testsuite/gdb.arch/aarch64-fpmr.exp @@ -0,0 +1,99 @@ +# 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]} { + 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 \ + "SRC1" \ + "SRC2" \ + "DST" \ + "OSM" \ + "OSC" \ + "LSCALE" \ + "NSCALE" \ + "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..cdb6ccdfa35 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 the AArch64 FPMR feature. +# 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 reading FPMR. + set src { + int main() { + asm volatile ("mrs 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 0xD53B4440"); + 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