From patchwork Tue Jul 12 15:45:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrea Corallo X-Patchwork-Id: 55974 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 06CD53856969 for ; Tue, 12 Jul 2022 15:46:34 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 06CD53856969 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1657640794; bh=HLa6uVZXYyoHahosAZGPR+QLUKHKmhnPe6vpYyIOTc8=; h=To:Subject:References:Date:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=HUMAQhj99f32OYAQFX2ubnV24L/9La34X9CEeIpqylwG1zoFCxzj9C8T3dOmtzRL3 P7yJulEVAiEOcYHHo1WrlpiViqa2xfEPehRa2k4POaJiAChqYCZcRDTBeN8RaOVKfv On7gcVZ4apFidus442dkZXkNTYShxUGYGEG0MI+E= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2068.outbound.protection.outlook.com [40.107.22.68]) by sourceware.org (Postfix) with ESMTPS id 7AF4E385842B for ; Tue, 12 Jul 2022 15:46:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7AF4E385842B ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=XCtMD0dpJ6BDDwlknCnz8lh6u8zQW82/WUg7wJmfVY8ssWVnDeRi6l6+AtSdvaD4LT0vmvHxrEWtRiHMAsFPjlDm0CYMXXQEnzBHk7TYhCOSOYXC1oprzYqlvDnzN5A9t+uPHDFVVHsDDx6SgBIMzupRlFn/T046E/cECfU7cbjT12nmZtQUvHFcWvFiXHYL7gulKxuVD4o+Ri5xu762IaCe4DZ4rmkVPh3fTC7HC/BWMSBUSgdRZ7VtLvmIdsZhTJZdyvyL9caesDKzl+bntL2yN+XdZ8vAKt1lIWdFsL7P7Rv64GDmRA72HJi6eh3LiRX6Z65qwJ4sFkoNADrnww== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=HLa6uVZXYyoHahosAZGPR+QLUKHKmhnPe6vpYyIOTc8=; b=PA9bt77a9KJtiiFsv/EkSxuFe//49j73aGoKTqH4xH1PlqTxSuvI+tmVupeWrr2x/og4ztsERXBB8lKxZ+uXrI9f0FUeiKG83Di49AoljaNIBJlXahJAbS9PIVS/yLnGKEh4t2pUA27N1VV0axkXGiI0kvu+EBFF0ofHNnPFKQ5QpGqszwzN0ASpWTd+E7p/YXS5OlQ0rdfG3RJsNS53nL7Bfn8XLzoFaFoB9izCWdqTrtrtqMLULymZ/Y0hVhJUnVEkdWAQ4BGYO/k04notkZNeBWdDeJ7KoJelVrnzrpOFgn6sSR2HqjxPRYozd1NBtW4SrSZdfqaBS/NA9zRuKw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.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=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com]) Received: from DB6P191CA0014.EURP191.PROD.OUTLOOK.COM (2603:10a6:6:28::24) by AM6PR08MB4584.eurprd08.prod.outlook.com (2603:10a6:20b:90::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.23; Tue, 12 Jul 2022 15:45:58 +0000 Received: from DBAEUR03FT025.eop-EUR03.prod.protection.outlook.com (2603:10a6:6:28:cafe::ce) by DB6P191CA0014.outlook.office365.com (2603:10a6:6:28::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.16 via Frontend Transport; Tue, 12 Jul 2022 15:45:57 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT025.mail.protection.outlook.com (100.127.142.226) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.15 via Frontend Transport; Tue, 12 Jul 2022 15:45:57 +0000 Received: ("Tessian outbound 8e3d5168572a:v122"); Tue, 12 Jul 2022 15:45:57 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 34cffab6e2e3d79d X-CR-MTA-TID: 64aa7808 Received: from 7df3d01d4aef.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 676F61A9-91E4-4952-8B8C-D187AECA305D.1; Tue, 12 Jul 2022 15:45:27 +0000 Received: from EUR02-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 7df3d01d4aef.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 12 Jul 2022 15:45:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K9z+yW4CyBuOfvnvFz+MFwEMNISeNQeYVXgri3YDsfeNoGb796n6QugUloXrYrEFMtl5U7HtYD9jb71h7oFBYGnv5SpkY2YO7n9w0PvLhlTOG1u17KzpGaoVOdHQDrTOaY1KOZs0mI1iJQrBOFpbbvJR40glqosOHcbRx4mOhrgOi7epR2+rsbLoT7/s4mDIhph0oeqb96kBk8Cg8a5HPRqWwBfFZ3/xmXDkob5hH0XHAS7TnHtgpT8Up0v8LDd3qSNEB6t5JnJLmkNuckKQp0ovd7aYdyiM/f1ZoU5HLduFYGQ97zEnVVLZhvsmlMZkrrMyqpCcdCQyUmjUDKsx1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=HLa6uVZXYyoHahosAZGPR+QLUKHKmhnPe6vpYyIOTc8=; b=jG/12C2TU5PFYqGYtBHEXkJDsqDy4CTdCPWUBHvigtK1N0J+3UnHKHItmIQmBjG7++oXI+w1EhDM8caiovjaWHKXw5toJkz4742axoYXfWLHD9sog0P4nvfaNKXG6AC9PRt5w4abEOY2IIRrqRa4NZdXl4u1foOAKCjoOzh0vBvm1OIkUj9awHwe4NkeQifXEiwaXq1e14q2gMWmtoYtOKcempWrNRCvMJL8uNeWRYh9u4UVIEFR5Z/rkX0++1oH8QMWP/YttZOVIcGqgE9iU9spBjrjXVSe2FqOq45FMb65b84Fvu7QRo9TCc7+JN0Ps0EaIr+ttCRuCYxQb3CD4Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) smtp.rcpttodomain=gcc.gnu.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 Received: from AS8PR04CA0169.eurprd04.prod.outlook.com (2603:10a6:20b:331::24) by AM5PR0801MB1731.eurprd08.prod.outlook.com (2603:10a6:203:3c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.15; Tue, 12 Jul 2022 15:45:25 +0000 Received: from AM5EUR03FT054.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:331:cafe::14) by AS8PR04CA0169.outlook.office365.com (2603:10a6:20b:331::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.26 via Frontend Transport; Tue, 12 Jul 2022 15:45:26 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.67.248.234) 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 40.67.248.234 as permitted sender) receiver=protection.outlook.com; client-ip=40.67.248.234; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (40.67.248.234) by AM5EUR03FT054.mail.protection.outlook.com (10.152.16.212) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5417.15 via Frontend Transport; Tue, 12 Jul 2022 15:45:25 +0000 Received: from AZ-NEU-EX04.Arm.com (10.251.24.32) by AZ-NEU-EX03.Arm.com (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.9; Tue, 12 Jul 2022 15:45:24 +0000 Received: from e124257 (10.34.105.24) by mail.arm.com (10.251.24.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.9 via Frontend Transport; Tue, 12 Jul 2022 15:45:24 +0000 To: Richard Earnshaw Subject: [PATCH 5/12 V2] arm: Implement target feature macros for PACBTI References: Date: Tue, 12 Jul 2022 17:45:24 +0200 In-Reply-To: (Richard Earnshaw's message of "Fri, 1 Jul 2022 15:26:06 +0100") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.1.50 (gnu/linux) MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-Office365-Filtering-Correlation-Id: 2075bef2-5324-4171-9eb0-08da641d9d15 X-MS-TrafficTypeDiagnostic: AM5PR0801MB1731:EE_|DBAEUR03FT025:EE_|AM6PR08MB4584:EE_ x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: QyCg7geSohgQYg0sK3yAQyLvEZA1DBIlGDM/QFBlAwFVWsWwu5idfcCVGwFOe/Kff00mO8sH7T615+WhFrZi61n/tpaPXoZeIf+OC2+j8Nx1tD6QH1IVbEC53/sXrKvOW+pfGaJM5s87XwEdV/foiFl0d14kdZRR7MP3UTkAMkIGJOCiAojjuHN+KB+GLHF07L3RFBhCXebenM1zqd7Kx+ZEeUYmozuJBsWXhiT1egNBiBOnXYxDHpNFaSFqwH6qUAvMiCfTb76RhmRw/RWgtN8x7UyPtCm0+GPIUQ5tM8PJ9JCY0Ce1DHUJam+yIUISFW9oqiD5WudUfeCAKyNikLckPdmhoZGjYcDch97VDb+BL873b+RqC2iS4J+IukgwDilButlrpoLZbsABYThWvRNe5Ze0CXrrOJZTtMSUsb8idIP0BHvHZpSc0c7vsFEmJp2FpBq2fgbSKCdJu/FkStuIL52H5dHwREGUi4y0msaKc2uzDIb5HhIPrrJQ20XZf85+tp0R7+Ys12IjGpcA0pt9UkNIHoeY3hWEKpYTwca6hl9yOiUCw4t54FaZ1obEDnTaF68A+ShrpcOPSAmjf0wDMbnIzecm+U1ce6rO8xpuZM7axq8uxb9o6L36pnnTCWGFugeZLfypSq6TTHMVIkB39NpBpvuYFexY2aMgL5WvTHxlxUlGD+f2fwaIq9368b9vXL4DPhtB3i5n3chuDUgpWAR+aPo5PPFyyakm0+cVxHH7IvRW8lG9ZiNUCCx2VTTwZun1gUUmLKXu2BySNoPovusb4tNeSYgasbBEPwdYRqXGXCVdloX2N+9rHsf8ZTN2nu8k1Px/7ROHzkTdxVcRqLGtSlxMp8i9GeFRYdxk+Id7tPLAkzBDpZvREyHBs8UuINhvgFdy3pjYu1vHwCCyipJ6XQARgJVCUazAwhQ= X-Forefront-Antispam-Report-Untrusted: CIP:40.67.248.234; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230016)(4636009)(39860400002)(376002)(346002)(136003)(396003)(36840700001)(40470700004)(46966006)(70586007)(8676002)(4326008)(40480700001)(70206006)(40460700003)(81166007)(6862004)(36756003)(36860700001)(44832011)(54906003)(5660300002)(316002)(83380400001)(478600001)(235185007)(8936002)(336012)(426003)(41300700001)(86362001)(2616005)(2906002)(82740400003)(82310400005)(53546011)(33964004)(84970400001)(186003)(356005)(26005)(47076005)(36900700001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1731 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT025.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: ed56e739-b75d-42ea-782b-08da641d89e9 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lXN/+iTG3o5az3dHH8PBuWwrI06DUSiWEFHInR8H+qtcOsMQegrjXYtbCYMrSJb6GkmziPOnVqEj5p09EIUgqCgvVFoCo4rAs4T8K3oBn3WMiy1NbSCmYK0LnxoPLu1Qrvz2Z6Sax7sWk0FDvW8RqQxGfu5A49tpdIUNm4tkbBDAJZ5TiuwxU2IPN9/SAjroRJInFBl1lbOljFRhsJQj2K1uD8OcaSK0JcP4eCt1vkcgjvn9+GDLoZfK3Zkk+zz00FDUE+1qt/Wkn8mvihQwJdoi4CptfteTLFj9Jc6IqyuQB3zET9SMZqTKE+GRPrW6Q4QC6Er5nradxg5uFWx+poZLISzekGB5+mFdgYyV79D+o6Ht4ameRjaiRxCwk2V8dGJKqUa2ORQM9MWHiNThlh5ChxvwIntKNZt81JTFZnadd+/9EwfxElXCPVaRo5kEI8gadqD8xwxzmqv1XBt7Se7z14PNqQip/Gdez5Ij19lNW80D+A4RMeAXL/kmLpkh2jt9/kEZwvmK7PxJsN58AB0HsICNzI6JTejPjRz1jnxR+xvkToURipziQtzyo7AQVxpMNSCCyaH92IRu6p3gLbAxaNWhqVgH1GSYmB08LHDd1hN9ZNXfm/lczYlrlFZW/gq78LDkSXZ68J8r8IgyA/WjSpiLBlfdUJhNHBJ+4VnAIFvFtAzV7mXLSpL78mYrNa/hn5r5vOvaAXfQh7DrsIixEcXdpQ075f0v4m+N+ojj0caSWWTzihYXatbtIcAb14JKrsBG6FSSmV+ue2jwXKQed/VI0Y73mBbIBJMyek93OTIWWuUAZDQJZRNJFwgozvNGSoTYGmXaW5qhczc5qo/HWLIUPivIg8SFTy+puieGm5yUiaWpRlWBhQlKwvcbk2m24oB4fELlecD2MvtsHQ== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230016)(4636009)(39860400002)(376002)(396003)(346002)(136003)(36840700001)(40470700004)(46966006)(26005)(41300700001)(2906002)(478600001)(33964004)(86362001)(82310400005)(40460700003)(53546011)(44832011)(6862004)(84970400001)(5660300002)(8936002)(235185007)(2616005)(81166007)(336012)(83380400001)(47076005)(40480700001)(426003)(186003)(70586007)(70206006)(4326008)(36860700001)(316002)(54906003)(8676002)(36756003)(82740400003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jul 2022 15:45:57.8459 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2075bef2-5324-4171-9eb0-08da641d9d15 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DBAEUR03FT025.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4584 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Andrea Corallo via Gcc-patches From: Andrea Corallo Reply-To: Andrea Corallo Cc: Richard Earnshaw , nd , Andrea Corallo via Gcc-patches Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Richard Earnshaw writes: > On 28/04/2022 10:42, Andrea Corallo via Gcc-patches wrote: >> This patch implements target feature macros when PACBTI is enabled >> through the -march option or -mbranch-protection. The target feature >> macros __ARM_FEATURE_PAC_DEFAULT and __ARM_FEATURE_BTI_DEFAULT are >> specified in ARM ACLE >> >> __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI are specified in the >> pull-request . >> Approved here >> . >> gcc/ChangeLog: >> * config/arm/arm-c.c (arm_cpu_builtins): Define >> __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT, >> __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI. > > This bit is OK. > >> gcc/testsuite/ChangeLog: >> * gcc.target/arm/acle/pacbti-m-predef-2.c: New test. >> * gcc.target/arm/acle/pacbti-m-predef-4.c: New test. >> * gcc.target/arm/acle/pacbti-m-predef-5.c: New test. >> > > These are all execution tests. I think we also need some compile-only > tests so that we get better coverage when the target does not directly > support PACBTI. > > We also need some tests for the defines when targetting armv8-m.main > and some tests for checking __ARM_FEATURE_BTI and __ARM_FEATURE_PAC > (the tests here check only the '..._DEFAULT' macros. Hi Richard & all, please find attached the updated version of this patch. Best Regards Andrea gcc/ChangeLog: * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT, __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI. gcc/testsuite/ChangeLog: * gcc.target/arm/acle/pacbti-m-predef-2.c: New test. * gcc.target/arm/acle/pacbti-m-predef-4.c: Likewise. * gcc.target/arm/acle/pacbti-m-predef-5.c: Likewise. * gcc.target/arm/acle/pacbti-m-predef-8.c: Likewise. * gcc.target/arm/acle/pacbti-m-predef-9.c: Likewise. * gcc.target/arm/acle/pacbti-m-predef-10.c: Likewise. * gcc.target/arm/acle/pacbti-m-predef-11.c: Likewise. * gcc.target/arm/acle/pacbti-m-predef-12.c: Likewise. From d1897ca2db828d214a6591ab34f29cf42ebd2fb6 Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Mon, 6 Dec 2021 11:39:59 +0100 Subject: [PATCH] [PATCH 5/12] arm: Implement target feature macros for PACBTI This patch implements target feature macros when PACBTI is enabled through the -march option or -mbranch-protection. The target feature macros __ARM_FEATURE_PAC_DEFAULT and __ARM_FEATURE_BTI_DEFAULT are specified in ARM ACLE __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI are specified in the pull-request . Approved here . gcc/ChangeLog: * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT, __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI. gcc/testsuite/ChangeLog: * gcc.target/arm/acle/pacbti-m-predef-2.c: New test. * gcc.target/arm/acle/pacbti-m-predef-4.c: Likewise. * gcc.target/arm/acle/pacbti-m-predef-5.c: Likewise. * gcc.target/arm/acle/pacbti-m-predef-8.c: Likewise. * gcc.target/arm/acle/pacbti-m-predef-9.c: Likewise. * gcc.target/arm/acle/pacbti-m-predef-10.c: Likewise. * gcc.target/arm/acle/pacbti-m-predef-11.c: Likewise. * gcc.target/arm/acle/pacbti-m-predef-12.c: Likewise. Co-Authored-By: Tejas Belagod --- gcc/config/arm/arm-c.cc | 18 ++++++++++++++ .../gcc.target/arm/acle/pacbti-m-predef-10.c | 10 ++++++++ .../gcc.target/arm/acle/pacbti-m-predef-11.c | 10 ++++++++ .../gcc.target/arm/acle/pacbti-m-predef-12.c | 10 ++++++++ .../gcc.target/arm/acle/pacbti-m-predef-2.c | 24 +++++++++++++++++++ .../gcc.target/arm/acle/pacbti-m-predef-4.c | 21 ++++++++++++++++ .../gcc.target/arm/acle/pacbti-m-predef-5.c | 24 +++++++++++++++++++ .../gcc.target/arm/acle/pacbti-m-predef-8.c | 11 +++++++++ .../gcc.target/arm/acle/pacbti-m-predef-9.c | 10 ++++++++ 9 files changed, 138 insertions(+) create mode 100644 gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-10.c create mode 100644 gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-11.c create mode 100644 gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-12.c create mode 100644 gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-2.c create mode 100644 gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-4.c create mode 100644 gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-5.c create mode 100644 gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-8.c create mode 100644 gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-9.c diff --git a/gcc/config/arm/arm-c.cc b/gcc/config/arm/arm-c.cc index a8697b8c62f..190099b2c37 100644 --- a/gcc/config/arm/arm-c.cc +++ b/gcc/config/arm/arm-c.cc @@ -212,6 +212,24 @@ arm_cpu_builtins (struct cpp_reader* pfile) def_or_undef_macro (pfile, "__ARM_FEATURE_COMPLEX", TARGET_COMPLEX); def_or_undef_macro (pfile, "__ARM_32BIT_STATE", TARGET_32BIT); + def_or_undef_macro (pfile, "__ARM_FEATURE_PAUTH", TARGET_HAVE_PACBTI); + def_or_undef_macro (pfile, "__ARM_FEATURE_BTI", TARGET_HAVE_PACBTI); + def_or_undef_macro (pfile, "__ARM_FEATURE_BTI_DEFAULT", + aarch_enable_bti == 1); + + cpp_undef (pfile, "__ARM_FEATURE_PAC_DEFAULT"); + if (aarch_ra_sign_scope != AARCH_FUNCTION_NONE) + { + unsigned int pac = 1; + + gcc_assert (aarch_ra_sign_key == AARCH_KEY_A); + + if (aarch_ra_sign_scope == AARCH_FUNCTION_ALL) + pac |= 0x4; + + builtin_define_with_int_value ("__ARM_FEATURE_PAC_DEFAULT", pac); + } + cpp_undef (pfile, "__ARM_FEATURE_MVE"); if (TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT) { diff --git a/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-10.c b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-10.c new file mode 100644 index 00000000000..311cf572dd9 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-10.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-additional-options " -mbranch-protection=bti+pac-ret" } */ + +#if (__ARM_FEATURE_BTI_DEFAULT != 1) +#error "Feature test macro __ARM_FEATURE_BTI_DEFAULT should be defined to 1." +#endif + +#if !defined (__ARM_FEATURE_PAC_DEFAULT) +#error "Feature test macro __ARM_FEATURE_PAC_DEFAULT should be defined." +#endif diff --git a/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-11.c b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-11.c new file mode 100644 index 00000000000..2663551e18a --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-11.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-march=armv8.1-m.main+pacbti" } */ + +#if (__ARM_FEATURE_BTI != 1) +#error "Feature test macro __ARM_FEATURE_BTI_DEFAULT should be defined to 1." +#endif + +#if (__ARM_FEATURE_PAUTH != 1) +#error "Feature test macro __ARM_FEATURE__PAUTH should be defined to 1." +#endif diff --git a/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-12.c b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-12.c new file mode 100644 index 00000000000..01a53c0b536 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-12.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-march=armv8.1-m.main" } */ + +#if defined (__ARM_FEATURE_BTI) +#error "Feature test macro __ARM_FEATURE_BTI should not be defined." +#endif + +#if defined (__ARM_FEATURE_PAUTH) +#error "Feature test macro __ARM_FEATURE_PAUTH should not be defined." +#endif diff --git a/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-2.c b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-2.c new file mode 100644 index 00000000000..4394fd147d7 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-2.c @@ -0,0 +1,24 @@ + +/* { dg-do run } */ +/* { dg-require-effective-target arm_pacbti_hw } */ +/* { dg-additional-options " -mbranch-protection=bti+pac-ret+leaf" } */ + +#if !defined (__ARM_FEATURE_BTI_DEFAULT) +#error "Feature test macro __ARM_FEATURE_BTI_DEFAULT should be defined." +#endif + +#if !defined (__ARM_FEATURE_PAC_DEFAULT) +#error "Feature test macro __ARM_FEATURE_PAC_DEFAULT should be defined." +#endif + +int +main() +{ + if (__ARM_FEATURE_BTI_DEFAULT != 1) + __builtin_abort (); + + if (__ARM_FEATURE_PAC_DEFAULT != 5) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-4.c b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-4.c new file mode 100644 index 00000000000..90f0c724b9e --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-4.c @@ -0,0 +1,21 @@ + +/* { dg-do run } */ +/* { dg-require-effective-target arm_pacbti_hw } */ +/* { dg-additional-options " -mbranch-protection=pac-ret" } */ + +#if !defined (__ARM_FEATURE_PAC_DEFAULT) +#error "Feature test macro __ARM_FEATURE_BTI_DEFAULT should be defined." +#endif + +#if defined (__ARM_FEATURE_BTI_DEFAULT) +#error "Feature test macro __ARM_FEATURE_BTI_DEFAULT should be undefined." +#endif + +int +main() +{ + if (__ARM_FEATURE_PAC_DEFAULT != 1) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-5.c b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-5.c new file mode 100644 index 00000000000..c865809b8b0 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-5.c @@ -0,0 +1,24 @@ + +/* { dg-do run } */ +/* { dg-require-effective-target arm_pacbti_hw } */ +/* { dg-additional-options " -mbranch-protection=bti+pac-ret" } */ + +#if !defined (__ARM_FEATURE_BTI_DEFAULT) +#error "Feature test macro __ARM_FEATURE_BTI_DEFAULT should be defined." +#endif + +#if !defined (__ARM_FEATURE_PAC_DEFAULT) +#error "Feature test macro __ARM_FEATURE_PAC_DEFAULT should be defined." +#endif + +int +main() +{ + if (__ARM_FEATURE_BTI_DEFAULT != 1) + __builtin_abort (); + + if (__ARM_FEATURE_PAC_DEFAULT != 1) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-8.c b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-8.c new file mode 100644 index 00000000000..d5d069cbc89 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-8.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-additional-options " -mbranch-protection=bti+pac-ret+leaf" } */ + +#if (__ARM_FEATURE_BTI_DEFAULT != 1) +#error "Feature test macro __ARM_FEATURE_BTI_DEFAULT should be defined to 1." +#endif + +#if (__ARM_FEATURE_PAC_DEFAULT != 5) +#error "Feature test macro __ARM_FEATURE_PAC_DEFAULT should be defined to 5." +#endif + diff --git a/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-9.c b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-9.c new file mode 100644 index 00000000000..f301beba0c7 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-9.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-additional-options " -mbranch-protection=pac-ret" } */ + +#if (__ARM_FEATURE_PAC_DEFAULT != 1) +#error "Feature test macro __ARM_FEATURE_PAC_DEFAULT should be defined to 1." +#endif + +#if defined (__ARM_FEATURE_BTI_DEFAULT) +#error "Feature test macro __ARM_FEATURE_BTI_DEFAULT should be undefined." +#endif