From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00061.outbound.protection.outlook.com [40.107.0.61]) by sourceware.org (Postfix) with ESMTPS id F0E573857034 for ; Wed, 24 Aug 2022 06:38:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F0E573857034 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HYQKSaveyaNEy5j9Jz5Qaj4lFd8rNKZefxtH08OYi5hsuN6IdCUezxuRsyXcJslWWtZLjdjNtI8Q8/TmvTJIbWjzwlFQdbRnTjCEqB6q/MF5T4QH7ZVlhKjhHOH+hZ0cDvRAuXFP0ZSYarqcZprmjQWmFUmhganVAqb/Nwi2w6Det3T2HnjiNf64u4dfd4X0R5Y7WakvMAG50TtwURwr/HzOdRLa1wSbpfRJhFuQXVBzjlBChAdKZ58AapiwSM3gRuY7hjt+I4dhy9qzWbAD4F1tiQOPleaOAp40/bJJ16bzTLFVdUUK4afTA5ZE2pV7AhX+U2nTkQG/7iCXhHm6Cg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=9DIxIGytwtS8l6DD6kAjgzrYuBRvgipyD47MZg9JJdM=; b=nfWTRtpZM0WJk6XEum/tmJkqzLF/s/xfTYpPcGX7sVEnK8CbvhXrn94lLRpYyzpLTTYYhlGJBeEC5mfHRxjumfzcIRwrLN/YK+sqTyjKD6/3QaObe3UIwWyasGl6ZCOw4bMVmcKvBPBhVyRZZuq5KmZiro0ZGmaS0pRANZ3HNTi9EKIKylo8NzEzqlTJpZkBveK+juaQccH0HeO/Qafs9EfKo4poeh05QHBuvUMkgxDn5XwYK9Yp8MClyks/nJollJ0yVZfqEgWyl7sO13BRhcAsYQFsgt2knP5l4U2hSyY22fxRVFuxSMHdu6pHxfQ4+N0jyVtSb4ptxWbFG9evmw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9DIxIGytwtS8l6DD6kAjgzrYuBRvgipyD47MZg9JJdM=; b=pY1Ny+uKuYmVVMfUNCQMPlrOJ4vElmcogakIxMJXPeI3sXSjfJi8AE3kZxVK6H92kQMrMxazoZe8/0QEYbSoS5Pkt9ugWMDHasTZQx96KLw93TdWg256ts7sB5gv1YSCwpXXeSsVo3+jAlXcp7VhCYvkb9QupU0KPHVy55Cp/UHhMhqYMAZnVhk3z32o4jjz7Cum2K6q87uWe9SgDTU+APG4mW77Q4JF8YIFIe10EqU+Yepn9Ila4bbFXbEGv1lh+Mk1pH/TGHNYb709UjyQZjhuPPB0RlgT6YWAnVyCchVs2pHmT9A1+GXcfh2UJZmUrcPE+AWH5O5tKVpmOYw92g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AS8PR04MB7656.eurprd04.prod.outlook.com (2603:10a6:20b:29b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Wed, 24 Aug 2022 06:38:18 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2d5d:bae0:430f:70ad]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2d5d:bae0:430f:70ad%4]) with mapi id 15.20.5566.015; Wed, 24 Aug 2022 06:38:17 +0000 Message-ID: Date: Wed, 24 Aug 2022 08:38:16 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.12.0 Subject: Re: [PATCH v3] ld: Make archive member file extension comparisons case insensitive when cross compiling too Content-Language: en-US To: =?UTF-8?Q?Martin_Storsj=c3=b6?= References: <58cd3a02-08bf-972d-c4e0-f39622d849c0@suse.com> <20220823211154.1775739-1-martin@martin.st> Cc: binutils@sourceware.org From: Jan Beulich In-Reply-To: <20220823211154.1775739-1-martin@martin.st> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: AS9PR06CA0223.eurprd06.prod.outlook.com (2603:10a6:20b:45e::11) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 61a67bd0-3a9c-46a4-50ab-08da859b3aa4 X-MS-TrafficTypeDiagnostic: AS8PR04MB7656:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2SwpTpsHxtxWtLGCCZZoNF1GbDCXUG9cs2kh6Yt9a2VH9pDeQYoQUBtEI1I/6klY6bmK2aj/LszUb947FlcfcLi667dnCsiCVUP/MYjLdeiMy7lx1q/uA2CJFHrmo9k0YKI2ciNl/CB/f8rlpYKBjDcLsBVh1UmlqMni4rakUjEORxD7KnY0ScDesVQEYa3Rxmv0/9M2zQQy7B3rvnEbxfWGo8auOKxFdEbS5PGnQcgTWT+/Gbm+c5SyxIOUf23WSpTY3PY7wvffsXHriYPdhZOrRQK02gwXXeF4ISlZKx47vYvgPJzJacDIuNSD/nsJd7MBH+UKOHjvQ4xBdutMxsblhn3qXzsxHt1j/rI5YfOroX9AvZJXkm7g5Yr8gbXzcSRl8TAfDpwUQz0g3aeh4z/h2u3/cTAfxgMD46GXkVzCbBhsUPY2DT7U1pyrx/oVQHYNrrXVZcm60q2JTezPHZ6eEBvCTE426B3WZb4+t2MT+xKlih5SP7vb9/GOkMFTSbCZh5ncxZ1OOok1GFF0gFp/K+JbQb+f+TqD3iRNaG+j9HvvV3rthuJn03URBOP1zzlLb80u7peNlKS0cbWeKkHpbUm5RNQX/033oC+8nQlvBFDA76jCSz6swfdh3HYvTtjNFghJsk0GOjU6M3bESSZO8t4oBWodBfBlZ9D63t5b7vMOicvgGD3EwlPA74yNKIYA6QpOmuyOUpjQTMgs/Tf0xbzLhYx8sgjlxwk2b8YU1vquh28TAcouL9uvRI7Ualck86FwDTA0N4BMv+KdfTOoevv9HBBtFBnn5PSWvRM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(346002)(136003)(39860400002)(396003)(366004)(376002)(8676002)(66476007)(4326008)(66946007)(86362001)(31696002)(316002)(6916009)(66556008)(2616005)(6486002)(186003)(38100700002)(478600001)(26005)(6512007)(53546011)(6506007)(41300700001)(36756003)(31686004)(5660300002)(8936002)(2906002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SUNweDdOZkZ0M0NISXp0TEZmc2Q2QUEzcWlFSEwvMlJFekZJMUtPNnI3Zm16?= =?utf-8?B?OERnMjd3RDRCTXNsSnloMjdpYURqY3NJYlRoYWJEUFdvVWhWT0doQTl6aUVF?= =?utf-8?B?WFYxL3JOdWl6VDB5U1ArSGFZY080akZZSk1sOHRVN3FreE9wdkEzL2RBRHB6?= =?utf-8?B?ZlNnZGFYcGY5RTVHWkJHeVVwRThmTnFtcHBnZElodFhBNjZDdHlwR3NaSFlU?= =?utf-8?B?VUd2eVFQWmVNWXdwYnY3UjJhQkZRQmRka0QwOFhnVVBNZlg0MmZRVjRqZGlP?= =?utf-8?B?aktSUFZKQnN1TlFJNjljT3JyQVF4V01Lc0dKcDYyTFh0M1lZcWlvY3FRWWhK?= =?utf-8?B?bFJwWDNWcXVsNlFMcUNxZFc1b2NIWHV6RjBxVk5aOXJIUFhJMlFDMW1mWkJ4?= =?utf-8?B?TGdhYjhtcldBNmdBaFNlNkdTallxYVM5dDBGRFBDbmVYN2VOaDFJbll2RzlX?= =?utf-8?B?eGovTmdtb3dYTEVlQzVOZEtEVWpHMHBHUVVXa2NPMDlaZEY0ampQSUg3Mmgr?= =?utf-8?B?ck9tSjBuZ09WdTl0Z2RvTXQxTFlxSG13dFJ3aHBjelhCNCtaazFya1hZYVoz?= =?utf-8?B?ekhUc0pGM1RZQis2RFR6bHpaSk4yMHdqYWhOQko0bnUwZ2hMV3pNQVVEemJR?= =?utf-8?B?T1lrMXF1dFBWTDFMVWtsRERtZm5HL01GaDAvU0FaMnc2RDBHemd6MncyODB2?= =?utf-8?B?VHV2RDRvSzZRZW9JUGNPK1p4cTFSSzRtTHpSVXhnZXlob09PTWpYSlRNWTZt?= =?utf-8?B?c3RBb3dvVTM1ckpENkV6MzNYaXNMZkRPcEpwUjBHMy9TS1NpRStLVUo1RkJs?= =?utf-8?B?QjNyNUtYTUE0Ukp0UnYzZVE4V0MyemJCZ2xYemYxdnVLeXFWMjBsWDlkY3ZH?= =?utf-8?B?Q1JGTy90Mmx3VTYzZzRwZkZOV05NZHc3UVA5SFVDUFhwWkpSOVdqcU5hd2wv?= =?utf-8?B?VnpDOVlYWStDWkZFTmVMaHVzQnFYYnpJTlJkcnk1K0RuTTh3cE1zeGVTbkJz?= =?utf-8?B?ek95T1BlRmE4RjVQdWxHWGJZSzhZNnp6Wm4wVFJ5MzYvUDNPbEliRDg0RFkw?= =?utf-8?B?NjV1bXJhWjZVOW9mWHIzN1lodncxVlVreXZqZUtCV1NFNU9EalNVK2haTWJz?= =?utf-8?B?RUxVVHZYOE9vT05zYVAxZGhCeHdnRVdIenNQOG1HUUhpKzVuMndMSGF0WnJ6?= =?utf-8?B?NVpBUWxsTXJDTC9TTUdwUGg0ODI3VTIwYktBVVNFc1dNTUQ0S1BuZkZSL1hC?= =?utf-8?B?cW02K2xjc1pwZ2pMTFBEN01YWmNOUGNFbk05RGRlNGpaQ0xkdkVPZ25SUjNu?= =?utf-8?B?bG91aElUQlpOaUt3T2U0ODVoeG9kVC93VzZBUDBIRTFLRFFxN0FKVmQ0dDBk?= =?utf-8?B?c3JUK204ajFMSkZON1hHTWZiYlZ0NnBUNnpDMlcxeXBNbFEzUXFGV2xtU0gv?= =?utf-8?B?MzJoUVlBb1RLUU5vNHRIQ2ZhU3JtUWgzSDlzSWFyWU44U2lUR2JwRUpseGxr?= =?utf-8?B?U2tKM24rRTBhVHFpUEpFVnpBeXl1ejRmOWhtVmxQRVJMTDlzS0xDbVIwVEo4?= =?utf-8?B?VkpmVlNoUU55dzZlVFcxSnAxMkU0dHlBNThZT2FLM3c1RklXZklab2RacmI1?= =?utf-8?B?ditUblRjcWpEQzNiODkwMGttMWNHKzFiWWRDMXZWZlVUNUtDSUVJd2VlM3NQ?= =?utf-8?B?ZlIyajFNbWwxNnpNdnBCM2ZYZmErMVVqVTdwMllvRmpOK2taTGl5Sno2Y29X?= =?utf-8?B?bkRSTUZrUmpBOWR5TEpSK3FhVEpWd2xja2d1Qks0S3RQdjdubW1mRGVuVW1o?= =?utf-8?B?Zy91a2xqTUVNMWtYNlFvS1p1djZBb3hEa3R2NHVkWVNlUXRmOG1Eb1JITWlo?= =?utf-8?B?QWMwR0xvRXdKVmwrb1FkTVpCQ1NEK0JyV1o0UTRidTV1NHpQM1NNaHQrWVF5?= =?utf-8?B?MjFSY3JpVmQ0dEtoK1Qvb0NOOWJWZUpvMXJwN2daYnkrZ0lOWER0bE9lWEhF?= =?utf-8?B?ajJpTHp1L3k4RzNXbjdUMlYxN25hMDdkbUFrNUVOVHdQR1duME5zZmdqUk5n?= =?utf-8?B?MkowZFlUTjlaeDVuTTZWZ2RsUldDSU1GUER1ZXh5WTdtUnFYdHBtc3RPeGZ3?= =?utf-8?Q?8WD4+HdmmLFXkXAUyvTLvQEmQ?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 61a67bd0-3a9c-46a4-50ab-08da859b3aa4 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Aug 2022 06:38:17.7868 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ydzFnvjzD4qIKgfcqauRIGw8qP/a0yuXINVp2M62D0HFrfTw7DbXFvTfJQVIKQ3lAARoRBM2jZi768a+d22sjA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB7656 X-Spam-Status: No, score=-3030.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 23.08.2022 23:11, Martin Storsjö wrote: > On Windows, filename_cmp is case insensitive, but when cross compiling > with libraries that may contain members with uppercase file names, we > should keep those comparisons case insensitive when running the build > tools on other OSes too. > --- > v3: Renamed the function to fileext_cmp as suggested. (This also fixes > building on Windows, where there already existed a non-static > function named stricmp.) I was actually surprised you did get away with using the earlier name; I did have the potential name collision in mind, but didn't spell it out because there was an (imo) more relevant reason for the rename. > --- a/ld/emultempl/pe.em > +++ b/ld/emultempl/pe.em > @@ -171,6 +171,23 @@ static int is_underscoring (void) > return pe_leading_underscore; > } > > +/* A case insensitive comparison, regardless of the host platform, > + used for comparing file extensions. */ > +static int fileext_cmp (const char *s1, const char *s2) > +{ > + for (;;) > + { > + int c1 = TOLOWER (*s1++); > + int c2 = TOLOWER (*s2++); > + > + if (c1 != c2) > + return (c1 - c2); > + > + if (c1 == '\0') > + return 0; > + } > +} I'm not going to insist, but since you're touching all involved call sites anyway, two suggestions: 1) Don't convert the 2nd string to lower case, but instead require that this always be lower case when passed in. The function isn't a generic string comparison one anymore with the name change, after all. 2) Omit the leading . in the string literals passed, incrementing the first argument to compensate. Besides saving a little bit of space and work, the function name now also carries in its name what is being done, so the leading .-s don't really carry that much extra information to the reader anymore. Jan > @@ -1666,7 +1683,7 @@ gld${EMULATION_NAME}_after_open (void) > extension, and use that for the remainder of the > comparisons. */ > pnt = strrchr (bfd_get_filename (is3->the_bfd), '.'); > - if (pnt != NULL && filename_cmp (pnt, ".dll") == 0) > + if (pnt != NULL && fileext_cmp (pnt, ".dll") == 0) > break; > } > > @@ -1683,7 +1700,7 @@ gld${EMULATION_NAME}_after_open (void) > /* Skip static members, ie anything with a .obj > extension. */ > pnt = strrchr (bfd_get_filename (is2->the_bfd), '.'); > - if (pnt != NULL && filename_cmp (pnt, ".obj") == 0) > + if (pnt != NULL && fileext_cmp (pnt, ".obj") == 0) > continue; > > if (filename_cmp (bfd_get_filename (is3->the_bfd), > @@ -1701,7 +1718,7 @@ gld${EMULATION_NAME}_after_open (void) > then leave the filename alone. */ > pnt = strrchr (bfd_get_filename (is->the_bfd), '.'); > > - if (is_ms_arch && (filename_cmp (pnt, ".dll") == 0)) > + if (is_ms_arch && (fileext_cmp (pnt, ".dll") == 0)) > { > int idata2 = 0, reloc_count=0; > asection *sec; > @@ -1857,7 +1874,7 @@ gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBU > #ifdef DLL_SUPPORT > const char *ext = entry->filename + strlen (entry->filename) - 4; > > - if (filename_cmp (ext, ".def") == 0 || filename_cmp (ext, ".DEF") == 0) > + if (fileext_cmp (ext, ".def") == 0) > { > pe_def_file = def_file_parse (entry->filename, pe_def_file); >