From patchwork Tue Jan 9 14:30:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 186414 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:2411:b0:101:2151:f287 with SMTP id m17csp146370dyi; Tue, 9 Jan 2024 06:31:19 -0800 (PST) X-Google-Smtp-Source: AGHT+IFaPxxFXI3M6L/2VDpSCy5kIyipQSnf+vCFXnFPr+FxORPDCl+K8zTE7yboM4gSJRNL3M/s X-Received: by 2002:a05:6214:da6:b0:681:137a:77d2 with SMTP id h6-20020a0562140da600b00681137a77d2mr1257753qvh.74.1704810679246; Tue, 09 Jan 2024 06:31:19 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1704810679; cv=pass; d=google.com; s=arc-20160816; b=QRgpPSFpoKk8eC+pwW2a/bGtowgOBhBEKP+6wmhtF9Vl8mDUFs+apT3GwCwAgnG2Z3 Mf9BIB99mklqnEwvFRUM72be1ilWcTBvIcK/Hj4BFdHCnFfcK8ZxsW6Ndh3duL47Ksfv Tghx73+RT3ezq85rhBYnnlQOekaA1EK4SGR1bJRiYskyLhPptZ3Ym6RUGUW7FqNf2pv2 O3Ctd05HZp6PR2JcTdASAjH3EN/VRI1WXLF+BBXOTgPeFgtn8TnfYquJ7utah3hnO44c rHImSN610ybdZzRzyJQ8lw0s0M0jfh/upT6exz5tfebBO+WhoW8BN91ZfQON8KhUsX6O Q5+A== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:message-id:date:subject:to:from:dkim-signature :arc-filter:dmarc-filter:delivered-to; bh=13S512xcC+FT+Owkm0a+E956XCk7xt0mmvHYWx5uT0Q=; fh=NLxAvL/bDfPg4AGOtxqvQlND8vazkZrNzKLY8+LAbBY=; b=AMVp2uCrwf1PTpFfNhm7mLSbilT0c+I1WiFqKKSUMFo2xrK/gmhYe/IwqXX3M31Hl3 tQSykr4+r1EcsXXGy90bcqt9Vz8uzj/uSdjnchjim+EpIv8ZNfEo+Uplx8yGerbR02B5 QqHe/n9pOSgH7NLyw53donzxwDeNkeAZZtDG12hNUX3lnojUmhVAFDxWScx/4k2ksObS 9ZxJGMZhidvvf6nGFzptC9OW9VRNCPuyCe12l+FRSTtKw7AIfz0qolcdWBLnZpYNQlfT 5kKbVWlTEioiPW9H4CqTEbgBNlDlX8FWdqGVesumE6y4nqS7pE98JIXZTg0Bt04GZsV6 Aegw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Lf3KbnI5; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id e24-20020a0caa58000000b0067f2fc95266si2333022qvb.94.2024.01.09.06.31.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jan 2024 06:31:19 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Lf3KbnI5; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 96ABF3857C67 for ; Tue, 9 Jan 2024 14:31:17 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-pl1-x62e.google.com (mail-pl1-x62e.google.com [IPv6:2607:f8b0:4864:20::62e]) by sourceware.org (Postfix) with ESMTPS id 18999385828F for ; Tue, 9 Jan 2024 14:30:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 18999385828F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 18999385828F Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::62e ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704810635; cv=none; b=NZxJIkC+JkfJYO2OTaTtLVBDlkrQy8rgkelazOHxw205vwepnaWCfOuuSlACyZ2VkEkGVcE1pyGhPHAu/v5JWbm0nITpDycomvBqB9NXhTpQCaJ73PDkkSLuk/Jp76qyytnQ/dqhWJBkCiuDaOhXPxrgrtjrq+J8Hs/0XwTbFhA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704810635; c=relaxed/simple; bh=C4lSFtpT1o5jpXBaLhVgKBQWXubAKGDs37j2GMIncTA=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=pBDPZrsKDowucskwxsfltt0C1IWizMX+IyOsxMpQhJap0SYyHlXi7w1GOv+LUGZseDkGsnSgOMdyk4WYArbWg5f5kAdxmLEYYJbQlmBEdKWElva8YJ7H+QamlN0+71VrvP/argb/404lPi6yRHv923Z4jfckSKvHcM6XI1Fv71k= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-1d3e05abcaeso16811965ad.1 for ; Tue, 09 Jan 2024 06:30:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704810631; x=1705415431; darn=sourceware.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=13S512xcC+FT+Owkm0a+E956XCk7xt0mmvHYWx5uT0Q=; b=Lf3KbnI5vCzAndW/yaGRz8vxIwHRFbbMSanPj8gZ3VpOWvbkZpmiyY7RBwCLoFj026 8PuMiuzZg46VafxZeabIv06jApk59lNiuppAfA5fjctzUp7uog1+BjWcO7cL/yS/r02b ewpLm1Mp2obkJ5PnqfK0mUDSfER+LhAL2L+D9UGts00Vs/rYOnZ+3EZL+R+oOUqBRDi+ Rtx1/vVBGeIGz6Lvu8mQk1LqMChmWFiSq4u6WTXDiRIvY3PWu3wMMHiRqzzB7WZgHupt ksgXf+wRc7vz4Q719Q5U4WdekWEj0pDqkCSE1/a7oGw5V//rAXz97i5kTXATpl5dsGYN kQCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704810631; x=1705415431; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=13S512xcC+FT+Owkm0a+E956XCk7xt0mmvHYWx5uT0Q=; b=gilfcyzYKEZSyGDhkK63RKN5FSfCNxph3/DMFqLhXH0NeArpHvxJ1ZEC2kD4sBsrmN RcfTPCubxkuVWBMDJHzxglNZ1BDK6Zzk60caDeAn3N3O+z8OJblWFZmHFgF1mTxYmzMJ rzlX7yJbj+0RSYPc/4E9RiNQ8/UeAq5/X//mcDEZJ+FzdhbRKTnVybZ1bBwMKfXRe9ci qtiPGgi4bQkjOihR6gPWbjbt0PC4h/dRVOQMWx8vkPEFBimDqlpSVH4oSiX+2mI8l95p 07nixO1q9HVniPPKUwAmVt9yKgRnL+NyjFUfbSPHUyQP/LUfzO/Scg/7VIj+XSe9k18N 5KTw== X-Gm-Message-State: AOJu0Yw9anMTFGgSsYeb409PIUUFSsRJRefC+aMI+ovtu5zWa7a9htbJ ujWghWd2R9ZTTttvcRvCEuBac8opMZ4= X-Received: by 2002:a17:902:d4cc:b0:1d5:36a9:10f6 with SMTP id o12-20020a170902d4cc00b001d536a910f6mr2288859plg.29.1704810630625; Tue, 09 Jan 2024 06:30:30 -0800 (PST) Received: from gnu-cfl-3.localdomain ([172.56.169.119]) by smtp.gmail.com with ESMTPSA id q19-20020a170902789300b001d337b8c0b2sm1865578pll.7.2024.01.09.06.30.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jan 2024 06:30:30 -0800 (PST) Received: from gnu-cfl-3.. (localhost [IPv6:::1]) by gnu-cfl-3.localdomain (Postfix) with ESMTP id 0C54B7401A3 for ; Tue, 9 Jan 2024 06:30:29 -0800 (PST) From: "H.J. Lu" To: binutils@sourceware.org Subject: [PATCH] x86: Don't check R_386_NONE nor R_X86_64_NONE Date: Tue, 9 Jan 2024 06:30:28 -0800 Message-ID: <20240109143028.771373-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-Spam-Status: No, score=-3014.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, UNWANTED_LANGUAGE_BODY 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.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1787623562358611808 X-GMAIL-MSGID: 1787623562358611808 Update x86 ELF linker to skip R_386_NONE/R_X86_64_NONE when scanning relocations. bfd/ * PR ld/31047 * elf32-i386.c (elf_i386_scan_relocs): Don't check R_386_NONE. * elf64-x86-64.c (elf_x86_64_scan_relocs): Don't check R_X86_64_NONE. ld/ * PR ld/31047 * testsuite/ld-i386/i386.exp: Run PR ld/31047 test. * testsuite/ld-x86-64/x86-64.exp: Likewise. * testsuite/ld-i386/pr31047.d: New file. * testsuite/ld-x86-64/pr31047-x32.d: Likewise. * testsuite/ld-x86-64/pr31047.d: Likewise. * testsuite/ld-x86-64/pr31047a.s: Likewise. * testsuite/ld-x86-64/pr31047b.s: Likewise. --- bfd/elf32-i386.c | 4 ++++ bfd/elf64-x86-64.c | 4 ++++ ld/testsuite/ld-i386/i386.exp | 1 + ld/testsuite/ld-i386/pr31047.d | 13 +++++++++++++ ld/testsuite/ld-x86-64/pr31047-x32.d | 13 +++++++++++++ ld/testsuite/ld-x86-64/pr31047.d | 13 +++++++++++++ ld/testsuite/ld-x86-64/pr31047a.s | 3 +++ ld/testsuite/ld-x86-64/pr31047b.s | 6 ++++++ ld/testsuite/ld-x86-64/x86-64.exp | 2 ++ 9 files changed, 59 insertions(+) create mode 100644 ld/testsuite/ld-i386/pr31047.d create mode 100644 ld/testsuite/ld-x86-64/pr31047-x32.d create mode 100644 ld/testsuite/ld-x86-64/pr31047.d create mode 100644 ld/testsuite/ld-x86-64/pr31047a.s create mode 100644 ld/testsuite/ld-x86-64/pr31047b.s diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c index 5fc68551e95..e2f88a11487 100644 --- a/bfd/elf32-i386.c +++ b/bfd/elf32-i386.c @@ -1525,6 +1525,10 @@ elf_i386_scan_relocs (bfd *abfd, r_symndx = ELF32_R_SYM (rel->r_info); r_type = ELF32_R_TYPE (rel->r_info); + /* Don't check R_386_NONE. */ + if (r_type == R_386_NONE) + continue; + if (r_symndx >= NUM_SHDR_ENTRIES (symtab_hdr)) { /* xgettext:c-format */ diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index 1a2e64c031f..f1253751bbd 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -2040,6 +2040,10 @@ elf_x86_64_scan_relocs (bfd *abfd, struct bfd_link_info *info, r_symndx = htab->r_sym (rel->r_info); r_type = ELF32_R_TYPE (rel->r_info); + /* Don't check R_X86_64_NONE. */ + if (r_type == R_X86_64_NONE) + continue; + if (r_symndx >= NUM_SHDR_ENTRIES (symtab_hdr)) { /* xgettext:c-format */ diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp index c7df7731ac4..18d1c9198ca 100644 --- a/ld/testsuite/ld-i386/i386.exp +++ b/ld/testsuite/ld-i386/i386.exp @@ -512,6 +512,7 @@ run_dump_test "dt-relr-1b" run_dump_test "pr28870" run_dump_test "pr28894" run_dump_test "pr30787" +run_dump_test "pr31047" if { !([istarget "i?86-*-linux*"] || [istarget "i?86-*-gnu*"] diff --git a/ld/testsuite/ld-i386/pr31047.d b/ld/testsuite/ld-i386/pr31047.d new file mode 100644 index 00000000000..9a60a7f2e2b --- /dev/null +++ b/ld/testsuite/ld-i386/pr31047.d @@ -0,0 +1,13 @@ +#source: ../ld-x86-64/pr31047a.s +#source: ../ld-x86-64/pr31047b.s +#as: --64 +#ld: -pie -melf_x86_64 +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: + +[a-f0-9]+: 90 nop diff --git a/ld/testsuite/ld-x86-64/pr31047-x32.d b/ld/testsuite/ld-x86-64/pr31047-x32.d new file mode 100644 index 00000000000..87bb92cbb44 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr31047-x32.d @@ -0,0 +1,13 @@ +#source: pr31047a.s +#source: pr31047b.s +#as: --x32 +#ld: -pie -melf32_x86_64 +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: + +[a-f0-9]+: 90 nop diff --git a/ld/testsuite/ld-x86-64/pr31047.d b/ld/testsuite/ld-x86-64/pr31047.d new file mode 100644 index 00000000000..5c3047cce34 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr31047.d @@ -0,0 +1,13 @@ +#source: pr31047a.s +#source: pr31047b.s +#as: --64 +#ld: -pie -melf_x86_64 +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: + +[a-f0-9]+: 90 nop diff --git a/ld/testsuite/ld-x86-64/pr31047a.s b/ld/testsuite/ld-x86-64/pr31047a.s new file mode 100644 index 00000000000..9d4777eba80 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr31047a.s @@ -0,0 +1,3 @@ + .globl foo + foo = 0x1000 + .section .note.GNU-stack,"",@progbits diff --git a/ld/testsuite/ld-x86-64/pr31047b.s b/ld/testsuite/ld-x86-64/pr31047b.s new file mode 100644 index 00000000000..1f0169abf40 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr31047b.s @@ -0,0 +1,6 @@ + .text + .globl _start +_start: + .nop + .reloc 0, BFD_RELOC_NONE, foo + .section .note.GNU-stack,"",@progbits diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp index d17bb9b7d7e..a1a0422cea2 100644 --- a/ld/testsuite/ld-x86-64/x86-64.exp +++ b/ld/testsuite/ld-x86-64/x86-64.exp @@ -511,6 +511,8 @@ run_dump_test "dt-relr-1a-x32" run_dump_test "dt-relr-1b" run_dump_test "dt-relr-1b-x32" run_dump_test "pr30787" +run_dump_test "pr31047" +run_dump_test "pr31047-x32" if { ![skip_sframe_tests] } { run_dump_test "sframe-simple-1"