From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2057.outbound.protection.outlook.com [40.107.21.57]) by sourceware.org (Postfix) with ESMTPS id 562EF3858D33 for ; Thu, 2 Mar 2023 08:58:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 562EF3858D33 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=fItlsfjvu+GiuzDMpKOb4HcBpUNsAtNf6Qtgo8LrlLoMUxUyviAk1fEjVS3AX+8C/bn6cOXcvN13OYBWEyJ8yyUO4dwfxqy52gdfnJkkrm6fVfTFDYCrl4cQaXOkvap+MdapCDoBUJPP5tW1rh+ZY2pIK2gzIMzYuwWc0ghHhB4JydJmQwQy/m6BiAJPebKEkCbVuoIu43gKqySQ4ktK/phtjlM+/Na7yaZpvsa1K+26bL67jBZMJQARg7WWBQoXgUIphNY/iaQOjUUF4s8+8boQq3PNmFDu1/pLxf4Gb5haIq3uq2wuVl4mCj1tsaEqrDrz/87Kw2Ft5rTmWOxa9Q== 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=2lq7Bh6akor6R46iOU4xykm82sC4mJ5TDYDBqjXjnj4=; b=ddC+yHMRpFf8kF3ifu7IIUAJsns2h20Gizkbw8KCjEqCgnNMpTtmbbHB4LQk/rW9ujYOGy3arkYHKLCE5zqSBZ6Y7YsZ54NJV4GPcwp04BazjXNbmhLY80t+xmtOLtW8n3VsoLSG6jbJIFKnumOOXl6ulO6xFUWb/CrvkZaMQUp28Wl6BAfNaarEdoc+5oJ72J+w98udjNuqHPCi2bDoT63KUdsbqwtX2HE90HPYeee1YnLIs4HBM+NNGt6ziAwGSR0qJFDpy2SGcEis2j90PrOK9dqx2lbQ4LAea47wdhjQQT8R2oitiiD5lZlddsZB40+lQ9V6Njr4SrBR1F4flg== 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=2lq7Bh6akor6R46iOU4xykm82sC4mJ5TDYDBqjXjnj4=; b=oSFwtwWZAFfoYiAXD+I7Dl0QvDCV7Q+iidFQ7fK6ePru9M4fbsR81gjXw33383jBR2fiyKLSW+Zo3yNO86HWcu7juwy+SvdPM35n8/2sGE1TOWWefSTbu6tLxUVE5SmC16zNCtPLycY4e0uB3zFHMh5IJmvj1RzsV3dCAD4lf4TZvKPHFgr5vWuepue3xabRK22kIb7WYp2gfEGCulSbbk3GZV8ziAO9APolO6zk2+vZL9jWp4LK80pxBVJHHo05fOykvVx6NEVy1179eDYXWyTT5cD/FjUr7uVm4cBOokkG8km5Hw7QZTUMU+ttBWtmnrysgQm8HGXST3DAk5gcKQ== 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 AS8PR04MB7496.eurprd04.prod.outlook.com (2603:10a6:20b:29d::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.19; Thu, 2 Mar 2023 08:58:14 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b%7]) with mapi id 15.20.6156.019; Thu, 2 Mar 2023 08:58:14 +0000 Message-ID: Date: Thu, 2 Mar 2023 09:58:12 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH RESEND] elfedit: add support for editing e_flags Content-Language: en-US To: WANG Xuerui Cc: Chenghua Xu , Zhensong Liu , Qinggang Meng , Xi Ruoyao , WANG Xuerui , binutils@sourceware.org References: <20230302081452.3429908-1-i.swmail@xen0n.name> From: Jan Beulich In-Reply-To: <20230302081452.3429908-1-i.swmail@xen0n.name> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0112.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a3::15) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AS8PR04MB7496:EE_ X-MS-Office365-Filtering-Correlation-Id: 5827aaaf-d8ed-4daf-b79a-08db1afc421e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qu3oG4AX3YTh0wxcZJQ8/t7QGEqiKXwSWdGj/YuM7ptBi3MNwi0bZHQx+mQgb5QtmHTxLlSLiVXkRwO6BZMbTnV/NFrMVQUMh5NaXbnv6OUtXT+h4G6b66isnOS/YImf2PQeSmXmgCzwe7z3dxtkB+Ca2wK/PYar9abtORrrSeZKF3XEUcpPiWBJFo3xLeUnZj970553jm1604Kku5/edKXFXw80mQOBCJRWeWdE4G6Kq5vbSpT0+H0fxERHIb1GZLK+ZpsKzJ/jCpvEeFmaAxW3Aj7LACsUp/t0k+4zRm8fSlRJ7YvLryVE9RF3LTQXAscGP1tNIGsIpbocaTF6K66GkhQYUPoOO3WGERCM8ox6m/xoy0mws/DyKjVBcsVEOJ8haEDToz1v9SILT9tKL31U80WyzGZM46tcnMX9ViR+a4W5ZGTivKtUIlYq3NQYUorAso04WBS7ohfs1xkfj7409qFMUAoX+VEzPWUoJpEFlTO2+CtXuv0OlQpkmNMUC03Shimg1MjtDM6ft4EWBsdNrw+g5jyopRPrwc58x9l6UqIYzctW1Jc98qt0763bbFqdVKhukg12dAcItCd+F/DItdbTDelgdbfkz5sFGloP/kvg9Thjm0/i80leKD5NMff4bodBA2m8+6NVYfpIgh32HLmraOANo8/cv7I3cnvb1q6DJvfj/PlhVuDDrbcOeqqa9fu7Dfn5X6j7gRCc4OBc9c+1fhCwB98xGyJ+T/4= 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:(13230025)(136003)(376002)(396003)(366004)(346002)(39860400002)(451199018)(66556008)(66946007)(2906002)(316002)(8676002)(8936002)(36756003)(4326008)(66476007)(41300700001)(83380400001)(2616005)(6512007)(186003)(6506007)(53546011)(26005)(31696002)(54906003)(478600001)(86362001)(38100700002)(6486002)(6916009)(5660300002)(31686004)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Z0RzY2JGNVJKQWZZa1FiUEtzQmRQd0JyS3crSGo1WEU4Z3FlVWtoaHdhazNW?= =?utf-8?B?bHp0clRhL1ZpNC9jVlFUSUdpZUpMK3lmNExCQzZTZDNqS1NycmIyVW1Kekt1?= =?utf-8?B?S3FGVVFYQmZ5Tm5YUjBZN1YzSkZOV1FJT0pXOXVYdCtBY3M4MDVOYXo3clFo?= =?utf-8?B?Y1VGbmhJYVlTeTBLWHNWN1RGbmhDdmRXTnNuMG1tb3NUZ2dyODJQTmRqRzF5?= =?utf-8?B?YVhQRittTGhDY3U1Ujh2WXRLUmw0elpRbkpNTzBDdEFpVWxIdEE5WkdFL2Ez?= =?utf-8?B?RUpEVHUremRyZWJPNUh0RGJPdExkeUc5WFZDUW9BMSt4S1hMVjFuZVprSlVE?= =?utf-8?B?cmEvVTV5dnY3d0lpdzlBS3pTS2RDQXFYbWswb0NLOUwvUUJycTNLankxMHox?= =?utf-8?B?aFpGUzExSHExN2gwZzU2bWt1WGttZUVRSWE4Z2tjSldrbEN5V2JWSzFyMThk?= =?utf-8?B?SG5Ca3NBelJKY0xrbEcxelVlNXQxVitUSlhGMTgzTFA0V2dkUUVRajZ1ZGls?= =?utf-8?B?ZEYwcTVKeHd4Z0xzVzB3OTBvWHoxRUZrOFo5dkM4MEhMWWpFUjdiNzVwZFlK?= =?utf-8?B?SHJhaFhFNUZNTE9ZcU5nUGQrQU1vVE0zeHlHRHFhNVlOcWxmdit4USszSXNt?= =?utf-8?B?bURjYWpXckswYmNOb05XMlJoWUtidHNHSUlUS2JTcnhJTkRoelNJZGdrdDY2?= =?utf-8?B?bzg0Rmo4SGc2NW5TUGNyZS9GUGl2RzdWMkcvR2hYUzBURkcvK2c0UG5adGpE?= =?utf-8?B?eVZ3MHM3WkN4ZU8xdEE2SkRVUWo5NG1oYWdFZnJSU2JDejJKS092V2htNUZk?= =?utf-8?B?TTBGYXgrZ0VNck9yQVBtVDFtOHRvQ09ySzdVaVVWcjVuRmprdEhHQWNXN093?= =?utf-8?B?UjFCbU1iOEREUmhpOEhyNVhsb0JLcU4vQTRSS2tBQUFyc0ZkRlh2UVhhWlhl?= =?utf-8?B?TFJlZFpnZXJhNkRaMHZmTDBVVStjZHVHWjhPYVhMVHFmUHJ6b1k3Q3lvSDdR?= =?utf-8?B?bTU4MVgrUndOVmdRbXlkSStJYjFIV1UyU09pTnlnb2E2UCtSZkkrTUNrTU9y?= =?utf-8?B?eDI5aVB1RlYxa1NQa05BOXdteTI0QS9iZ2lrd1BhV20vTkw3ai82T1d3bmpn?= =?utf-8?B?cUdNclV5ZCtxOVlRUWFyaGNLSGNuUUZ0QUFIT01pRHcvOXVKVU9LamQ4YU9O?= =?utf-8?B?cUxzT0FlalBtUWxsWVRLWDJjZnNrVVBhSXZGRzZRRllOSVZNRkg1K21XWWhV?= =?utf-8?B?TjJ2cSt2OTBXMERKNCtOVTRNT1lWdzBJYlFlMnh4enZISUhreks1eEhCdUts?= =?utf-8?B?Q3RRQ3dUVGhzeGtiOWdmdCs4STJJWnhZRnNOSE9uaU5nNnlOeGRQYTlvSXZk?= =?utf-8?B?aGVSQWtqU1krMGdaTEtvQURVVzJ0ZlZUdnc4cVNVTU54ZlFUMmpZMkRDV3pM?= =?utf-8?B?OVNlbm5qa1Q4Q25mZGdnN0wxdHJRY2xDNUY0RGZqTURoV1NMaU1oVHdFcWZW?= =?utf-8?B?RzBuQVRaSndxM2lldzgvaTdETjhMUThYS1ZQU29vUVNNcVQ0eVlRakpKaUlW?= =?utf-8?B?Vm0yeXlkTGpQWjQ0NkhwVm1oWjlaTG1LOEhTWFJkSklCTGgvRjg2WkVHRXN4?= =?utf-8?B?enNWeEorWk1BNkd6MU51WHNXWXl1bFFNMnYxWkI2dGRJci9YMHZuZEhiYXQ5?= =?utf-8?B?dFFQRFZBMFVXb1ZReHV5R0svWkV0QlJvdU11WFRLZnVFSjdFb1NFT0hnWFNa?= =?utf-8?B?ekZoWWhlcEgvc21RRko0dUMzWTVNYVphZlZZNDdkcnJ5d3RNTHRETGw5UTJa?= =?utf-8?B?bi9kaEt4b0k5dFc5MzkrcEd2V0djakxYczVBSCtjUkp6emdhaG02ME5kajBH?= =?utf-8?B?dnFuZnRFVzYyUG54cGVjaGd4TG1jTk5mWXFpaWI4ZVh1U3BDU1dSZjc1SXhs?= =?utf-8?B?MEFZKzJ3K0RiMm05QllYSUxPRzNFcWV0YWJhc1dSb3BNa1h0K2RnOW85cUNQ?= =?utf-8?B?bzF3enFDQmQ4eW42VlhLNTBMLzNxN3Q4OXBmamltZEV3YUVBb1ZjV2c0cm9E?= =?utf-8?B?L1dadFBkRThlcEM2YklRSVdlSUJxN2hDZnFaK2VmUGduYlBrSk1tNXV4Y0tB?= =?utf-8?Q?oLc7Z2kqsQjYiDQOzoe4QYygB?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5827aaaf-d8ed-4daf-b79a-08db1afc421e X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Mar 2023 08:58:14.8165 (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: AzGcf2dIzahPwnzvYbd0hvXWU27GfDp9V4ARvBZY7ZiOuk2+HUpWm8dWPQu+Ix4rBPiiXfjb4ueIJo1JJmHtBg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB7496 X-Spam-Status: No, score=-3027.7 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,RCVD_IN_VALIDITY_RPBL,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=no 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 02.03.2023 09:14, WANG Xuerui wrote: > @@ -5376,6 +5378,15 @@ isn't specified, it will match any ELF ABIVERSIONs. > Change the ELF ABIVERSION in the ELF header to @var{version}. > @var{version} must be between 0 and 255. > > +@item --input-flags=@var{flags} > +Set the matching input ELF file @var{e_flags} value to @var{flags}. > +@var{flags} must be an unsigned 32-bit integer. If @option{--input-flags} > +isn't specified, it will match any e_flags value. This doesn't really explain what the behavior is; I had to look at the code to see what's intended. However, ... > +@item --output-flags=@var{flags} > +Change the @var{e_flags} field in the ELF header to @var{flags}. > +@var{version} must be an unsigned 32-bit integer. ... instead of this pair of options, for anything flags-ish wouldn't it be more convenient to have a way to merely specify a flags-to-clear and a flags- to-set value? That would imo also eliminate the need for checking that the input object's flags match a certain value. > @@ -394,7 +398,16 @@ update_elf_header (const char *file_name, FILE *file) > return 0; > } > > - /* Update e_machine, e_type and EI_OSABI. */ > + /* Skip if e_flags doesn't match. */ > + if (check_elf_flags && elf_header.e_flags != input_elf_flags) > + { > + error > + (_("%s: Unmatched e_flags: 0x%lx is not 0x%x\n"), May I suggest to use %#x (and alike) wherever suitable? It's a shorter string literal and doesn't needlessly clutter the value of 0 with a 0x prefix. > @@ -1062,6 +1088,28 @@ main (int argc, char ** argv) > } > break; > > + case OPTION_INPUT_FLAGS: > + check_elf_flags = 1; Please use bool/true/false for boolean variables. > + tmp = strtoul (optarg, &end, 0); > + if (*end != '\0' || tmp > 0xffffffff) I'm afraid this may trigger compiler warnings: For one because the constant isn't flagged as unsigned. And then (for 32-bit targets) for being an always-true comparison. > --- /dev/null > +++ b/binutils/testsuite/binutils-all/elfedit-7.d > @@ -0,0 +1,10 @@ > +#PROG: elfedit > +#elfedit: --output-flags 0xfedcba98 > +#source: empty.s > +#readelf: -h > +#name: Update ELF header 7 (hexadecimal e_flags value) > +#target: *-*-linux* *-*-gnu* Any reason *-*-elf* isn't included here? But I guess you really want to use [is_elf_format] anyway. Also neither of the two tests uses the other option. If that's to remain, I think it wants testing (I realize that doing so may require further limiting the targets on which such a test can be easily run). Jan