From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80051.outbound.protection.outlook.com [40.107.8.51]) by sourceware.org (Postfix) with ESMTPS id B1B2A3857370 for ; Wed, 26 Oct 2022 11:46:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B1B2A3857370 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-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=XEy0WHvgOQk/pwqYl2X3VXWUKV1YiLHtZJECNjd+r0mgxJ7ssNJTfdFHjmo8U9wsVjsj2k3S9osrDArSdiDds0HxdrOoxxC4/xH8JiaXGpbuwmaxOTZt3KXOBTscMCwSr7S0F8Cev24xWrkJavKU/hy7FoW4j4o6b85AeFgnbTwvNW3lnnqs7lyRXAkfSujU7aivUFPqo+CperpIOOMnaPQ53O5EXr7YwM/BtA3q6p1CUpYqA3fOJO8DC8Cd/LBJwKhAkxA6kSANxvWnadGfyDOvVamI3IZkF7dmll7tOBUOn5BmqbuxJsobZkF2noYFWfJIxa9BMoOUMOXiis226A== 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=UsUwVyM5wqMLvFe+yeH5I05G+kOQaYd7eSozQ0HVzZA=; b=gM53Ob06PLmBvn2sXBPSc9qK8JuqahHhfSSt+nffNzZzYL0SNsHFQ2+8PYSRncEeZfL5Eyr0DQyVGl4ZO3u59jPopD9Q1wR6FpEQSW9R7RFxDoSW6aojwWO4NWddfWilgtgdzQrLO5N2+KK2QTi99+TrzXwGWT+lmTY3pv8EEz5TIY0rFTggy/L6+LU4pWDG5cZ9I6gGzPh8qS4R3Qhe+d+A2Q31Erelo+xw+zdD00bcQxdDLi2InauYF0q5zNH376l1ajJUve9sQTG4j+G5v/OTqERP+tW5nIHutWq/KiH0jOPRuvuahdu4lHh4pK6W4yzP3Pu80UEDVlB/OO7vGw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) 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=armh.onmicrosoft.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=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UsUwVyM5wqMLvFe+yeH5I05G+kOQaYd7eSozQ0HVzZA=; b=fqk2wwz5btORwFVwICda/FlfvG4ib27KgaA6W8yYEGEr4qBbTIy7op57bw3VX8rR9FaP9E5u73c/QrIhbKYfO/V2FwlO5fn/1iKPLHUi79WeyIW4gz2MQmGiUUxDP0yEJ5go74+TgKGBJk+crdxCxGde/sZTz37WikGlWjGPV9E= Received: from FR3P281CA0175.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a0::12) by DU0PR08MB7923.eurprd08.prod.outlook.com (2603:10a6:10:3ca::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.26; Wed, 26 Oct 2022 11:46:52 +0000 Received: from VI1EUR03FT049.eop-EUR03.prod.protection.outlook.com (2603:10a6:d10:a0:cafe::dc) by FR3P281CA0175.outlook.office365.com (2603:10a6:d10:a0::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.13 via Frontend Transport; Wed, 26 Oct 2022 11:46:52 +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 VI1EUR03FT049.mail.protection.outlook.com (100.127.144.168) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.32 via Frontend Transport; Wed, 26 Oct 2022 11:46:52 +0000 Received: ("Tessian outbound 0800d254cb3b:v130"); Wed, 26 Oct 2022 11:46:52 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 7091612942dddab5 X-CR-MTA-TID: 64aa7808 Received: from 5eec77c356f3.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 70D4431D-433B-40B7-8AF7-36FCCB3AD1AE.1; Wed, 26 Oct 2022 11:46:46 +0000 Received: from EUR03-DBA-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 5eec77c356f3.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 26 Oct 2022 11:46:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QOFRoQ6w4ib0/zxoWnLyb9P/55B9mttb3whTf3gZcF99HcgDTA1yF+/KXxUhvfxpZ7FumnIDfkcB8ElaxFwjkqG+TlNncL2SxYa+V1EBXPYrptbPmVyQm/lq3vvrnWKdASPcE0ZxgFkeOeNWWZybml2xjIzkMfaAZUu5mTMie4cLdkUquW85pFAoe6fuDm5CmuTO9vivawwdngljoU8VlI0fqNM5drO+pcmjs9FppetBT6BRHStaXbfewywdaovlXkJAbJ1W6Xoknqp2UVVs3VNrrRHOmXafPfZevV3Q/9POrfK7Rjewhydxmv/CwLNq3QX99yJ/VVYCfeP27DH2JA== 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=UsUwVyM5wqMLvFe+yeH5I05G+kOQaYd7eSozQ0HVzZA=; b=A9opxZXhxKgOe/SycOFeNW79qotteZxzo1SRWMrtE8wzR78dHrxLDZG+aAjVpU8RZGiBatbMamvSvSNRxopwCNHyaQzq8m50CYCOvlfN14y4wwlbFknbTrerQVdd1BFUwd6dccAUkoH22YOh8Ii2BZIYi5kAuL7GMap/HJ9NneyHhrE2Pf+yWYCtrioyYSaMhh9GtxOpsTuwFvw/mK6s+FePT1nbjtsA54Mnw2aHrCHtl6sE8APLTWMMGsfuKqF1m9PIzPDt+dvk8619hBZJYx8S0D0azFQoEYqes9Ea128OoICUM4YBGEesSRaoWg8gkrVBNbs5dLCvVXTFUYu0iQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) 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 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=UsUwVyM5wqMLvFe+yeH5I05G+kOQaYd7eSozQ0HVzZA=; b=fqk2wwz5btORwFVwICda/FlfvG4ib27KgaA6W8yYEGEr4qBbTIy7op57bw3VX8rR9FaP9E5u73c/QrIhbKYfO/V2FwlO5fn/1iKPLHUi79WeyIW4gz2MQmGiUUxDP0yEJ5go74+TgKGBJk+crdxCxGde/sZTz37WikGlWjGPV9E= Received: from DB6P18901CA0011.EURP189.PROD.OUTLOOK.COM (2603:10a6:4:16::21) by PAXPR08MB6718.eurprd08.prod.outlook.com (2603:10a6:102:134::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.28; Wed, 26 Oct 2022 11:46:38 +0000 Received: from DBAEUR03FT051.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:16:cafe::53) by DB6P18901CA0011.outlook.office365.com (2603:10a6:4:16::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.28 via Frontend Transport; Wed, 26 Oct 2022 11:46:38 +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 DBAEUR03FT051.mail.protection.outlook.com (100.127.142.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5746.16 via Frontend Transport; Wed, 26 Oct 2022 11:46:38 +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.12; Wed, 26 Oct 2022 11:46:37 +0000 Received: from e125768 (10.2.78.50) 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.12 via Frontend Transport; Wed, 26 Oct 2022 11:46:37 +0000 From: "Victor L. Do Nascimento" To: CC: Subject: [PATCH v4 2/8] newlib: libc: strcmp M-profile PACBTI-enablement In-Reply-To: (Victor L. Do Nascimento's message of "Wed, 26 Oct 2022 12:37:01 +0100") References: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) Date: Wed, 26 Oct 2022 12:46:37 +0100 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DBAEUR03FT051:EE_|PAXPR08MB6718:EE_|VI1EUR03FT049:EE_|DU0PR08MB7923:EE_ X-MS-Office365-Filtering-Correlation-Id: 08b38bd6-6e15-4ebc-2bf5-08dab747c681 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: beaKbBf2sH97ATOGBEnJ1g9fZTYMw3YvZl8y9BMI2Als65R4Kn0nV994STq0/OCnSGEHlt3kdRGjEMpTsF/cxaECRvLOC8HUVTNs3EoVMzoNOJG8i0wqI4+v9eiSdI2oEq5nVKxg5sL6dv8J5n8DSHYKYOoHRZfnHab8r8yoQ5gSk1As4Ml5OngyUuEfP86EPeiiMKozcywVzmr9zGbns+oIIV9+dmh6Soge/NHZ4scZShK4H+cytS2Y0L29muQLWDukUrLh1paWH0ZSIM+TN4u2GeBPSsQ4/qM5EqmXy89obbdzvViDM6z4IRW0QnhJy7ncDGi+t3cUAWr1ORs+UQn3NKzrvNIWRf+qGk4qZy6gKZOWhSoJARvwg6cuGAXJT+lv/T/l+d5Xq6t8NAagQEn1kISd95hxUtNXdhciNvtrsBWuNw2hpf0jKgM7A45lsjpNvC/oLKr8up0fdpRfUBy+vcn4E4aiRsjxFn6QO6mhCdwGktkCJxAtA8QVIoiCzY/v+EPnrPb8R4MLyxhLaIy1mKQfuKrsnwAvuybCO2epUdk/g74LNNM7pPbT8+RKV2ENDmSNbomNgOEiBkTnG/mWi0sZLtmHp+vpFcccWDjr6Ivyz1x+MoM+T4BPdKzCSnBLiIlu6hbzZOtG3DDEH6/gb16usAHRTtlmNolzNllW66FcxhixT7Mh/b1tLnTJTR724jfIWh4RtYLLY3aa/LDSuCoqGnGC/nSjnT1znRtg+LMHo4S24ItjWj5RHXvGN4iJqcecqVlJem7y7x48yYzNTAUSH9ml0Tfqwh6DdLFpVRXj1CV7Ydb+J5DnPXps7kvMvTUSXV5BPylXE0z1jQ== 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:(13230022)(4636009)(376002)(346002)(136003)(396003)(39860400002)(451199015)(46966006)(36840700001)(40470700004)(47076005)(36860700001)(2616005)(186003)(26005)(83380400001)(426003)(336012)(40480700001)(40460700003)(2906002)(4326008)(82310400005)(6916009)(316002)(478600001)(8936002)(41300700001)(5660300002)(70586007)(70206006)(8676002)(36756003)(86362001)(81166007)(82740400003)(356005)(40753002)(36900700001);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6718 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VI1EUR03FT049.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 4ea65236-b2a8-48f0-7a60-08dab747be13 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qOwsJNCOXigXLflMn8Yize8P+Jax1K7QDHOIX2DjHO9jrvYgfuH79hJQFCx7yWbRX2BtvQTUG9YCjPbgwy1mq3X+5pbQbGaG+Rv6EjUNBVw2Rm94Jsb1K5b2eTmIWT4ceE03rNiXcpQXmMAbOWvL4lckMF8UkEMriB1W9/a1/X7DE9oq/PftSfrKGirLEuZZq6SIH+DlATV/2h18cDFDwKrrLH6jbEUuQV0jqUXGpxEGggdAq965+C/QH7Sflhoo2o1j4u3NVCRj3t4ND19ldxZg5R1aDHG0iBN/q2nnL6BxkLRq2tJ+YynURk6dUKtPtKo8P73ukr30rnyt0w9TDuo57Mw/PgcfQYoqkIkJDihQ9brz8oW/6/45LiMb9DiRQn6KyTBCvdyTYKG5OwMBIbzmPUBqINaVjG5Zw1NG4e67uDu321jc2Y5G2yrU9lZF13YjyEEcTrrOnvfcxSZctDFlXxgL456SqJqOxdChiZlzlh3pyrSzzG9oiWe3Tn5TJzJlw2WMiH6JP7HjWgo8KSkYmUXFMyTfBY3ggJVyefkE25ujrB0TVjL8Ngt/Slx41d/Lh/QsCRdAYdPaO2SluFK+SsNhdB8fsoiRKbFb5zvd1tTGgZlG7/6fDKdB1B/QygCpPggHi7gVz5lDx0nggnTBrLLgI9ppStiFErZO8oGOYXdCCNu2y3gFz9lSoMjVmBEaKtHr+K1uI/RLBz/vXkNZzg/3dELfLys2lgw4j4VtQE7xohWCLPzrYf+c709CAVfyMxTq3JHji7OkPsBt2SP2isMgyXKmW4TWIfu2a3U= 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)(396003)(346002)(376002)(39860400002)(451199015)(46966006)(40470700004)(36840700001)(36756003)(81166007)(70586007)(5660300002)(8936002)(47076005)(426003)(83380400001)(70206006)(86362001)(36860700001)(2616005)(26005)(186003)(40480700001)(82740400003)(478600001)(40460700003)(336012)(6916009)(41300700001)(82310400005)(2906002)(8676002)(4326008)(316002)(40753002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2022 11:46:52.6168 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 08b38bd6-6e15-4ebc-2bf5-08dab747c681 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: VI1EUR03FT049.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB7923 X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,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: 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 | 44 +++++++++++++++-------- newlib/libc/machine/arm/strcmp-armv7m.S | 26 +++++++++----- 3 files changed, 54 insertions(+), 24 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 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..26ba579ae 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,30 @@ 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 + .fnstart + .cfi_sections .debug_frame + .cfi_startproc .Lstrcmp_start_addr: #ifndef STRCMP_NO_PRECHECK .Lfastpath_exit: + .cfi_remember_state sub r0, r2, r3 - bx lr + epilogue push_ip=HAVE_PAC_LEAF nop #endif def_fn strcmp + .cfi_restore_state + prologue push_ip=HAVE_PAC_LEAF #ifndef STRCMP_NO_PRECHECK ldrb r2, [src1] ldrb r3, [src2] @@ -136,16 +147,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 +279,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,7 +322,8 @@ 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 .Laligned_m1: @@ -364,8 +373,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 +451,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 +474,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 + .cantunwind + .fnend .size strcmp, . - .Lstrcmp_start_addr 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 -- 2.36.1