From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80081.outbound.protection.outlook.com [40.107.8.81]) by sourceware.org (Postfix) with ESMTPS id D68553843883 for ; Thu, 30 Jun 2022 12:08:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D68553843883 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GImhVbQL2XQrYaO+cB4TElY9WPmZaCS51NQEUQbzzIQxyLJgV1uw7gttyrnX/fGFfwr4sCC8tSyTBGw5fPENgwSXv1Zzs+fhiZ3hKGuyClGFBKp+d/gJxqTYLAObcz91WymzdLU0vuRMXkIXxMx1Q9tZ8zDvFaJjLdzIC0Hn+PQRh/oPLIjWrGtno/MIsy493rz2tfSNt9nA1FYPuD2CeUg3J1D10Ck7e03JZ+QgnzO7knKH+FYFMWE0eyuNq/Til5NPNyWilD/LuMzg995wS0vQpMJmXt7XEdzpbqI5boi/IjXGT+ttUKEqL6/PYzX+49uqX7kPMeD4RvelQmLpbA== 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=54WuXgEauqZa3rP8pq5ti7uxhIa8B3TGSGsXwUvDU7E=; b=NZfn4K0STqK8nIHUjSxqUqbD+LNaLVFwPqXAFD35UiOHSiu2G92kfXWr2eyLBYqZynmBPfVNwSNm60tiR7+bfmDr7kb7wDd+yU2dYaf2cg/1RmHJGVH9IIYBbpjbzPUKc/PZJ5ybLWP11BF23c/Z9/by+0J4pS3XNWPQjHhJN9GlxAt6DiSi0q7fY4dJPcLn95k1zu++6AkQfa/YHVLCRPrko2WxSC/VN31Z1zWY7s5fGYooJo57M8LCtv2jK/9LBXoXXnTaI1+ot71VK5k2200nst3qgJcemMAcTyKJh/uCeFCYBaESr4aD7VrL4fcrmVadPjO60Vc/xyeNWAziIA== 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 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by VI1PR04MB6911.eurprd04.prod.outlook.com (2603:10a6:803:12e::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Thu, 30 Jun 2022 12:08:02 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::dfa:a64a:432f:e26b]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::dfa:a64a:432f:e26b%7]) with mapi id 15.20.5395.014; Thu, 30 Jun 2022 12:08:01 +0000 Message-ID: Date: Thu, 30 Jun 2022 14:08:00 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 Subject: [PATCH 1/3] x86-64: improve handling of branches to absolute addresses Content-Language: en-US To: Binutils References: <0806b8f1-b463-41e8-1980-b511bdb451ff@suse.com> From: Jan Beulich In-Reply-To: <0806b8f1-b463-41e8-1980-b511bdb451ff@suse.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: AM6PR02CA0027.eurprd02.prod.outlook.com (2603:10a6:20b:6e::40) 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: 5e2144b3-9461-447f-4a8a-08da5a912e1b X-MS-TrafficTypeDiagnostic: VI1PR04MB6911:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KKdy8xJ7ny7+8WgMq3bHO5EmRY+EXuVtS1AfhBiPtZMTpVd8otn9mxS3A/xy1S7l67g0K9AuRATsXji/sHBJ2DOxrp+MIU3WUyGT/gXEWK9t7JIanMTsva2ya2lShKgq05vImu/E+yjLZYivT0kL2E+btEM3ttKHMdtsy9mZ5cxmG3a3vhFZDB4BjFyEMpYY3uTxkhkaMDqhYqPM1oUyQlM3C/Pd/X0UjKSAURZDNXyc+jvOqnuygtLjo6UoGGeiGuOkiVgaGWLj75uMnMB7+qkCNcYqA9HzuxpE4rMSqQbJhm0IJCb2gwklz1uCMitMJY44WBQImdYxRJ9IcAaLrgi+f3lKZYoksnUCp1l0hAWZvoXcjXG/uQlM9P7sSFk9XPuCuie2HHg+d24TEwbaiab695Xoow8ZwUArxIYefX3vj48GHYtcIzYSFD6v0APUJM6yLogsEfRKEJChg7VcRdzoTBrQUvU56eKO+mZF9p+tgZsoa+Nc8OcL+UFbdKG0VZysWUWTTwsiCj/Ompg/OfoNtZXh5mGAg9fKb6ZGG0xL8YBJsEA3CAK5CwYDexDl0ZsAbo3/6V9CqpzsZyF2YEyWHQSEbNO1rbZqlmfTj+Dyy3HV6BAstHpsUh68uVEa0BkvP2LrgExl7PKDJ1XEW6PcZk7EMX2TI3KqjGLsAR+5bq9C+o0TXzcu37VVOA1loBy+fOjFPBkDYHpD5t54j8YrwQrEkqFPkrhyoHeqnsTaSzyxPOIOQ1+C9YYgJXa53JXbZfP0JRq7MtVZ98XtBg1hO0dxySAieD7H/ITD3iUJ4T+OUFFnC4Xiyzn4/EYGtu1GVBsjHnY/rkKP2/osugdKFXE4QeJXQWhrUymXOI4= 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)(366004)(396003)(376002)(136003)(346002)(39860400002)(6512007)(66476007)(26005)(2616005)(4326008)(41300700001)(6506007)(86362001)(31686004)(66556008)(36756003)(8676002)(66946007)(478600001)(6486002)(31696002)(83380400001)(186003)(38100700002)(5660300002)(316002)(6916009)(2906002)(8936002)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?L2xaUFZzQTE3VDA4Y1Ura0lWdGF4YUhRMXBsSDF0M0NCTFZBNUtqZ1BVN1pm?= =?utf-8?B?S1RHRy9VajFzU0VuQ3JoM2RvUzlEYVAvZk8xV0d2elhkQVhCYkhjbE42ZjUx?= =?utf-8?B?QmdlVi9ITkJOL09DM3BWV0V1ZDkzblI0d2hjMitDVDlpeHVaSTF2VUl0K21z?= =?utf-8?B?QWVCUkp3a0Y5Z1J5Z2FRZVRMQmRoUzFsMlJwQmV4TWxnaHB3bjZLTjlqS0l0?= =?utf-8?B?cDlibXhZYjB5QUJTeUlFWHNWMkJkTEVVYlQ5NEhCQ095SFRxeHhaa1NGMjhp?= =?utf-8?B?ZlFkVlVJN0JzM3laaVZkUldLMythUDNKUldpVENxQ3ExcFh1ZFRZTnpNckZv?= =?utf-8?B?ODFaTGd6UXlmcEd4VlU5YjlEUU1MaGkyRTg5cEI0bG9aZHdIc2Yyd2Y1enhs?= =?utf-8?B?OWdzc2h3NElJS1FPdnk0L09HYWJhVHYvdGJhbFpYVGpJZ0Y1VVIxcC9Ha0Qx?= =?utf-8?B?NG16azcrbHRHZ05pRUFIcEV4ejRjd3daZ1I2dGw3M0pUdkxTaWdUZXlPUkV5?= =?utf-8?B?RFF6UmNLSVVMbk5nNHZuREFTalRVUzlhTXBBVDlJY0ZsRXhEdEMrbUZ1OFZ6?= =?utf-8?B?UjcxdWd3MHI0VTBrcTJqclZYTUlpUnBwMkRPcnVrdWlYMEMveEZWYmFCZmdj?= =?utf-8?B?b0drY0o1c3oySkRkelJPa3lSK2hDT3VFbGk3emRrRUx5dnI2czVlcnlBRmZx?= =?utf-8?B?U1dYbksva0dUMjRUS2F0YlFVZHAvNG1NOVRaL0plVEdwcmNzREdZbDlPY0cy?= =?utf-8?B?NUVCTFFlVDA2OENXTFNDeWg5bjEzMEtQRWlzNnB2VFh5Nk04NzVudkRCTVhs?= =?utf-8?B?cnM3NFN6cUxlaXYzWkV4c2EwWHNUZXBVY3FrMUVLWGJ0NUdiSldVeTR1aDEy?= =?utf-8?B?NGMwY2VQM05yZng1cEl2bm0wM1YyUWhFMGRiSzhBRlNtcUNZRFNnSEd4VUVB?= =?utf-8?B?VFRkSjJEYUFweFFDTkdSMEZCOFQzVnVEcmNTWVkzbE1heks2WVFLNEU5a1Nu?= =?utf-8?B?VzBvMlhEcENJMm5rd0Y4MUpWYVYxQ2Z2QlZTclFjVG9EYkdEZkFUc3liYjhz?= =?utf-8?B?K2R3TWVpQVJPOS96akduVFYrOU5Wd1RYOEtFVkU1QWxWbjlEMFZPTHlkYXBk?= =?utf-8?B?U1o5SmZZcW5VV2hSK2p2WVpyeDJKdHJlT1lWQWdwdDhmN2QzZFBNQTFvaU0r?= =?utf-8?B?Y3hxWVFwWXcraHpDQVR4ZzRaemhmTFp0VjBiU3ZaYVRuOFQ4YWlNWkgrK3dN?= =?utf-8?B?ZXpydVc3MjFOYTNINGNXOWk1ZzNUR3ZBRnBpdGtGbnk5QlJSeFhWMWd3ZHhO?= =?utf-8?B?ZzBoSWVDTTdjMmlLLy95c0cxUkhZZGJOSy94VlZuOVJSUm1xMVBIemdyTWd6?= =?utf-8?B?WjNjV1B3aVgxODJjRUg1blM5MjhRdkh5M3FHb3hIWnJnbFdQcEYraTlmWG93?= =?utf-8?B?VlZCc01rMytQLzc5VEM0ckNja2Z4SjdaU2J1bEhkUkwrOGZsYXlvMFlzekNx?= =?utf-8?B?amVkeUNwWHpsc2FzcmxiRERBaDZnOVVaTGxma0V3alhpMTlCVDlZT1dHcTZB?= =?utf-8?B?bm81MUNsalh1c1BHRUNNaGIvL2pzSUFtSVVvVnpWc1BFZlg3Q3pOQzRqZmd6?= =?utf-8?B?bmdHVXZrYy9FaitnU0ZxSVQzTG5sWXV5TUVNUTMwUFFuUy9Cd09xV2d6Q1Jx?= =?utf-8?B?SG1JUjVTNVhqV203eHI5eHdxOWpydFN2RTRFQkNtdm41NEFTMkgxSzNUQ0JI?= =?utf-8?B?U1d0MzcyNjh4d3VEWFJIYnZQZU8zY21uM2NycE5WUm5ZV21aU1drRm9BbXVP?= =?utf-8?B?UXVnMkpYWGhlalROTngybkhzS2NUNUxSVzJSNzY2NnkzTU55RHYxdXFqNjlm?= =?utf-8?B?SDhsNFdSdnhKMjVGZUxjcUVwM3dzbGQ0UzRPWmRSaFZKeXE0anhDL3NMa0pN?= =?utf-8?B?MTFGQ1IrcW01S3V4OXk0NjJaaU1iSE1nbnBWOWQ3cFQ5bk9WZDZ5VzhuZDlD?= =?utf-8?B?ZVV5SnVPYUlKVlVLOEEvM2Z5eHZHczRTSEUvR254aW1JVFpGWEw1VmFVR0lm?= =?utf-8?B?NlBPeVpaOEJSL1o3UkZ2NzVJT2J5dlRBN2ZEaWZxWTQxVm5zaVVMekZzZ1Ev?= =?utf-8?Q?eB+Cf2UW5AO3a6mGG0/9/bDB/?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5e2144b3-9461-447f-4a8a-08da5a912e1b X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2022 12:08:01.8675 (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: AuOL25LqHxGt10gzMGZao53FBQD+AmlVZuRjosVl3H1mGvuW3ao3KmuDf3LhRoaTYCJcX1uSv3VFlWitckcJpA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB6911 X-Spam-Status: No, score=-3030.7 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_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 X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Jun 2022 12:08:06 -0000 There are two related problems here: The use of "addr32" on a direct branch would, besides causing a warning, result in operands to be permitted which mistakenly are refused without "addr32". Plus at some point not too long ago I'm afraid it may have been me who regressed the relocation addends emitted for such branches. Correct both problems, adding a testcase to guard against regressing this again. --- In principle things like "JECXZ " should be permitted as well, I think. Whether the destination is within reach can only be determined by the linker. But that likely being a more intrusive change, I guess we can leave this as is until someone really needs it to work. If "ELF: emit symbol table when there are relocations" (submitted earlier) goes in before this change, I'd be inclined to drop the label again from the new testcase. The original lack of a label there was how I noticed that other issue, so the testcase here could at once serve to test that changed behavior as well. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -4975,7 +4975,9 @@ md_assemble (char *line) if (i.imm_operands) optimize_imm (); - if (i.disp_operands && !want_disp32 (current_templates->start)) + if (i.disp_operands && !want_disp32 (current_templates->start) + && (!current_templates->start->opcode_modifier.jump + || i.jumpabsolute || i.types[0].bitfield.baseindex)) { for (j = 0; j < i.operands; ++j) { @@ -5985,7 +5987,9 @@ optimize_disp (void) /* Optimize 64-bit displacement to 32-bit for 64-bit BFD. */ if ((i.types[op].bitfield.disp32 || (flag_code == CODE_64BIT - && want_disp32 (current_templates->start))) + && want_disp32 (current_templates->start) + && (!current_templates->start->opcode_modifier.jump + || i.jumpabsolute || i.types[op].bitfield.baseindex))) && fits_in_unsigned_long (op_disp)) { /* If this operand is at most 32 bits, convert --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -1314,6 +1314,7 @@ if [gas_64_check] then { run_dump_test "x86-64-branch-3" run_list_test "x86-64-branch-4" "-al -mintel64" run_list_test "x86-64-branch-5" "-al" + run_dump_test "x86-64-branch-6" run_dump_test "x86-64-rip-2" --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-branch-6.d @@ -0,0 +1,21 @@ +#objdump: -r +#name: x86-64 branch 6 +#warning_output: x86-64-branch-6.e + +.*: +file format .* + +RELOCATION RECORDS FOR \[\.text\]: +OFFSET +TYPE +VALUE * +0+01 R_X86_64_PC32 +\*ABS\*\+0x000000008765431d +0+11 R_X86_64_PC32 +\*ABS\*\+0x000000087654320c +0+21 R_X86_64_PC32 +\*ABS\*\+0x000000008765431d +0+31 R_X86_64_PC32 +\*ABS\*\+0x000000087654320c +0+07 R_X86_64_PC32 +\*ABS\*\+0x000000008765431d +0+0c R_X86_64_PC32 +\*ABS\*\+0x000000008765431d +0+17 R_X86_64_PC32 +\*ABS\*\+0x000000087654320c +0+1c R_X86_64_PC32 +\*ABS\*\+0x000000087654320c +0+27 R_X86_64_PC32 +\*ABS\*\+0x000000008765431d +0+2c R_X86_64_PC32 +\*ABS\*\+0x000000008765431d +0+37 R_X86_64_PC32 +\*ABS\*\+0x000000087654320c +0+3c R_X86_64_PC32 +\*ABS\*\+0x000000087654320c +#pass --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-branch-6.s @@ -0,0 +1,18 @@ + .text + +branch_6: + call 0x87654321 + je 0x87654321 + jmp 0x87654321 + + call 0x876543210 + je 0x876543210 + jmp 0x876543210 + + addr32 call 0x87654321 + addr32 je 0x87654321 + addr32 jmp 0x87654321 + + addr32 call 0x876543210 + addr32 je 0x876543210 + addr32 jmp 0x876543210 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-branch-6.e @@ -0,0 +1,7 @@ +.*: Assembler messages: +.*:12: Warning: skipping prefixes on `call' +.*:13: Warning: skipping prefixes on `je' +.*:14: Warning: skipping prefixes on `jmp' +.*:16: Warning: skipping prefixes on `call' +.*:17: Warning: skipping prefixes on `je' +.*:18: Warning: skipping prefixes on `jmp'