From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2051.outbound.protection.outlook.com [40.107.6.51]) by sourceware.org (Postfix) with ESMTPS id 066673858421 for ; Fri, 6 Jan 2023 11:09:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 066673858421 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZwnfHdnoOENq8Ui3vlpc4zi/F8ZRSBWh1s3zBFETAik=; b=gn/He+3cxSos1yxSQ2NPzSt24erylAln9qbH3Bhmpwq//+dfPUEhJN99FMmFAjifw3H/OhwxJSLbOCggJN/ugdDYQe5k/DPZfayANe/TOw4SP6BnWzzMlKSmBmt50LBPbcd/3okOO56eK3/SlwKjC+DvzK+hEDIZj0IJ8XVm71E= Received: from AS8PR05CA0023.eurprd05.prod.outlook.com (2603:10a6:20b:311::28) by PAWPR08MB9067.eurprd08.prod.outlook.com (2603:10a6:102:343::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14; Fri, 6 Jan 2023 11:09:51 +0000 Received: from AM7EUR03FT055.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:311:cafe::63) by AS8PR05CA0023.outlook.office365.com (2603:10a6:20b:311::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.15 via Frontend Transport; Fri, 6 Jan 2023 11:09:51 +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 AM7EUR03FT055.mail.protection.outlook.com (100.127.141.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5966.18 via Frontend Transport; Fri, 6 Jan 2023 11:09:51 +0000 Received: ("Tessian outbound 3ad958cd7492:v132"); Fri, 06 Jan 2023 11:09:51 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: d1b317ca6ebf4860 X-CR-MTA-TID: 64aa7808 Received: from 5a326c6dbc0c.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 6BAC7CC9-7FA2-49B9-9E2A-5A0D532F91CC.1; Fri, 06 Jan 2023 11:09:39 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 5a326c6dbc0c.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 06 Jan 2023 11:09:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i73yIXKp2ejqK4VWPmuzC/UxuXJ1zZB5I4pbmu0YXioC5NXgXIuWwdKlmZvav7+iQAmGu3cCkm4l8sSk1fndZehNyAiCY1qfhJCt0ywvawNvjM+Dw+kPxFa0MK3TRquoE3XqcydbRVPdW1NOUmz+onjbFJPLGGMK5/4gqPVcGYupaHnk2zfbhJf4MHYgT+3shX3sEMmG33wIXob5jN5CVueI0HyCc4NCBdF+anOH18x5Pogn/NepM0149YRJuiCUBqxlDSo+l00TXRAm5gcpQm6/aoXpecRWMT7tiu5fbLGkL5vWZ4n4O3AMtagWvqerheEqchDMXV29aDQrQ4Y+3A== 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=ZwnfHdnoOENq8Ui3vlpc4zi/F8ZRSBWh1s3zBFETAik=; b=lrmc53oiomDAtBaF/y6Sei08IYOB65vxS2Wy55bGl13/AblYDuOtxmf6xc6biK+BNV69T2pS+9k5FUIIxKzHyDvXli0WsI1GG81RcjmiosufM3HR8eMyMaHWs6Lek/LcqtFwx431ZJZ4HHtXlV1cObt+72C9f5tRzaoSH+AfgmM4M8OgrTytiTiYmuyA25hqsnIH+DhQkwGHdOc/YgFeTLTPJYvumDQ4W1LyuQhEJHnaX2RVSuntoaTLf0jfGysq5YPi88+FVbQbYEFXSnLpw1Jo5Y2kWYuL6Ac8XI5tvtX9Z/r9BSEesuHKYXYcq6O3evmob9VYo/kV+SFgOKWKjA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZwnfHdnoOENq8Ui3vlpc4zi/F8ZRSBWh1s3zBFETAik=; b=gn/He+3cxSos1yxSQ2NPzSt24erylAln9qbH3Bhmpwq//+dfPUEhJN99FMmFAjifw3H/OhwxJSLbOCggJN/ugdDYQe5k/DPZfayANe/TOw4SP6BnWzzMlKSmBmt50LBPbcd/3okOO56eK3/SlwKjC+DvzK+hEDIZj0IJ8XVm71E= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB3390.eurprd08.prod.outlook.com (2603:10a6:803:7d::27) by DU2PR08MB9991.eurprd08.prod.outlook.com (2603:10a6:10:493::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14; Fri, 6 Jan 2023 11:09:36 +0000 Received: from VI1PR08MB3390.eurprd08.prod.outlook.com ([fe80::d034:a319:3a2a:7897]) by VI1PR08MB3390.eurprd08.prod.outlook.com ([fe80::d034:a319:3a2a:7897%6]) with mapi id 15.20.5986.014; Fri, 6 Jan 2023 11:09:36 +0000 Message-ID: Date: Fri, 6 Jan 2023 12:09:33 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: [PATCH v5 2/8] newlib: libc: strcmp M-profile PACBTI-enablement Content-Language: en-US To: "Victor L. Do Nascimento" , newlib@sourceware.org Cc: Richard Earnshaw References: From: Christophe Lyon In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO4P123CA0383.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18f::10) To VI1PR08MB3390.eurprd08.prod.outlook.com (2603:10a6:803:7d::27) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI1PR08MB3390:EE_|DU2PR08MB9991:EE_|AM7EUR03FT055:EE_|PAWPR08MB9067:EE_ X-MS-Office365-Filtering-Correlation-Id: 04f64d98-6923-4fdb-2d28-08daefd68832 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: mP41pWU3P/StrdKh3HjwafBfcI4H0jQl1JqS4MVUc8d4WUzl887No4NvsIqpAMelaB9//5HbywFa/7w/a6CGo5YrnzZTglFDTYKKisfU0dTAGfeWPAR2KO9RBIwrhgv5ngjS1NsBeEjHHYSP3AZpC6B1U/Bi/wXCtjNhjKwX4M2Uc/ZAnbe2w7xyIsJTfI73qsqhos2lOVAHefS5TvSu0Kt9N00/xFp1IkZ3NbaPSn54P5y772xWqy+NW/7cM/KZBo/qSwdDdTCOa17LakiiBBgcipNorh8V4gdt2sU+UOeKuSiOFHIVVvGqfoOr7rHF9Cu8TeqrdZwOQcSsSJ1ONwSTwCGEC5WPEr+HE1TvIHuW9ywYGXS4JtfpfCo267rDOFiBOa7bRjcDbGg8Jfg3iic9pnh14YUgGcfGvGFeJnSYrq2acDBAuqLeTPr4rZqU3JHxXrFNTnegD0E1SO4E6iqJdbcP0K/v5MUjZVr+HA+7RaSRTK61/DWGsX4obnI43+QUy2S0wACVyjYsUa4ka2KE0InYa0KaG6Tvb8yjxABPJWOj2ypprLfIjC1rCjn+k9JpKZUOSuIacVY8buwJ1JDwbsAFZNNSEqK9wRD/FKSHZyUw7y4Ux09sFHJ6QXZS4FB5SBjQWDBIXcMcC6gbnklPkP5pIKOxzIIgL7qdjDqMU9piYKWBUmix/53CCHk/ywOzMYOzCmztG6o/Nswl0FSFr51RJQAO9wEHWOUP/bNZmExxx8rrDsqDAI8LkCWq X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB3390.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(346002)(396003)(366004)(136003)(376002)(451199015)(2906002)(38100700002)(31686004)(41300700001)(31696002)(36756003)(316002)(6512007)(86362001)(83380400001)(53546011)(44832011)(4326008)(2616005)(6506007)(8676002)(66946007)(66556008)(66476007)(478600001)(186003)(6666004)(26005)(6486002)(8936002)(5660300002)(40753002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR08MB9991 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: AM7EUR03FT055.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 1a97346c-ef55-4e9c-4fb0-08daefd67f01 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dUbZyIQ/hCQlBy4AAo+LsNerZJnYiLsGyh8ytsIm69bA4B/4FJ2vshDaxMPzUZJxXMa5bta1Z7LG5emghUOkSiydGFR6wmUyPMnmXdcIW8RnyG8cmmbduvgv5A09VzyMEjRNxryzdztYklaEIWRUZJxqkn+DbanNtMwZbmid0AJBJgSI8LYEMSjAj2KaSk9DDNCk//ttcB8DJPwLuMWuGW65c0rzbBvZ5kxixfQRoanwjI1NggIAKsRYWRIp1FNLbAmU7SSyVa+6LlZ9K8b0w3tgQ426BzmGjotFi4MyY/mwYsWLyEFQtiZXNY82ORKVJKKKXfVC91wEIA4E6lNJzeE2oaNoUR6Yybjg/xSkUkfk4IsV9ENYc+10ag4NY5nfAhFBhMwoh7n+QqDcZoQfG9D2JNE5qTFYnbMtItqy2Zp+mNJhiMg1lhvdj9gUcYtL44FoS8Pu3ZNnx02wuut8qFofxUTsoc/Z5PKDJkBeGAT6QXftqNVCxL2jSs/gEjMTTE9sMKanFAo9QvBvH+ho5DaXJm4HgFs11XAssQVI6kApGQv9f2nwKhsKseng6HKBFH71jIyDZ+ky6T1RRjOvmLbkopNvsVzeyQtZWn5sccxXUf95mjptMlGoSbh6x1bWiyp0wIWBHEEPDu80lJtuHedxkNEXaYWVYTFIGZ6Z3kyU/4wIKAmpaaFZVVPEXAQy41UA38/yMdQP6lw8GWzx3MvMwfnO4E2U0+RCjk5D+HYKbcagmGXsIrNLkqNuMfL2mmaxVvYtQCRRolBY/Sqt5A== 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:(13230022)(4636009)(136003)(39860400002)(376002)(396003)(346002)(451199015)(40470700004)(46966006)(36840700001)(31686004)(36756003)(31696002)(36860700001)(82740400003)(4326008)(41300700001)(70586007)(81166007)(356005)(8676002)(70206006)(40480700001)(53546011)(186003)(6486002)(478600001)(6666004)(6512007)(86362001)(26005)(2616005)(82310400005)(8936002)(2906002)(316002)(40460700003)(6506007)(83380400001)(336012)(5660300002)(44832011)(47076005)(40753002)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jan 2023 11:09:51.2438 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 04f64d98-6923-4fdb-2d28-08daefd68832 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: AM7EUR03FT055.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB9067 X-Spam-Status: No, score=-14.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,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 List-Id: On 12/21/22 12:21, Victor L. Do Nascimento wrote: > Add function prologue/epilogue to conditionally add BTI landing pads > and/or PAC code generation & authentication instructions depending on > compilation flags. > > This patch enables PACBTI for all relevant variants of strcmp: > * Newlib for armv8.1-m.main+pacbti > * Newlib for armv8.1-m.main+pacbti+mve > * Newlib-nano > --- > newlib/libc/machine/arm/strcmp-arm-tiny.S | 8 +++- > newlib/libc/machine/arm/strcmp-armv7.S | 57 ++++++++++++++--------- > newlib/libc/machine/arm/strcmp-armv7m.S | 26 +++++++---- > 3 files changed, 60 insertions(+), 31 deletions(-) > > diff --git a/newlib/libc/machine/arm/strcmp-arm-tiny.S b/newlib/libc/machine/arm/strcmp-arm-tiny.S > index 607a41daf..0bd2a2e6e 100644 > --- a/newlib/libc/machine/arm/strcmp-arm-tiny.S > +++ b/newlib/libc/machine/arm/strcmp-arm-tiny.S > @@ -29,10 +29,14 @@ > /* Tiny version of strcmp in ARM state. Used only when optimizing > for size. Also supports Thumb-2. */ > > +#include "arm_asm.h" > + > .syntax unified > def_fn strcmp > + .fnstart > .cfi_sections .debug_frame > .cfi_startproc > + prologue why no push_ip=HAVE_PAC_LEAF ? Is that because this is a tiny version and we don't want to use an extra push ip even it pacbti is enabled? > 1: > ldrb r2, [r0], #1 > ldrb r3, [r1], #1 > @@ -42,6 +46,8 @@ def_fn strcmp > beq 1b > 2: > subs r0, r2, r3 > - bx lr > + epilogue > .cfi_endproc > + .cantunwind > + .fnend > .size strcmp, . - strcmp > diff --git a/newlib/libc/machine/arm/strcmp-armv7.S b/newlib/libc/machine/arm/strcmp-armv7.S > index 2f93bfb73..7cafca151 100644 > --- a/newlib/libc/machine/arm/strcmp-armv7.S > +++ b/newlib/libc/machine/arm/strcmp-armv7.S > @@ -45,6 +45,8 @@ > .thumb > .syntax unified > > +#include "arm_asm.h" > + > /* Parameters and result. */ > #define src1 r0 > #define src2 r1 > @@ -91,8 +93,9 @@ > ldrd r4, r5, [sp], #16 > .cfi_restore 4 > .cfi_restore 5 > + .cfi_adjust_cfa_offset -16 > sub result, result, r1, lsr #24 > - bx lr > + epilogue push_ip=HAVE_PAC_LEAF > #else > /* To use the big-endian trick we'd have to reverse all three words. > that's slower than this approach. */ > @@ -112,22 +115,21 @@ > ldrd r4, r5, [sp], #16 > .cfi_restore 4 > .cfi_restore 5 > + .cfi_adjust_cfa_offset -16 > sub result, result, r1 > > - bx lr > + epilogue push_ip=HAVE_PAC_LEAF > #endif > .endm > > + > .text > .p2align 5 > -.Lstrcmp_start_addr: > -#ifndef STRCMP_NO_PRECHECK > -.Lfastpath_exit: > - sub r0, r2, r3 > - bx lr > - nop > -#endif > def_fn strcmp > + .fnstart > + .cfi_sections .debug_frame > + .cfi_startproc > + prologue push_ip=HAVE_PAC_LEAF > #ifndef STRCMP_NO_PRECHECK > ldrb r2, [src1] > ldrb r3, [src2] > @@ -136,16 +138,14 @@ def_fn strcmp > cmpcs r2, r3 > bne .Lfastpath_exit > #endif > - .cfi_sections .debug_frame > - .cfi_startproc > strd r4, r5, [sp, #-16]! > - .cfi_def_cfa_offset 16 > - .cfi_offset 4, -16 > - .cfi_offset 5, -12 > + .cfi_adjust_cfa_offset 16 > + .cfi_rel_offset 4, 0 > + .cfi_rel_offset 5, 4 > orr tmp1, src1, src2 > strd r6, r7, [sp, #8] > - .cfi_offset 6, -8 > - .cfi_offset 7, -4 > + .cfi_rel_offset 6, 8 > + .cfi_rel_offset 7, 12 > mvn const_m1, #0 > lsl r2, tmp1, #29 > cbz r2, .Lloop_aligned8 > @@ -270,7 +270,6 @@ def_fn strcmp > ldr data1, [src1], #4 > beq .Laligned_m2 > bcs .Laligned_m1 > - > #ifdef STRCMP_NO_PRECHECK > ldrb data2, [src2, #1] > uxtb tmp1, data1, ror #BYTE1_OFFSET > @@ -314,10 +313,19 @@ def_fn strcmp > mov result, tmp1 > ldr r4, [sp], #16 > .cfi_restore 4 > - bx lr > + .cfi_adjust_cfa_offset -16 > + epilogue push_ip=HAVE_PAC_LEAF > > #ifndef STRCMP_NO_PRECHECK > +.Lfastpath_exit: > + .cfi_restore_state > + .cfi_remember_state > + sub r0, r2, r3 > + epilogue push_ip=HAVE_PAC_LEAF > + > .Laligned_m1: > + .cfi_restore_state > + .cfi_remember_state > add src2, src2, #4 > #endif > .Lsrc1_aligned: > @@ -364,8 +372,9 @@ def_fn strcmp > /* R6/7 Not used in this sequence. */ > .cfi_restore 6 > .cfi_restore 7 > + .cfi_adjust_cfa_offset -16 > neg result, result > - bx lr > + epilogue push_ip=HAVE_PAC_LEAF > > 6: > .cfi_restore_state > @@ -441,7 +450,8 @@ def_fn strcmp > /* R6/7 not used in this sequence. */ > .cfi_restore 6 > .cfi_restore 7 > - bx lr > + .cfi_adjust_cfa_offset -16 > + epilogue push_ip=HAVE_PAC_LEAF > > .Lstrcmp_tail: > .cfi_restore_state > @@ -463,7 +473,10 @@ def_fn strcmp > /* R6/7 not used in this sequence. */ > .cfi_restore 6 > .cfi_restore 7 > + .cfi_adjust_cfa_offset -16 > sub result, result, data2, lsr #24 > - bx lr > + epilogue push_ip=HAVE_PAC_LEAF > .cfi_endproc > - .size strcmp, . - .Lstrcmp_start_addr > + .cantunwind > + .fnend > + .size strcmp, . - strcmp > diff --git a/newlib/libc/machine/arm/strcmp-armv7m.S b/newlib/libc/machine/arm/strcmp-armv7m.S > index cdb4912df..825b6e77f 100644 > --- a/newlib/libc/machine/arm/strcmp-armv7m.S > +++ b/newlib/libc/machine/arm/strcmp-armv7m.S > @@ -29,6 +29,8 @@ > /* Very similar to the generic code, but uses Thumb2 as implemented > in ARMv7-M. */ > > +#include "arm_asm.h" > + > /* Parameters and result. */ > #define src1 r0 > #define src2 r1 > @@ -44,8 +46,10 @@ > .thumb > .syntax unified > def_fn strcmp > + .fnstart > .cfi_sections .debug_frame > .cfi_startproc > + prologue push_ip=HAVE_PAC_LEAF > eor tmp1, src1, src2 > tst tmp1, #3 > /* Strings not at same byte offset from a word boundary. */ > @@ -82,6 +86,7 @@ def_fn strcmp > ldreq data2, [src2], #4 > beq 4b > 2: > + .cfi_remember_state > /* There's a zero or a different byte in the word */ > S2HI result, data1, #24 > S2LO data1, data1, #8 > @@ -106,7 +111,7 @@ def_fn strcmp > lsrs result, result, #24 > subs result, result, data2 > #endif > - bx lr > + epilogue push_ip=HAVE_PAC_LEAF > > > #if 0 > @@ -205,8 +210,10 @@ def_fn strcmp > > /* First of all, compare bytes until src1(sp1) is word-aligned. */ > .Lstrcmp_unaligned: > + .cfi_restore_state > tst src1, #3 > beq 2f > + .cfi_remember_state > ldrb data1, [src1], #1 > ldrb data2, [src2], #1 > cmp data1, #1 > @@ -214,12 +221,13 @@ def_fn strcmp > cmpcs data1, data2 > beq .Lstrcmp_unaligned > sub result, data1, data2 > - bx lr > + epilogue push_ip=HAVE_PAC_LEAF > > 2: > + .cfi_restore_state > stmfd sp!, {r5} > - .cfi_def_cfa_offset 4 > - .cfi_offset 5, -4 > + .cfi_adjust_cfa_offset 4 > + .cfi_rel_offset 5, 0 > > ldr data1, [src1], #4 > and tmp2, src2, #3 > @@ -355,8 +363,8 @@ def_fn strcmp > .cfi_remember_state > ldmfd sp!, {r5} > .cfi_restore 5 > - .cfi_def_cfa_offset 0 > - bx lr > + .cfi_adjust_cfa_offset -4 > + epilogue push_ip=HAVE_PAC_LEAF > > .Lstrcmp_tail: > .cfi_restore_state > @@ -372,7 +380,9 @@ def_fn strcmp > sub result, r2, result > ldmfd sp!, {r5} > .cfi_restore 5 > - .cfi_def_cfa_offset 0 > - bx lr > + .cfi_adjust_cfa_offset -4 > + epilogue push_ip=HAVE_PAC_LEAF > .cfi_endproc > + .cantunwind > + .fnend > .size strcmp, . - strcmp