From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50051.outbound.protection.outlook.com [40.107.5.51]) by sourceware.org (Postfix) with ESMTPS id C2420384C003 for ; Wed, 13 Jan 2021 09:10:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org C2420384C003 Received: from AM5PR0502CA0001.eurprd05.prod.outlook.com (2603:10a6:203:91::11) by VE1PR08MB5647.eurprd08.prod.outlook.com (2603:10a6:800:1b2::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6; Wed, 13 Jan 2021 09:10:52 +0000 Received: from VE1EUR03FT045.eop-EUR03.prod.protection.outlook.com (2603:10a6:203:91:cafe::a8) by AM5PR0502CA0001.outlook.office365.com (2603:10a6:203:91::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3763.9 via Frontend Transport; Wed, 13 Jan 2021 09:10:52 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; sourceware.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;sourceware.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT045.mail.protection.outlook.com (10.152.19.51) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6 via Frontend Transport; Wed, 13 Jan 2021 09:10:51 +0000 Received: ("Tessian outbound af289585f0f4:v71"); Wed, 13 Jan 2021 09:10:51 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 3716cdaf7826c8e3 X-CR-MTA-TID: 64aa7808 Received: from ec3e5fb7dd69.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id DBF81290-DDFC-4830-B4D6-DACA3B2AF74C.1; Wed, 13 Jan 2021 09:10:44 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ec3e5fb7dd69.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 13 Jan 2021 09:10:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kpGYJUSDW64st9f+p1LMmVcyxmla5S1XYhpFyXEtKAlXrPURjtuP7f9GHykGZ0djEBn6pKVcw5hVm90TkWj70J1khziIjgViFntf5CaA/TIlMGXeY6T6YLdCt+gI7ZjGQG+e/x2nkwImZq6dWmo25PLptQSWwqUztMGwQubvUThPEp58ifnprxbmZDVhM0IzMaHr7Od6oexMQrW9eHd4XVzqtF755xOAOqYdVIUwLuokSQEc8ZU8baPKs8/ewaPG6QyZkklgrmguZdgC8OyHSVK541ueXOt/SmMy6pICeg486Q0THwMF9aqzay0saJMPcOsMg6s1Or1HDvqiHOn3MA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3DmKuNwKktjj7CXfKmh88if7noIv3gU32RfZe3j8Wsw=; b=U+iUuM07NMRyo6jv2TXEfX1q51q7npGVPFHHeRFonQcwwKhbzjIlVahUFu+543uvWsUyJp2ilrXMXfcEakF8gJ+7ZHZ//8r9Z69BSARl8O4sCyE8sxbFvWGTQqeKEH7nxQSCnqqabxFlso3af7OYVHb+RZAUaMC05x977QMT8aszfMY5tSCs4wgRtn8pxShKeMz4xJXh/rZdHTinRKnizdQ6GpdjEQvXWBYwAK8lYR28wynsTGIzTqxbTCwtjiuspk8CcvnuMGamN227ccL51GQYxB9+Jstvi6FcrD+GWion1vCirOPlpZMq6mibRBlnLKPXpn7CGi+YD7bDxwyChQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Authentication-Results-Original: linaro.org; dkim=none (message not signed) header.d=none;linaro.org; dmarc=none action=none header.from=arm.com; Received: from PA4PR08MB6320.eurprd08.prod.outlook.com (2603:10a6:102:e5::9) by PA4PR08MB6048.eurprd08.prod.outlook.com (2603:10a6:102:e6::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6; Wed, 13 Jan 2021 09:10:43 +0000 Received: from PA4PR08MB6320.eurprd08.prod.outlook.com ([fe80::700f:ddbe:a347:ee4f]) by PA4PR08MB6320.eurprd08.prod.outlook.com ([fe80::700f:ddbe:a347:ee4f%6]) with mapi id 15.20.3742.012; Wed, 13 Jan 2021 09:10:43 +0000 Date: Wed, 13 Jan 2021 09:10:41 +0000 From: Szabolcs Nagy To: Adhemerval Zanella Cc: libc-alpha@sourceware.org Subject: Re: [PATCH] elf: work around a gcc bug in elf_get_dynamic_info Message-ID: <20210113091040.GZ2379@arm.com> References: <20210111151146.27850-1-szabolcs.nagy@arm.com> <60f29111-84e2-a085-8acf-8b6d30552536@linaro.org> Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <60f29111-84e2-a085-8acf-8b6d30552536@linaro.org> User-Agent: Mutt/1.9.4 (2018-02-28) X-Originating-IP: [217.140.106.49] X-ClientProxiedBy: LO2P265CA0368.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a3::20) To PA4PR08MB6320.eurprd08.prod.outlook.com (2603:10a6:102:e5::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from arm.com (217.140.106.49) by LO2P265CA0368.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a3::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3763.9 via Frontend Transport; Wed, 13 Jan 2021 09:10:42 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 34419daf-52c7-41ab-2413-08d8b7a32027 X-MS-TrafficTypeDiagnostic: PA4PR08MB6048:|VE1PR08MB5647: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:46;OLM:46; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: oyqWuOdndzw5Es+QqT4yG+gksbgAZuBXykH6LKqaj5gpR5UytGbe1+p5qnF7ZxmQIo/woVTMSRW++HDDYyRWZwKbaFbB5NA3ptQcPuVBM3Ky0afwQf2kd0uepvtY1GMSwHTk5U9BbwbTjDti3Xw/eR5VJ0EgNqLtZRYpYrmm4UOdEvDmxekNfMiAf0Zw7ttpaBh6aH1A9Gyo/yCSOzUIqvJsbUS+z5Z8McDNp/u1LvMj3DDE2bPid+EF5+wAEV+IQjXskHQAWhWaXbCroBYw2RIgtxuas7TxV/tHZQapIyXwzSNss+aH5b6W4EmKsY0xISprJqFT+wrijPeU5bIzk5sZi1qIe17aHlJ9ncBYyGeYSiZHF9bsOsIfBmKGy6HLgqrIw7nbcCTeT4fFeDMfGtlLq0ozYxMVKjZeI8wfc6AJb3n5CEX0P/P3un6z3PR5v3XpNyUc86/rPnVwkPyRFH3dFrkh1ZzEiZL0x0CKMzpXEeTrF0BYtjsQpSuIg18YCjig5Sd752PCVofVxyO1eg== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA4PR08MB6320.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(346002)(396003)(136003)(39850400004)(366004)(44832011)(8886007)(53546011)(66476007)(86362001)(16526019)(956004)(2616005)(186003)(83380400001)(66946007)(1076003)(8676002)(478600001)(7696005)(52116002)(36756003)(4326008)(316002)(6916009)(66556008)(966005)(26005)(33656002)(2906002)(55016002)(8936002)(5660300002)(461764006); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?TkgwWllLbkFmYWFCblE5dnAydUZPTWFGY1paMnl5Zmg0ZnVmaWpxcUVlWlVX?= =?utf-8?B?bjZTT3d2TERoRjdFVE1RQ21CdTdTRzFaY3pJelRwWFU0RUdDRUNHek9yTnh1?= =?utf-8?B?Qm5nTmcvemtwblVNRmxWRkRSelZDQ0pReDFQRTNzOWJvSitDWXdvYVUxbkdP?= =?utf-8?B?Zlkyays4V2doNnlNQmY2d3BDY0k0RkpldEJNS0owZzljRnBwNjQwR3pnTGZ3?= =?utf-8?B?UWQyVFJVYnhpcDEvTURTZ3ZXRzc4c3E5eVB6QkJaZmFkcGo2YWdkaW5YUEFh?= =?utf-8?B?dHYrUHZabFk3dUVjc1UvbFBtd3NVZXBOc0dGTGdwNzE4ZlVHQUQycU9JUldz?= =?utf-8?B?QjFMUWR2TTU1RU9LUXA3S1dsQzZpRjZvQjhNVmpqeW40MWwrVTZxYWRTbElk?= =?utf-8?B?dlFCelFFWm5oWWpmbm5IanJ5UGtBRDl2MnlLVTllZkxUdmZ4MDQ2eUVNb1RG?= =?utf-8?B?QWg1RS9pWFJXSXRjNmdXRllzdVFjSUZBWFJUbVZyN2lmTXBiVHFRNFZRZTBD?= =?utf-8?B?MnorTVFEUk5qeWVQVmJwWEEzWHdiYnhvYW12SW5Fc2JxQ3k4Vzc1RmRPbFQv?= =?utf-8?B?ZmRGRG9acUtNL3BBd0NySWJtTDdPYUYwclRFNjlOdGdQVXQya3Q1ME9WWkpZ?= =?utf-8?B?eUhHWjBQTlgwRnNBeG9zV0JxVDJ3NHFNUVpKRDcrNDNUSEFjajBUQXQxbFpv?= =?utf-8?B?SEc2QzNUUHBlSU82RXA5MUIzYlUzL3VvNlJDSVR3bWJ4dW5Ic29GaDVGbXVq?= =?utf-8?B?RnZrNHkyczgxUkVLNGtBZWI3T00xdGZHYktobk4yeEZFd3RNd0h0QXhyRWla?= =?utf-8?B?RVpTTFhVMFNLZSt5SnlIR3BLNTZGSldnaTJ1d2tiRlVaRzhhN040amdTaGdm?= =?utf-8?B?NzBtS1pWbEhtZXpPbGJ6cW1FUGcxcTllSHdzQ3o0Rko2Zy85RkY2WjM3d2Ez?= =?utf-8?B?dXI1cVN2ZTdzbFFzWmpOMDFJT0lodlllTWhEaGNzeE1udjB3L1Q3c1ozbnJv?= =?utf-8?B?SE5QTGJCazh4REtONEFGVFh5SU42Umh5QUVnajIyWENGN2lQcXU3KzNKNnN5?= =?utf-8?B?NlVFY0FHZGNDcE0rdFpsQ0toK0J3UnNBMFBwakRZL1dsc3FDdGhyWGtrZEwv?= =?utf-8?B?c2paakNqVnhRdGRpNXk3R1o5RlZYaDBaVGdXSjNWWlAvZmhla3dqelFYbTU2?= =?utf-8?B?VWVHNURyU3V5N0xKU2VlRWtVcHVtOTMxNzFMWDFacGZiQ1ZzczIyK3NvcC9R?= =?utf-8?B?bHBDdHBQcEl3TFY0WjhjQWRONnhkdk5TVC9DTjltQVJFeWsrRmNZZG1oTGFa?= =?utf-8?Q?DVj5e3SOb7ZXTG4eyUsgcCnl85Tmfgr2YG?= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6048 Original-Authentication-Results: linaro.org; dkim=none (message not signed) header.d=none;linaro.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT045.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 66f63ff6-9d6f-4379-192f-08d8b7a31af5 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0q0QnwIdrOeMfvrN/h0jgJhWvNPtlhIXqGojNzxb8f0QKAfzYgQbOItmFoGx2td6Kf++kUH2bgMBqe+4FcaJo2kzzX0iK7wnHX/l/n0Z04x2ArCucy3zk4fBaDsxA97wQYfbnZ8oGavyq01kX1FaCJKi8JPlufwIDri1gd8oZsLsBejbHycGN3JWrY+bidESwUm8cmnYGPqqvPY3vvf0Syv9Vj3X5f7O2+NtRm0Qw4wxW66i8Q8QNcXAhZhT777gqgiu3360gyeUmRTLe6pv+mM7olkVQj/8ekTPPOogpNWQjNYI4mc1SSIvIShV8khaa89GYdpFRG6feshdQzq8Ks9uW+hld5se+vT2ZSR2P8n2yGhlznPdaXa2I+DhSxGMWeyYQVWW29JgO3zoU38MZ0mHpOnGi/bDMmMjeMsoZbHbt1g3Wzz2HKOug27enic45qeH3GypCiO1fRc43uSc6LJcCO2W3BXc/hdX+NFyrcPfukphLIR8xJZauEo1YgPJIwy5BVznQwhtWv+To9SD1KxFfMxZfu7lO8qCxwXFVDMEXNkt9B4UmnpB0NGFUNQg6D32JBbosfhmshn0k9wQFnR01L2TEfYeClTlGH1WTqc= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(346002)(376002)(136003)(39850400004)(396003)(46966006)(478600001)(4326008)(316002)(8676002)(6862004)(53546011)(7696005)(1076003)(26005)(34020700004)(956004)(44832011)(81166007)(33656002)(70206006)(70586007)(2616005)(8936002)(5660300002)(2906002)(8886007)(47076005)(83380400001)(966005)(82740400003)(36756003)(16526019)(82310400003)(55016002)(356005)(86362001)(186003)(336012)(461764006); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2021 09:10:51.8554 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 34419daf-52c7-41ab-2413-08d8b7a32027 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT045.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB5647 X-Spam-Status: No, score=-7.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, KAM_SHORT, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Jan 2021 09:10:58 -0000 The 01/12/2021 14:52, Adhemerval Zanella wrote: > On 11/01/2021 12:11, Szabolcs Nagy via Libc-alpha wrote: > > Since commit 2f056e8a5dd4dc0f075413f931e82cede37d1057 > > "aarch64: define PI_STATIC_AND_HIDDEN", > > building glibc with gcc-8 on aarch64 fails with > > > > /BLD/elf/librtld.os: in function `elf_get_dynamic_info': > > /SRC/elf/get-dynamic-info.h:70:(.text+0xad8): relocation truncated to > > fit: R_AARCH64_ADR_PREL_PG_HI21 against symbol `_rtld_local' defined > > in .data section in /BLD/elf/librtld.os > > > > This is a gcc bug: > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98618 > > > > Rewriting the affected code in elf_get_dynamic_info > > seems to make this issue go away on old gcc. > > > > The change makes the logic a bit clearer too (by > > separating the index computation and array update) > > and drops an older gcc workaround (since gcc 4.6 > > is no longer supported). > > So if I understood correctly this bug affects only gcc-8? Or > does it affect older version as well? From comment #3, Wilco stated affects gcc-7 and older gcc too, but i see this was not clear in my message. > it was fixed by on gcc-10, so I take it was backported to gcc-9 > already (since you didn't see it on gcc-9). it seems to affect gcc-9 too, but a change in how constants are constructed seems to make it less likely to hit. i'll update the description. > > I did a sniff build tests with different gcc (8 and 9 mostly) on > different architectures and it seems ok. > > LGTM with the just nit below about VERSYMIDX. > > Reviewed-by: Adhemerval Zanella > ... > > - while (dyn->d_tag != DT_NULL) > > + for (ElfW(Dyn) *dyn = l->l_ld; dyn->d_tag != DT_NULL; dyn++) > > { > > + d_tag_utype i; > > + > > if ((d_tag_utype) dyn->d_tag < DT_NUM) > > - info[dyn->d_tag] = dyn; > > + i = dyn->d_tag; > > else if (dyn->d_tag >= DT_LOPROC > > && dyn->d_tag < DT_LOPROC + DT_THISPROCNUM) > > - { > > - /* This does not violate the array bounds of l->l_info, but > > - gcc 4.6 on sparc somehow does not see this. */ > > - DIAG_PUSH_NEEDS_COMMENT; > > - DIAG_IGNORE_NEEDS_COMMENT (4.6, > > - "-Warray-bounds"); > > - info[dyn->d_tag - DT_LOPROC + DT_NUM] = dyn; > > - DIAG_POP_NEEDS_COMMENT; > > - } > > + i = dyn->d_tag - DT_LOPROC + DT_NUM; > > Ok. > > else if ((d_tag_utype) DT_VERSIONTAGIDX (dyn->d_tag) < DT_VERSIONTAGNUM) > > - info[VERSYMIDX (dyn->d_tag)] = dyn; > > + i = DT_VERSIONTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM; > > Why expand VERSYMIDX macro here? > for the same reason VALIDX and ADDRIDX are not used below: i think this makes it clearer what's going on, you don't have to look up these convenience macros in ldsodefs.h to verify that the checks are right. but i can undo this change. > > else if ((d_tag_utype) DT_EXTRATAGIDX (dyn->d_tag) < DT_EXTRANUM) > > - info[DT_EXTRATAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM > > - + DT_VERSIONTAGNUM] = dyn; > > + i = DT_EXTRATAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM > > + + DT_VERSIONTAGNUM; > > Ok. > > > else if ((d_tag_utype) DT_VALTAGIDX (dyn->d_tag) < DT_VALNUM) > > - info[DT_VALTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM > > - + DT_VERSIONTAGNUM + DT_EXTRANUM] = dyn; > > + i = DT_VALTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM > > + + DT_VERSIONTAGNUM + DT_EXTRANUM; > > Ok. > > > else if ((d_tag_utype) DT_ADDRTAGIDX (dyn->d_tag) < DT_ADDRNUM) > > - info[DT_ADDRTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM > > - + DT_VERSIONTAGNUM + DT_EXTRANUM + DT_VALNUM] = dyn; > > - ++dyn; > > + i = DT_ADDRTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM > > + + DT_VERSIONTAGNUM + DT_EXTRANUM + DT_VALNUM; > > + else > > + continue; > > + > > + info[i] = dyn; > > } > > > > #define DL_RO_DYN_TEMP_CNT 8 > > > > #ifndef DL_RO_DYN_SECTION > > > > Ok.