From patchwork Fri Feb 23 16:39:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 1903508 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=7seeVJZb; dkim=pass (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=7seeVJZb; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4ThG3M243fz23pm for ; Sat, 24 Feb 2024 03:40:47 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 39B1C385841A for ; Fri, 23 Feb 2024 16:40:45 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02on2055.outbound.protection.outlook.com [40.107.247.55]) by sourceware.org (Postfix) with ESMTPS id 149F43858C62 for ; Fri, 23 Feb 2024 16:40:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 149F43858C62 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-Filter: OpenARC Filter v1.0.0 sourceware.org 149F43858C62 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.247.55 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1708706421; cv=pass; b=oNSEczgqgT7IcGOuH3pNUek68lDc0unwZ1uR0LXHiSJMNgTc6xq+mGrNKLRcbtjTQfqXySkgDZmV8F/5JD4zL7XgkhaAEDX62My+gSLgVciAiPBCQOklS6LBcGyLn6kfmekOy8qOPd2iobZ/lQMpeXS909Ra6OC5x1WqmM/ZL/A= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1708706421; c=relaxed/simple; bh=Hoe9zsi303EZgmQu2vH4SKlGFlghWHHpItuxcT9RiV4=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=SMKpd7rkJ+gwE59Zh6UlOsPIkjX3awbtjlYU/F4NsAhLuRt7GQEJbGO+I3byFHfW7RNKYOzGvMmIVf2Xt7HbEigsnq6Ctx5IjM7QzZJQ9RqzgJNhumRnMcMmnMS/tfE5wXTfQTVIcLuVsJHPaW6sNzGsRAuHe6Od4cfShOuyOYo= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=Td3zWgfn5F7Ps0B8UC+1OrXMpJZj5ERLQE4mVKYxxe0Yy/T0ERt+lfaE2CAOD2LjcuGghokPtHZtsRikT7bUmp0Bbm3fnRMNxv1byDrxKSf0OtRDNoxEmGADKSSbF1IUQXmuDl8HUeSJUhb8RxoiQl2nfqfpJlpfEw17G7IvZK6jozuuQYCqwkGVVJctsP/4TuQXGvMjYlgI+KTuKEbFovO99BygKQrEk2y/736BBL2IZ2Y/DLkyWtXfZnh7n8qcmgVZj3L2+mn2LyzRWFlzTEUR+HHM2Ku64ZimuwkY3RCry1/18qxm8N3abtckhFjgPnCYgsMKTkMqKA9zwp2vPA== 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=2OpVbreCz92h/lVEhOITfQybJ7h9SSHzLjliJipxN44=; b=UpokIFo3lLtfOLpmZhexM9fS8as/RWgKzI5XgBdLP6P7p8hdw6H2U18cxNv55Le8IWjf+INd7nBPtaq+wSUhenM+de+qQfPhcL6bSzzI1Fip5LS1NsYiBqtrH4yCdKeqo81b+ujH8Hi3USpVV/TsIlX2cDCqT70583tCM2fd5xHuJ9IejQ7bPZggU3ifgiZen75LTzALop2G0ldj5VRecHtU8mpeFtQsuDX0/ZQr5nE8sjCG9WL4FhbM+vIXugOZBu4xw6kxXAfpWIPXZPEc4vA+C58f6gyV6ERRLh4FGyP3D4mMhbv8Qv9tveDwcrvEhF25Cs0tIHxzS4bs9HTn+g== 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] dkim=[1,1,header.d=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=2OpVbreCz92h/lVEhOITfQybJ7h9SSHzLjliJipxN44=; b=7seeVJZbKhclVgrrmDyix27mjZxcTQ17wtLrLKaqm6tGQoygRfBXcadH8K42HXGyNgk3xnAu77oJwavz75W1cF1gEnh2rMt+qXqUawKlkBBOGdZuZiAAt6GoPjtF5OL4aS/NIxSzw9iSw3mje81VUC2A1YDEyxorJDzCvXU3owY= Received: from DB9PR02CA0014.eurprd02.prod.outlook.com (2603:10a6:10:1d9::19) by PA4PR08MB5967.eurprd08.prod.outlook.com (2603:10a6:102:e7::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.24; Fri, 23 Feb 2024 16:40:11 +0000 Received: from DB5PEPF00014B88.eurprd02.prod.outlook.com (2603:10a6:10:1d9:cafe::75) by DB9PR02CA0014.outlook.office365.com (2603:10a6:10:1d9::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.43 via Frontend Transport; Fri, 23 Feb 2024 16:40:11 +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 DB5PEPF00014B88.mail.protection.outlook.com (10.167.8.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25 via Frontend Transport; Fri, 23 Feb 2024 16:40:11 +0000 Received: ("Tessian outbound a6e56d06a0e4:v228"); Fri, 23 Feb 2024 16:40:11 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: d9bf8e4dfeb00241 X-CR-MTA-TID: 64aa7808 Received: from abf0baacb711.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 53E6B022-AA65-4CA7-B932-4E664EED2A63.1; Fri, 23 Feb 2024 16:40:00 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id abf0baacb711.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 23 Feb 2024 16:40:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mfx4QjLPg69lU59qYS+qzwnDRVKuZIgX8eTLiiiqc+7dyZsw3MC2ZRylr3fhI2bUvzr4lgGM5Dfyk46cporpnKDioeGPm77OAg8dpkiBvcL4U6GY39AzjHenr3f2H4SDA+RRhoAGldFpNUxRJKWtbhcy3gnOxEEd8uWHWyL7eq+Q6lYSFFXMwTzNZTBtLVoEzOEzMkIo3b2sKYnBNAYh4erXaojMrC1IQOu2u3R9/s2l6+lrkZhhdIhmaL/GkXj+HS4qas3F5yADa5WLNjSZELRjt/bY+J8cIQssflcKqThd9x79Sivb7tjeih6YBAuhr+74xKWypBn5TvbYQLeeBg== 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=2OpVbreCz92h/lVEhOITfQybJ7h9SSHzLjliJipxN44=; b=QxwOS/oMr21AN4TmRKiOeXYklcrSENmuvtMTxOyJehEdjjVc3sR34yKj1/fQObQqdO5bSsfE0y9dr/mPVTbaXkHudHB9uiFGFcTafuLacIBxnXq1kCwZILrf2On5G0UMXNRLbg+u2mUNCqDFpaQwdFJ1q5e7tINqy1nS/TlO2x8dTMW9/bzqrlQqICUOahz/6pLOoAgnzt6MWGwoy/z69ZuKjel0TjNgnpj03pv2aNevP7W0wiU45dD9APmrz1tFsehL3pjrbSnFshQWNFc886RYMxcLjoA+cX0ToHuJj4nDwlA9KhszGSsFPbsmx3n0ClbwkiZSP/IKIRdxya6GfQ== 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=2OpVbreCz92h/lVEhOITfQybJ7h9SSHzLjliJipxN44=; b=7seeVJZbKhclVgrrmDyix27mjZxcTQ17wtLrLKaqm6tGQoygRfBXcadH8K42HXGyNgk3xnAu77oJwavz75W1cF1gEnh2rMt+qXqUawKlkBBOGdZuZiAAt6GoPjtF5OL4aS/NIxSzw9iSw3mje81VUC2A1YDEyxorJDzCvXU3owY= Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by DU0PR08MB7858.eurprd08.prod.outlook.com (2603:10a6:10:3b2::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.22; Fri, 23 Feb 2024 16:39:51 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::8b1b:5f28:5006:ac18]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::8b1b:5f28:5006:ac18%3]) with mapi id 15.20.7316.023; Fri, 23 Feb 2024 16:39:50 +0000 From: Wilco Dijkstra To: GCC Patches CC: Richard Sandiford , Kyrylo Tkachov Subject: [PATCH] libatomic: Fix build for --disable-gnu-indirect-function [PR113986] Thread-Topic: [PATCH] libatomic: Fix build for --disable-gnu-indirect-function [PR113986] Thread-Index: AQHaZnZ0eQ8PUyGqSEaCt27pwXbKyw== Date: Fri, 23 Feb 2024 16:39:50 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB8982:EE_|DU0PR08MB7858:EE_|DB5PEPF00014B88:EE_|PA4PR08MB5967:EE_ X-MS-Office365-Filtering-Correlation-Id: 27d56832-c253-4d8b-79d3-08dc348e1a75 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: dIOathejGIDlNCFhF8u4TbfzBlV6BL7Fpa3OMywvXYrFUnU933Yq3oD3zjm+npqOc2DsX707E3SHvqc9SDwLevRn27Iy2blIULKRUvC3N8tacxiU3llf5dB9GKfxVimU+py3gO/+4HWpd2qWd4Hl7H6NDSAmETKTDEkxH4WH6BfOHKEgCBWk7Ufu3T6C79PswjMeeDtMnAKyD0n2WIp/FmWVzWyepiAd3pbwQBiZ1NS+n2vf5sldZd177UKjBSidrl4qk2nf3vdupelTLN3X7gpwJcin0uV1iUVIVNoK19w5sDtnXTTAkEY/xGZLTiKnXdYk2nsxVjRIWB1idSlEOw0EdxPjP8erjKeg4i8q471lpc3YrMGQ5K53P2B8BuBPLQnFDlQsXcPi/Xxco34ps3iWFu5z/dMmgsIyvGJwyGkXRlWWVlVOHEEA2dM9O3qS0z/AGUxIORi+5gNR+avhO5XmOhV0t0ywBdDKfqUQq1zC0sX4P4MqE0rgYc1FtgNKiaH2N2ajZ0HLR4AA3TQgRm6sJZdB2IwccNCYg5dUq6fH/CbdMBkEgw8nKNUlDx0aVYrdxTBl0y4dCGE2EquMcKghcc1s+39IJngKAYs46YAH3KisFCplAMa0xJeA+lsr X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8982.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(38070700009); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB7858 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: DB5PEPF00014B88.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: e9b281cb-cb14-4c5a-886e-08dc348e0e3e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BaBv+oCKS3EJkO40Q+d4hPh5m2zQzV2dK3gQaSRm64ur4+J4zw5Ss6D/rxE2XSLrxT/oBJ4hdSn/mLVL9R6XnTxVp82bUes6QCt/LRK6p2cp+AcCUDrrXzJmaeuPD1LMCPnPi8i7pQ7IEqlKfl4u4dfFIgeFu1vmSW3KHRAztaGEVZh+BlESKT2bkraS+pSkXFH97w7/mk5UDIV7q0QTWrzucgm8ZiPc/Ej+EAyYZO8c9/6zMje8FbE5g722U96AFdVu5hmah93ZOKKGw3YWWuA0ijB1J2xp5YvzRGIJ4uDGkezZf2gNjv407Zksq9sEtV8gC+DiVUyqX9pxotn4/BYLemtkKPukYdSPNH9uuYfMhdDUTPrwl+a3qz6P+TMIBP8hL7ugYYIFGTQKENzCfaxS2OiVX+qcCDFUp8mlmOeQFq1FoNg6Nh/fhV8ZcnB9ThMg5zMflF2LsXuupXOWHVzKwYFyZocyD9Jj4mXJkmwGTKd5G0tHdPgnhTvCLXNfeoaLGvX4I/TzCV1pbfPxEnURmQRybf13ae4kdzNqNteWiS3LlvNylQP+I+kSt8+silu2+YLiG9RGp2lnQAUS/m1/pOlzxMiyvOHXimIyxpbv21FXnmTvgOL/d+ACIL7D10I1ZD0H/DNPtHIA6MCPml4PKo1yNJVwvCJIjiCTPJk= 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:(13230031)(36860700004)(46966006)(40470700004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Feb 2024 16:40:11.3674 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 27d56832-c253-4d8b-79d3-08dc348e1a75 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: DB5PEPF00014B88.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB5967 X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Fix libatomic build to support --disable-gnu-indirect-function on AArch64. Always build atomic_16.S and add aliases to the __atomic_* functions if !HAVE_IFUNC. Passes regress and bootstrap, OK for commit? libatomic: PR target/113986 * Makefile.in: Regenerated. * Makefile.am: Make atomic_16.S not depend on HAVE_IFUNC. Remove predefine of HAVE_FEAT_LSE128. * config/linux/aarch64/atomic_16.S: Add __atomic_ aliases if !HAVE_IFUNC. * config/linux/aarch64/host-config.h: Correctly handle !HAVE_IFUNC. diff --git a/libatomic/Makefile.am b/libatomic/Makefile.am index d49c44c7d5fbe83061fddd1f8ef4813a39eb1b8b..980677f353345c050f6cef2d57090360216c56cf 100644 --- a/libatomic/Makefile.am +++ b/libatomic/Makefile.am @@ -130,12 +130,8 @@ libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix _$(s)_.lo,$(SIZEOBJS))) ## On a target-specific basis, include alternates to be selected by IFUNC. if HAVE_IFUNC if ARCH_AARCH64_LINUX -if ARCH_AARCH64_HAVE_LSE128 -AM_CPPFLAGS = -DHAVE_FEAT_LSE128 -endif IFUNC_OPTIONS = -march=armv8-a+lse libatomic_la_LIBADD += $(foreach s,$(SIZES),$(addsuffix _$(s)_1_.lo,$(SIZEOBJS))) -libatomic_la_SOURCES += atomic_16.S endif if ARCH_ARM_LINUX @@ -155,6 +151,10 @@ libatomic_la_LIBADD += $(addsuffix _16_1_.lo,$(SIZEOBJS)) \ endif endif +if ARCH_AARCH64_LINUX +libatomic_la_SOURCES += atomic_16.S +endif + libatomic_convenience_la_SOURCES = $(libatomic_la_SOURCES) libatomic_convenience_la_LIBADD = $(libatomic_la_LIBADD) diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in index 11c8ec7ba15ba7da5ef55e90bd836317bc270061..d9d529bc502d4ce7b9997640d5f40f5d5cc1232c 100644 --- a/libatomic/Makefile.in +++ b/libatomic/Makefile.in @@ -90,17 +90,17 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ @ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@am__append_1 = $(foreach s,$(SIZES),$(addsuffix _$(s)_1_.lo,$(SIZEOBJS))) -@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@am__append_2 = atomic_16.S -@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@am__append_3 = $(foreach \ +@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@am__append_2 = $(foreach \ @ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@ s,$(SIZES),$(addsuffix \ @ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@ _$(s)_1_.lo,$(SIZEOBJS))) \ @ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@ $(addsuffix \ @ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@ _8_2_.lo,$(SIZEOBJS)) \ @ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@ tas_1_2_.lo -@ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@am__append_4 = $(addsuffix _8_1_.lo,$(SIZEOBJS)) -@ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@am__append_5 = $(addsuffix _16_1_.lo,$(SIZEOBJS)) \ +@ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@am__append_3 = $(addsuffix _8_1_.lo,$(SIZEOBJS)) +@ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@am__append_4 = $(addsuffix _16_1_.lo,$(SIZEOBJS)) \ @ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@ $(addsuffix _16_2_.lo,$(SIZEOBJS)) +@ARCH_AARCH64_LINUX_TRUE@am__append_5 = atomic_16.S subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ @@ -156,8 +156,7 @@ am__uninstall_files_from_dir = { \ } am__installdirs = "$(DESTDIR)$(toolexeclibdir)" LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES) -@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@am__objects_1 = \ -@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@ atomic_16.lo +@ARCH_AARCH64_LINUX_TRUE@am__objects_1 = atomic_16.lo am_libatomic_la_OBJECTS = gload.lo gstore.lo gcas.lo gexch.lo \ glfree.lo lock.lo init.lo fenv.lo fence.lo flag.lo \ $(am__objects_1) @@ -425,7 +424,7 @@ libatomic_la_LDFLAGS = $(libatomic_version_info) $(libatomic_version_script) \ $(lt_host_flags) $(libatomic_darwin_rpath) libatomic_la_SOURCES = gload.c gstore.c gcas.c gexch.c glfree.c lock.c \ - init.c fenv.c fence.c flag.c $(am__append_2) + init.c fenv.c fence.c flag.c $(am__append_5) SIZEOBJS = load store cas exch fadd fsub fand fior fxor fnand tas EXTRA_libatomic_la_SOURCES = $(addsuffix _n.c,$(SIZEOBJS)) libatomic_la_DEPENDENCIES = $(libatomic_la_LIBADD) $(libatomic_version_dep) @@ -451,9 +450,8 @@ all_c_files := $(foreach dir,$(search_path),$(wildcard $(dir)/*.c)) # Then sort through them to find the one we want, and select the first. M_SRC = $(firstword $(filter %/$(M_FILE), $(all_c_files))) libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix \ - _$(s)_.lo,$(SIZEOBJS))) $(am__append_1) $(am__append_3) \ - $(am__append_4) $(am__append_5) -@ARCH_AARCH64_HAVE_LSE128_TRUE@@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@AM_CPPFLAGS = -DHAVE_FEAT_LSE128 + _$(s)_.lo,$(SIZEOBJS))) $(am__append_1) $(am__append_2) \ + $(am__append_3) $(am__append_4) @ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv8-a+lse @ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv7-a+fp -DHAVE_KERNEL64 @ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=i586 diff --git a/libatomic/config/linux/aarch64/atomic_16.S b/libatomic/config/linux/aarch64/atomic_16.S index d4a360a6f7812351249d0a0ad7f60373b7f8c35a..772f84c0a24dab52773e25d053f5006fa8f28560 100644 --- a/libatomic/config/linux/aarch64/atomic_16.S +++ b/libatomic/config/linux/aarch64/atomic_16.S @@ -38,6 +38,8 @@ The libat__16_i1 entry points are used when LSE128 is available. The libat__16_i2 entry points are used when LSE2 is available. */ +#include "auto-config.h" + #if HAVE_FEAT_LSE128 .arch armv9-a+lse128 #else @@ -67,8 +69,8 @@ NAME: \ .cfi_endproc; \ .size NAME, .-NAME; -#define ALIAS(NAME, FROM, TO) \ - ALIAS1 (FROM (NAME),TO (NAME)) +#define ALIAS(NAME, FROM, TO) ALIAS1 (FROM (NAME),TO (NAME)) +#define ALIAS2(NAME) ALIAS1 (__atomic_##NAME, libat_##NAME) #define ALIAS1(ALIAS, NAME) \ .global ALIAS; \ @@ -747,6 +749,28 @@ ALIAS (libat_fetch_nand_16, LSE2, CORE) ALIAS (libat_nand_fetch_16, LSE2, CORE) ALIAS (libat_test_and_set_16, LSE2, CORE) +/* Emit __atomic_* entrypoints if no ifuncs. */ + +#if !HAVE_IFUNC +ALIAS2 (load_16) +ALIAS2 (store_16) +ALIAS2 (compare_exchange_16) +ALIAS2 (exchange_16) +ALIAS2 (fetch_add_16) +ALIAS2 (add_fetch_16) +ALIAS2 (fetch_sub_16) +ALIAS2 (sub_fetch_16) +ALIAS2 (fetch_or_16) +ALIAS2 (or_fetch_16) +ALIAS2 (fetch_and_16) +ALIAS2 (and_fetch_16) +ALIAS2 (fetch_xor_16) +ALIAS2 (xor_fetch_16) +ALIAS2 (fetch_nand_16) +ALIAS2 (nand_fetch_16) +ALIAS2 (test_and_set_16) +#endif + /* GNU_PROPERTY_AARCH64_* macros from elf.h for use in asm code. */ #define FEATURE_1_AND 0xc0000000 #define FEATURE_1_BTI 1 diff --git a/libatomic/config/linux/aarch64/host-config.h b/libatomic/config/linux/aarch64/host-config.h index 4e3541240633dc26de4a57c506b7e4b0c50185c2..030b56ae4df97f1fd33f141c956d16d5eafb89e1 100644 --- a/libatomic/config/linux/aarch64/host-config.h +++ b/libatomic/config/linux/aarch64/host-config.h @@ -24,6 +24,13 @@ #if HAVE_IFUNC #include +#ifndef HWCAP_USCAT +# define HWCAP_USCAT (1 << 25) +#endif +#ifndef HWCAP2_LSE128 +# define HWCAP2_LSE128 (1UL << 47) +#endif + #if __has_include() # include #else @@ -35,7 +42,6 @@ typedef struct __ifunc_arg_t { # define _IFUNC_ARG_HWCAP (1ULL << 62) #endif -#ifdef HWCAP_USCAT # if N == 16 # define IFUNC_COND_1 (has_lse128 (hwcap, features)) # define IFUNC_COND_2 (has_lse2 (hwcap, features)) @@ -44,19 +50,6 @@ typedef struct __ifunc_arg_t { # define IFUNC_COND_1 (hwcap & HWCAP_ATOMICS) # define IFUNC_NCOND(N) 1 # endif -#else -# define IFUNC_COND_1 (false) -# define IFUNC_NCOND(N) 1 -#endif - -#endif /* HAVE_IFUNC */ - -/* All 128-bit atomic functions are defined in aarch64/atomic_16.S. */ -#if N == 16 -# define DONE 1 -#endif - -#ifdef HWCAP_USCAT #define MIDR_IMPLEMENTOR(midr) (((midr) >> 24) & 255) #define MIDR_PARTNUM(midr) (((midr) >> 4) & 0xfff) @@ -89,11 +82,6 @@ has_lse2 (unsigned long hwcap, const __ifunc_arg_t *features) #define AT_FEAT_FIELD(isar0) (((isar0) >> 20) & 15) -/* Ensure backwards compatibility with glibc <= 2.38. */ -#ifndef HWCAP2_LSE128 -#define HWCAP2_LSE128 (1UL << 47) -#endif - static inline bool has_lse128 (unsigned long hwcap, const __ifunc_arg_t *features) { @@ -116,6 +104,14 @@ has_lse128 (unsigned long hwcap, const __ifunc_arg_t *features) return false; } +#endif /* HAVE_IFUNC */ + +/* All 128-bit atomic functions are defined in aarch64/atomic_16.S. */ +#if N == 16 +# define DONE 1 +# if !HAVE_IFUNC +# define IFUNC_ALT 1 +# endif #endif #include_next