From patchwork Thu Oct 28 11:43:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejas Belagod X-Patchwork-Id: 46745 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 B748D3857C6B for ; Thu, 28 Oct 2021 11:48:47 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B748D3857C6B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1635421727; bh=+EZ8W9PlqgjfuWjcb0nEaT5TCQdoWCB2aeKT/JjsSS0=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=ju3OiCBR2Qp6q+eUh62fCA4flEn0rgjmiJWfldM2gv+dWDKn6WtwGWsbIHwX4Z7nF 0v6A0YiFQaU8et7sVCLraPb5ETgp4iGXF/BU2m0br4iS3Qj3nz7gn5XHriu754i6ID BJdZOKz0mrtORR+R2BOqRCHdTMbiR0YKj4RLU0MQ= 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-am6eur05on2043.outbound.protection.outlook.com [40.107.22.43]) by sourceware.org (Postfix) with ESMTPS id 97D8E3857C7C for ; Thu, 28 Oct 2021 11:43:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 97D8E3857C7C Received: from DB7PR05CA0067.eurprd05.prod.outlook.com (2603:10a6:10:2e::44) by AS8PR08MB6517.eurprd08.prod.outlook.com (2603:10a6:20b:31b::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.14; Thu, 28 Oct 2021 11:43:55 +0000 Received: from DB5EUR03FT019.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:2e:cafe::6d) by DB7PR05CA0067.outlook.office365.com (2603:10a6:10:2e::44) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.13 via Frontend Transport; Thu, 28 Oct 2021 11:43:55 +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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT019.mail.protection.outlook.com (10.152.20.163) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.14 via Frontend Transport; Thu, 28 Oct 2021 11:43:55 +0000 Received: ("Tessian outbound e7ce0d853b63:v108"); Thu, 28 Oct 2021 11:43:54 +0000 X-CR-MTA-TID: 64aa7808 Received: from bc3896ce8dc7.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 9DD5B48D-FCD9-4D64-AB17-30BF6E61571F.1; Thu, 28 Oct 2021 11:43:44 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id bc3896ce8dc7.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 28 Oct 2021 11:43:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jA8NOxYV6erwjXsFNL+7fwjcM4gOMiL72rTSATlIJK6NGwI4gIwsoH+pRRmRz6faEgX2P8TbdlXYQNxYTwkg8sRD7JWm4P0J2vGWIY+VWrvgsoBk76LFghIwa4oGD8GeMM/YGdVQfYEP5bWzHTSE5BCRYstTU21FeCuV6BWUDzowNQ176ciu0xIu3yC/l1TYRiWj33nsS8Sjn+z7fgrkICTGZZ671D8At7eZafmOqWXj4GiozRBS608PtRUvxkNU7/HwY2bDINhLlQF+C5XQTuxsbjw4AzQCRPLaofH7Jjtg0LcxJ2IkPUx0jJ7uFg/52zqLGZzaY8m3dAeabpf18w== 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=+EZ8W9PlqgjfuWjcb0nEaT5TCQdoWCB2aeKT/JjsSS0=; b=TIb5Z+n+UeGFe4Iap1C7QthydkBKPkN3u4ZCj5tfhvHYDwn5jKeY+ooOyYFoIEPxZT34VOoAB1n0B3c8h+1aR7A2IGB7AJItBVw2JuopestByEg96dtD6hCMAv94QpaoqLBpmgWciscyTvp0cHh9Hl90BREjvTwOcGK0E/DArakpCKXJYgeNuEvX93n9IrVUwQoLX44rmXAJBpCEfFPPLP3kha+rx1N2F+ooFMOhIW5ySNWONhnTCfWKbP2YV4gpVvHP9EOEYKq7TCXkhRE5I2zRCiScXTX2LKqnWOyN6ShaufUHGaxfiPgabIGzDeLRBQAJmROwnOaqC7+jy/AfJA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from PAXPR08MB7075.eurprd08.prod.outlook.com (2603:10a6:102:201::15) by PAXPR08MB7365.eurprd08.prod.outlook.com (2603:10a6:102:225::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.15; Thu, 28 Oct 2021 11:43:43 +0000 Received: from PAXPR08MB7075.eurprd08.prod.outlook.com ([fe80::9c7f:ad76:ac66:26f2]) by PAXPR08MB7075.eurprd08.prod.outlook.com ([fe80::9c7f:ad76:ac66:26f2%9]) with mapi id 15.20.4628.020; Thu, 28 Oct 2021 11:43:43 +0000 To: Richard Earnshaw , "gcc-patches@gcc.gnu.org" Subject: [Patch 7/8, Arm, GCC] Emit build attributes for PACBTI target feature. [ Was RE: [Patch 6/7, Arm, GCC] Emit build attributes for PACBTI target feature.] Thread-Topic: [Patch 7/8, Arm, GCC] Emit build attributes for PACBTI target feature. [ Was RE: [Patch 6/7, Arm, GCC] Emit build attributes for PACBTI target feature.] Thread-Index: AdfL8BbH6/HjgYmDSemkv/e8EPApBQ== Date: Thu, 28 Oct 2021 11:43:42 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: EEF4DC19373CAC49B5C4ACB0EBD3951F.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 502aff14-4d5d-4246-8801-08d99a0838a0 x-ms-traffictypediagnostic: PAXPR08MB7365:|AS8PR08MB6517: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:7691;OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: YSDtz1kn73yQKUshHPoM/8QSvx5SLfEH3HPdOr5BlvmXg6Gl5d9UgwIxxoKaA4eNiyvaOvF5QgkcmJjWvXctOiwi2myDDrlx5CBA/izRMQ9MO/5WUlg2d0D9hBOkhbkG9s1r//J71RtBrlE9st2s1SxBxfhe4WkCkqSCYxFv8MswCnrDZdDbjpvFI7g7oM4DyZ+bBqSYmRJzFwDa7TSM1DsRmqVsSdmRunijdG09tvlJEqdKlqkC3iQKaACe5mNavmlUs3UJ7tkt52P/iweLXf8v1+uwJJSvFpy/jDpgXVtLksHdVMeQdvjfih9WEDg4Sy70BUVK9H0PozTK1JZ7Weao4QvUJxBNA9VwXdhscgxyeZqwBUBzL1dkxsD2R9K4SLQmyFoJ8lF79fGMdi8FFH999K6JOAankdxWF8mBXS1yiFtLlbo9OEiOjC2ZX/qtxEF2dK7kBCHaAIsacIyp/vpwzzAKbHhhlFgYBIgCjNbg6wOGVEK3kRHWCokyZIazneNvldpFPqcVnOssCZVf++6neTlVZ8XyH1XQfk0mmV7q5dsf5tylJeLVCzK9FuDJrAbmUYITmtvW6hX3dkZgL+3O4ApLSKy8h13nTcOfOGNNMzCO/55iUopsXFLcoq2CKqty3yGQ+FGaBeg4dXJRHb4zxZ7PcPN4lw6u68wxMmHiL8DAWMppy5rfr3HEnUEHLbAPTIPBPhTkaiwUkTxsy0t174UA+D6MFwEPmQikCe4p7/AnG8yjIIzGGlvsn+dcSKWp1r8HWL0NPJs2DIsfEPh9Lbg9v4fi3i1B1AtyL/0wsX0+ucL9Mwhvldhr/OMJ41TZJfNTiyMi9ZDopTFgvw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR08MB7075.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(8676002)(966005)(53546011)(71200400001)(33656002)(8936002)(38070700005)(508600001)(9686003)(2906002)(83380400001)(4001150100001)(6506007)(86362001)(99936003)(64756008)(316002)(66556008)(66476007)(66946007)(76116006)(186003)(26005)(110136005)(38100700002)(66446008)(55016002)(5660300002)(7696005)(52536014)(122000001); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB7365 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT019.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: f7446ec2-dfe6-4c57-eb0b-08d99a083184 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Qu+pKLgJjKX4DJG+2UiJ1UJogt17dvBkKSlxshh4NE6ZD3dAFOxOg7lvM7buk5tYJTYwN/nCZtQLV+5JCKDjDinnFF2Sd+28YQAHiab1x8vtiK8PdenLvuNFukAF7ZFQROfdElTk4s1wY91HBwhWA+Dh5GgIhfhj7N86WmpDbS7fZZhF7QT1/Ay04mgO6819fWDOLJ1DU1BCbZBJnbHWQ3AU10r30AwYy0Ln2ATG5eRTx+gSr1Tmjs2Pmn0zZfLYRdgtG4elEQE/7t1E6gpQSslVLUOrTJ8ZPmkxnVwZhWGuiZb24dhd3EEnm7WFwdbr5YWsPPuXn4aOjus6x7wszdo8D+xCZkRbd+M51WJwUaiJOmL34fDq1M58DekP04YJKqK18R3zL0vIkpZt8tCslLdhf6rSF2VF0RXXYOUcKNs6kKMHcYv/AWpvd76HJwaKGmUpk6UZEb+ay1EB0U9KXwxVCuvFi9K1rD/hCFSx1VRVLY9gT72xtHU6yp+qlbOk/RYLMpuQZwwAWblVxqf3suISV9F0y4hsK11j6s0TqY95DYXsb83MfBc3/eZhWSLNG/+rrV7qTHnVpWnw3sG3AffRUlwwd5NNcbB7CemTBv9lNSs+LHpVcsA0j/mJATqGcQQYhfSSOgBk898HXGwmtyFzvBvvM+FBcr4Tf5O0yjtsjGFuYRLbd+jlV8vUoQf7z9UCmlJuOLP9JSld4DdN2vW3pNSMt+20VM3WnA6+qANclrAx6YX82vgQ9ex7yAnYkHfERP7l6KAS31u0fDEKTf3DnyTrz4nLgWQ3yNAnmyOrIfuT7h3MGqBbGMj0oD4J 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:(4636009)(46966006)(36840700001)(966005)(186003)(7696005)(33656002)(21480400003)(26005)(2906002)(53546011)(6506007)(70586007)(70206006)(82310400003)(336012)(508600001)(47076005)(81166007)(8936002)(356005)(8676002)(9686003)(316002)(110136005)(4001150100001)(52536014)(36860700001)(86362001)(83380400001)(55016002)(99936003)(5660300002)(235185007); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2021 11:43:55.0016 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 502aff14-4d5d-4246-8801-08d99a0838a0 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: DB5EUR03FT019.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6517 X-Spam-Status: No, score=-14.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: Tejas Belagod via Gcc-patches From: Tejas Belagod Reply-To: Tejas Belagod Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" > -----Original Message----- > From: Gcc-patches bounces+belagod=gcc.gnu.org@gcc.gnu.org> On Behalf Of Tejas Belagod via > Gcc-patches > Sent: Friday, October 8, 2021 1:19 PM > To: gcc-patches@gcc.gnu.org > Subject: [Patch 6/7, Arm, GCC] Emit build attributes for PACBTI target > feature. > > Hi, > > This patch emits assembler directives for PACBTI build attributes as defined > by the ABI. (https://github.com/ARM-software/abi- > aa/releases/download/2021Q1/addenda32.pdf) > > Tested on arm-none-eabi. > > 2021-10-04 Tejas Belagod > > gcc/ChangeLog: > > * config/arm/arm.c (arm_file_start): Emit EABI attributes for > Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, > TAG_PACRET_use. > > gcc/testsuite/ChangeLog: > > * gcc.target/arm/acle/pacbti-m-predef-1.c: New test. > * gcc.target/arm/acle/pacbti-m-predef-3: New test. > * gcc.target/arm/acle/pacbti-m-predef-6.c: New test. This patch emits assembler directives for PACBTI build attributes as defined by the ABI. https://github.com/ARM-software/abi-aa/releases/download/2021Q1/addenda32.pdf 2021-10-25 Tejas Belagod gcc/ChangeLog: * config/arm/arm.c (arm_file_start): Emit EABI attributes for Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use. gcc/testsuite/ChangeLog: * gcc.target/arm/acle/pacbti-m-predef-1.c: New test. * gcc.target/arm/acle/pacbti-m-predef-3: New test. * gcc.target/arm/acle/pacbti-m-predef-6.c: New test. Tested the following configurations, OK for trunk? -mthumb/-march=armv8.1-m.main+pacbti/-mfloat-abi=soft -marm/-march=armv7-a/-mfpu=vfpv3-d16/-mfloat-abi=softfp mcmodel=small and tiny aarch64-none-linux-gnu native test and bootstrap Thanks, Tejas. diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 946841526ee127105396097d143e755bdfc756f5..a87bcb298f9e6d7b2f3fd61b4586e291f46b0f81 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -28200,6 +28200,8 @@ static void arm_file_start (void) { int val; + bool pac = (aarch_ra_sign_scope != AARCH_FUNCTION_NONE); + bool bti = (aarch_enable_bti == 1); arm_print_asm_arch_directives (asm_out_file, TREE_TARGET_OPTION (target_option_default_node)); @@ -28270,6 +28272,24 @@ arm_file_start (void) arm_emit_eabi_attribute ("Tag_ABI_FP_16bit_format", 38, (int) arm_fp16_format); + if (TARGET_HAVE_PACBTI) + { + arm_emit_eabi_attribute ("Tag_PAC_extension", 50, 2); + arm_emit_eabi_attribute ("Tag_BTI_extension", 52, 2); + arm_emit_eabi_attribute ("TAG_BTI_use", 74, bti); + arm_emit_eabi_attribute ("TAG_PACRET_use", 76, pac); + } + else + { + if (pac || bti) + { + arm_emit_eabi_attribute ("Tag_PAC_extension", 50, 1); + arm_emit_eabi_attribute ("Tag_BTI_extension", 52, 1); + arm_emit_eabi_attribute ("TAG_BTI_use", 74, bti); + arm_emit_eabi_attribute ("TAG_PACRET_use", 76, pac); + } + } + if (arm_lang_output_object_attributes_hook) arm_lang_output_object_attributes_hook(); } diff --git a/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-1.c b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-1.c new file mode 100644 index 0000000000000000000000000000000000000000..cc88380731ae81dd27c0a343518252a172f8f3ef --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-1.c @@ -0,0 +1,30 @@ + +/* { dg-do run } */ +/* { dg-require-effective-target arm_pacbti_hw } */ +/* { dg-additional-options " -mbranch-protection=pac-ret+bti --save-temps" } */ + +/* { dg-final { scan-assembler "\.arch_extension pacbti" } } */ +/* { dg-final { scan-assembler "\.eabi_attribute 50, 2" } } */ +/* { dg-final { scan-assembler "\.eabi_attribute 52, 2" } } */ +/* { dg-final { scan-assembler "\.eabi_attribute 74, 1" } } */ +/* { dg-final { scan-assembler "\.eabi_attribute 76, 1" } } */ + +#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-3.c b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-3.c new file mode 100644 index 0000000000000000000000000000000000000000..8bebd995b170df953e13f86d2276576d5ab34e93 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-3.c @@ -0,0 +1,26 @@ + +/* { dg-do run } */ +/* { dg-require-effective-target arm_pacbti_hw } */ +/* { dg-additional-options " -mbranch-protection=pac-ret+leaf --save-temps" } */ + +/* { dg-final { scan-assembler "\.eabi_attribute 50, 2" } } */ +/* { dg-final { scan-assembler "\.eabi_attribute 52, 2" } } */ +/* { dg-final { scan-assembler "\.eabi_attribute 74, 0" } } */ +/* { dg-final { scan-assembler "\.eabi_attribute 76, 1" } } */ + +#if defined (__ARM_FEATURE_BTI_DEFAULT) +#error "Feature test macro __ARM_FEATURE_BTI_DEFAULT should be undefined." +#endif + +#if !defined (__ARM_FEATURE_PAC_DEFAULT) +#error "Feature test macro __ARM_FEATURE_PAC_DEFAULT should be defined." +#endif + +int +main() +{ + if (__ARM_FEATURE_PAC_DEFAULT != 5) + __builtin_abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-6.c b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-6.c new file mode 100644 index 0000000000000000000000000000000000000000..13990a310fdd045832bdfa96ab61b9b8ae11efa4 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-6.c @@ -0,0 +1,26 @@ + +/* { dg-do run } */ +/* { dg-require-effective-target arm_pacbti_hw } */ +/* { dg-additional-options " -mbranch-protection=bti --save-temps" } */ + +/* { dg-final { scan-assembler "\.eabi_attribute 50, 2" } } */ +/* { dg-final { scan-assembler "\.eabi_attribute 52, 2" } } */ +/* { dg-final { scan-assembler "\.eabi_attribute 74, 1" } } */ +/* { dg-final { scan-assembler "\.eabi_attribute 76, 0" } } */ + +#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 undefined." +#endif + +int +main() +{ + if (__ARM_FEATURE_BTI_DEFAULT != 1) + __builtin_abort (); + + return 0; +}