From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2047.outbound.protection.outlook.com [40.107.21.47]) by sourceware.org (Postfix) with ESMTPS id 207AD388451B for ; Wed, 3 Aug 2022 15:35:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 207AD388451B 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=ey8Q6YGLDCmhSiN1NdHbW1wWCbbKHrlbwrsmmHwge2VKsYOebPj+HvopVPa3X3BVrPn8BQVx5at588m9juDkQ5b1x9iuZDmBOv5Rc4kjI6tOJ7PN++Hj2opfWZ0UoxUHcQnguK6fEfDYdh0rjXGNh0T2CHcM7JoFBtZJlBZhxjzWETgoLvZtkHcmT8dbGdFS3gQhbULzKdGcfA1bdMk8y+xsUhD7dy2dL1X0LwDSS8jvce8vIgWshTnkZ88RmRtX/ygqkXxfpwhSi6eDvtqrnCQukyMSuKTbVlOJXLvL++UNB2gh8mijDYcA859w5Rk/+/SaRwbTiEPXKKh9Rqv8gg== 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=w4PSGCPBdEa4jqma+VKEjJk8Yd0DzQnjOYChp0a0itw=; b=EFDTtxOH8jZ7+eWgdamGL0d6zBB5jbKKsV8kQVnEAMiYMrddaMnKKsOn8oeaJ0cKSN6EYW/kJXtSQirpN7xH1XWQO8IneeWieIjQK6GtMMBg3A70X37/ufiY0tcL53nkHM4YaR8jp5AoB3h+q141o7uKz+z6V9MNIm/NG7erl3ajT1uecsY8k5gvWtLoJBcZZvB2+6iW+okOYJIB9cXsDpYz8B9+yrUR6XR/+0mPw8NpEiGMXGHGRA9oyg4xlfGxf6cVe611NcpHkhSLLln7GMfplAsY+Vbp0rwuR4FweXr6NW1hyBO4GpGn8P1l8vC/kXq/y8gVfmzvRd+FHBxAJw== 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=w4PSGCPBdEa4jqma+VKEjJk8Yd0DzQnjOYChp0a0itw=; b=w/wIylLPkmZ8Ujv3q498KrIVWbIhoAzVmce2PGWatpqB0Itrv569E9YulMInh0vjTnNmOWyx9QD+kcJg7uRh+0imyW4EhQuDNw5HWH5iTE5wiNvclccBq+W6xf+MNc19xtkP0dCSBNXzlI0tOwiOf7mQA5KumlCOag19xE4nSQE= Received: from AM6P191CA0052.EURP191.PROD.OUTLOOK.COM (2603:10a6:209:7f::29) by AM6PR08MB3157.eurprd08.prod.outlook.com (2603:10a6:209:48::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.11; Wed, 3 Aug 2022 15:35:47 +0000 Received: from AM5EUR03FT051.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:7f:cafe::ce) by AM6P191CA0052.outlook.office365.com (2603:10a6:209:7f::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14 via Frontend Transport; Wed, 3 Aug 2022 15:35:47 +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 AM5EUR03FT051.mail.protection.outlook.com (10.152.16.246) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.12 via Frontend Transport; Wed, 3 Aug 2022 15:35:47 +0000 Received: ("Tessian outbound 6a3290ff1310:v123"); Wed, 03 Aug 2022 15:35:47 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 5b94f620fad90e45 X-CR-MTA-TID: 64aa7808 Received: from 15c4b650ab35.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 4E8780C3-651F-4FC7-B440-FCF98C4D13C5.1; Wed, 03 Aug 2022 15:35:39 +0000 Received: from EUR03-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 15c4b650ab35.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 03 Aug 2022 15:35:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EEz21DaD8bzBlnlWvMGFqlEMJN7KKZqJsFL19PsN5pDTPqVitLU/RUJdzOypo6kKAoECw0VtqyRAfugFAvFmauGRzxEX9uKW5UDAIrELfcB92FrUngNUzQjZGm+9TnO8/0veUWDetPSZ9F501pzuLxbaBqetOZzWKF8gPBTpTGT/Sv28WYYXHq3YYnkZFrwLnQqlQIiCnIVGNAbuXpPj9bUXs4KNS4yS/fGP/RZfdloLfuEK7JsxUKu4Y6WnERKIMpE98lGrVY6E0tkgxS/W9whbIE4tX6W+6yrpgohnLfDrAGd/7bNB4zBF5DuDs9nduYlKlsjfeo8bww9jJQZTTw== 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=w4PSGCPBdEa4jqma+VKEjJk8Yd0DzQnjOYChp0a0itw=; b=U7gIRP9SYj5edX3TuTSeiiY65axmSTm8KcGoAIZEEzCVru7tPjWKFFoC2RkeFMW+s8i2ApWxopECqE3OB8iAJq7L9rYuTH2SRaVGY+eQtWwvopTMHcTASEwAuv3dYEm0G6S4iVrV7A12wxBizhCQ+eoYF6Ng/2nQrFwyjen4+A4YhBWmzJtNZGHVq/h9p9Pn3F56zLgMIquiCdjUEBuVVMP7EdxibDu3HzHYC/5BKt+1Am0uL5j4AH8x8g+ykMPyD4rRvATLL/Wu8MwGHnfxNCa+zuMVgBq6WMU4Egdi1C4WHSJe2kD3f/y1/Ej4aRX3IUNHpP2f4TxQIf/2qwgfZQ== 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=w4PSGCPBdEa4jqma+VKEjJk8Yd0DzQnjOYChp0a0itw=; b=w/wIylLPkmZ8Ujv3q498KrIVWbIhoAzVmce2PGWatpqB0Itrv569E9YulMInh0vjTnNmOWyx9QD+kcJg7uRh+0imyW4EhQuDNw5HWH5iTE5wiNvclccBq+W6xf+MNc19xtkP0dCSBNXzlI0tOwiOf7mQA5KumlCOag19xE4nSQE= Received: from AS9PR0301CA0052.eurprd03.prod.outlook.com (2603:10a6:20b:469::7) by DB8PR08MB5052.eurprd08.prod.outlook.com (2603:10a6:10:e8::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.11; Wed, 3 Aug 2022 15:35:36 +0000 Received: from AM5EUR03FT020.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:469:cafe::32) by AS9PR0301CA0052.outlook.office365.com (2603:10a6:20b:469::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14 via Frontend Transport; Wed, 3 Aug 2022 15:35:36 +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 AM5EUR03FT020.mail.protection.outlook.com (10.152.16.116) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5482.12 via Frontend Transport; Wed, 3 Aug 2022 15:35:35 +0000 Received: from AZ-NEU-EX04.Arm.com (10.251.24.32) by AZ-NEU-EX04.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; Wed, 3 Aug 2022 15:35:32 +0000 Received: from e125768.cambridge.arm.com (10.2.78.50) by mail.arm.com (10.251.24.32) with Microsoft SMTP Server id 15.1.2507.9 via Frontend Transport; Wed, 3 Aug 2022 15:35:32 +0000 From: Victor Do Nascimento To: CC: , Victor Do Nascimento Subject: [PATCH v2 2/8] newlib: libc: strcmp M-profile PACBTI-enablement Date: Wed, 3 Aug 2022 16:35:18 +0100 Message-ID: <20220803153524.20631-3-victor.donascimento@arm.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220803153524.20631-1-victor.donascimento@arm.com> References: <20220803153524.20631-1-victor.donascimento@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-Office365-Filtering-Correlation-Id: 59f2a937-db8e-4279-7f82-08da7565d62f X-MS-TrafficTypeDiagnostic: DB8PR08MB5052:EE_|AM5EUR03FT051:EE_|AM6PR08MB3157: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: EqMrQxEu7tbne4CrRS7nKG95u3lRQLQlDIK00zdiBT2X3tL4AjHsMAEtuknPuBIRJM9s1CUliG5dlhJzvIEf/XvS4ws5V2syRl4CD62FMfU6Cj9Rrz3SQz7fddsypDFC3u2c3rPjVZGvKkdBzMSATMSnz2fcwdoO5hrIEWSDpX/2DZ4J9lcL3J8tq6EQ0/C5NG+vvfbIydHVxNM6I7i76pr4HIXTV9H/iYpz6itNeqeDtijg7eZIcobD4FAyriuK76UFgFLBn+6E0uCspB/GK64MbYGSgvcp4AuaqbP8AJ1VntzazFATz8ggIbZl+eKAlQhGJxlbZ86GEANEoMpGIQYxamA6D/kHG0vHUoLaTlAs9L9hE7Wzd1zSMUGG7We9kAJS+P2+XI/jlAQpe5/GLKhnNv3ySw6V6fbcSRYPJYTkjFa2zWoL62FRVPrG2ONI7E71AV5MO8lue66jlvPOsG/uPTkFaJiWPpyyYK+RDWh8yU1id34qsa3J/9kNrZA4vy1dmOMq1CZ2qLPS7eJHk/zKX2a+HVxDkVM8DyDMvoncfsJlNSCrH30iAdKuXqyCqEGotQTwE9aIhHstZXoirRUvuGfFxQceY1Rl/TBWDWVam9rWl4V1EQnXNDVGrliRM12I5X86qasVI1lUSyTU3D6vFafvQHd+WKYcSAW7vZDYPgpJvV9/H889jMHJ8QUYZy6wFyBNjoUFPNFDkNOpuqou4gRp/fl38AxZKXwELycOA7yiMtlPok/I5Z7fTk/t9UR41DeCrTvLM2up5tc0GmAqpOpJoUsQdiJ3FV1Q6o/OY9wsNBYais8Ai2UxEPlbyoF/QUuNTl31eWM3wkpEfGX9bQBCHHTGAvL/3iSCCMA= 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)(136003)(396003)(39860400002)(346002)(376002)(36840700001)(46966006)(40470700004)(47076005)(426003)(336012)(186003)(1076003)(36756003)(26005)(36860700001)(2906002)(6666004)(82310400005)(2616005)(41300700001)(7696005)(478600001)(83380400001)(86362001)(5660300002)(316002)(82740400003)(40460700003)(54906003)(8676002)(81166007)(40480700001)(4326008)(356005)(70206006)(8936002)(70586007)(6916009)(40753002)(36900700001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5052 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT051.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: ae719605-144b-45fc-18bc-08da7565cf79 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: H8VLFACz0RfhmxP1mfMFhi5fGJhbF8YEhf3fGNErTD4V/1EuzbykQs83h0rIvwIGWjNBowS4dLoT2s4lrrZ+z+Bkf9aikncXcOPvDeF8peFGJYDxet4nZQBmzpJSydnsCgQxkF7QSgfarPes3goUhD3gtzkFiU54kPo+td/ssa8j4fzWhO4XcdnphnJcYVBQCn90GzFq2qcx7ne4neZYXM/dX9k2ZFOg7m33hlvrUnnL2AM1No0uyxJ67b0kKJxYK6grgpqGe0dtpCMTdxcBmoxAfWWTLpS0Z6z/NWdkVpoddLGsOlv1zopVVoktVWQFtWfSbzCVrnz0IW/djEJFXlmiylUjMJPDhu7CHDGvZb5h7QwNZX83jNYqMFD2ummjZffjB4Cm7HbQhqHPM9BkkPD/jS7bDdtLqmi5qK5kDRujXtmR3tj3VMBJWpOwECqohq7GoGcRmAneciXB8Tk5vgrIId4xBi4beGIGby8bGZVOBwYfUGPiGS1KCZ1lm703oD2YShRcUZn66ucn4xpuThakfCIBGcaXnfKdzV7xFRklFWrVHYnaMuaObmKRZX3ATVw16FRWVUgiYr/HGNpqvg4En8T+eCMPH099I8LJD7iPXU0/AKiwP+MHRlxH3B33g+83GoG2cyTGWTcmaJCA/ss+1zD2Oxa9jck691K4ao80yDUjVFCwWHpwz1XA8rH/LUBvjbCmHp6Yvn9JjWsLJPjdEjHs5uLLms/+BGwUTpT8cz1a7EVa7DKuJcIHeMJaqEORx/xSYaDFhpmQ8BTgu4Nyg8EfBsnFDM5WNM9NjpQWDj1r9tO18qwwKP7Vxf8C+/YQlQFk/oPkJg6FNHqe/A== 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)(136003)(396003)(376002)(346002)(39860400002)(36840700001)(40470700004)(46966006)(426003)(83380400001)(5660300002)(2616005)(186003)(1076003)(36860700001)(8936002)(36756003)(2906002)(70206006)(4326008)(8676002)(70586007)(316002)(478600001)(40480700001)(7696005)(26005)(82310400005)(6916009)(54906003)(6666004)(41300700001)(86362001)(40460700003)(336012)(82740400003)(47076005)(81166007)(40753002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Aug 2022 15:35:47.1305 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 59f2a937-db8e-4279-7f82-08da7565d62f 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: AM5EUR03FT051.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3157 X-Spam-Status: No, score=-13.1 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 X-BeenThere: newlib@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Newlib mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Aug 2022 15:35:52 -0000 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 | 7 +++- newlib/libc/machine/arm/strcmp-armv7.S | 45 +++++++++++++++++------ newlib/libc/machine/arm/strcmp-armv7m.S | 36 +++++++++++++++--- 3 files changed, 71 insertions(+), 17 deletions(-) diff --git a/newlib/libc/machine/arm/strcmp-arm-tiny.S b/newlib/libc/machine/arm/strcmp-arm-tiny.S index 607a41daf..8085eb4df 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 "pacbti.h" + .syntax unified def_fn strcmp + .fnstart .cfi_sections .debug_frame .cfi_startproc + pacbti_prologue 1: ldrb r2, [r0], #1 ldrb r3, [r1], #1 @@ -42,6 +46,7 @@ def_fn strcmp beq 1b 2: subs r0, r2, r3 - bx lr + pacbti_epilogue .cfi_endproc + .fnend .size strcmp, . - strcmp diff --git a/newlib/libc/machine/arm/strcmp-armv7.S b/newlib/libc/machine/arm/strcmp-armv7.S index 2f93bfb73..584c89f7e 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 "pacbti.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 + pacbti_epilogue #else /* To use the big-endian trick we'd have to reverse all three words. that's slower than this approach. */ @@ -112,22 +115,28 @@ ldrd r4, r5, [sp], #16 .cfi_restore 4 .cfi_restore 5 + .cfi_adjust_cfa_offset -16 sub result, result, r1 - bx lr + pacbti_epilogue #endif .endm + .text .p2align 5 + .fnstart + .cfi_sections .debug_frame + .cfi_startproc .Lstrcmp_start_addr: #ifndef STRCMP_NO_PRECHECK .Lfastpath_exit: sub r0, r2, r3 - bx lr + pacbti_epilogue nop #endif def_fn strcmp + pacbti_prologue #ifndef STRCMP_NO_PRECHECK ldrb r2, [src1] ldrb r3, [src2] @@ -136,16 +145,26 @@ 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 + .save {r4, r5} + .cfi_adjust_cfa_offset 16 +#if __HAVE_PAC_LEAF + .cfi_offset 4, -20 + .cfi_offset 5, -16 +#else .cfi_offset 4, -16 .cfi_offset 5, -12 +#endif /* __HAVE_PAC_LEAF */ orr tmp1, src1, src2 strd r6, r7, [sp, #8] + .save {r6, r7} +#if __HAVE_PAC_LEAF + .cfi_offset 6, -12 + .cfi_offset 7, -8 +#else .cfi_offset 6, -8 .cfi_offset 7, -4 +#endif /* __HAVE_PAC_LEAF */ mvn const_m1, #0 lsl r2, tmp1, #29 cbz r2, .Lloop_aligned8 @@ -270,7 +289,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 +332,8 @@ def_fn strcmp mov result, tmp1 ldr r4, [sp], #16 .cfi_restore 4 - bx lr + .cfi_adjust_cfa_offset -16 + pacbti_epilogue #ifndef STRCMP_NO_PRECHECK .Laligned_m1: @@ -364,8 +383,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 + pacbti_epilogue 6: .cfi_restore_state @@ -441,7 +461,8 @@ def_fn strcmp /* R6/7 not used in this sequence. */ .cfi_restore 6 .cfi_restore 7 - bx lr + .cfi_adjust_cfa_offset -16 + pacbti_epilogue .Lstrcmp_tail: .cfi_restore_state @@ -463,7 +484,9 @@ 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 + pacbti_epilogue .cfi_endproc + .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..fe1519f4d 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 "pacbti.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 + pacbti_prologue eor tmp1, src1, src2 tst tmp1, #3 /* Strings not at same byte offset from a word boundary. */ @@ -106,7 +110,7 @@ def_fn strcmp lsrs result, result, #24 subs result, result, data2 #endif - bx lr + pacbti_epilogue #if 0 @@ -214,12 +218,18 @@ def_fn strcmp cmpcs data1, data2 beq .Lstrcmp_unaligned sub result, data1, data2 - bx lr + pacbti_epilogue 2: stmfd sp!, {r5} - .cfi_def_cfa_offset 4 + .save {r5} + .cfi_adjust_cfa_offset 4 +#if __HAVE_PAC_LEAF + .cfi_offset 5, -8 /* Account for ip register already on stack. */ +#else .cfi_offset 5, -4 +#endif /* __HAVE_PAC_LEAF */ + ldr data1, [src1], #4 and tmp2, src2, #3 @@ -353,10 +363,17 @@ def_fn strcmp .Lstrcmp_done_equal: mov result, #0 .cfi_remember_state +#if __HAVE_PAC_LEAF + pop {r5, ip} + .cfi_restore 5 + .cfi_restore 143 + aut ip, lr, sp +#else ldmfd sp!, {r5} .cfi_restore 5 +#endif /* __HAVE_PAC_LEAF */ .cfi_def_cfa_offset 0 - bx lr + bx lr .Lstrcmp_tail: .cfi_restore_state @@ -370,9 +387,18 @@ def_fn strcmp S2LOEQ data2, data2, #8 beq .Lstrcmp_tail sub result, r2, result +#if __HAVE_PAC_LEAF + pop {r5, ip} + .cfi_restore 5 + .cfi_restore 143 + .cfi_def_cfa_offset 0 + aut ip, lr, sp +#else ldmfd sp!, {r5} .cfi_restore 5 .cfi_def_cfa_offset 0 - bx lr +#endif /* __HAVE_PAC_LEAF */ + bx lr .cfi_endproc + .fnend .size strcmp, . - strcmp -- 2.36.1