From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2081.outbound.protection.outlook.com [40.107.104.81]) by sourceware.org (Postfix) with ESMTPS id 2EF933858C1F for ; Mon, 14 Aug 2023 13:51:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2EF933858C1F 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=Mol9KvwGZEJvKH/DmtEhivXRlguuK0JOUaH8j2o8XeXfrLoM9NiU8CXB/15H54BvUoQvRdXBIWCjlzSDH8Cdo0O3BfMKf4Sy5BWT/++gFEvxvEoU2+oSevAKnaPdnXA4W6IxI75t885a4kM4njjgweIaPzMZMfeRQ+ndbc2knpItdYOYR5tLA2r5oQOIL2LcFSVisvnzXWex3d7oatWaojY1nmZSTlcqzb/zjfVvdYlCDeaEwPjKyKiMjUxfPCifMIsPk8FA3BLdzPzcoDBblbxgMHkxQJCnC3KeyQiQteY3CbpDvHGkQozrgXWVW+7AptdZ9m8f7PUIyfyZMFGlpw== 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=s/B5N3dyEEzlXShZzHMydrl/ckiW8uhOVO222kpm6h8=; b=PjUYnrnAlgs7VzAvPFmScwEk5dFulof+BnBRzk4Cw4cxNGtd8yowI8DY2VKpt8WbnHN7bSf9Ilu370qTKyaITlK3RSI+uVGwUYdmuPq30J72/B5Ww13YhrS+6Szt6Ql3G/YGPmrn636exs4dv2mDG7wVpMCGz/0iw4pgdgOb6p/hom6eDCnyVbhaDcM5MqCnFrWkv0rz4o5TyH/fjt0v1E6eNeElJiVJOrPY/z4kMjIhdtmZ9dsGihjG2BetCedQBFSghTgpDDFtUU1dFMAL9hMKDhVp6bp4p58vj/XJvuEXRqK2dvWRNgKZiFezt6sVwQyOiMOSeTARTSV5QG0xug== 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=s/B5N3dyEEzlXShZzHMydrl/ckiW8uhOVO222kpm6h8=; b=AMNPlIwCcAi6S3L0rW8wNALHn/Rzvu5YDbnRX0R+j/svrqB9NLYi5U6wZ6NS/R5ok7IeQcE56nZoHgPkf9Mz0YU+UHLlfZLY7eRCLELv3xw/xzC+CrP1X929Ci3CY5rBsRV5NPCtC/AeaA3BgYYEhSBtBOYAxQ7J3ctXjunENCjuo6NCpyRryDR4BI6pR/2ylYeYseFsLSXvR5INXhS2V2ytjQnc1+488ctAnadwHxXk1oQFTjQfTAXD8SycBmZ1xTl04mNNacQDorf2PpjN24plR3rFglrxhaeHEWlR1vSp23lL6n4rSFsU8hZi5QHkJWsRHgQsCbvjCA5iXLgRAg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) by DU0PR04MB9321.eurprd04.prod.outlook.com (2603:10a6:10:354::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6678.24; Mon, 14 Aug 2023 13:51:45 +0000 Received: from DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::79a:54ba:8003:fbe7]) by DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::79a:54ba:8003:fbe7%6]) with mapi id 15.20.6678.022; Mon, 14 Aug 2023 13:51:45 +0000 Message-ID: Date: Mon, 14 Aug 2023 15:51:43 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Content-Language: en-US To: Binutils From: Jan Beulich Subject: [PATCH] bfd: correct relocation handling for objcopy COFF -> ELF Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR0P281CA0001.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:15::6) To DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8790:EE_|DU0PR04MB9321:EE_ X-MS-Office365-Filtering-Correlation-Id: c686fa40-9d81-438d-264a-08db9ccd9908 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xNJKP98cq9Bl14EM4xeEPaUNYTOsOzdMbBH2yEyTbnE1OJB9pCnvtJW7zXJVp9jkktW/FFHBXCojvtVZHupLY7Euyt/wnBH0YDwhzpT1o9bWDc9Is7h/SuPXilMgM6iESI/H6OZVotSa29IKy3pJuWoTO4lSBGAOEpiI/k/KCoZnHvbn7trGpRjUqO6QNNw0tTijTwZduk2QiI5pJrbEMUpFyjIvql+8QumhDL7qGaNzANr1YGbGOtXqcDTWFsYK/HhGPhTOkWlDhRzl3aXgbJxdavHT/3zjXmluIdI/+PI2yNL3FGi+6VRTqHNjUAlHZ2k+D+GpLGkLU3FbmkxNBo8bVjytixNZsyitJWueghWSu12SUMRULT4pPkbVfeaxRQhgPbzi/4ycJcMQ/KS+k8MTPUCQJ8PSM4E1IjP9iswNo5gBN8Sno6oU7br2J1znbCo2HydruSQWz6ud5T4WhPRdqocoBlQ29SKdrCI3YgajqZ1AZiWSX++2tHgvDdGVWdFJKLQVhqSh6q0dAxwo7RMr56xW+COkF9eiSg8y5bfi4ekx+PvknLOEkAStzPJHCNQ4oeb00rlKMYeGCwLP1FWT2o8xFXICJs3a1PkmIggJZRw2JzVaWir8R9TduwJVQmdFgc5Wfb1592CiM8SlGQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8790.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(346002)(396003)(366004)(376002)(39860400002)(1800799006)(186006)(451199021)(6506007)(26005)(8936002)(41300700001)(66476007)(66556008)(66946007)(8676002)(316002)(6512007)(31686004)(2616005)(83380400001)(6486002)(478600001)(38100700002)(31696002)(36756003)(86362001)(6916009)(5660300002)(2906002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cGgxTGEvYis4VHRCakZrRFBIWk5qbWJNbCt5S21RWnhFangzdENUMUJOdUJ1?= =?utf-8?B?UWkycXlWUUdwamFwa1NiOC9ZQWNDTHAxOHNHdHZIZ3podHZnWE1hVWRpc3ZJ?= =?utf-8?B?M01NUVc1c2cvTGhVK1JZOEZTeEFGNWoxL0Nla1JkTWFUTUtIZmVEcjBGU3Fu?= =?utf-8?B?Wk96YkJTc1E4RzBCSG1zRHdIblBkQUk4UXF3ZFozSmZTbURpQVhnZTIrSlUw?= =?utf-8?B?dlcrbm9VbVAzTktQNnhQR0xwTXlEeWpXR05IaG1OZ2NxdUNtSGQ0bHhWcmNT?= =?utf-8?B?N0t2VzUvRlpzTndBOEhmdWVxOHlJS3BlOGF1aThTVERaNWdmTkhhaGJadFpy?= =?utf-8?B?V0wvMHdPSjNhL3FtZkluTHVGSVNsRVRQQ1dPQVF4QXlrSmlFVm5iTUN6a1pD?= =?utf-8?B?OWZJUU1DTmdldm1vUEdiZXhGWTY5cWJ2OEZWdU5lSW1taDRiZi80Q2l6UjFp?= =?utf-8?B?dDlUcllsVWtJSTAxbVdnQzc1WnFraS9ZMnZaRzJ1MDFaL1N0ZXJvS1F1UGgr?= =?utf-8?B?cldOR2prditOMERWWlBXZW9NeXN1eDYvQ25ZRVlrNjQ0MGtQL2V6N01lK05L?= =?utf-8?B?WkFZOElzc2cveWtTZXhRL05QQkk1Ynd6VGgrV2NEdm5RWkdkNmg4MG1WbDg0?= =?utf-8?B?UUMrVUw5OVhFcGh6NS9PeE1LRzhFL1pIeERtUlVHRG1ON25IdDZIVFYvbVRu?= =?utf-8?B?S3hJN2o2Ym9JR1IrTlRzaGMrWDY5eGtSYkdUVVV0Y0RsQVM3M3dueC9CWUts?= =?utf-8?B?bkRxdnZtbFZXOWoxRjA5L0M2UmRieUtCcHR0VllkRSs3NVZTZVV3a2R0Szdy?= =?utf-8?B?ajZqN3RMMDlKYTVNUThqU1VVb3NaUndEekgyczJkS2YrcUYyemt2NWxKWG5z?= =?utf-8?B?QnFURlpzUVcvQm5IRm11SUxzYUUyTEZqQ1VCSFVGd1RmUTNaN0ZwbUVvK1RC?= =?utf-8?B?WE1LUi9RcExDWEtFZUF6bDNGb1JSTTZHY0dOWFBoRkZpVGlkbjhmVkR6WVdk?= =?utf-8?B?dTh6VUtiZWMyUWM3TTJ4NEU3QmtYNnNhbjlSd2cxN3JaZXBsZ3ZuYmhVaEVa?= =?utf-8?B?MmVib0dFZUwvaTZTQXFrUkE3WkxiWHlmZGh0cEY0VEo2N0dFalN3OG8vTkhQ?= =?utf-8?B?U2hpYithT3VYWFNYMlVVTVVCaFRUWWhPcUVzTUx4YWJTY3MzY2oyTit1ZzQv?= =?utf-8?B?UForaVJXb1UvVlZZQ1NPS0lhRDQ1Q3l3ZWF6ckw0ZjdxSTJ4ckdGdU1aK0dv?= =?utf-8?B?OVVxUkIxRFdzUWVJd01RV05XSVFJRGNZdzRVd1dTUFNKRTFLbjdkS3ZONjh1?= =?utf-8?B?TE1zUDltZ211T29wOHpTeDkzMDNCbFpkZHVVLzNuZVl6b3pQeG81MzJOMFlu?= =?utf-8?B?YUt6RVU1WDUxbWRPTk5RQWpQMXluWGNPUlhiSFhGN3pqQ2xzSWNWK0NRZjhz?= =?utf-8?B?RGlEMmo1K3hGVC82ZHV2azFTZFJOTldKL242c0kyNVh4Z09jTWNoKzJJbkM1?= =?utf-8?B?ZHRHVDVTaWhzWXI1YUxpek1LU2RyNEtBZWVMOU5LaVBDOVk0eEhJU3NxRDFu?= =?utf-8?B?UnV0WUtFVVUxaWFmWW5MTmNkSVJmajFDUVFadXo0dGd1dE43WGlhb0FpSFVP?= =?utf-8?B?S1hBdmhnSnljV0l2bGxGTVg2R0hEbS9iOHFNZHdla3V6OXJ1REs2aExqZXRl?= =?utf-8?B?MEdpditjNVRQYmt3dEwrem1ZUVVpWVlvRVA2OUEySmZ2TWNLZVBIT1dUTTRp?= =?utf-8?B?V1RMdkpZanhQQXdEdjhvQ3RkUlQ1dVRTMFZDdStMMjgyaGJ2NmJTQlRLTk5C?= =?utf-8?B?WkU5NEtIQjY5UWpWdURnUnI5WlVyczFBNEJZbEQzQWprK3kxTzljMUNUUXRS?= =?utf-8?B?Ky9vaGsxYjBiVk0yNUd1Tmpsb1RYd0pPQ1krS0daQnhaK0M0YnlhdS9tbG1Y?= =?utf-8?B?ZzBxZ1RldUlLNTRydVhOVXZBam5nT0NDZGxwc1oyM0RpeHZrK1g4bk8vNTV1?= =?utf-8?B?ZzBZR1I1WVArQS9CbTBuNXRDaHM4Z1BRZkdmVHlqOUNIdm01UGdTeWNqRDZq?= =?utf-8?B?QVhadXdjaXhzUVFQbTIxc2FUMTVSQUxUMFR5ZmNvc0pQdnhvcDNDSHY4Q1BW?= =?utf-8?Q?U1oXZ1mjBxFge1E/BztTXWXCS?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: c686fa40-9d81-438d-264a-08db9ccd9908 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8790.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2023 13:51:45.3620 (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: PO4ML4q6wmXR7Aa+L0BephsCkL1cfC9f4DbDWyyTMl4TOa9UoK+vpfVlKj2blwrAJ6lu+xpvvF9dsfLJUGWGZA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR04MB9321 X-Spam-Status: No, score=-3027.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP 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: While documented to not be reliable, it is still odd for objcopy to silently produce bad output when converting COFF/PE object files to ELF ones. The issue there is that relocation addends all are screwed up by subtracting the symbol's section offset. In the COFF/PE world, to my knowledge, section contents stores the addends alone, not the result of symbol value plus addend. Hence the compensation talked about in a comment ahead of the sole use site of CALC_ADDEND() may need to account for the VMA (which is always zero for object files anyway), but not for the symbol value. The coff-sh.c adjustment is based upon guessing that behavior there is the same. Note also how coff-aarch64.c short-circuits CALC_ADDEND() altogether, which may suggest that a much simpler macro might do for the COFF_WITH_PE case in the three arch-specific files touched here. For (at least) Arm/WinCE this actually results in more appropriate objdump output as well, as can be seen in the one testcase which has its expectations adjusted (the generated binary doesn't change). --- a/bfd/coff-i386.c +++ b/bfd/coff-i386.c @@ -405,7 +405,8 @@ static reloc_howto_type howto_table[] = cache_ptr->addend = - coffsym->native->u.syment.n_value; \ else if (ptr && bfd_asymbol_bfd (ptr) == abfd \ && ptr->section != (asection *) NULL) \ - cache_ptr->addend = - (ptr->section->vma + ptr->value); \ + cache_ptr->addend = - (ptr->section->vma \ + + COFF_PE_ADDEND_BIAS (ptr)); \ else \ cache_ptr->addend = 0; \ if (ptr && reloc.r_type < NUM_HOWTOS \ --- a/bfd/coff-sh.c +++ b/bfd/coff-sh.c @@ -544,7 +544,8 @@ sh_coff_reloc_name_lookup (bfd *abfd ATT cache_ptr->addend = 0; \ else if (ptr && bfd_asymbol_bfd (ptr) == abfd \ && ptr->section != (asection *) NULL) \ - cache_ptr->addend = - (ptr->section->vma + ptr->value); \ + cache_ptr->addend = - (ptr->section->vma \ + + COFF_PE_ADDEND_BIAS (ptr)); \ else \ cache_ptr->addend = 0; \ if ((reloc).r_type == R_SH_SWITCH8 \ --- a/bfd/coff-x86_64.c +++ b/bfd/coff-x86_64.c @@ -542,7 +542,8 @@ static reloc_howto_type howto_table[] = cache_ptr->addend = - coffsym->native->u.syment.n_value; \ else if (ptr && bfd_asymbol_bfd (ptr) == abfd \ && ptr->section != NULL) \ - cache_ptr->addend = - (ptr->section->vma + ptr->value); \ + cache_ptr->addend = - (ptr->section->vma \ + + COFF_PE_ADDEND_BIAS (ptr)); \ else \ cache_ptr->addend = 0; \ if (ptr && reloc.r_type < NUM_HOWTOS \ --- a/bfd/coffcode.h +++ b/bfd/coffcode.h @@ -5151,6 +5151,12 @@ SUBSUBSECTION final-linked object. See @code{CALC_ADDEND}. */ +#ifdef COFF_WITH_PE +#define COFF_PE_ADDEND_BIAS(ptr) 0 /* Symbol value not stored in raw data. */ +#else +#define COFF_PE_ADDEND_BIAS(ptr) ((ptr)->value) +#endif + #ifndef CALC_ADDEND #define CALC_ADDEND(abfd, ptr, reloc, cache_ptr) \ { \ @@ -5167,7 +5173,8 @@ SUBSUBSECTION cache_ptr->addend = 0; \ else if (ptr && bfd_asymbol_bfd (ptr) == abfd \ && ptr->section != NULL) \ - cache_ptr->addend = - (ptr->section->vma + ptr->value); \ + cache_ptr->addend = - (ptr->section->vma \ + + COFF_PE_ADDEND_BIAS (ptr)); \ else \ cache_ptr->addend = 0; \ } --- a/gas/testsuite/gas/arm/wince.d +++ b/gas/testsuite/gas/arm/wince.d @@ -15,11 +15,11 @@ Disassembly of section .text: 0+008 e1a00000 nop @ \(mov r0, r0\) 0+00c e1a00000 nop @ \(mov r0, r0\) 0+010 eafffffb b f+ff8 - 10: ARM_26D global_sym-0x4 + 10: ARM_26D global_sym 0+014 ebfffffa bl f+ff4 - 14: ARM_26D global_sym-0x4 + 14: ARM_26D global_sym 0+018 0afffff9 beq f+ff0 - 18: ARM_26D global_sym-0x4 + 18: ARM_26D global_sym 0+01c eafffff8 b 0+004 0+020 ebfffff7 bl 0+004 0+024 0afffff6 beq 0+004