From patchwork Mon Jan 18 16:24:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Szabolcs Nagy X-Patchwork-Id: 41748 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 8FA0D388701F; Mon, 18 Jan 2021 16:24:49 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8FA0D388701F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1610987089; bh=NdwbyvWSA3YCPHRItzLCa3R+fOtIU67FL366m3JQ4/M=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=MmDIHIAHsytb41zPvMcRFi3MaqAkyMBZ3z5Xgp3/yZBSbPmonHM+nlTR/AkGjzahp fgqVxBECT6OuoRUJamzCpQjsCaR6ERNKqVifn7RSGYPYxRk9FjiTTZoDg7SN/NYNpC vW5QRsS+LiMXWf7Uenea1b5ge9aHFKhIf7WDmSzs= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from FRA01-MR2-obe.outbound.protection.outlook.com (mail-mr2fra01hn2239.outbound.protection.outlook.com [52.100.177.239]) by sourceware.org (Postfix) with ESMTPS id D3045388A826 for ; Mon, 18 Jan 2021 16:24:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D3045388A826 Received: from DB6PR0601CA0022.eurprd06.prod.outlook.com (2603:10a6:4:7b::32) by PR2PR08MB4748.eurprd08.prod.outlook.com (2603:10a6:101:1f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3763.11; Mon, 18 Jan 2021 16:24:45 +0000 Received: from DB5EUR03FT017.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:7b:cafe::8b) by DB6PR0601CA0022.outlook.office365.com (2603:10a6:4:7b::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3763.10 via Frontend Transport; Mon, 18 Jan 2021 16:24:44 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; sourceware.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;sourceware.org; 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 DB5EUR03FT017.mail.protection.outlook.com (10.152.20.114) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3763.12 via Frontend Transport; Mon, 18 Jan 2021 16:24:44 +0000 Received: ("Tessian outbound af289585f0f4:v71"); Mon, 18 Jan 2021 16:24:44 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 57731025d9654971 X-CR-MTA-TID: 64aa7808 Received: from f471ff8196be.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 6665C44F-950D-478A-BC80-8007308B3CA4.1; Mon, 18 Jan 2021 16:24:39 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id f471ff8196be.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 18 Jan 2021 16:24:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WTSFG0WqfcW4PB2T9l9sUGKe9SmvRQ9QRp859VHEJOiREVdKYQBqe6NGm/4lI2A/fLwtxZOTgXczN6BIpkHyXA5jDQA+JfxB6oSXpRXLng2yUhrFEqNJNjYDi5OqbgE28FC5Dpu0AM7oSWCw50LhTgo5ZAP6Y3zYxhBFr230fdhN/jMw3zA7whPbe8LVBC5CHZNPCzUop6GJwCWGQXEvUDJa0JeXXlTOfjtG5QJLu66C9ZFYRLl1JqDYlbp1ovMYL6RwMV6nQqM/C3ZxznWgd5bEFehjsNm2VOSXTu1tDS1+hrQs8JT+VFv2tKJMXyIQnzg3Ozrh7wodNaMLL4zUMw== 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-SenderADCheck; bh=NdwbyvWSA3YCPHRItzLCa3R+fOtIU67FL366m3JQ4/M=; b=nMHEQ3jsNhqBs6FrdBHr/bXD3OXqN3famTzSsB3HUMKKTn+wlLHz6lz0Nm/gnh6wRZu6TcFNFIenyGHelSJWR36Gn/BYDDy0IsGBzeazFITF9t2fiit+afImh8Msz2PUGNW4lqcq1SL8qZ9KBluO9WvfskLw+oMu8guiSjnM+8O7ONzW4T2JEgc5D98WJI6vSvzsu+QwH3tPPtTBvUCLiQoqOzzTk31a3aKePw7GHk143goAJ1SJh6llZtxjjLASOrld+eVvtjiopzxRVeb/S5azp1cHE4nTErMnxDLPFL6kP3IL6/8w7VRHYXpV39AbjR/U7m2ZyQaXHv1tZT127A== 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 Authentication-Results-Original: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=arm.com; Received: from PA4PR08MB6320.eurprd08.prod.outlook.com (2603:10a6:102:e5::9) by PA4PR08MB6238.eurprd08.prod.outlook.com (2603:10a6:102:e8::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3763.11; Mon, 18 Jan 2021 16:24:37 +0000 Received: from PA4PR08MB6320.eurprd08.prod.outlook.com ([fe80::700f:ddbe:a347:ee4f]) by PA4PR08MB6320.eurprd08.prod.outlook.com ([fe80::700f:ddbe:a347:ee4f%7]) with mapi id 15.20.3763.014; Mon, 18 Jan 2021 16:24:37 +0000 To: libc-alpha@sourceware.org Subject: [PATCH v4 05/10] Use hidden visibility for early static PIE code Date: Mon, 18 Jan 2021 16:24:25 +0000 Message-Id: <78d3bf1bc9e9f7c1eafbcf011bbd815e7f6e90b0.1610986541.git.szabolcs.nagy@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: X-Originating-IP: [217.140.106.54] X-ClientProxiedBy: SN4PR0501CA0101.namprd05.prod.outlook.com (2603:10b6:803:42::18) To PA4PR08MB6320.eurprd08.prod.outlook.com (2603:10a6:102:e5::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (217.140.106.54) by SN4PR0501CA0101.namprd05.prod.outlook.com (2603:10b6:803:42::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.6 via Frontend Transport; Mon, 18 Jan 2021 16:24:36 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 8ab957ee-cd52-4a1e-0a8b-08d8bbcd9103 X-MS-TrafficTypeDiagnostic: PA4PR08MB6238:|PR2PR08MB4748: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: wfbr3mXRzChNemex2rtEy/EN5aMqn3Yd4j0Fl61pFZ7Wv4eDpo9TWiKz1uw1ltQq1HXR6upTn3xKmA9IkeFYcOs2U3SZ1Cb1db2T+iHv/ulfv7ddPWCzZOCJ61xpKz5RPocpn+BLOQacHVKtmcGpCW8Ni8xS/DSgNpYNPKslj8N24ej1L5KSMkuGVqCvA2DCx//w4gxXOrh/QGChD5Z0yAVspy50WZu5kBBjAQ7q6t+UyGCoiWo0167F3vo1RmDphypB8aDBlzo99Kgd5pm+d5ThIcLk3S0DaG06Rfo15K8SqfqEO1K7c6uZj4U84Xs5C9u2HqEnjE30p3xkIyxKOLwRvAR30tuQSey+AlJ+UWeONqzqk83Z9L4Rv393m0/kLLAif6i2EpAe4o1rzac5ceWuYyIjaJ1NIKn8ONITTXyGJA5A8DzsXRB1y/HRxRlRiRBg58NB/Z7QQK4zCBP21/ZdRnrBGeY/mh5frcFywWdPb0p+BbpeQZ1jykqTnbYF7FFoCXzTpHhllzMX5cyuYGa7N+Oy0wxXRG53+mmpmj8dkep5typizCSmIWeK33v+ptP3eKj3KE3eKVpfRPHv25wjXNIdhFrZl+aiY01e7YyWX7YYpFWgBZaSZ1GIhLh/MiDZPKdRdrU7p6avqLvCSzWMnTX7jyZwH/jzixQxp0M= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA4PR08MB6320.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(39850400004)(376002)(396003)(136003)(346002)(6486002)(8676002)(69590400011)(478600001)(6666004)(52116002)(6916009)(316002)(8936002)(66476007)(66556008)(66946007)(5660300002)(86362001)(16526019)(26005)(6512007)(2906002)(186003)(6506007)(956004)(2616005)(36756003)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: jwiHPZ0dS68FRYEhPIzQEIm9RbtSNEBXNaPXbZSHzjytdbM8Y+c5x95l2q0hBHg0zyMdMsvmEh+/SKUtZFDxFFq4BIDnZHLB33pxHM5jXggcesqHMgAjO6OF0pAt4mK3qJBUv2GhGn8FN6tJVedAieoS266yuVwTTilskQsGwoIJxU54JrnKpdYnGkXHR4Yiy+K3yeG+l5ZKuAP7zp5uEaSOd+tqdrSO682GzLbRkG8LhWy6V6fQUEGxT5y5sJtXmmVgldmW31Hbvl0tQIR+ijlALXkgVlK7Fn8hChb9XRLbL713iBErFqpTytPUfS29bxjxUMUhI2Lqo5aYiYMeuAujDIHrnkTphLUt7fpGc08pbJ9yqjRuM42gbX98aA0mvTpTN/fSeH6bhfoStfzyO51UEHWr7P3QbRuNp5JD1a8ImmfHGfGR3B2+SVVTJKJMy5RxP/TL+qetubHZP1pon0Ele7oQumHxeEpABaUj6E8RrfiXj/RysM98tNQFHw9SkutKw7ijGZQFB65BdJ5ESIrt58Uf2SHkPefNzT+UI4KozhIsVP1LH0WieSsTwRMKpu4PNKghyV7Ra9FKIhprtwqreMZe762GkRghbDKT+x3Uctsit8+XT4hX6u3JoSKYzZaWMHEDL+cun2thuXUm/l0wO+kKxhk66/gzShRZY2qEgJi1LEm6TrgwzG1bpdp9ibpEwEK5xg2mTbNWohs1umh5YsoLTc1u5qtKg758jbBe4TAKItYdobEYSM5q8ZLcrhIboLLENiSFFde+hKhgjQ3a1sEdmWrUynTWG3POrvEE3oZJqOH1qeWMbOfWKzs92pVEhmBMgz2M+rVwxZ4gsh8yHycHFb6RXv+Dk4ILG/Ryy0PmpGIW3v9J7IhSlYNEVT0J+nEOcek81ToxjBeny9vQ1LIqfnE3h06Esbyc80c+APEjq8fqLs3fwEkmm1ILUwoZ7Te7Eux1HfZPdKc4Vdndg3Gbm2xqjg7JdEXFKo8P1ROVuOJ6a4/kgdz4lTV1 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6238 Original-Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none; sourceware.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT017.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: bad3b8d5-f83a-4d1f-b228-08d8bbcd8c4a X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IP9JjzqVEVdzQM1dUs/mpYtufnggRGEFVo4j2xwbPovCkkeBqKlTLkzqVbzST1cRPcomur+HhJue//7mzFOIsuY6rwFx4WY+0+2N9xBcVCDAczueelk0x/atmlLH2bdFcd4B2YI9q5dCmENhZD0P/Pa1sZ4StM8zkxeSUtL+AVE7URurcS6tMtLJPZ06VNGZubnfUaq64i0B6HRX+zND0Bwp3R5+33IC3wFm2XZnZUlCoSH9rgef3dpeK9siDxm578C3QR/3i1C9g1hmFG4x02s9Kjv4PaXmPCm6eiDwYkxz8k6mdYaZBA47DRmQFB/nbsoeSnR+TSB2mAiXaC+pEiZfN926u/VhckrH19oJumgKF+RISzq/5pRjXu6IxQgwHDilyj1NojrqCkPpxG0CwmAVrMAmahckgzb4xIMo1xcKMDIImXj0nSsMb32eZunw9+gfyYOyRWS9TSGXV79dCboNPpZx4ovddql7cFbbYKRPTT68a1h4TXjGleoL+lBeOXCXxFMWSeHk/wd9D4xDnaQ2pm0K6TNsFBiCzWVnXNmxkTAWyustRPriDci+jDAaovoOVX3hGrtYQT6KDTfDQw== 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)(346002)(136003)(39860400002)(396003)(376002)(46966006)(8676002)(47076005)(82310400003)(36756003)(8936002)(16526019)(34010700045)(2616005)(336012)(186003)(478600001)(44832011)(26005)(82740400003)(6506007)(5660300002)(6512007)(6916009)(6486002)(956004)(316002)(356005)(86362001)(70206006)(2906002)(6666004)(69590400011)(81166007)(70586007); DIR:OUT; SFP:1501; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2021 16:24:44.8430 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8ab957ee-cd52-4a1e-0a8b-08d8bbcd9103 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: DB5EUR03FT017.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR2PR08MB4748 X-Spam-Status: No, score=-14.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_SHORT, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Szabolcs Nagy via Libc-alpha From: Szabolcs Nagy Reply-To: Szabolcs Nagy Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" This is necessary to avoid RELATIVE relocations in code that has to run before static PIE self relocation. We cannot make all symbols hidden: On i386, all calls to IFUNC functions must go through PLT and calls to hidden functions CANNOT go through PLT in PIE since EBX used in PIE PLT may not be set up for local calls to hidden IFUNC functions. Even if we can't make all libc symbols hidden for static PIE on i386, we must make all symbols used before and by _dl_relocate_static_pie hidden. This is needed for fixing bug 27072. Co-authored-by: H.J. Lu --- csu/libc-start.c | 4 ++++ elf/dl-reloc-static-pie.c | 2 ++ elf/dl-support.c | 6 ++++++ elf/dl-tunables.c | 4 ++++ elf/enbl-secure.c | 4 ++++ misc/sbrk.c | 4 ++++ sysdeps/unix/sysv/linux/aarch64/libc-start.c | 5 +++++ sysdeps/x86/libc-start.c | 5 +++++ 8 files changed, 34 insertions(+) diff --git a/csu/libc-start.c b/csu/libc-start.c index db859c3bed..1e90dcb0a7 100644 --- a/csu/libc-start.c +++ b/csu/libc-start.c @@ -15,6 +15,10 @@ License along with the GNU C Library; if not, see . */ +/* Mark symbols hidden in static PIE for early self relocation to work. */ +#if BUILD_PIE_DEFAULT +# pragma GCC visibility push(hidden) +#endif #include #include #include diff --git a/elf/dl-reloc-static-pie.c b/elf/dl-reloc-static-pie.c index a8d964061e..d5bd2f31e9 100644 --- a/elf/dl-reloc-static-pie.c +++ b/elf/dl-reloc-static-pie.c @@ -17,6 +17,8 @@ . */ #if ENABLE_STATIC_PIE +/* Mark symbols hidden in static PIE for early self relocation to work. */ +# pragma GCC visibility push(hidden) #include #include #include "dynamic-link.h" diff --git a/elf/dl-support.c b/elf/dl-support.c index 9d468d5a4b..384080dd80 100644 --- a/elf/dl-support.c +++ b/elf/dl-support.c @@ -19,6 +19,12 @@ /* This file defines some things that for the dynamic linker are defined in rtld.c and dl-sysdep.c in ways appropriate to bootstrap dynamic linking. */ +#include +/* Mark symbols hidden in static PIE for early self relocation to work. + Note: string.h may have ifuncs which cannot be hidden on i686. */ +#if BUILD_PIE_DEFAULT +# pragma GCC visibility push(hidden) +#endif #include #include #include diff --git a/elf/dl-tunables.c b/elf/dl-tunables.c index e44476f204..b1a50b8469 100644 --- a/elf/dl-tunables.c +++ b/elf/dl-tunables.c @@ -18,6 +18,10 @@ License along with the GNU C Library; if not, see . */ +/* Mark symbols hidden in static PIE for early self relocation to work. */ +#if BUILD_PIE_DEFAULT +# pragma GCC visibility push(hidden) +#endif #include #include #include diff --git a/elf/enbl-secure.c b/elf/enbl-secure.c index bc8c5e96d2..ffd7938605 100644 --- a/elf/enbl-secure.c +++ b/elf/enbl-secure.c @@ -19,6 +19,10 @@ /* This file is used in the static libc. For the shared library, dl-sysdep.c defines and initializes __libc_enable_secure. */ +/* Mark symbols hidden in static PIE for early self relocation to work. */ +#if BUILD_PIE_DEFAULT +# pragma GCC visibility push(hidden) +#endif #include #include diff --git a/misc/sbrk.c b/misc/sbrk.c index 99b3fb517e..95800b32aa 100644 --- a/misc/sbrk.c +++ b/misc/sbrk.c @@ -15,6 +15,10 @@ License along with the GNU C Library; if not, see . */ +/* Mark symbols hidden in static PIE for early self relocation to work. */ +#if BUILD_PIE_DEFAULT +# pragma GCC visibility push(hidden) +#endif #include #include #include diff --git a/sysdeps/unix/sysv/linux/aarch64/libc-start.c b/sysdeps/unix/sysv/linux/aarch64/libc-start.c index f816f04ee1..e1604a6ed0 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libc-start.c +++ b/sysdeps/unix/sysv/linux/aarch64/libc-start.c @@ -17,6 +17,11 @@ . */ #ifndef SHARED + +/* Mark symbols hidden in static PIE for early self relocation to work. */ +# if BUILD_PIE_DEFAULT +# pragma GCC visibility push(hidden) +# endif # include # include diff --git a/sysdeps/x86/libc-start.c b/sysdeps/x86/libc-start.c index 4bbd7d555b..d30aec2aa1 100644 --- a/sysdeps/x86/libc-start.c +++ b/sysdeps/x86/libc-start.c @@ -16,6 +16,11 @@ . */ #ifndef SHARED + +/* Mark symbols hidden in static PIE for early self relocation to work. */ +# if BUILD_PIE_DEFAULT +# pragma GCC visibility push(hidden) +# endif /* Define I386_USE_SYSENTER to support syscall during startup in static PIE. */ # include