From patchwork Tue Oct 24 14:24:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Szabolcs Nagy X-Patchwork-Id: 829918 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-86306-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="PKsi5vYD"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3yLwXM3gT9z9sBd for ; Wed, 25 Oct 2017 01:25:07 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:date:from:mime-version:to:cc :subject:references:in-reply-to:content-type; q=dns; s=default; b= lc4Z1x1E1YYiMMdLhCDRGKW8kCmbMLkaJPzxauV/4kXucJGH3Oow1IXQiFJvbFXt UH5DIXd8CF1b1EkbLuyj9GM0F6bm4JJAGchTk6k+NJVnlyACAjNN0EGDBCNsXsy9 LZCujHrTiJvlU8gvn1g1UuYP1DxnYJn6O7CAmdxA8NE= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:date:from:mime-version:to:cc :subject:references:in-reply-to:content-type; s=default; bh=o56m UZRU4b2ryCCm1U1Riq7JLQU=; b=PKsi5vYDcILlsVI4CgqIbHhHZe4RxyqFuH9f jshwalcTxZH6cbkIZJPzEL5nqJimtNLiBfNVJqFh7MahiWjVjU4dg0EMX6p2VZzv 1x71SZJoxhcOFIk4Xp7Sh7n+5x74NCerRVtV1Bjovw/qkwLe/HiAwHh517AT4g76 0yFMH6g= Received: (qmail 116057 invoked by alias); 24 Oct 2017 14:25:00 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 116014 invoked by uid 89); 24 Oct 2017 14:24:58 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=Hx-spam-relays-external:sk:EUR02-A, HX-HELO:sk:EUR02-A, H*RU:sk:EUR02-A X-HELO: EUR02-AM5-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Szabolcs.Nagy@arm.com; Message-ID: <59EF4D34.4020506@arm.com> Date: Tue, 24 Oct 2017 15:24:52 +0100 From: Szabolcs Nagy User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: GNU C Library CC: nd@arm.com Subject: [PATCH 1/7] Mark lazy tlsdesc helper functions unused to avoid warnings References: <59EF4CEC.8020301@arm.com> In-Reply-To: <59EF4CEC.8020301@arm.com> X-ClientProxiedBy: LO2P265CA0070.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:60::34) To AM5PR0802MB2482.eurprd08.prod.outlook.com (2603:10a6:203:98::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3756fbc4-1b1c-4b5c-9e46-08d51aeafea3 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603199)(49563074); SRVR:AM5PR0802MB2482; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2482; 3:fAAHh4x6nDhrI4jgKX4vyPLDQbILdyDPizMN9n51MxJw2Dqt6FGrRpI0jj2NfofwYkcpjAcroyAfpTrQrOs+crsFDLFrXEWYlKt5gxypqX7V/q3IVYbS/286N5LvN9o+/pU9w4CJkddYtDvH8fgwizr/MMIktoAZ8z+7lj9U8ccTL1nxL6GylSEcsSXcwmupYcHV+Yc66pW5FP1kY1Av5tROJiqVjm5TIxYZVvqVebSHCGQAU4vRgK+bEcDJGn+w; 25:7rzx6iy13zYJZHz2u32di9qyMw5332rJ1YTW8+Jggx8rBDzadMDrhQaBLGK3p8gnVk7I7JP+FznDK6V7C07UuXzxf0g6aB1KROjF95S3YuyWDcvxmpAR7Svoow/3i4RXu4qwQDsEDrH25+nQFmA2lNqdqRSKzOFhXMNzlMq4oxiivhNP3jjGF/vXHiMW7lHJzUhIiUXHJ+mwBmTIKU1ivVl2J2+ADcijegDTiOuLgOI=; 31:/4traot4iz+xEQYURvVUcJs5wSZssSY0zxpKHZAw5EVr9hl6rU4TVBaRCvj+IVxS7BSUPG/DlKBUWSUfpGdXGFzyt47gmJnxy1Ulcbl2Uwrj5G7/hRFhIneZVFQBoR0r; 20:h8thuakp4+j4VxhlZsfPwchAzLll+1BjrzvDjW5n7MNjRVOsM1l/oxmg36/LjWzLpqpcVXQ1RpHFIUt7TN6ivv/Y2O1SrRuX7FKNlQYMQJoBsjuwnMGiRMoFw8IZZWJ7455gCu/4h7NPtSUtrIHMLGohX6Sa++mJZfcwGVTCxGE= X-MS-TrafficTypeDiagnostic: AM5PR0802MB2482: NoDisclaimer: True X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(100000703101)(100105400095)(3231020)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123562025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AM5PR0802MB2482; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AM5PR0802MB2482; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2482; 4:fyJWREYxHw9gHYgdZ5tEiaV8l2yozq2pJAfKwMNZ53jwKeRIstMEiSw/fYLjXDgbWTxD0G5SMdKzvIHkCuXH/JfIQqcYmgLTAjIQUSdJUzlpn0PfBx6VX9e6x3c1PV00xmI077dGcHsbm6eE9P+oWw== X-Forefront-PRVS: 047001DADA X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6049001)(6009001)(346002)(376002)(39860400002)(199003)(189002)(81166006)(6916009)(68736007)(6116002)(36756003)(6486002)(77096006)(65816999)(53936002)(87266999)(16586007)(316002)(16576012)(54356999)(76176999)(58126008)(101416001)(105586002)(50986999)(33656002)(2906002)(305945005)(59896002)(564344004)(83506002)(562524006)(270700001)(2476003)(568964002)(4326008)(106356001)(3846002)(65956001)(16526018)(4610100001)(5000100001)(72206003)(478600001)(5890100001)(7736002)(8936002)(2950100002)(66066001)(25786009)(65806001)(573454002)(86362001)(97736004)(84326002)(80316001)(81156014)(64126003)(8676002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0802MB2482; H:[10.2.206.69]; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2482; 23:aYEaZ8UjQyYAAg1XYpZ6Md4rJNwN9Ta75VQaeexdXhrU4TivGSGZriPg5LMkV29nAJttrtd+10pkwCP7V27bT1XSFV7jh+rEH6T9UAFhd0d02t+YUP4/ENZuqPfltyNXpCR24L6j+XS4WyeU4TndXMug8PAlbXGOy6n8Ot8KpAnaIY7GcAkEa3lQc1GN/XBcxQX+H5qko+hXIN8zCWB+9uiij1MiIlCAZM84durc0TdVvMaF0YMnm7JkIdj6XvDZFIHao0W2ai3iW5626OskmRN9i8tI8ZQyITkrGvoos0Q+Do6kJ1GwNxtAKkS7Xq6aAtKD7fVWijyQwuEdrc7eSRDdKqcA16CclXZBtW997a0lx49abopWVps4hgEZq4N2NBz2lSMOwe6jq7ciQM+yWPs9AvsTqWXv8cT00Kn43xptaBSXQAt6gtSRDZ97cZ8PCaVfof8JjY60w3ph9aNmwo5A5KfGYofdFJT7aSaC8Ktwjjf0w1Sa6dL1p6GOtaam5mPqk6UolWYkGJ8uMu+UTbg0GCtXgsyX6Py7hnyeY9RjXVTTSvJZk+x87pfLrk88dkQtQszDbqHoNtshgeFJ1FjzWCESUSfC0XDA4l9n9xSbV+hMrlGcx6tDHnqU+7YDLnv0agEsH4xYC0Tgsvlk6TFC0q06rDguLNGWeizXKBbt22A03bHOHxKrE011r5JGN6biOP1Mao7OXcALR+MHrlXnUoRERgNJ9y5iPYUWcAEB03T6n3qxUap+oIixMGcAh27AXalkEwEG6ele34Vbk5yqqXUAIMXDzKAUzpXqO9TR4m+cCSuFH3CMm+/IcM7R9R+aV9wJZt4EoIYpmQs2rc+y7bL8qiwpAwTZGWJbPbBJgGp2aCSacobcb9MCgopw6VOxNC+49bP933HiLBTo/NzCkGnHTHlVeyKWWQkEwMLZx2z6xha8qTkXnSGeZGqU5yNNedJcmkRuKzDbxxh5jm1YEawbxXiOJq01o7ygkShW1CmAN1Iy/GHDuiUvr84TvwY1vWPoOLxugC3vjFBqN+syXiPSt3JPHFTsEwc69rF4Xgfb9u/Hjl9DB436HiZkr5nsrWMRVAvyUyyMVOwrkmXJDE3BNKurnVs/JMuA4xGP0KIdmcQxRZBZBEfR+v/Xgw0hAkYweKBWVLTl1Uek88IGDJDSOxqP/Vh0aQa2LtjgicVv2Pak2ZtKC+HDFNEhKl5eDka94jrVvB7iItSD+q7kC7zWYum0yvba+7+9NVoq/BLtQPyl8BlPjrLiR5rQrhyvmg7YZlHBW63T3aQvVAGSl24oyS1U9ZgdUWSOuoJkC/SfFtBrqZagq+8VyOdFMNQtf1NhHIcaR+GFmpN5QNJfhcZDFezJKaOKrgCU4LaV2cQlDt8fEWbPDgfcUsc+ X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2482; 6:DaC+wLsZcUZ6fdJ/lnFqrUC3nJ3PZe4oVRIW9ErS6DRlHLqA5oxmoyorc3WgyBCN9fPylEvFMSREhk7MAE0YSAkIAEktL2NU1S3gYFvhi4VTg32na2llpJGgMUhFry1HFu9CpN/k9qrDUUp0ZdXYyFq1qDN/QXpmGh3MmREv3Dc9RBA04ejTF4+NrkxHDYPPVghUy88xZVSEDqtWzQMtqa7bAkzqQcBi6NLCIEcBFXg=; 5:kLQeJo5mHDtV4VhM++iIakZ7KFN6y/TKhvqekSgUqTv/ojhHAiaENlknLuWrYzRg0czeoEEIpkV7xEscONanUbFIz91yra+02/mgp7wYu7ek6otu6Srn1o2xZ8ZgpnnFptXVEEhuvz+6BS9fb0ec8w==; 24:LB8808LMtzxIMMTkTS4gg7Te1HeZjPX0D0zbCiZENTKETqAnfTWkzYYZIvDw+REEbUwi2gA/XFZlNXPzdqTg7eumEDeIPeiLdLCC4CvNvH0=; 7:IX75B79j7wD6rfhMWUtOYsnV91x4iazzL8DnRMegqmSzxICY2BvkSyhJ4jFPK1tXf0/iWZ+ftC2W4quQc7t6iCaT6wVqeXm3YCiHV07FYHErbNnSljkU4apCBM7YE/XA+sVnmvV0Ytk0vCGLqzvE9JOLjbM4LEAw3N+NXDYPT5pKNabtXHgypVxpkeI9A6MU5JSzkidImddav4wS+1JChEiZA4C2hsQr0r19cdou9Z0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2017 14:24:53.8660 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3756fbc4-1b1c-4b5c-9e46-08d51aeafea3 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2482 From 74f8c71fee285657860926c8e45227041265d15d Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Mon, 23 Oct 2017 12:15:40 +0100 Subject: [PATCH 1/7] Mark lazy tlsdesc helper functions unused to avoid warnings These static functions are not needed if a target does not do lazy tlsdesc initialization. 2017-10-23 Szabolcs Nagy * elf/tlsdeschtab.h (_dl_tls_resolve_early_return_p): Mark unused. (_dl_tlsdesc_wake_up_held_fixups): Likewise. --- elf/tlsdeschtab.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/elf/tlsdeschtab.h b/elf/tlsdeschtab.h index ad3001dac5..879631897c 100644 --- a/elf/tlsdeschtab.h +++ b/elf/tlsdeschtab.h @@ -137,6 +137,7 @@ _dl_make_tlsdesc_dynamic (struct link_map *map, size_t ti_offset) avoid introducing such dependencies. */ static int +__attribute__ ((unused)) _dl_tlsdesc_resolve_early_return_p (struct tlsdesc volatile *td, void *caller) { if (caller != atomic_load_relaxed (&td->entry)) @@ -155,6 +156,7 @@ _dl_tlsdesc_resolve_early_return_p (struct tlsdesc volatile *td, void *caller) } static void +__attribute__ ((unused)) _dl_tlsdesc_wake_up_held_fixups (void) { __rtld_lock_unlock_recursive (GL(dl_load_lock)); -- 2.11.0 From patchwork Tue Oct 24 14:26:17 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Szabolcs Nagy X-Patchwork-Id: 829919 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-86307-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="coaAjOKY"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3yLwZ12JpYz9sBd for ; Wed, 25 Oct 2017 01:26:33 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:date:from:mime-version:to:cc :subject:references:in-reply-to:content-type; q=dns; s=default; b= gbQLUhxqVCInXj0wk7MlxT+HIFMg+5PuUH67GO1xrokmlEta7T4hkbrCboxfQ0E8 tbT3oRE0FfdiWYHPwS095kqj1dd9WN8v6sy6dW4fj9WDrmrS9Onv7S5F/CqRSKyr yhCfIVHYt5mwvB8LVDdZr08/dCSRO7LfHcyAJ766OsU= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:date:from:mime-version:to:cc :subject:references:in-reply-to:content-type; s=default; bh=ks/O m6uPIk3OPTqaWoR+IkqGcXM=; b=coaAjOKYmh2SJh7V+rFBuHzS0QvuojYPu07+ 1gjiH+7FvF1DT19ncd17GETdpB08KsTLKRB5rz5wzQBYLPwdQo/s+anL06K4vhs2 YY0fHgdErzczxX1hT1LqffadMgu0cxCjN0bVn7K9uSBL+bIPmI0LbrlcidcuDa4i cCjlS50= Received: (qmail 122801 invoked by alias); 24 Oct 2017 14:26:27 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 122784 invoked by uid 89); 24 Oct 2017 14:26:25 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=uncommon X-HELO: EUR01-HE1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Szabolcs.Nagy@arm.com; Message-ID: <59EF4D89.2030509@arm.com> Date: Tue, 24 Oct 2017 15:26:17 +0100 From: Szabolcs Nagy User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: GNU C Library CC: nd@arm.com Subject: [PATCH 2/7] aarch64: Disable lazy symbol binding of TLSDESC References: <59EF4CEC.8020301@arm.com> In-Reply-To: <59EF4CEC.8020301@arm.com> X-ClientProxiedBy: AM5PR0202CA0016.eurprd02.prod.outlook.com (2603:10a6:203:69::26) To DB6PR0802MB2486.eurprd08.prod.outlook.com (2603:10a6:4:a0::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d09af0cb-9b8f-4812-e03c-08d51aeb3252 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603199)(49563074); SRVR:DB6PR0802MB2486; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2486; 3:DVSFFHNFiT5QbCHerQKvQEjT90SKRh//zkSJp2INghuTQHHcT87YYZqxIIt/5CL6OkQBnFrooh6OTDfLj9dX/5BWEHKh2M3MwDRVdYGgKs/XLh6sZjSWI6D8Ecc72KrBlnLvUvVtovCw2dSgWH08e+zAZiOuy0h3y8UF83Iy2CC2JNMVM+5JJfSSpOqlsgyMxo7DoagMeCefoJ0iPxqgrwpw5XoJ8U0o8rnVm5F3u52w4NrxNHXMOzrFafgvxlDc; 25:P/Y0opb42lm/NXfb9+kkNnrPHkTIbomDY6b3gh5Rme8ZIL+08JpRzg/e7+HZ/CKqMekGbkNuqa9ld6XHYOTXre+6tOuErPzNwKXtLrJjvYR4we5ZZFWkXhHckmu1lPFeEtyORPEFOjEBLOO77ZFUQjZohuKdr2Xs0kdftn/W8fqjeQSSiPLb/E7YGgmijuZbShTBrsoNcIacW000kFVbWLLv0qNRFlY3BQtJRxxFhV8=; 31:PbboGYT/EJXIPtycczRTemreCGDlvzOO6/Qia9HEZTULMsYe6JpttRntNiMAao85WYTfk1lBpwBRoIsGPcEDNWtKuVLJfFWGfKo2ehY8Xt2VRtDOhWikeszMMWxCKkns; 20:hDShcmi1YEvC2FTnIairw1WYlgSuJwrXaXns5vgxmuHvrxqzZJiRq3mrnyQbCzaZvJsEYnglqUCcb1ONUkDUb97dAJaJeuH93s+IR1anXLG+pyC8e105GM/14W5hZVU3G0IXC/VA3pZizExnZM0RY/tUMrU8nQYgsS4K9fj0/xY= X-MS-TrafficTypeDiagnostic: DB6PR0802MB2486: NoDisclaimer: True X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(3231020)(3002001)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123564025)(20161123562025)(20161123555025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB6PR0802MB2486; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB6PR0802MB2486; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2486; 4:9ToDH4RqjL3vyy7pGBDNBRHhN150uQECYlufOGPxLLjwZ0fX+WXZo7dn6LkAX0VPhM02Uor8sfAb5FUGbeqbZZ+Espk8x492Zz0aHymB5PtWusueWF4QcxfvdT+rSzrWpNDqoL2lawTBMV1dNEKNAA== X-Forefront-PRVS: 047001DADA X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6049001)(346002)(39860400002)(376002)(189002)(199003)(16586007)(6116002)(65956001)(6486002)(478600001)(270700001)(72206003)(64126003)(77096006)(66066001)(5890100001)(6666003)(84326002)(68736007)(562524006)(65806001)(6916009)(2950100002)(573454002)(2476003)(97736004)(568964002)(36756003)(3846002)(2906002)(59896002)(101416001)(105586002)(7736002)(33656002)(564344004)(106356001)(16526018)(8676002)(4610100001)(81156014)(83506002)(8936002)(305945005)(5000100001)(50986999)(4326008)(25786009)(80316001)(53936002)(86362001)(58126008)(81166006)(16576012)(87266999)(65816999)(76176999)(54356999)(316002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0802MB2486; H:[10.2.206.69]; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2486; 23:AruDXrHn8RWxxtzB46csqdmAEuqqW/5gNcA9utKtXIHOetWFry7FbxJtjz7evYD8mTGqPL7aJrGztqjHu69CXUfTMhCTy1X82UKLiOM81yQYk16QVJcRJN2syKy0ieXwaoagPVtkX8eMbkY//4XRqfXSbW7H3toXwMx4XK+Hvi99alyfoOXfNey2SaatsS3bMj5qPeHVsaqzx6IYPBZmAoXqf8BDkO7Low0Gmf+HKFLQoUTbeCk50by3avlGHY26oeb2bYbEqkgNN3LIoJA6NFA0aOpVrhC3Mg5zSkE9kE1BgnZ257HHk4BWvWSaEg2cD3vwI99P1oxCZBUSsJIM4SR6jB4E8gKi3HMkpwZNGy15KVMH0PISM64iZkJR1TAsVuO6oRm2XSRYMZ0NxY2NJ05wfnt8VfKWYk66j8smuZ6s8o51eGCiB7pzpTGenBiNwRSenKs2rqvgOP6JQHHgW2M1hBdAZYSB+VOUSt96ZKU38OyK8rZZ9lKGClaLwqwIg0OMaqgRcGuOovwT9akoPKgAaf4FDjhJIzN/QaNQhmgNIfgbEGdrlzZcgt8mPqlfuTuyOdmYZOGO3qmIOP5GwDdTWjRFj+DqNI+yZAoY+UUZJYNe0ULY0fJ8XrR/aEE/8eqih//sylDC6Y6oTR6otKGUXVEwApkLmcBriotas5iU6Iw0AJOE0/SEiH5bP1IbbcihshpULLouDfsN6gU7xc6mrGxW+aP6dv794bNCoVUv4ChWiaRB9OBmnxgifWgUA2mlgE6NI4jTryRwjkoiZ/n5N+rt4eNsYlXIWG4e8uz8FlHrHBl6UGgJNWzNr+OdVJljkefOKsenlf/pV1MXM5DByRV8Z8I7BqIGfj3NDIVhDV8hUboTGbXPiI2Ez1UMDJ7tKfTyG61pJ+saj7foFgo178nIX5Mj8pUM2+r6gjwLFfH0hLv0zNXN+mohBGZgqg0fDG9YlPbMFG5yhbgCln0AZ0A7p9bjsCpty8xLs8iQCMeygsBKmAcneq2/+2o+UC8uQCcGGgML2uGMYsHNvpFuw7zlbKX8XI/XRWB1RwZW7uvMdd03ctYUH9qJZkdAJ2OO0O51Bu59mpqQgVRv7MXZmohPhJZS3RQcvYFBS1tiZH129AWCDgVXY7GOYF7bCntiVF8P+LFwWLeaBzasZM+LRlZlQLDyl02Vy06ph3TDEdM+RZAppynjMf2e8JOdg58zTSE0/CidD9ZTAMzDC/DlgkMvjV2xsowziY76pXggkfS4H7oIkLq7ysaDVzf4nlJzlAmB6jeyfS9XuVKx1LFgc5apguVjELVzsWY97pvnZY74X2h87tSz9bmJE42E2ka9ge1ubiSu/PnK+S+EqmYFABjhvw9sp/CtrgLOjlUzAmfIJPuib+K26AwTvlwKsOodpknX8xgwve4KgkwrIQ== X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2486; 6:DJFPL1r06SxfofupDwY8TLWPLA5P0Y75U92We5y0xfGepaZQT70ib1yKJzhTjYB7Q9huUz9j6NmJV5Mk0LpeinKlZ3z9GBHzjIVgg4NaVO4Q+b3D3N9CdAqhnp4DhFXo3qYNMK270nB4HVR8OPcQxHbnppTrg9TENlgX5vbkyfdXCPMexa4t97DeT920k7G7tf4y9TiRVYbeFksvO+M3VeBOkQD5BfTz1+ykEYEW0wM=; 5:8iI3MRRVwm4WHiN88lPftMiiQdwJq6BuC/yXFbeTOIoe3Kkqz1hn7f0s/wQRze0ZR5KA0TEPjavV8p8jN/mor0AscetTv1ndXrvCAYr+65Ii38A1hp/8j01urrKlqbJGX8NtwpT9nEykKX5CT/C3Xg==; 24:CiST9Nr2MH6lh4jqm8CrU1CviGptGXe3gb+P9o5s/7osLZBt/BZd9fcpRUjLgv99QNGh9L2eZp+ekLohhhPsGt+oy5y/VnLoK5YC/WroSPI=; 7:wiwFiuCdW0Wby0l0iITaVdR7foHoIx0GZTUM180qCbzLhQv8dmzA+d3EoiF2BnkbEIfjdp7OEGwjg/r76cX2E1kYEy3AKSogOyb8FkbUhhZPZJ5GTetlawOcOpgKJTZFra+7uof3dWIyrnKxfapmV1YtsYEjf7p1zR2nZ85wRlB5hL65wyoWpizUQyjgg2WA4/wORCcTHieC4bdaC837rZhqu6ya5iTzKlPu2QOHikM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2017 14:26:20.1722 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d09af0cb-9b8f-4812-e03c-08d51aeb3252 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2486 From dde90201e8c20fb612d931dca9fb4308cdb73716 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Wed, 27 Sep 2017 16:55:14 +0100 Subject: [PATCH 2/7] aarch64: Disable lazy symbol binding of TLSDESC Always do TLS descriptor initialization at load time during relocation processing to avoid barriers at every TLS access. In non-dlopened shared libraries the overhead of tls access vs static global access is > 3x bigger when lazy initialization is used (_dl_tlsdesc_return_lazy) compared to bind-now (_dl_tlsdesc_return) so the barriers dominate tls access performance. TLSDESC relocs are in DT_JMPREL which are processed at load time using elf_machine_lazy_rel which is only supposed to do lightweight initialization using the DT_TLSDESC_PLT trampoline (the trampoline code jumps to the entry point in DT_TLSDESC_GOT which does the lazy tlsdesc initialization at runtime). This patch changes elf_machine_lazy_rel in aarch64 to do the symbol binding and initialization as if DF_BIND_NOW was set, so the non-lazy code path of elf/do-rel.h was replicated. The static linker could be changed to emit TLSDESC relocs in DT_REL*, which are processed non-lazily, but the goal of this patch is to always guarantee bind-now semantics, even if the binary was produced with an old linker, so the barriers can be dropped in tls descriptor functions. After this change the synchronizing ldar instructions can be dropped as well as the lazy initialization machinery including the DT_TLSDESC_GOT setup. I believe this should be done on all targets, including ones where no barrier is needed for lazy initialization. There is very little gain in optimizing for large number of symbolic tlsdesc relocations which is an extremely uncommon case. And currently the tlsdesc entries are only readonly protected with -z now and some hardennings against writable JUMPSLOT relocs don't work for TLSDESC so they are a security hazard. (But to fix that the static linker has to be changed.) 2017-09-29 Szabolcs Nagy * sysdeps/aarch64/dl-machine.h (elf_machine_lazy_rel): Do symbol binding and initialization non-lazily for R_AARCH64_TLSDESC. --- sysdeps/aarch64/dl-machine.h | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h index e7656129f5..837e28134b 100644 --- a/sysdeps/aarch64/dl-machine.h +++ b/sysdeps/aarch64/dl-machine.h @@ -399,12 +399,21 @@ elf_machine_lazy_rel (struct link_map *map, } else if (__builtin_expect (r_type == AARCH64_R(TLSDESC), 1)) { - struct tlsdesc volatile *td = - (struct tlsdesc volatile *)reloc_addr; + const Elf_Symndx symndx = ELFW (R_SYM) (reloc->r_info); + const ElfW (Sym) *symtab = (const void *)D_PTR (map, l_info[DT_SYMTAB]); + const ElfW (Sym) *sym = &symtab[symndx]; + const struct r_found_version *version = NULL; - td->arg = (void*)reloc; - td->entry = (void*)(D_PTR (map, l_info[ADDRIDX (DT_TLSDESC_PLT)]) - + map->l_addr); + if (map->l_info[VERSYMIDX (DT_VERSYM)] != NULL) + { + const ElfW (Half) *vernum = + (const void *)D_PTR (map, l_info[VERSYMIDX (DT_VERSYM)]); + version = &map->l_versions[vernum[symndx] & 0x7fff]; + } + + /* Always initialize TLS descriptors completely, because lazy + initialization requires synchronization at every TLS access. */ + elf_machine_rela (map, reloc, sym, version, reloc_addr, skip_ifunc); } else if (__glibc_unlikely (r_type == AARCH64_R(IRELATIVE))) { -- 2.11.0 From patchwork Tue Oct 24 14:27:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Szabolcs Nagy X-Patchwork-Id: 829920 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-86308-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="aPpCOZ/p"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3yLwb04YQqz9sBd for ; Wed, 25 Oct 2017 01:27:24 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:date:from:mime-version:to:cc :subject:references:in-reply-to:content-type; q=dns; s=default; b= i/dRk2k/nh9ziFGs6d9VmufqgxPH70lC5aGllOwy2D2qWCFGAoCNO8BzMzu0uSI8 sQtxyh6UmjezBuZmNaWSrfnB+HRFjFcZrMoL3fkAvWBIxhwbeYekPGeyBAf5fASE QT5saZQyKHK/60wWpw7TZEOtHh1tVlF5BkCnrsyQdY0= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:date:from:mime-version:to:cc :subject:references:in-reply-to:content-type; s=default; bh=KokO rHBBiDKymjArTHlKlcQIsnY=; b=aPpCOZ/pdvzDNos0DK3n2kx8SvQvnB1I6ylu Nsar2yG5yrQoq3/inL26D8/jv0nrlqvm3XFJHCauoseXmT2INWNMO6SSutaiEQSI f1RyFYN8yV5y9e1dkjD0OL1aOd5FGKh/tA2iYGzcDuuSGEdFDOsG/dIK8IdOqwYw iG7bJ00= Received: (qmail 124209 invoked by alias); 24 Oct 2017 14:27:17 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 124197 invoked by uid 89); 24 Oct 2017 14:27:16 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=wins, HX-ClientProxiedBy:sk:DB6PR07, 4617, grabbed X-HELO: EUR01-VE1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Szabolcs.Nagy@arm.com; Message-ID: <59EF4DB8.7040505@arm.com> Date: Tue, 24 Oct 2017 15:27:04 +0100 From: Szabolcs Nagy User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: GNU C Library CC: nd@arm.com Subject: [PATCH 3/7] aarch64: Remove barriers from TLS descriptor functions References: <59EF4CEC.8020301@arm.com> In-Reply-To: <59EF4CEC.8020301@arm.com> X-ClientProxiedBy: DB6PR07CA0153.eurprd07.prod.outlook.com (2603:10a6:6:16::46) To DB6PR0802MB2488.eurprd08.prod.outlook.com (2603:10a6:4:a0::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 47324be6-1b86-4be2-f9a6-08d51aeb4d4a X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603199)(49563074); SRVR:DB6PR0802MB2488; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2488; 3:LiQKFJvgHyD3yovGESH6I8H9SKTf+8YnrC5arasbRhfxkJI4lvc0JrvwwyGm61F6k3+fn2ZwAAFDXD4LesFlkFzvLx3yWPK2/G8+yjo4eWFLx+WtTVaUIgG3NQfMxZkaNSndTzlVcakI3gy3r/qbdvhSiitet8u0B7/DP04mfPdYwnGwvzBfGQKQzoTvtjYeBpzDLuhSMEG8hBGTT3QXbrTRZb4ydcWD5gMaAXzJZp0W5s34eytlNfpTsG79bb0I; 25:bt/Us2KT2psqDI7fQkObGD8E20cwQXnfwgedMy1hwjkac+VNdjIgkDMEVxOSn/tAterKUxDx5m5ov2NwUHKNyihuNfvZO8Iy91piNnBq1IwhDzBECFoeC1dxV5dHTo/mF9UF6xkXktIxIGFFBed7itHRkmKHFi9wZCmiS/HCJpTU7WCYHaWU6zMXaKJ3wcj9xs8/Ic7NvdIPDmGR/Hj4N2ZRzsbcS3t1HnefMTyKItk=; 31:Az6jEhu9qZnaCxl9YGgGF5Z94Eswppp2HRwMXJJDW9vE1VCEeBiEwk8+FVtVsHrUBFr3YJE7O7+BHRA+R/1HXatSn/ncV/MQ/TElOT8z5KZFMZ+VFIiTm1sFF7oZeJlY; 20:6yvM3WZjADNqErKqZu27l5zLwrGgXSaUA37lMHvUTuPycCC7e79ntZEIgZf+Mabugb/dujCsoF/A1kqlrdJbvojkMEoODu8q9BAlkSRZV/d8FOLnsjFsztEv+AHmOey3F/iiJh2xuOfGUhPVDg+3OsZgMNE5ZDXTcINUUNr6Zu4= X-MS-TrafficTypeDiagnostic: DB6PR0802MB2488: NoDisclaimer: True X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231020)(100000703101)(100105400095)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123564025)(20161123555025)(20161123560025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB6PR0802MB2488; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB6PR0802MB2488; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2488; 4:7UyngVOAc+ARFNVw6kny2QJsnjvWzE+N552kXf0sjT5TYSJDSw6+jWMCaV53FUlkLVqz9w0Oik3q2Ev4zZLIrl7cHkQk69jKE07HwtxtIBmgZPDwUyXEKYP85xlV15fAH81eTNbi6HhvbzjbuQtUaQ== X-Forefront-PRVS: 047001DADA X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6049001)(6009001)(346002)(39860400002)(376002)(199003)(189002)(83506002)(573454002)(316002)(87266999)(68736007)(54356999)(65816999)(5000100001)(16576012)(8936002)(305945005)(7736002)(76176999)(58126008)(3846002)(5890100001)(106356001)(72206003)(77096006)(105586002)(81166006)(80316001)(8676002)(16586007)(6116002)(25786009)(81156014)(53936002)(4326008)(6486002)(270700001)(65956001)(66066001)(65806001)(64126003)(478600001)(564344004)(562524006)(568964002)(59896002)(2476003)(50986999)(36756003)(33656002)(6916009)(101416001)(2950100002)(97736004)(84326002)(2906002)(16526018)(86362001)(4610100001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0802MB2488; H:[10.2.206.69]; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2488; 23:IwmXxw7wj46ZbFMsnpzhoVbshr1IVD/Csk7RdoMxZsN3Fdun6Eoo/QG7btppR6j7BOLTojCTmh4zXvhIoQW0PBHXWNC8ROFX6M6T8F6KTueQQbu1C8AXCdoy7ESnlRcxtp0CMFCbDAohTHoMjbkljv0IvTtzmBcx2ZS30QkPlt9v12cACi2ZQgipYYE+GwPbLFnCbm5hRrKFrsz3ACCKMaER46J7rdlRQ4I0rbjLO+oW3v5hKtEMtrDn9NTpqjJICoB5F1IY6d7M+4Ps99AcFsnyu4++bFdLGmWVZvxQCIiaxaWNfPxB6RoKN6c7MQX6K7VQwZOoyRUcm4uqFydWnBABoKyy5nMpKGVmfKHnvRktpV8N67cyZNCxvkpQ9gNIg7raCWf09uJcxvEz9sCL/M9lMk/dEL9q7AmZlMSoFms0HNc8MCvdMbQDHRFvCyLJ9g55EvMdatxgMEZIlkAMbqOrtYNSXyyMCFFdhjQhkpxmC8meerPJSbj9fUeyhFpcHCPGQPXCj1bvIkJdQ2972VkZ/jnej88FknGogzCxzniprM+SMj6BFodiyih0i7PjV7gUW+szkCMZ15SXRwHXvbTHK6xZ8pGqRkgeGNwO3iABdXkQi/UT22cgdSVqLBR1yrcRID6f2iV9yGB23DHutCGWmCgPnlTHk/Zl2ab4ZEtfwV24A4on89sWmz+meyhxWKuoAbIeBX3qUJoH+LYULjanKGMYBde+bRVAz+bynkyL9mqYcFq6w0b7cy4mOo+RWz9a/I8HSsk1Qj5Xb84QS62Yws80hZVJg1X3r1CN8jdHHVrQmGLI/CimqvokOVEJBNuB2k1mm9E9peOsaCvIEqbMp9DU0F36amkTleWeVf56gBprnfkRyljFfbjG3yaHPqvRYNqVlF0Cq4smbk05Ux4qLffDOCIl0e/FbXOI6/nDgT34cVjC793kDNiJmhwp64AxdZpqbpuDENan6tMuhAYdB2mCR+e4DPZ2uohnKvLc14HRfpnMMjOhU3hvURVK9AIijZlxbJd9BZUI3THjq7xEEgxzeW48AQLV2X+E6ZZnUVPADYueXPvSkszKduQPjD5VPR7/TlbUAL/YjOWOg6u5zrBLNbNWMXGYaZwFmO6noK0XKePVjgPhUBwrruVwELr3PGfS445d7voZ4AMBzQ2QhhqjeHpdK8eq34vBUOzhZ6oIot45haC2m1uIMzxPOkqEw0zAIu8SCM3z/Kl+Amg28fpXyrR4/YjsqEXcisbOlw1nwbBGnMs+8kmy2zNX3Nn21hbQXI8WQq0CrOzp5/7ALxQ0e13E7FOjJr4qh9dqAncXjUniiRGrJwb5PvU6rWhyWXVbTeCQOvh6Gtb4yz4tBGlg8E9+81PiktSrDb8iSy1Mn/VMC0q7+g6U3UzZ X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2488; 6:aUYi4LhzSmyF17HfIiQbSq9Lvdu6nuGC1jNtIzDEdglcdm1qYg8DskrvK0L0qQDLQxtCXcaMMz8xNYpUidEcPVF543Q5xTkiZj+EKx5LmjnaxEZB//Hf0tNM22LnYaQkgrkbjhYKQwjWc+mhxkZumzjEsUSiNq7KLt669GymprtenMMPRYSjv04mHGllCuqrTVmcI0+c+PdbN9zGBJOvXkNaAty+wsAi+3x/P9b1sw4=; 5:VgBp5ff7rodORJ3tGtNqOycQ6JbQYrqOGiS2mpesjObWo7EwYOPpXEVi7FRwjOO2tpWdlMHFmp30fSm1TSSjwiL38r0HWFi7vz9L+GeZN9UEQqGt+CvsZdhH1E5fcuklOag5KkfhP80RUQ2NOwwq6A==; 24:tRbS868V5lD2UPqtJL489fvJuIH4MB2fGtvTPmp/4vbpy+H6zEyJiJrOHIVHd2BGtmyrVXhpsYBjA/dskM1l2Ja1lH2SzcAQO4wJCsEnVTU=; 7:xy8NONyLEE3vdysEbAuU2ji9taOCNPIt4knFSWGtNrQggLWtgdUAmioICsCNo6o0oQoI+NFcdT5vg3mhEbLpJiD0nNnt56xVdMsQ8ZTQRsARwydsgxHGXDxF+gErLvR3FHyZeB0uaXV6YSSs7RTR83I3ATH47SD4yrMbyQepopzt9fEyoEhJoepgECpe4mYLdpovoqkLxNfomHofnOJt2WdD6RBHoxk6tPfV1lq7bBU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2017 14:27:05.8564 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 47324be6-1b86-4be2-f9a6-08d51aeb4d4a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2488 From a79fbd78d1204d370652ad8314d2d641d91bd99b Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Wed, 27 Sep 2017 18:14:21 +0100 Subject: [PATCH 3/7] aarch64: Remove barriers from TLS descriptor functions Remove ldar synchronization and most lazy TLSDESC initialization related code. 2017-10-23 Szabolcs Nagy * sysdeps/aarch64/dl-machine.h (elf_machine_runtime_setup): Remove DT_TLSDESC_GOT initialization. * sysdeps/aarch64/dl-tlsdesc.S (_dl_tlsdesc_return_lazy): Remove. (_dl_tlsdesc_resolve_rela): Likewise. (_dl_tlsdesc_resolve_hold): Likewise. (_dl_tlsdesc_undefweak): Remove ldar. (_dl_tlsdesc_dynamic): Likewise. * sysdeps/aarch64/dl-tlsdesc.h (_dl_tlsdesc_return_lazy): Remove. (_dl_tlsdesc_resolve_rela): Likewise. (_dl_tlsdesc_resolve_hold): Likewise. * sysdeps/aarch64/tlsdesc.c (_dl_tlsdesc_resolve_rela_fixup): Remove. (_dl_tlsdesc_resolve_hold_fixup): Likewise. (_dl_tlsdesc_resolve_rela): Likewise. (_dl_tlsdesc_resolve_hold): Likewise. --- sysdeps/aarch64/dl-machine.h | 4 - sysdeps/aarch64/dl-tlsdesc.S | 203 ------------------------------------------- sysdeps/aarch64/dl-tlsdesc.h | 9 -- sysdeps/aarch64/tlsdesc.c | 127 +-------------------------- 4 files changed, 1 insertion(+), 342 deletions(-) diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h index 837e28134b..acbd3e3a0a 100644 --- a/sysdeps/aarch64/dl-machine.h +++ b/sysdeps/aarch64/dl-machine.h @@ -102,10 +102,6 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) } } - if (l->l_info[ADDRIDX (DT_TLSDESC_GOT)] && lazy) - *(ElfW(Addr)*)(D_PTR (l, l_info[ADDRIDX (DT_TLSDESC_GOT)]) + l->l_addr) - = (ElfW(Addr)) &_dl_tlsdesc_resolve_rela; - return lazy; } diff --git a/sysdeps/aarch64/dl-tlsdesc.S b/sysdeps/aarch64/dl-tlsdesc.S index 3b2da62f39..70550c7ce0 100644 --- a/sysdeps/aarch64/dl-tlsdesc.S +++ b/sysdeps/aarch64/dl-tlsdesc.S @@ -80,30 +80,6 @@ _dl_tlsdesc_return: cfi_endproc .size _dl_tlsdesc_return, .-_dl_tlsdesc_return - /* Same as _dl_tlsdesc_return but with synchronization for - lazy relocation. - Prototype: - _dl_tlsdesc_return_lazy (tlsdesc *) ; - */ - .hidden _dl_tlsdesc_return_lazy - .global _dl_tlsdesc_return_lazy - .type _dl_tlsdesc_return_lazy,%function - cfi_startproc - .align 2 -_dl_tlsdesc_return_lazy: - /* The ldar here happens after the load from [x0] at the call site - (that is generated by the compiler as part of the TLS access ABI), - so it reads the same value (this function is the final value of - td->entry) and thus it synchronizes with the release store to - td->entry in _dl_tlsdesc_resolve_rela_fixup ensuring that the load - from [x0,#PTR_SIZE] here happens after the initialization of td->arg. */ - DELOUSE (0) - ldar PTR_REG (zr), [x0] - ldr PTR_REG (0), [x0, #PTR_SIZE] - RET - cfi_endproc - .size _dl_tlsdesc_return_lazy, .-_dl_tlsdesc_return_lazy - /* Handler for undefined weak TLS symbols. Prototype: _dl_tlsdesc_undefweak (tlsdesc *); @@ -121,14 +97,7 @@ _dl_tlsdesc_return_lazy: _dl_tlsdesc_undefweak: str x1, [sp, #-16]! cfi_adjust_cfa_offset (16) - /* The ldar here happens after the load from [x0] at the call site - (that is generated by the compiler as part of the TLS access ABI), - so it reads the same value (this function is the final value of - td->entry) and thus it synchronizes with the release store to - td->entry in _dl_tlsdesc_resolve_rela_fixup ensuring that the load - from [x0,#8] here happens after the initialization of td->arg. */ DELOUSE (0) - ldar PTR_REG (zr), [x0] ldr PTR_REG (0), [x0, #PTR_SIZE] mrs x1, tpidr_el0 sub PTR_REG (0), PTR_REG (0), PTR_REG (1) @@ -192,13 +161,6 @@ _dl_tlsdesc_dynamic: cfi_rel_offset (x4, 32+24) mrs x4, tpidr_el0 - /* The ldar here happens after the load from [x0] at the call site - (that is generated by the compiler as part of the TLS access ABI), - so it reads the same value (this function is the final value of - td->entry) and thus it synchronizes with the release store to - td->entry in _dl_tlsdesc_resolve_rela_fixup ensuring that the load - from [x0,#PTR_SIZE] here happens after the initialization of td->arg. */ - ldar PTR_REG (zr), [x0] ldr PTR_REG (1), [x0,#TLSDESC_ARG] ldr PTR_REG (0), [x4,#TCBHEAD_DTV] ldr PTR_REG (3), [x1,#TLSDESC_GEN_COUNT] @@ -276,168 +238,3 @@ _dl_tlsdesc_dynamic: .size _dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic # undef NSAVEXREGPAIRS #endif - - /* This function is a wrapper for a lazy resolver for TLS_DESC - RELA relocations. - When the actual resolver returns, it will have adjusted the - TLS descriptor such that we can tail-call it for it to return - the TP offset of the symbol. */ - - .hidden _dl_tlsdesc_resolve_rela - .global _dl_tlsdesc_resolve_rela - .type _dl_tlsdesc_resolve_rela,%function - cfi_startproc - .align 2 -_dl_tlsdesc_resolve_rela: -#define NSAVEXREGPAIRS 9 - /* The tlsdesc PLT entry pushes x2 and x3 to the stack. */ - cfi_adjust_cfa_offset (16) - cfi_rel_offset (x2, 0) - cfi_rel_offset (x3, 8) - stp x29, x30, [sp, #-(32+16*NSAVEXREGPAIRS)]! - cfi_adjust_cfa_offset (32+16*NSAVEXREGPAIRS) - cfi_rel_offset (x29, 0) - cfi_rel_offset (x30, 8) - mov x29, sp - stp x1, x4, [sp, #32+16*0] - stp x5, x6, [sp, #32+16*1] - stp x7, x8, [sp, #32+16*2] - stp x9, x10, [sp, #32+16*3] - stp x11, x12, [sp, #32+16*4] - stp x13, x14, [sp, #32+16*5] - stp x15, x16, [sp, #32+16*6] - stp x17, x18, [sp, #32+16*7] - str x0, [sp, #32+16*8] - cfi_rel_offset (x1, 32) - cfi_rel_offset (x4, 32+8) - cfi_rel_offset (x5, 32+16) - cfi_rel_offset (x6, 32+16+8) - cfi_rel_offset (x7, 32+16*2) - cfi_rel_offset (x8, 32+16*2+8) - cfi_rel_offset (x9, 32+16*3) - cfi_rel_offset (x10, 32+16*3+8) - cfi_rel_offset (x11, 32+16*4) - cfi_rel_offset (x12, 32+16*4+8) - cfi_rel_offset (x13, 32+16*5) - cfi_rel_offset (x14, 32+16*5+8) - cfi_rel_offset (x15, 32+16*6) - cfi_rel_offset (x16, 32+16*6+8) - cfi_rel_offset (x17, 32+16*7) - cfi_rel_offset (x18, 32+16*7+8) - cfi_rel_offset (x0, 32+16*8) - - SAVE_Q_REGISTERS - - DELOUSE (3) - ldr PTR_REG (1), [x3, #PTR_SIZE] - bl _dl_tlsdesc_resolve_rela_fixup - - RESTORE_Q_REGISTERS - - ldr x0, [sp, #32+16*8] - DELOUSE (0) - ldr PTR_REG (1), [x0] - blr x1 - - ldp x1, x4, [sp, #32+16*0] - ldp x5, x6, [sp, #32+16*1] - ldp x7, x8, [sp, #32+16*2] - ldp x9, x10, [sp, #32+16*3] - ldp x11, x12, [sp, #32+16*4] - ldp x13, x14, [sp, #32+16*5] - ldp x15, x16, [sp, #32+16*6] - ldp x17, x18, [sp, #32+16*7] - ldp x29, x30, [sp], #(32+16*NSAVEXREGPAIRS) - cfi_adjust_cfa_offset (-32-16*NSAVEXREGPAIRS) - cfi_restore (x29) - cfi_restore (x30) - ldp x2, x3, [sp], #16 - cfi_adjust_cfa_offset (-16) - RET -#undef NSAVEXREGPAIRS - cfi_endproc - .size _dl_tlsdesc_resolve_rela, .-_dl_tlsdesc_resolve_rela - - /* This function is a placeholder for lazy resolving of TLS - relocations. Once some thread starts resolving a TLS - relocation, it sets up the TLS descriptor to use this - resolver, such that other threads that would attempt to - resolve it concurrently may skip the call to the original lazy - resolver and go straight to a condition wait. - - When the actual resolver returns, it will have adjusted the - TLS descriptor such that we can tail-call it for it to return - the TP offset of the symbol. */ - - .hidden _dl_tlsdesc_resolve_hold - .global _dl_tlsdesc_resolve_hold - .type _dl_tlsdesc_resolve_hold,%function - cfi_startproc - .align 2 -_dl_tlsdesc_resolve_hold: -#define NSAVEXREGPAIRS 10 -1: - stp x29, x30, [sp, #-(32+16*NSAVEXREGPAIRS)]! - cfi_adjust_cfa_offset (32+16*NSAVEXREGPAIRS) - cfi_rel_offset (x29, 0) - cfi_rel_offset (x30, 8) - mov x29, sp - stp x1, x2, [sp, #32+16*0] - stp x3, x4, [sp, #32+16*1] - stp x5, x6, [sp, #32+16*2] - stp x7, x8, [sp, #32+16*3] - stp x9, x10, [sp, #32+16*4] - stp x11, x12, [sp, #32+16*5] - stp x13, x14, [sp, #32+16*6] - stp x15, x16, [sp, #32+16*7] - stp x17, x18, [sp, #32+16*8] - str x0, [sp, #32+16*9] - cfi_rel_offset (x1, 32) - cfi_rel_offset (x2, 32+8) - cfi_rel_offset (x3, 32+16) - cfi_rel_offset (x4, 32+16+8) - cfi_rel_offset (x5, 32+16*2) - cfi_rel_offset (x6, 32+16*2+8) - cfi_rel_offset (x7, 32+16*3) - cfi_rel_offset (x8, 32+16*3+8) - cfi_rel_offset (x9, 32+16*4) - cfi_rel_offset (x10, 32+16*4+8) - cfi_rel_offset (x11, 32+16*5) - cfi_rel_offset (x12, 32+16*5+8) - cfi_rel_offset (x13, 32+16*6) - cfi_rel_offset (x14, 32+16*6+8) - cfi_rel_offset (x15, 32+16*7) - cfi_rel_offset (x16, 32+16*7+8) - cfi_rel_offset (x17, 32+16*8) - cfi_rel_offset (x18, 32+16*8+8) - cfi_rel_offset (x0, 32+16*9) - - SAVE_Q_REGISTERS - - adr x1, 1b - bl _dl_tlsdesc_resolve_hold_fixup - - RESTORE_Q_REGISTERS - - ldr x0, [sp, #32+16*9] - DELOUSE (0) - ldr PTR_REG (1), [x0] - blr x1 - - ldp x1, x2, [sp, #32+16*0] - ldp x3, x4, [sp, #32+16*1] - ldp x5, x6, [sp, #32+16*2] - ldp x7, x8, [sp, #32+16*3] - ldp x9, x10, [sp, #32+16*4] - ldp x11, x12, [sp, #32+16*5] - ldp x13, x14, [sp, #32+16*6] - ldp x15, x16, [sp, #32+16*7] - ldp x17, x18, [sp, #32+16*8] - ldp x29, x30, [sp], #(32+16*NSAVEXREGPAIRS) - cfi_adjust_cfa_offset (-32-16*NSAVEXREGPAIRS) - cfi_restore (x29) - cfi_restore (x30) - RET - cfi_endproc - .size _dl_tlsdesc_resolve_hold, .-_dl_tlsdesc_resolve_hold -#undef NSAVEXREGPAIRS diff --git a/sysdeps/aarch64/dl-tlsdesc.h b/sysdeps/aarch64/dl-tlsdesc.h index 66ec0dea7f..25b5b64e6e 100644 --- a/sysdeps/aarch64/dl-tlsdesc.h +++ b/sysdeps/aarch64/dl-tlsdesc.h @@ -46,17 +46,8 @@ extern ptrdiff_t attribute_hidden _dl_tlsdesc_return (struct tlsdesc *); extern ptrdiff_t attribute_hidden -_dl_tlsdesc_return_lazy (struct tlsdesc *); - -extern ptrdiff_t attribute_hidden _dl_tlsdesc_undefweak (struct tlsdesc *); -extern ptrdiff_t attribute_hidden -_dl_tlsdesc_resolve_rela (struct tlsdesc *); - -extern ptrdiff_t attribute_hidden -_dl_tlsdesc_resolve_hold (struct tlsdesc *); - # ifdef SHARED extern void *_dl_make_tlsdesc_dynamic (struct link_map *, size_t); diff --git a/sysdeps/aarch64/tlsdesc.c b/sysdeps/aarch64/tlsdesc.c index 4c8a5a81d1..bd1356fa8e 100644 --- a/sysdeps/aarch64/tlsdesc.c +++ b/sysdeps/aarch64/tlsdesc.c @@ -18,137 +18,12 @@ License along with the GNU C Library; if not, see . */ -#include #include -#include #include #include #include +#define _dl_tlsdesc_resolve_hold 0 #include -#include - -/* The following functions take an entry_check_offset argument. It's - computed by the caller as an offset between its entry point and the - call site, such that by adding the built-in return address that is - implicitly passed to the function with this offset, we can easily - obtain the caller's entry point to compare with the entry point - given in the TLS descriptor. If it's changed, we want to return - immediately. */ - -/* This function is used to lazily resolve TLS_DESC RELA relocations. - The argument location is used to hold a pointer to the relocation. */ - -void -attribute_hidden -_dl_tlsdesc_resolve_rela_fixup (struct tlsdesc *td, struct link_map *l) -{ - const ElfW(Rela) *reloc = atomic_load_relaxed (&td->arg); - - /* After GL(dl_load_lock) is grabbed only one caller can see td->entry in - initial state in _dl_tlsdesc_resolve_early_return_p, other concurrent - callers will return and retry calling td->entry. The updated td->entry - synchronizes with the single writer so all read accesses here can use - relaxed order. */ - if (_dl_tlsdesc_resolve_early_return_p - (td, (void*)(D_PTR (l, l_info[ADDRIDX (DT_TLSDESC_PLT)]) + l->l_addr))) - return; - - /* The code below was borrowed from _dl_fixup(), - except for checking for STB_LOCAL. */ - const ElfW(Sym) *const symtab - = (const void *) D_PTR (l, l_info[DT_SYMTAB]); - const char *strtab = (const void *) D_PTR (l, l_info[DT_STRTAB]); - const ElfW(Sym) *sym = &symtab[ELFW(R_SYM) (reloc->r_info)]; - lookup_t result; - - /* Look up the target symbol. If the normal lookup rules are not - used don't look in the global scope. */ - if (ELFW(ST_BIND) (sym->st_info) != STB_LOCAL - && __builtin_expect (ELFW(ST_VISIBILITY) (sym->st_other), 0) == 0) - { - const struct r_found_version *version = NULL; - - if (l->l_info[VERSYMIDX (DT_VERSYM)] != NULL) - { - const ElfW(Half) *vernum = - (const void *) D_PTR (l, l_info[VERSYMIDX (DT_VERSYM)]); - ElfW(Half) ndx = vernum[ELFW(R_SYM) (reloc->r_info)] & 0x7fff; - version = &l->l_versions[ndx]; - if (version->hash == 0) - version = NULL; - } - - result = _dl_lookup_symbol_x (strtab + sym->st_name, l, &sym, - l->l_scope, version, ELF_RTYPE_CLASS_PLT, - DL_LOOKUP_ADD_DEPENDENCY, NULL); - } - else - { - /* We already found the symbol. The module (and therefore its load - address) is also known. */ - result = l; - } - - if (!sym) - { - atomic_store_relaxed (&td->arg, (void *) reloc->r_addend); - /* This release store synchronizes with the ldar acquire load - instruction in _dl_tlsdesc_undefweak. */ - atomic_store_release (&td->entry, _dl_tlsdesc_undefweak); - } - else - { -# ifndef SHARED - CHECK_STATIC_TLS (l, result); -# else - if (!TRY_STATIC_TLS (l, result)) - { - void *p = _dl_make_tlsdesc_dynamic (result, sym->st_value - + reloc->r_addend); - atomic_store_relaxed (&td->arg, p); - /* This release store synchronizes with the ldar acquire load - instruction in _dl_tlsdesc_dynamic. */ - atomic_store_release (&td->entry, _dl_tlsdesc_dynamic); - } - else -# endif - { - void *p = (void*) (sym->st_value + result->l_tls_offset - + reloc->r_addend); - atomic_store_relaxed (&td->arg, p); - /* This release store synchronizes with the ldar acquire load - instruction in _dl_tlsdesc_return_lazy. */ - atomic_store_release (&td->entry, _dl_tlsdesc_return_lazy); - } - } - - _dl_tlsdesc_wake_up_held_fixups (); -} - -/* This function is used to avoid busy waiting for other threads to - complete the lazy relocation. Once another thread wins the race to - relocate a TLS descriptor, it sets the descriptor up such that this - function is called to wait until the resolver releases the - lock. */ - -void -attribute_hidden -_dl_tlsdesc_resolve_hold_fixup (struct tlsdesc *td, void *caller) -{ - /* Maybe we're lucky and can return early. */ - if (caller != atomic_load_relaxed (&td->entry)) - return; - - /* Locking here will stop execution until the running resolver runs - _dl_tlsdesc_wake_up_held_fixups(), releasing the lock. - - FIXME: We'd be better off waiting on a condition variable, such - that we didn't have to hold the lock throughout the relocation - processing. */ - __rtld_lock_lock_recursive (GL(dl_load_lock)); - __rtld_lock_unlock_recursive (GL(dl_load_lock)); -} - /* Unmap the dynamic object, but also release its TLS descriptor table if there is one. */ -- 2.11.0 From patchwork Tue Oct 24 14:29:05 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Szabolcs Nagy X-Patchwork-Id: 829921 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-86309-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="sHbzoq+F"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3yLwdC2NPbz9sPm for ; Wed, 25 Oct 2017 01:29:19 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:date:from:mime-version:to:cc :subject:references:in-reply-to:content-type; q=dns; s=default; b= GWRZ/+v5PYL0+IJuw7zeRQ8sDu04o9qzk4OIoUVbJC3kHaQ1QAfdDrabZYt8XYhx guQpm3vhQiok/dEHt/iH7D4swrS/oS+RTPJWz1mgoLW/mGzs88YXuNRk+92rbZmE KtKmzJJWkSGahfY9tpU+Z/Z5Pk2t7ezSeBwGZFwGzRA= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:date:from:mime-version:to:cc :subject:references:in-reply-to:content-type; s=default; bh=x1wu Uku8o1LR3idVVKweEJtdxrU=; b=sHbzoq+FH3rOwO2/uyuUkdQqcy8CMsIMRMkp NE+rJ+EvnBG/j+juimWqc9nsCoG68rCxFzCicr8SMrLAeRbi93PkUm0MVYFtGe15 ydqq1Dq00J6Gf3vInq244BWdZrDr6bFqaHNcQC7OkNEqD2OhgseZSTWtPlFR35py DBZNKHc= Received: (qmail 126446 invoked by alias); 24 Oct 2017 14:29:13 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 126432 invoked by uid 89); 24 Oct 2017 14:29:12 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS, URIBL_RED autolearn=ham version=3.3.2 spammy=5946 X-HELO: EUR01-HE1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Szabolcs.Nagy@arm.com; Message-ID: <59EF4E31.8060201@arm.com> Date: Tue, 24 Oct 2017 15:29:05 +0100 From: Szabolcs Nagy User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: GNU C Library CC: nd@arm.com, Joseph Myers Subject: [PATCH 4/7] [BZ #17078] arm: remove prelinker support for R_ARM_TLS_DESC References: <59EF4CEC.8020301@arm.com> In-Reply-To: <59EF4CEC.8020301@arm.com> X-ClientProxiedBy: DB6PR0202CA0039.eurprd02.prod.outlook.com (2603:10a6:4:a5::25) To AM5PR0802MB2482.eurprd08.prod.outlook.com (2603:10a6:203:98::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 05ac22f0-fb52-464e-339b-08d51aeb95cb X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603199)(49563074); SRVR:AM5PR0802MB2482; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2482; 3:XZ7g4zpDyrOME6hUQu0IYiFhl2d66c+kgk1rmGfeQuoDc1E7gjn3lnN8hI+7KUAtj+QTFSTytSeNedLMgmbmMVtcsHEp4Y4xoZ3IDO+BmKZ/Wxw8dQGUd+3jVG5UqO7zUF19pUnVQLCCS1tXJY5Mimv14pQrKdcSSUmnKVrmHVEwLMxYFlF8f63oAEHQRU0tz9npPU5oxHh+1lMLdzvLOmJPybR8nMNklMoipYniI9XJYzG8r1oE6qyQOWKXS6Un; 25:1CpnYcRb/EZEef80O+UZP1K/SoSLgcPrfZGzaagV7WCSJ07KgLaXda6gOwfmg8owk3WySQ3Xc17XAaSGbnZLVcxyqQluNk4mKouo5RmainXfgeNn7qTz2J9Ctxes+NiRNKbKVwQRNIwmkmheE9YQKStrRyt7mYOSww4O/D+dJBOgPRBjrHcVeSSIxh1lnEk9orRBSrBVKRX0L5JqYTNpg7DH/Jiz+EbYCr0ZJ2S+sqesPY9NMDiFvWW9GDEr+XCydDGUcG5R6WnvuvkMma6Dx6nTFHYBfLwl264scdYUrEK3ssoqOycki8jiKTbYaEFJH3pi3X6bCEWmYuBR9nLtNw==; 31:nzSgde+0XmQyZoVlNOlXm/w2mpV6IHeNXno+dXyXgSQyoyO5aHZ6K6p7AJlRsDfhoNuNWgi3f/kMrDRPCFaH2Ix5D6e5NEgzK9B9qB3IuaRCly6hXMD55K7gI+hK7wzpyavpTDYfWsKcRVSO3P1kk5bgpYg0EeYTzPK5y/rRJXHrBKjIousqu4S9kKuJYvNVoRrs7nHucTwfZD4Wm5jV+fRJlonWiTHxht9xxVcP24I= X-MS-TrafficTypeDiagnostic: AM5PR0802MB2482: NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2482; 20:/b8wdA88vZlQKLXSE3K1toh/Wke+Xv1PLRfKyD2/u5tNWhRlYCLVeodjQFTJ7RyOCYlFr0nS4mH5JUgxOlRzTNBibnZZZFhvw+kpLU6GRSJh90aWKd7buAm4wh8Mp5swlzr88bQSMcoJmxf3xl842MpKQvIpdavNckGn+g4oxFM=; 4:fXGCNAk74ddgnJbUQrppGd0Q6WfenB/aOz5Lht13Ixs90CnDD4Kuv7QhC8jqujlQ26n4cz3GeQozbDh+t5rP7tnuXXvOSYGtQj+zAwGoKi1oNEhkJLPkayGGcwXjWi2mJH7mFkKf/gitp5pLHZk+bMbDXHW5AYRYa8DhEOV2seXLPPqr0a4AxxAULSkEdVLeKTBHewqqxXD1JS31pki0sueNsUjzdriZjstTv14WdwRQUHuK7zg4HndbK/Dl6A+UxtHkQvZa1Eb6cNT2aFR54mbSgi5Iq2twTWer12ziCgY= X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(100000703101)(100105400095)(3231020)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123562025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AM5PR0802MB2482; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AM5PR0802MB2482; X-Forefront-PRVS: 047001DADA X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6049001)(6009001)(346002)(376002)(39860400002)(199003)(189002)(81166006)(6916009)(68736007)(6116002)(36756003)(6486002)(77096006)(65816999)(53936002)(87266999)(16586007)(316002)(16576012)(54356999)(76176999)(58126008)(101416001)(105586002)(50986999)(33656002)(2906002)(305945005)(59896002)(564344004)(83506002)(270700001)(2476003)(568964002)(4326008)(106356001)(3846002)(65956001)(16526018)(4610100001)(5000100001)(72206003)(478600001)(189998001)(5890100001)(7736002)(8936002)(2950100002)(66066001)(25786009)(65806001)(5660300001)(86362001)(4001150100001)(97736004)(84326002)(80316001)(81156014)(64126003)(8676002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0802MB2482; H:[10.2.206.69]; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2482; 23:u+8EVjre7kxCIgT+ycv7bC/x0de+JsKPY9uIYJBJ87If+I7FUY8bHI7dps4lKicWHkr8d9KsLaiR3hGAyJKp/HDGmWkedvLlKUdEU71mw/4rVcDJOekpIrHmWKBJGmJhjXnXLjUR8ClikPe06iuMmIezfrNUlzyEKP6ONpZs4G1Cy5W0cpQ2cRhDK9A/kYQrJEKtnZcdzXwqAXMMAD3w/GU+zE3J+1y/W9lTkiuwPaC4Edv9bzt/DUAnJNjuyodxFtgV4c2TtczUMSoND8uSV1dig0moDUqUChHNFK9YJ+bGJFk6nra9WQQCSLslOlJy14MghDcEVZIh9Vo4J/0WNd5M0m9iRGqZOhRXiXwUmDmc/RbYZfMyS0Cd21fEYQO6rKrwg0BhiD30MorZM7F8fs0C1/r5+cD36AG0TQjTwVFlKFQhi2WGGCR/QDN+3vpGXP5fa48v1om6I50EGkrbZNXt/IPXaN0Z44HMcaTrhvUAbhwqgoluKo+1I6NIwYt088shN7ASU2axYGrFXtUy9Rk9q4GtJX8YGlCyD8faPuDHoo0bZNNbwncbdoKuP09lSWC13qF/6IAEHPwhMz3zFcDN22tixy9ZaBFpPhk39cF4vOqzT7tsmG4RcHMswNtuIilZRmJQY+UZc9/s6Qnn9Fzp1VF8rw9VanStdwhEFrPDAyR1r3+aD7oR6EGAaMpR6vrcIrbYPvAi0cacMJkSFOXU5jr2NCnxxYiTSUw84B7tIaMeCM+MstDK0B3w0bJWgxmHnb52CbDfcFHclKxbr32nx0kq0yVyADET4Vqm5UyLwt2IQSwXh5CZ8mexllgtM07/Hh9iwNedJH0keSL+FAlqLcX5W5+GlGKWshWpqRgPOm1v4Mct/ewP0ToPJJzxeP0QUf3aRmA7Up+/A3jJpIt57Yliu5LcUlql5Pmkgs3ihjvYEslWAPHIgWazduTp+b+VosmOs5Cm/28cnT1VPRwZJ5lhkKhTtGVZ+yZST6UBuRcbyIXRe8y+lvkwnITWd5v5PjxI5GfL8hE9ViO/c4Yjj2AVK1goq9UcDoooqvi2OO04+PmicpMb//8BsqE+9Sl4h0YjUCUsa+dRmXI4sCqJcyDfGYLvKCmU1blI0V6gqFjNDeKbSfcIrOzkfo6IitH2p9Ko1Qp2Nzpi3LeVQ/Bbo8CkPK+qIq9L/VrcF9+eT8+SNs9acsKp4qCI1uVMeFP82WoCaroc4BK1kHL+8bmibdFqnEo+2VP+Z4DIY3EFmZM4/62fn3toqPfjvvYjdLJF6oTN5r5F+G21Koxm6FFUmCneV4mdVn7XWPDtmiWwe30K+lzqmLO2Pk7w9kUyPKQFdLuYt9TKb3PYz8LhJPW/t5XSni8CXC+EdpyukuzZfgMUX4pADmxOkL7rmsbL5h1YHbBtLzfl2+mBWZ1Wcku7LnzqsKlQx0wiFEwnvQo= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2482; 6:m6cw5wy3wgKVSiATRFBNrtH03BfnFFAjLIjIiXGKciMl/fDewx/4Ry4ndXTN5Vyi0rdjAEbKIRszPLCw1w9qANAKwOKsjynXXXZ8goVIgZAPUNsRHQv3bWzHyV/LiR4tOW0Mc17L5oswNy8TCGpZhIHDvokAFU7vBPnnl0XZnwVplnNjk0ZmgiLVocj3U+CYfV5scIQF3aiDWmzkpR7lw4S5/2bZPWnRNpjT/X9bpjvCWfhAL7+K/gmeK+rN6ElffOqIGGlmJ08fR7zMW1hXDqtmDV290yoxGkgs9+EPnas9ZbdOTDFi+Vqgkt5A2ojPEfnYdJRM/xE7hsajCx9SUg==; 5:UITMfZqjolpOnrsv/mGUr5CYitV3ANjKavumjM7HHSiGUfuJVu2QhZP9uPRR8iU7KkGzO68lg6I0S5apsbEU1yWe6D0HRR8frpteUr26FMahbyigA+oUJRUPew8KLAhSyM5aJQw+61orv0QuRFuchw==; 24:c0ABYgYPZ5C7fxOpKsEiBFcvao6rdgxbXbclrsI4jxdwe9jrXQWnLmPBwLhRogGzn19Abs22pA34qBwv5IHBJJnHt/vteEDSXrzCSdG5uow=; 7:IYAI4kuQFZ5MycUSVKWZav0Ty/qvUDV5ixI8MbptD6bMemZM4zYwvoFt73aiJ8uQa7JHzv04S2aEqtTO2jYauKmN788oVljSrIyj4LC3jvJw1ma1ChPs2ZLM+jaZF/6GoLTMjqwkELI6o5XSKDkv/Oq5EVfzuFQoBr19388yaI5q0PqD6SDhcj692HrUvfwbZDBdA4T57eNkPRVMXPXpXONxNydCzRfcraIBvPZxABU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2017 14:29:07.3520 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 05ac22f0-fb52-464e-339b-08d51aeb95cb X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2482 2017-10-23 Szabolcs Nagy [BZ #17078] * sysdeps/arm/dl-machine.h (elf_machine_rela): Remove the R_ARM_TLS_DESC case. (elf_machine_lazy_rel): Remove the prelink check. From dbe01dbadd47a6f406bba6feb2cedd6840af0fc7 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Fri, 20 Oct 2017 17:10:50 +0100 Subject: [PATCH 4/7] [BZ #17078] arm: remove prelinker support for R_ARM_TLS_DESC This patch reverts commit 9c82da17b5794efebe005de2fd22d61a3ea4b58a Author: Maciej W. Rozycki Date: 2014-07-17 19:22:05 +0100 [BZ #17078] ARM: R_ARM_TLS_DESC prelinker support This only implemented support for the lazy binding case (and thus closed the bugzilla ticket prematurely), however tlsdesc on arm is not correct with lazy binding because there is a data race between the lazy initialization code and tlsdesc resolver functions. Lazy initialization of tlsdesc entries will be removed from arm to fix the data races and thus this half-finished prelinker support is no longer useful. [BZ #17078] * sysdeps/arm/dl-machine.h (elf_machine_rela): Remove the R_ARM_TLS_DESC case. (elf_machine_lazy_rel): Remove the prelink check. --- sysdeps/arm/dl-machine.h | 34 +++------------------------------- 1 file changed, 3 insertions(+), 31 deletions(-) diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h index 7e2d73e3d4..bf5f5d205c 100644 --- a/sysdeps/arm/dl-machine.h +++ b/sysdeps/arm/dl-machine.h @@ -594,32 +594,6 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, case R_ARM_ABS32: *reloc_addr = value + reloc->r_addend; break; -# ifdef RESOLVE_CONFLICT_FIND_MAP - case R_ARM_TLS_DESC: - { - struct tlsdesc volatile *td __attribute__ ((unused)) = - (struct tlsdesc volatile *) reloc_addr; - - RESOLVE_CONFLICT_FIND_MAP (map, reloc_addr); - - /* Make sure we know what's going on. */ - assert (td->entry - == (void *) (D_PTR (map, l_info[ADDRIDX (DT_TLSDESC_PLT)]) - + map->l_addr)); - assert (map->l_info[ADDRIDX (DT_TLSDESC_GOT)]); - - /* Set up the lazy resolver and store the pointer to our link - map in _GLOBAL_OFFSET_TABLE[1] now as for a prelinked - binary elf_machine_runtime_setup() is not called and hence - neither has been initialized. */ - *(Elf32_Addr *) (D_PTR (map, l_info[ADDRIDX (DT_TLSDESC_GOT)]) - + map->l_addr) - = (Elf32_Addr) &_dl_tlsdesc_lazy_resolver; - ((Elf32_Addr *) D_PTR (map, l_info[DT_PLTGOT]))[1] - = (Elf32_Addr) map; - } - break; -# endif /* RESOLVE_CONFLICT_FIND_MAP */ case R_ARM_PC24: relocate_pc24 (map, value, reloc_addr, reloc->r_addend); break; @@ -699,11 +673,9 @@ elf_machine_lazy_rel (struct link_map *map, (struct tlsdesc volatile *)reloc_addr; /* The linker must have given us the parameter we need in the - first GOT entry, and left the second one empty. The latter - will have been preset by the prelinker if used though. - We fill it with the resolver address. */ - assert (td->entry == 0 - || map->l_info[VALIDX (DT_GNU_PRELINKED)] != NULL); + first GOT entry, and left the second one empty. We fill the + latter with the resolver address. */ + assert (td->entry == 0); td->entry = (void*)(D_PTR (map, l_info[ADDRIDX (DT_TLSDESC_PLT)]) + map->l_addr); } -- 2.11.0 From patchwork Tue Oct 24 14:31:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Szabolcs Nagy X-Patchwork-Id: 829923 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-86310-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="FBYb9imZ"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3yLwgf4Kynz9sPm for ; Wed, 25 Oct 2017 01:31:26 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:date:from:mime-version:to:cc :subject:references:in-reply-to:content-type; q=dns; s=default; b= cO1oPN0XGu/XbhZWF7q+/S7xCNp10CL+XopoAKuhkRtxPUzaVpdtq3Fi0b2EdlUd 4q+Czro/Es2aZ1wrHudg2ZSFocxs3iVKpJA+R0AEmLYLVdxFThEhnhvpxopXwSJZ C/eT/TRxUMUF+js8PLKTe2HWVRz+k7YvFNIf+e/Q8oA= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:date:from:mime-version:to:cc :subject:references:in-reply-to:content-type; s=default; bh=m1J/ 3Zm/pMOlYJc1pJse4FoLBVE=; b=FBYb9imZPryjtC06KopdgCLttnoKmMqTN+k3 EYGzFEDiOWjoDdjL918XWv3eBjBgJ0LUX/qDwd1mQuwv0WH7FsMSFlg0cjFVdwOE W0cOZ06WVzY/aIySkqHEicCogBXDad819q6LppivTPzHY7I8CjvCmIXMl6bTFPUE LGSYnBc= Received: (qmail 130262 invoked by alias); 24 Oct 2017 14:31:20 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 130249 invoked by uid 89); 24 Oct 2017 14:31:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=mimics X-HELO: EUR01-VE1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Szabolcs.Nagy@arm.com; Message-ID: <59EF4EAC.3000007@arm.com> Date: Tue, 24 Oct 2017 15:31:08 +0100 From: Szabolcs Nagy User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: GNU C Library CC: nd@arm.com, Joseph Myers Subject: [PATCH 5/7] [BZ #18572] arm: Disable lazy initialization of tlsdesc entries References: <59EF4CEC.8020301@arm.com> In-Reply-To: <59EF4CEC.8020301@arm.com> X-ClientProxiedBy: VI1PR0101CA0084.eurprd01.prod.exchangelabs.com (2603:10a6:800:1f::52) To DB6PR0802MB2488.eurprd08.prod.outlook.com (2603:10a6:4:a0::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e2ed2421-faa4-46d1-7b7c-08d51aebdfb2 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603199)(49563074); SRVR:DB6PR0802MB2488; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2488; 3:V0YoLCI8XJgENvSpEpzbrNNI7b4tAJHTs3SArCLa1ERDqSIzc+ocxOdndtkzCS/4xjjkFx7ZLZh3vZodOSmIFZPhzQQRPyfgYUST5UjxUyTW1chgPpIQm58Y9c2kDjU2Z9iCZZRdNjH4hmO4uzblPThx497p86/ZlcLYs6G7xtJqVYz1MnUCzcz7u/J/nD3gkP4thxQxBPUoQi0p9XIfW9+WnWGqK2zvkSGNk9bTi6N6x397RPnAEia7vIPdQ4xl; 25:iVdTXUuYqoiigul3H+4so2eC8D+VBJdnNf5vlOCn8kMb8yBEgWRAbUgj82sTxdVHuQmBMJuuIAqXfle/7Xeu9XRplTHHfUAZqOHcmjdB5/gNzXmHZ6rR7mbhNPLqySMS7AeP5bYOiux3Gp+lHjQae20WUUWmNINQvtIssFJC9B+cANfqs7G5P0iN67PwTAYK3bb0j/dcUm01PR8gk/irN5oGmcGehGxtFYkUhBvW/VdEVqSZnoYr+PXfyvR2kYGFIri4S2pJaGGpx6n1+PTEStbtp481kRlbf6nXD9ecaHbwOyoKrQ1WZ0yYBIR5I3oXL8XCqyR0t8SeclyWF3e5EQ==; 31:QFigQMDMiQZ3DK8gszJedUkvc3E1993/8CGRJQUvRIDrQIfq4cMPGbYASgAOuY2qCgIz364S0QiefzQkQaI63wm2DCyzmtVVh/UuinbOdjpTvWtFOtUYRDpwfftbpPCcor+VTnu/gx5ChFlY1gKjcylu/2jo5p8tm82s1oN2QwziR9nju0xEXFl+T3iOguBFmabxCyos6glkCV+ZcPifSpJZ00LQmH4LYBUIg3xViWY= X-MS-TrafficTypeDiagnostic: DB6PR0802MB2488: NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2488; 20:+FJBbbFoTf41i/MEHOR6KHx4l/IMVR809FHbboEdW97e2pChP3oiwGEtog/9jvhxPn/VQXQIv0ojfX4gOaqGJPPCMS84WwV23T7pdQsGVIWXORo9y1pWWXGyWyimL39iUBIp2VHB5FuF1qUZOuwh2Uw9Vj2fWzke+q8jlnyJpoo=; 4:jK0iYfEBT3WtKjL1o6dr0IQfb3TPZ05F8TMn2NPhaza1fdS/5ZKckxD2c9OlRwaTQmulz0JzqMFhhjk97v9xS/q3n1UZ1nXVSO6mT7JOjGQQ1qgk+ZD+7drfkqAZC600dXBj24OoLdb4yXpB2jX+UeLwaloZBPoInCbGhTJlGT9au0wXT3YVf/ALnVWjtyWPg7sjpKRMnNceZoh9KK0NAcfjmDIwi1Fg2TNbAjVlbiAQpKeuvI5B03RFHNa5/rB3DtUyanbh9K/aZK7RF1/RKsbVOVUJvE5mF1F69Mik78g= X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231020)(100000703101)(100105400095)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123564025)(20161123555025)(20161123560025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB6PR0802MB2488; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB6PR0802MB2488; X-Forefront-PRVS: 047001DADA X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6049001)(6009001)(346002)(39860400002)(376002)(199003)(189002)(83506002)(316002)(87266999)(68736007)(54356999)(65816999)(5000100001)(16576012)(8936002)(305945005)(7736002)(76176999)(58126008)(3846002)(189998001)(5890100001)(106356001)(72206003)(77096006)(105586002)(81166006)(80316001)(8676002)(16586007)(6116002)(25786009)(81156014)(53936002)(4326008)(6486002)(270700001)(65956001)(66066001)(65806001)(64126003)(478600001)(564344004)(6666003)(568964002)(59896002)(4001150100001)(2476003)(50986999)(36756003)(33656002)(6916009)(101416001)(2950100002)(97736004)(84326002)(2906002)(16526018)(86362001)(5660300001)(4610100001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0802MB2488; H:[10.2.206.69]; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2488; 23:B98Ft19FHlIQc8biTkrukMho8Lm2rsCZW5PgZvPo8T6UNjVPgodi9xs7eQsV+xJZIMTqsY9s3mzGi28XLgqza/5O9dixqfCauTWrJZ7Yn1+cZ0yRlcHinH0Uet32lg/JWHyqjomtIWQnxXGC2nJtGbQkD2X2EYBOthTWTPkR2jjDbxsEzxcAOIytyz/OwZ8f7ifeKvl8y7UOPzp5sYP6a7p9eByl7RW71+WKGr/5AF+bYyZLKSlfNWi9uYJTEiUgEYc7r0Q9HW1UmURubVRHNNf34QAZ8bGuFgZ1pfWof+h4j0oKZpOH3vvEFMbmkniDFN3Jr3w3Hx3goJbEHxAwOQl9MEHotGbqPEjeYETqKVQBixkMeQdcoILAsLMlnKsQ93Zs2P/dYwLHtCmTk7oz4VMtlEgGoExZ6TT4liEzNcho07TL/0d7pKEa96oLHFAsg4g4Q/Nx4i4UNQexg1YwwJrQOwctNty3Z+w9smT6pRzG8TM8S3RuOANQGD6oSJ5fKk777LPnHbRAShZqg1YXCNe9iW22+nuWnUhDvP2iTR5kPzynAt9OZdRAS1puVXweluK+7qIztHY0TlnSvYTbTaOcoS/j4AVQDUP72wtbDKODFaG/aEpB6jCIh7tnUkN9Av94L2qyOZNigYWCYP8KFKI8Y6e3KI5li0snq86uOgAfIDE11wsUfFYYKXLAQ/oy4X/vJdj/vBzBlcMaIIXLmYa6gwcIdAk+P547d5kbn0n6PMUPfQZkb5m/geHGDoqAEiEQ2Rvru0vWmxNVxx+jxjwzUT/ZcDG26V7d2OhAdHxyVtW9Qf4WGdiFDeX/jRt7HJ3z3eGlEWvPvkqIPcw5WEHyo3DyhkeLNA4xHu7JA5igw2aQ4znL3HT8qHRE94X5If7c98mIUt5zF5iICtKRmjTzBqQMsY5VPshA8NLacv/WnL4G7aE4zpBrqEu9fO3g1nzHUasbokL+I4ze5xKy9UOaHKYQVazCiy+rbiao0BtySwmifGauyTezjL0+/N14BzDsY3OdV87rsg3exbTOncZo1UHfJniXroTXBVIY+skLKQSDtXN0DqYnjl8U3nPm7FsAI11s74vNB5NqsuDHmdRp/DZ8OKFhsicKHWv6iEwrFW4qMCoiFP6X46F1o/Q4ftc3/pwHSA3/+pmSYsG1lX/wUY9hkPoOZUsHZTGAGsPFmMm33YU5boATwriY0t6MvJLfdnL35wsJ43kBFVOAZxae640WzTBX6ge4XiSfZv+saw+zv/FYFtEdFjXWtzExT17fF8cwzjEaYPdZqPD5ENbtnE+RZVlcfCuvIOPzBnZjmiBze2rSK0wCbyk4/sQZO7B4DnTsCZzisoZiZaLWAaqlgBggKxSXLCe6QHIIWXDKPoLgjK/WNHVFhsLokcmsjcBP15iNGLfr+HWxj1FUE8NTML8/I0eWiBG+SXikSh6hmkwJkpvgnLntJkqZzxyt X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2488; 6:gG1s4GXxygZ4IwFbsK4zyRVpac07jCaDAXw5Kg1ZaGkOv7NSqRj4Z552gykukfKdhQ9XxPbTn5sNIBoBWO/r2wd5FzmhOk+W4f2Ar8WCrT+JRrbdOvbgdzGIti2BMUdNJvuA5m/My76lGnx64KTRn/6ORIyAmYCVOJeZ9RDz+uYPsFs1HeohEN7REQhnhqclbKJveKTL5e7nfNwpNJ5okpThKvPegvP5Af4vfDqYR57G+y7KqCuv1B4S9Ty+Ajeygwl43C4r1W/tCCLJULN0qx1Ux1w9rtA14mgmGs0R6Om31Dyyj7emQrQgCxyklx1go+NhAAQw7VFbhNfQTJkfjw==; 5:vPmRAqkh/Z5uMryLy3Q7zNiNe/9VKRmdySpbW1SzkId3XTPGqtz2Fv5JIUeX5iUbU64uT1eonPQoqILJ7Id1nqvl+0rqZ2d8poK5XPyausq62Ias0Gd+0RSh9T8HoH1LRh+YVOav+oAvs8zDi4rZ4w==; 24:32SLeSeyKGJ/4EsdTIC30rgBNoj7HMhawPrXXan/+eon+tinkfEbNLTQf96s3CGKpjKelu8GaGyiXbaKEnM8W9//fU2koXjbh3/pF19jvLk=; 7:svIYZ5q1dMH3w7PXZNUvgaPRrTjX4RLdaeGh1lx1rQkXqRqAqjM5yufnZ1KFIOPzs5lTTdmxfGLlIgL9MNZssioRkTam6nIMeZvP/3GwJtAXMfQYnZkR4az+bqb1jR78r1I6nhVw1jA6D+QwuDlQ+UhxioWqxfHVz15OGfKIM9LQIZnR4VU/7XCbXz1L7ri9yVpN8k/HcW99rK07BhEhYpc/8YLMfAsJMTd/vPWf0us= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2017 14:31:11.2008 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e2ed2421-faa4-46d1-7b7c-08d51aebdfb2 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2488 2017-10-23 Szabolcs Nagy [BZ #18572] * sysdeps/arm/dl-machine.h (elf_machine_lazy_rel): Do symbol binding non-lazily for R_ARM_TLS_DESC. From 9732943ec024f2ea66f978cd4196ec6a71497358 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Fri, 20 Oct 2017 17:35:12 +0100 Subject: [PATCH 5/7] [BZ #18572] arm: Disable lazy initialization of tlsdesc entries Follow up to https://sourceware.org/ml/libc-alpha/2015-11/msg00272.html Always do tls descriptor initialization at load time during relocation processing (as if DF_BIND_NOW were set for the binary) to avoid barriers at every tls access. This patch mimics bind-now semantics in the lazy relocation code of the arm target (elf_machine_lazy_rel). Ideally the static linker should be updated too to not emit tlsdesc relocs in DT_REL*, so elf_machine_lazy_rel is not called on them at all. * sysdeps/arm/dl-machine.h (elf_machine_lazy_rel): Do symbol binding non-lazily for R_ARM_TLS_DESC. --- sysdeps/arm/dl-machine.h | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h index bf5f5d205c..c59386f515 100644 --- a/sysdeps/arm/dl-machine.h +++ b/sysdeps/arm/dl-machine.h @@ -669,15 +669,21 @@ elf_machine_lazy_rel (struct link_map *map, } else if (__builtin_expect (r_type == R_ARM_TLS_DESC, 1)) { - struct tlsdesc volatile *td = - (struct tlsdesc volatile *)reloc_addr; - - /* The linker must have given us the parameter we need in the - first GOT entry, and left the second one empty. We fill the - latter with the resolver address. */ - assert (td->entry == 0); - td->entry = (void*)(D_PTR (map, l_info[ADDRIDX (DT_TLSDESC_PLT)]) - + map->l_addr); + const Elf_Symndx symndx = ELFW (R_SYM) (reloc->r_info); + const ElfW (Sym) *symtab = (const void *)D_PTR (map, l_info[DT_SYMTAB]); + const ElfW (Sym) *sym = &symtab[symndx]; + const struct r_found_version *version = NULL; + + if (map->l_info[VERSYMIDX (DT_VERSYM)] != NULL) + { + const ElfW (Half) *vernum = + (const void *)D_PTR (map, l_info[VERSYMIDX (DT_VERSYM)]); + version = &map->l_versions[vernum[symndx] & 0x7fff]; + } + + /* Always initialize TLS descriptors completely, because lazy + initialization requires synchronization at every TLS access. */ + elf_machine_rel (map, reloc, sym, version, reloc_addr, skip_ifunc); } else _dl_reloc_bad_type (map, r_type, 1); -- 2.11.0 From patchwork Tue Oct 24 14:32:13 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Szabolcs Nagy X-Patchwork-Id: 829924 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-86311-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="bG+nuPSL"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3yLwhw3vKJz9t3p for ; Wed, 25 Oct 2017 01:32:32 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:date:from:mime-version:to:cc :subject:references:in-reply-to:content-type; q=dns; s=default; b= RoK4EcCA+8hvithpOa5zhc9nRM/VqKQEk3lkqainprvTkzqBCoGFAuZGwD1RLMBT jwctsOyJ51zEKpqjVRVMmpminWZa4d7wlX6LZXAWefqnNMwXjhy1+od9ZSW4Hw41 UurvhV4EOGZlF/4rgZaY1SZag+BcaVZIFR6NWDApa5A= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:date:from:mime-version:to:cc :subject:references:in-reply-to:content-type; s=default; bh=Q9+c dc+1E/hibDXES7lEZyC0kuk=; b=bG+nuPSLo97v5vYpZnswfoOW7zMHrV5ewx5b TTN/qaTndFIuCYNumEFo69xm1D++tcvDe8EbCivgNdWJIBqubwXlwBtzh8r5ajwM Y3U0fr5X30XwxKXk8cgJj7mclO6hmMqpbFXAAwejTvY8Jh8LDzxcy9ZaiBHv/vO0 rqb9rxU= Received: (qmail 928 invoked by alias); 24 Oct 2017 14:32:23 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 910 invoked by uid 89); 24 Oct 2017 14:32:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: EUR01-DB5-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Szabolcs.Nagy@arm.com; Message-ID: <59EF4EED.8080507@arm.com> Date: Tue, 24 Oct 2017 15:32:13 +0100 From: Szabolcs Nagy User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: GNU C Library CC: nd@arm.com, Joseph Myers Subject: [PATCH 6/7] arm: Remove unnecessary volatile qualifier References: <59EF4CEC.8020301@arm.com> In-Reply-To: <59EF4CEC.8020301@arm.com> X-ClientProxiedBy: VI1PR0101CA0076.eurprd01.prod.exchangelabs.com (2603:10a6:800:1f::44) To HE1PR0802MB2490.eurprd08.prod.outlook.com (2603:10a6:3:d9::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fe7b3977-8152-4e4b-b396-08d51aec06fb X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603199)(49563074); SRVR:HE1PR0802MB2490; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2490; 3:yNok2/M8Wry8/MI6WVpGZLyXxlpukBqhM5jKS2UDu3Ddfxoy/qatFsD9skbqR/Z+M1zi2k4d3qKvn5rYEFw1Uhw7NQaCyTcZOGQszXqXvsgRLI2nTc3TWPUd2XABWwhST6EWdQn0ykWzzXpE0sKKe+YdYCSh4h5oeKfav2Lsx8isl1M3NbPl5ZdLnxZHaP3Gb5acNfjIbxAJzQqiuSxNCx7zsMikvWTC3LuImrJIKNfqRI37CkKC8J5iry4D7Is7; 25:KkLSwJvzTJisvtEC7azxuTeYZOIxQ0E7RAi9ySZwKozVa263xbJbFWCwGrkmlaHAIUzbAQ12a/E8ZMV3tbAfY6MZEzFnADa/+ofWqS/ujjR9w3tqQ3GhdgAfhcnTXBW7jbPE6koeQlsjBMFOPU37q3lU2NXI4W+boZbJRMoGoOcM2ltn9nXX5PDl9USR7A8M250T0CSFaEWtYjDVvdYDf77kyhPs/USMAykzoPCXeTAk9BveNiaydxxnGk6VtpYyk4+rdgNunY+ukAeiFiqrRwlSes+JzwGEYj4GjCwMvA1uBWIiOkz1AmLxLfd8Q2M36gASFCRvtZthdsHwQ7vsDA==; 31:YGIb4omJ3lh3Y4nRlAiztckkinaIYI6iJA6qdupb4KzgezhzmFy+F5eMl8LFcBM+VoUVPzcBvNh2KZD3RmCVQHHzE8H4A7k9yiv6mHFg5oNeqejFThrjHXpK/5+RBadxCMrceD8rIy3Vb18Lh3t+XnSG1ly8TtBtvaqeAj72FM3RO65BhwyFXpVqqFrOyTpExPGpUZGtkI3qh4b6m5VMXN0RDKhMxPKQYChIY2l6nI0= X-MS-TrafficTypeDiagnostic: HE1PR0802MB2490: NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2490; 20:0/wLzSpumtqXPEAKXf3NUwSH5cUJbFaMNd6Aab+GYoKa/eHV93lga9oLqYEnFPUBvI7xMbgH2+La1kfzKnDIVyyGy1IROIbU3s4w5fmZS8k/49zNo4bii28xtvCujcer+nILm9fTCr7G8lBzx5Dp0X7F/JL/04LC6cxdUhyCq0c=; 4:QrqRfg2VHX95y8b3Rg5+ZcU95TXLRGyqg+Dpe5oXaL8hGAzPXdt+NOw9G2gJ6b+ZE8t5l1Il9O+G4mp/clFjg8/aXZO86jKwhA1LqFMPi3dRgqIaMJJ2Z+4O/urd67FRrusKHuICTRPu7EczObRXkrCcJC44HnMNjPQ/RV8m8vxf1Owfvf3dqQyU5xMew65zFsmxA2P9rXGq6c0AL2W4Bcx9/FWe2nUzHN55RnicuyAElCDYvXI6CsOzRhe9Rngh1uoovU9y6hVKnmUXeR1a7KfCx0BOzchLG7/WNijWmlI= X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(2401047)(5005006)(8121501046)(3002001)(3231020)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(6055026)(6041248)(20161123555025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0802MB2490; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0802MB2490; X-Forefront-PRVS: 047001DADA X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6049001)(376002)(346002)(39860400002)(199003)(189002)(76176999)(7736002)(478600001)(50986999)(65816999)(54356999)(189998001)(6666003)(6916009)(2950100002)(4326008)(2476003)(59896002)(568964002)(270700001)(564344004)(5660300001)(33656002)(80316001)(6116002)(25786009)(3846002)(77096006)(101416001)(64126003)(8936002)(105586002)(53936002)(87266999)(2906002)(106356001)(6486002)(4610100001)(16586007)(4001150100001)(8676002)(72206003)(84326002)(81166006)(81156014)(58126008)(97736004)(83506002)(16526018)(5890100001)(316002)(66066001)(5000100001)(86362001)(65956001)(65806001)(16576012)(305945005)(68736007)(36756003); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0802MB2490; H:[10.2.206.69]; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2490; 23:UDbwcBtMEqsAOk4JjUHSJI6rtQTOfFVij4n3TI9uc+cdwfiQeHEbnT8GVP4TsmI+whSMIx7BuiokJPSjSqw/SDwf5M60s7bZPwtNyhSXubUKd7D2Dgn6nN65/lc7O6YfJbH6Y/3GrghnHBb/ljtzHeY09La4Hu74qpF4xSyYAQkfrMEC+W6VsjJgkxNAahMI5xs09eXTa0WTT5AhsolKWpVLgV59IE9ooJ4/LVU2pmjF3lyRjlkrKRqWO02Z2Y3LJwxJLXEwIz7f0gs3lloZ6GyJkAKx9JxqPAQ3pPxi+XgDR7O93Uku+vDz/1AsVOxQn5Jqae8SqaNG/+3Gwn34CILgfz8nzhJb0Mm9TqSLJaWTbOJEgxTKOTRjUhOmjopLAes2FpSv1SYJxUfPavyVHCeE4jhrJJ2uo2VWPcWq1unl8XPtoBWJlzIAWawYW9zIJBBSS5mXZl0C6o8J7RwYa5Zfe1NEGPqMv2LGIIAyB2Qk7CETyI6ChEHVYUPmRo3zCztdGC+KkY0k9hqO0EELcCdXsqGlgAZEz9D+aUB2Ks6jY4OA2dkThX3MQctbAswOGm72Ub3VYLt1txqEgg48oIgCoLmzxkwvnj6/IzZcSEarmh1xCydQV8GQKGFFkZDJE+8cLZM38Dj3Shp3w2Brk0AP8pZ1ekslXVIlf/WoL9gr18dnDd5AIy9oUFmYHmk5npiyUKLRLFIWDB5juiGU/XhnOZQSmAXBHHnKvNcTcM5BtjArhTpExwi1cExXGqIuV1Bctpb76fwibPBmbWxVeAItVXobc/AB+L1dDF0yxRF4cMmhEjIwV3aCLWOh1PVRALswXmDeWrlptoF7rY7mdn9AD6n83hdt5HoOQgGDgUyN83FRXek8VahZU/ytHT+wuqvm4V94vM8sXhC5MRvxlpKWtmZ61rYuTvbIIwl3ddi+RfQNy62QOsuxseUyz0wtO8eWfjNX4JuPV+VNUfd3IG1q10+GVv2fMhoGPUsmsVU7joGA5XI3ym+J/PtuYJ9+hiSt7bMdQEWHrs+WEA1Iqx3rzVWQZAoAglG0JhMzFTQxfxaY3emcqoG6+iauQl3j2fbJRHl/cIUT43KlIg5iYWWe1lc/Cl+2vAKz+iF2TPZybaYVGEvM/Z8au5i51awH7ytUI3QZ4bMWO1LRdiRmL4ufn3yjwDymhZwbEvCpbRivNoy7w4DbJzEIRb6cb9S97W1rbTGp82c9jz4NSllHQHw4wD2JUGppFfUfzNbM1/7UbBEXkKF5UsSgaVA68h7On5m2KhgcyvHPWDwZmXUG28MtnHW/9oHdipflNw7Iao27IBwO3G0b+kpHg5LIIjMgYhF8HcpM6/RYB31IMEJGEZlYp3Sw8JXT8Vh7Xg66mdFLdXCCu9VKJEt1qI3x2DroTP88C5wbNHqIpeMFeCyafjmYNe43YtvPcHic3xPVmOW0VtLOnxNgigrlfWisvrQP X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2490; 6:wAasQ8RaeuLNsKHTTIjBVh+SFttZ4BMK+iOM3uTrx+MDDVPTxIvBEtmxaFH+XrdW+Ya0s0cZjG6pGQqPdrn2T1lR2Zy7yfYzClgGlGsiUr3c4NvqQOpSeKJl+vqz88q5fPn17obTb/IXNkhAsBRFhwQnsoSsTQWSs0fKjjDxfHptlE387ygepUuUD+HMHANi79AdOFzMQqKwPPdi2U1ALiW2VaDeiFwNcBKB/ekhV+qxpExKcgmQkfaJoIjIRlsgsFHZXFfkjDmAmaBdsZbH3MbqWwk8moAW1TcSiHA2OA687HkIkr2yY8XH157+KkJDllfpwqwVtYtSCH/qghY/fA==; 5:5vcaTeR0UY1IcoXFObzue9A6KqE5bEPs7g1LKWkBdMP44v6tqpq5EaXFfil6x6J/h/tAbDryucfpOXqrXsNrPZ4Wo/0+bTs572JjvuBmZYLQ1ZpFDwgJm9NeWCmhe7YJwX4mQwsGk6TEiMB1yk9oAw==; 24:zRTdQVl00c375KYLVUV4VGvPyEYz6Obuyc2jCjzh+zXPPQkE74Ys87aBy6cUOxc96B7ZogQIS1YlNDpTELfKgsqpEHVrzmix9BD/mZLQSdw=; 7:aC1KjwCRHjLNVq2tSJmMt6NNKmVmIR5OP+UmAnhtZe+dRSWryfKpNIxAfyYCOU794Ao3XFc4lyTRK/2RW5SgS4mWumtx/cdXJ2jjX66595sFJkpHJxpMT/tzUhktve7yeYtgZ1LcCB/NaIuDYgE5Ikjq/LF2rf3N0QxCK7Zxc1E469muIhn3rEbOBJ0D/TAyYQJYnREvhzA/WnWzZ5GsxQCnod0iCZK44Aa4sCRdBok= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2017 14:32:17.0649 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2490 2017-10-23 Szabolcs Nagy * sysdeps/arm/dl-machine.h (elf_machine_rel): Remove volatile. From af3fc493668dc8b1ff27e83458590d1e1a5cf386 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Fri, 20 Oct 2017 17:44:18 +0100 Subject: [PATCH 6/7] arm: Remove unnecessary volatile qualifier There is no reason to treat tlsdesc entries as volatile objects. * sysdeps/arm/dl-machine.h (elf_machine_rel): Remove volatile. --- sysdeps/arm/dl-machine.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h index c59386f515..ec3a0274e3 100644 --- a/sysdeps/arm/dl-machine.h +++ b/sysdeps/arm/dl-machine.h @@ -464,8 +464,7 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, } case R_ARM_TLS_DESC: { - struct tlsdesc volatile *td = - (struct tlsdesc volatile *)reloc_addr; + struct tlsdesc *td = (struct tlsdesc *)reloc_addr; # ifndef RTLD_BOOTSTRAP if (! sym) -- 2.11.0 From patchwork Tue Oct 24 14:33:11 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Szabolcs Nagy X-Patchwork-Id: 829925 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-86312-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="L1oTMCOe"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3yLwk53VcXz9sDB for ; Wed, 25 Oct 2017 01:33:33 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:date:from:mime-version:to:cc :subject:references:in-reply-to:content-type; q=dns; s=default; b= bWqiJh69YYY1JlGHNNLvThBd9poCwiEXxl2SLSQF7BtVNpb2TuT7Q/iZ/rbr4YfE 5oNj5U+bazN9ZPEDw9MTs6w5/aNNeSpJJBgG2jOv0cCjJO7+yJSVcTyDWcDzJQkd LaSLMlU0VXPXujyQblICAU5Wr21lZLg8Bs9aTCb+imY= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:date:from:mime-version:to:cc :subject:references:in-reply-to:content-type; s=default; bh=ugzh /S0Tk8aV9vRBEFQjv9sOHjw=; b=L1oTMCOemfsiZi/Tzgdrld30yMDn66Kc+Pff pPj4QdZNHgmWzVc2BpQRHDZZWBnpKL1YoFhkCAcDv6rALwpWAX2/Uqc3WVjtVQOq UiuroY2xXi1h3GK0lQMnW42J/zjFwoXbculdrCJ6rc7P9cPZ2lxQFASYOMWLrCzg 387OMNU= Received: (qmail 2982 invoked by alias); 24 Oct 2017 14:33:26 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 2949 invoked by uid 89); 24 Oct 2017 14:33:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=Holder X-HELO: EUR01-VE1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Szabolcs.Nagy@arm.com; Message-ID: <59EF4F27.3020009@arm.com> Date: Tue, 24 Oct 2017 15:33:11 +0100 From: Szabolcs Nagy User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: GNU C Library CC: nd@arm.com, Joseph Myers Subject: [PATCH 7/7] arm: Remove lazy tlsdesc initialization related code References: <59EF4CEC.8020301@arm.com> In-Reply-To: <59EF4CEC.8020301@arm.com> X-ClientProxiedBy: DB6PR06CA0012.eurprd06.prod.outlook.com (2603:10a6:6:1::25) To HE1PR0802MB2492.eurprd08.prod.outlook.com (2603:10a6:3:df::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ef20d719-b308-4eda-c8d9-08d51aec2903 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(48565401081)(2017052603199)(49563074); SRVR:HE1PR0802MB2492; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2492; 3:CPkAtvWXEDVMbykgZWEAxd+j2b2Ga2dZkqYs+cPWGeDE6OOFsGxHls50jMxYLVgg+pENeTbKRZTJEmCokXrQhCX/7/t28aoWEEsVsPzSRrk0JcmTZztRbTfzkvjSNvUdyqssLKHqUGll7/Ui7kRSSjtgv7mmHjzgR5sci/bEWeNacVpMjvWsA1wZpqbYdoL06YhrehwJjpZ6AFfY9iIdq4t1KZrH16bgfp5NBlHEc4TiDNZrfcKdf4e1bufcap3k; 25:u56g0JjGTHjSTgWGfU2E+0julibPzBSwGH+xxPVyLkdUw2pD5TEYX3yjpdz9CCQXECneUBNd3Owd8aMuK9Amx37BJ6i9zMZ9rKAbZjlyaRMS3+xDCyYrN74uOB9kCEtwAgnQPvlKdqx2BmZdmdT9hdXaMd7kRwrOEafWNvkqupkgTP9k2azviz4dA2hYMQu7Q/Vy2c83yOFVTOxEDrG8o+VmZuruUSF2iEx6RPjMGO/ijXk0cBVmoug3qbQMGK/pKin7MtDNAEskvxqUnONe+v7L65FCl/sJtzSxvVfsFer3ZTpO26GgRHxTaRfapYWc2MJ+ZpxI3ZNkrHwSd0k2dg==; 31:0lqgi45UuXNywEomJEAyqSlHNxQPI1U2kmEKcXFo9drvMVXAeD6aXZWJGA0Q3CgNOg4ASGKIfEwCwj86fLtczLs35DjLXJEsjboq07h872qSJxyV8sxZ9Fhl+d5Dl8lcEy8MqvWtevsFiqlw9xwyIkgEMvnE9pvspQl76NTP9XVuLMw0FY/coS07PSgyXTEbhLTTTohWzvH/Aoh0CBPrNCSE44X2Ph9iAl5ZS5BWGrk= X-MS-TrafficTypeDiagnostic: HE1PR0802MB2492: NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2492; 20:dVfwEEHUvkP+vozkJRZ4rrtnmWhEwa6PFhhuRq0OJ8KQFMCii678qdG0d6kJz2Zyzx103YBOvSIpyTohX5rheizAbmLy+MK+qx7u0w2/nqu7QLMLDbBvbttEYa9a9yebfDE53wbteuagD18VNwBmsQoaH4n5qEYRW6Kr4qjYJaY=; 4:fjTk0bkrb4OXF61TObCpO2S+KJjZqti08rMkkPsXVnjeaoNkoyqSeiLWFoIuiZOAJfiNG1KaF7QgJANUbzzMTwpKoxkTJUVNDN9uRTBhYReSbhTtpdAbqqJCb+WwMJAfgl+DAmlw0+FnvzH/I544JLJyNDyVMFa15n9q9Y2vBgN6oc1K0XFkwDS+ZjmvCf9xa2XPpotKzQ9gyJo0f3s2WpcHq4uw/Y39LVwN7QgiA/hEHsbAJdzJ+DI4WtIcqjqz5TiDw/pp8cRK5L5oegZeWkiJhUon/xlbgIolg7vtY/U= X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(2401047)(5005006)(8121501046)(3231020)(100000703101)(100105400095)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041248)(20161123555025)(20161123562025)(20161123564025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0802MB2492; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0802MB2492; X-Forefront-PRVS: 047001DADA X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6049001)(6009001)(376002)(346002)(39860400002)(189002)(199003)(305945005)(4326008)(316002)(97736004)(7736002)(568964002)(72206003)(5000100001)(59896002)(4001150100001)(270700001)(86362001)(6116002)(3846002)(80316001)(2906002)(5660300001)(4610100001)(189998001)(58126008)(81166006)(81156014)(84326002)(16576012)(8676002)(2476003)(68736007)(25786009)(8936002)(16526018)(16586007)(36756003)(64126003)(33656002)(105586002)(77096006)(6486002)(5890100001)(106356001)(53936002)(50986999)(76176999)(87266999)(83506002)(65816999)(65806001)(65956001)(66066001)(54356999)(101416001)(478600001)(2950100002)(6916009)(6666003); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0802MB2492; H:[10.2.206.69]; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2492; 23:Ysfkt4zeDbHV65kzY9L7JezhN3OHUsjaDKKj0UTh9zWBP0GBrtpkpqJp39IRFNTgN3mf+mL2GRM4nQIfGkbyjrwW0GyOjTzLsrjBo5h3Tt9nUGxXkvAVI4SW7nL/RXP4F8T/KE7aEUvHkTh7xlj32MlfmQ8igG3Vz5kCEKLagb2J2fVBNzuDMTfsNpiDkUkXbpzJuYtScsROdoUARAGJEIN7TUXN+ej13BoFoGjVVk/lZMXm5FkHRZnnsJwiVrb5DSxAZUOslOUDdXUeTApUcPfrIYrsAlYdraGauyM/Uw8aZAix8TzCjavlaSBum27CQzxrcoWYIqrber4eR67OUeSctD+8yaRdDpyOJRy1zvXSyKxZMywcydtVEZIfSQA8LV9x6/kBDP0lc1GCKF4tSCDBexrZ4HhOJ3gQDOsdV+rzt5yRKJaDPu9qGKKJpmDSc3JLEkzKoGGPzGcxwCTViA8+3yCZySHI7SurMrFTUH3L2Tmh4vxk+b1o1cLAO4JOO8RJQqDmXS9JNp2wZ2IfkzFKNcUKOUY+YolcOQNLIdWKPsmZ4wFOZhaE4ltgcIXHzLzGa+aBTxh09rvm+0j0AQZwNbL/QGibd7attyUcBgls3rKuKc/PemDaKK4lGSQJtjyaQPogg9LshMzQgKCWPrtfwrryQajemTCcjh50YGocos7m34sHz0psUAztsx4fxETdE+vFEo1Xgb98Ylr5aeib00WI0zU+9qpMazYQHguVHcriytxQos3WBfa3mhAEMysag3q7rPrI+ctWgSsLygi0SPpzZ7JuJmvK/1Ia/xZ1hdqb3lsOp2wyTmd0elsXVB0C/ySfSFFzVPeGlETE6tWaLarNJhPkv+WHNyGkIVFHOWzLYEvmTH+i+kbBBfIgcdHalaIylBdMEgohsuqEGjEFzmM0MGPS+HUFj8a/Cib8sMEO2w4xNou491k4hiKE0Oz7tSR83cKU9uedvc39zr8pmOlQssoP0Kx4xzUTnil8ug6Ful1x1+nQLRgU2Qn7Rvls9M0Mj7C+FA95aEBqYI/PWPdX7z68dcBN0u1VUo7OFSYvFyLK6TD/x3NS18YKHm0kErCWRTz6gHy0cu1n6vv6VydBYxCHDdicqiOQDZeX6xAN1YtxH7KQB9nhbcYdHNKi0c+zEcJvUxhppzq2FlyLawSpSg/QkYO7CkKrB7Ffz0xtKNozBvuwq1Bk35YE4rSxmzQRdeqsGaW4qISUm6kIrWP53UBBoVJa44iS3sRIaIchm5UFatFYJ2Aw4Yg5bncDPnxWvAcEGFsKBmMnVKj65L9h6tdhMhDi7aH8tX4m0kxpeIiJgAuV4CPnO6rPLqqiWSCrGoUoOBC0GOe4UWRRgNUKymeOQDqd/G0gdWAdMUxdA0Z5LceMQNcxxGs5g5T9mc9fSD8U9Gst/3RucQ== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2492; 6:sSMsP2dNmtJO/Rwv+Ctr2spRYFwpstErRRuX88UvyjPZMvicC6dLjc5PeiUIAXOMY2NwLd6dQDgOqwl6PMIXTMHyKMBHjg8eD6oTT64iES91axYBdrZTECI0FOznGIHl4awRMhrpArNeSrL9oNeyxRMdKcIVhu1nxLAuhGOAGtvc7ndImVqUNtsMcyGNoylxBPfxghmVFIM2F+2r66uxUlwJUdSMv+Rkx87A90d1U3hV5OsUs/oX2t/2Qx5tJF7lP/oojA9YO0uJ37rGU7n9iOWogr9gM0VuF299/lNubFybd7ZnuoHNc7UzCCa0ujAxw4LKGtHTEbKRBEK4TXHfLg==; 5:CvQP6JpUnjSGFVF9jlTXhyYJ8uIe+dmONyIuSQ9POfS34p+tYRTpyNaIA0l2HNWr55fAezsRZc7mW9q64TEPFsrKNRac1nvP+crawOwNZNgDFE6P6IR/jyZwizaLd4xHgJAMarTdqZiKfQi1cZCMlw==; 24:DViUletKqZLJk88csyLjzfbtC4uqX/9cgUHtCWWzV7QpvDLv4bHiW9J8vpD/JvmaoOeskNz0hQ1yPA6Im1ZwiH4canTa8W5Ml8ISvDRFW8o=; 7:j/XMFBjqzFp+KcDpXXxKB7awS7ByvxlmoxmxRWrlFGY05o/qbOVm2G2bhOXaC5T8tafnydaxgBa1GKQ2bKT9ef00c1eUEpXGZFIpEGwRuwPkVcc5xmIDDM8G1j7RMhv8x2lTL3MduM3IsLAPe7owGlEgbjZCD/xBXfSHsEp98Tdkuc1dwlRPdfjF6/m3kJm0MqKoXOpWcDVV9LlKaRPuRiCMS4ct/cqGgbTRfcPXe2Q= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2017 14:33:14.2073 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2492 2017-10-23 Szabolcs Nagy * sysdeps/arm/dl-machine.h (elf_machine_runtime_setup): Remove DT_TLSDESC_GOT initialization. * sysdeps/arm/dl-tlsdesc.S (_dl_tlsdesc_lazy_resolver): Remove. (_dl_tlsdesc_resolve_hold): Likewise. * sysdeps/aarch64/dl-tlsdesc.h (_dl_tlsdesc_lazy_resolver): Remove. (_dl_tlsdesc_resolve_hold): Likewise. * sysdeps/aarch64/tlsdesc.c (_dl_tlsdesc_lazy_resolver_fixup): Remove. (_dl_tlsdesc_resolve_hold_fixup): Likewise. From 1701d84d41369560d91baa319bd158bbd611afc1 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Fri, 20 Oct 2017 17:53:44 +0100 Subject: [PATCH 7/7] arm: Remove lazy tlsdesc initialization related code Lazy tlsdesc initialization is no longer used in the dynamic linker so all related code can be removed. * sysdeps/arm/dl-machine.h (elf_machine_runtime_setup): Remove DT_TLSDESC_GOT initialization. * sysdeps/arm/dl-tlsdesc.S (_dl_tlsdesc_lazy_resolver): Remove. (_dl_tlsdesc_resolve_hold): Likewise. * sysdeps/aarch64/dl-tlsdesc.h (_dl_tlsdesc_lazy_resolver): Remove. (_dl_tlsdesc_resolve_hold): Likewise. * sysdeps/aarch64/tlsdesc.c (_dl_tlsdesc_lazy_resolver_fixup): Remove. (_dl_tlsdesc_resolve_hold_fixup): Likewise. --- sysdeps/arm/dl-machine.h | 4 -- sysdeps/arm/dl-tlsdesc.S | 84 --------------------------------- sysdeps/arm/dl-tlsdesc.h | 4 +- sysdeps/arm/tlsdesc.c | 119 +---------------------------------------------- 4 files changed, 2 insertions(+), 209 deletions(-) diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h index ec3a0274e3..fb5468a93b 100644 --- a/sysdeps/arm/dl-machine.h +++ b/sysdeps/arm/dl-machine.h @@ -127,10 +127,6 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) got[2] = (Elf32_Addr) &_dl_runtime_resolve; } - if (l->l_info[ADDRIDX (DT_TLSDESC_GOT)] && lazy) - *(Elf32_Addr*)(D_PTR (l, l_info[ADDRIDX (DT_TLSDESC_GOT)]) + l->l_addr) - = (Elf32_Addr) &_dl_tlsdesc_lazy_resolver; - return lazy; } diff --git a/sysdeps/arm/dl-tlsdesc.S b/sysdeps/arm/dl-tlsdesc.S index e7bed02188..99d4b8327f 100644 --- a/sysdeps/arm/dl-tlsdesc.S +++ b/sysdeps/arm/dl-tlsdesc.S @@ -132,87 +132,3 @@ _dl_tlsdesc_dynamic: cfi_endproc .size _dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic #endif /* SHARED */ - -/* lazy resolved for tls descriptors. */ - .hidden _dl_tlsdesc_lazy_resolver - .global _dl_tlsdesc_lazy_resolver - .type _dl_tlsdesc_lazy_resolver,#function - cfi_startproc - eabi_fnstart - .align 2 -_dl_tlsdesc_lazy_resolver: - /* r0 points at the tlsdesc, - r1 points at the GOT - r2 was pushed by the trampoline and used as a temp, - we need to pop it here. - We push the remaining call-clobbered registers here, and also - R1 -- to keep the stack correctly aligned. */ - /* Tell the unwinder that r2 has already been pushed. */ - eabi_save ({r2}) - cfi_adjust_cfa_offset (4) - cfi_rel_offset (r2, 0) - eabi_save ({r0,r1,r3,ip,lr}) - push {r0, r1, r3, ip, lr} - cfi_adjust_cfa_offset (20) - cfi_rel_offset (r0, 0) - cfi_rel_offset (r1, 4) - cfi_rel_offset (r3, 8) - cfi_rel_offset (ip, 12) - cfi_rel_offset (lr, 16) - bl _dl_tlsdesc_lazy_resolver_fixup - pop {r0, r1, r3, ip, lr} - cfi_adjust_cfa_offset (-20) - cfi_restore (lr) - cfi_restore (ip) - cfi_restore (r3) - cfi_restore (r1) - cfi_restore (r0) - pop {r2} - cfi_adjust_cfa_offset (-4) - cfi_restore (r2) - ldr r1, [r0, #4] - BX (r1) - eabi_fnend - cfi_endproc - .size _dl_tlsdesc_lazy_resolver, .-_dl_tlsdesc_lazy_resolver - -/* Holder for lazy tls descriptors being resolve in another thread. - - Our calling convention is to clobber r0, r1 and the processor - flags. All others that are modified must be saved */ - .hidden _dl_tlsdesc_resolve_hold - .global _dl_tlsdesc_resolve_hold - .type _dl_tlsdesc_resolve_hold,#function - cfi_startproc - eabi_fnstart - .align 2 -_dl_tlsdesc_resolve_hold: - /* r0 is saved so its original value can be used after the call and - r1 is saved only to keep the stack aligned. (r0 points to the tls - descriptor, it is passed to _dl_tlsdesc_resolve_hold_fixup which - is a void function that may clobber r0, later r0 is used to load - the new resolver.) */ - eabi_save ({r0,r1,r2,r3,ip,lr}) - push {r0, r1, r2, r3, ip, lr} - cfi_adjust_cfa_offset (24) - cfi_rel_offset (r0, 0) - cfi_rel_offset (r1, 4) - cfi_rel_offset (r2, 8) - cfi_rel_offset (r3, 12) - cfi_rel_offset (ip, 16) - cfi_rel_offset (lr, 20) - adr r1, _dl_tlsdesc_resolve_hold - bl _dl_tlsdesc_resolve_hold_fixup - pop {r0, r1, r2, r3, ip, lr} - cfi_adjust_cfa_offset (-24) - cfi_restore (lr) - cfi_restore (ip) - cfi_restore (r3) - cfi_restore (r2) - cfi_restore (r1) - cfi_restore (r0) - ldr r1, [r0, #4] - BX (r1) - eabi_fnend - cfi_endproc - .size _dl_tlsdesc_resolve_hold, .-_dl_tlsdesc_resolve_hold diff --git a/sysdeps/arm/dl-tlsdesc.h b/sysdeps/arm/dl-tlsdesc.h index 2770af0260..bb2c731e74 100644 --- a/sysdeps/arm/dl-tlsdesc.h +++ b/sysdeps/arm/dl-tlsdesc.h @@ -48,9 +48,7 @@ struct tlsdesc_dynamic_arg extern ptrdiff_t attribute_hidden _dl_tlsdesc_return(struct tlsdesc *), - _dl_tlsdesc_undefweak(struct tlsdesc *), - _dl_tlsdesc_resolve_hold(struct tlsdesc *), - _dl_tlsdesc_lazy_resolver(struct tlsdesc *); + _dl_tlsdesc_undefweak(struct tlsdesc *); # ifdef SHARED extern void *_dl_make_tlsdesc_dynamic (struct link_map *map, size_t ti_offset); diff --git a/sysdeps/arm/tlsdesc.c b/sysdeps/arm/tlsdesc.c index ad79506178..329f26e308 100644 --- a/sysdeps/arm/tlsdesc.c +++ b/sysdeps/arm/tlsdesc.c @@ -16,130 +16,13 @@ License along with the GNU C Library. If not, see . */ -#include #include -#include #include #include #include +#define _dl_tlsdesc_resolve_hold 0 #include -/* This function is used to lazily resolve TLS_DESC REL relocations - Besides the TLS descriptor itself, we get the module's got address - as the second parameter. */ - -void -attribute_hidden -_dl_tlsdesc_lazy_resolver_fixup (struct tlsdesc volatile *td, - Elf32_Addr *got) -{ - struct link_map *l = (struct link_map *)got[1]; - lookup_t result; - unsigned long value; - - if (_dl_tlsdesc_resolve_early_return_p - (td, (void*)(D_PTR (l, l_info[ADDRIDX (DT_TLSDESC_PLT)]) + l->l_addr))) - return; - - if (td->argument.value & 0x80000000) - { - /* A global symbol, this is the symbol index. */ - /* The code below was borrowed from _dl_fixup(). */ - const Elf_Symndx symndx = td->argument.value ^ 0x80000000; - const ElfW(Sym) *const symtab - = (const void *) D_PTR (l, l_info[DT_SYMTAB]); - const char *strtab = (const void *) D_PTR (l, l_info[DT_STRTAB]); - const ElfW(Sym) *sym = &symtab[symndx]; - - /* Look up the target symbol. If the normal lookup rules are not - used don't look in the global scope. */ - if (ELFW(ST_BIND) (sym->st_info) != STB_LOCAL - && __builtin_expect (ELFW(ST_VISIBILITY) (sym->st_other), 0) == 0) - { - const struct r_found_version *version = NULL; - - if (l->l_info[VERSYMIDX (DT_VERSYM)] != NULL) - { - const ElfW(Half) *vernum = - (const void *) D_PTR (l, l_info[VERSYMIDX (DT_VERSYM)]); - ElfW(Half) ndx = vernum[symndx] & 0x7fff; - version = &l->l_versions[ndx]; - if (version->hash == 0) - version = NULL; - } - - result = _dl_lookup_symbol_x - (strtab + sym->st_name, l, &sym, - l->l_scope, version, ELF_RTYPE_CLASS_PLT, - DL_LOOKUP_ADD_DEPENDENCY, NULL); - if (sym) - value = sym->st_value; - else - { - td->entry = _dl_tlsdesc_undefweak; - goto done; - } - } - else - { - /* We already found the symbol. The module (and therefore its load - address) is also known. */ - result = l; - value = sym->st_value; - } - } - else - { - /* A local symbol, this is the offset within our tls section. - */ - value = td->argument.value; - result = l; - } - -#ifndef SHARED - CHECK_STATIC_TLS (l, result); -#else - if (!TRY_STATIC_TLS (l, result)) - { - td->argument.pointer = _dl_make_tlsdesc_dynamic (result, value); - td->entry = _dl_tlsdesc_dynamic; - } - else -#endif - { - td->argument.value = value + result->l_tls_offset; - td->entry = _dl_tlsdesc_return; - } - - done: - _dl_tlsdesc_wake_up_held_fixups (); -} - -/* This function is used to avoid busy waiting for other threads to - complete the lazy relocation. Once another thread wins the race to - relocate a TLS descriptor, it sets the descriptor up such that this - function is called to wait until the resolver releases the - lock. */ - -void -attribute_hidden -_dl_tlsdesc_resolve_hold_fixup (struct tlsdesc volatile *td, - void *caller) -{ - /* Maybe we're lucky and can return early. */ - if (caller != td->entry) - return; - - /* Locking here will stop execution until the running resolver runs - _dl_tlsdesc_wake_up_held_fixups(), releasing the lock. - - FIXME: We'd be better off waiting on a condition variable, such - that we didn't have to hold the lock throughout the relocation - processing. */ - __rtld_lock_lock_recursive (GL(dl_load_lock)); - __rtld_lock_unlock_recursive (GL(dl_load_lock)); -} - /* Unmap the dynamic object, but also release its TLS descriptor table if there is one. */ -- 2.11.0