From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x52a.google.com (mail-pg1-x52a.google.com [IPv6:2607:f8b0:4864:20::52a]) by sourceware.org (Postfix) with ESMTPS id 061BF3858CDB for ; Tue, 9 Jan 2024 14:42:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 061BF3858CDB 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 061BF3858CDB Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::52a ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704811353; cv=none; b=iUchCBWnO7Hilbl0krXEvtDk0CYpYJcRDYZGM+CNtP+P8gIDqskOR46vT0GnSC0vnyNSZx4xI3Icm3395XjzuZa+qFPfTJTw0j1LjRXlXVyECbc6xmq8SsdheJCaaw612ESOKBpH2PFnxdEq+AX7Y4VNb2lY7M1i+zvewysOfx0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704811353; c=relaxed/simple; bh=5lHRRLrW4qFx8NDMjKzq2WxdyEoFkc4A8oJjClA9n0E=; h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version; b=W/eLiHtgx3xa8IncZk6i2NzWuM8+tWc3sBkC1ek89BauDr2WDbfwzX2tkVRm835/TzsttFiJPMFtLEkyUb344fRLkB7EBjRJjr08ERMBCpWGnTydal8k9t2szCvECGh955tNN3LMnvrEa1X5J+xiCXsER79Pq02amGLxJO4XHwQ= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-5ca1b4809b5so1172117a12.3 for ; Tue, 09 Jan 2024 06:42:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704811350; x=1705416150; darn=sourceware.org; h=content-disposition:mime-version:message-id:subject:to:from:date :from:to:cc:subject:date:message-id:reply-to; bh=IM+F9F3B2oiGzh9Ubgltkbbvf4IneO+NqAxhBPpc9K0=; b=XHGUEO2b20PtCrPfL7zEd8gRl2uxixhrQ4XYCdswjPis6xdLL5iqFNIkADCFCvXjdD WTyqYjUlBII8yJ0589TTImsqP3GxEgsPnLDe+oFoumVbybimK50FoCSEeZpm2VnEms3C JgTU0RCaJxkFJ2Mh1KRzx5i52a41WvlpCLzEXop16i67NhihqVDoYrQWq0bVM7xFNEuY DzoPXJ7qTXt59ONShBlI1pzxvmNmau79TFSx7WEK1Gi+gHolcv3h4QGWxDG1iBO98+cU qIF5+M1zgfH88Z6FdK/Spu89mArtgBX4ZrDAeucW2vmxHeIASg99albKEuoQMVwyAstZ /GyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704811350; x=1705416150; h=content-disposition:mime-version:message-id:subject:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=IM+F9F3B2oiGzh9Ubgltkbbvf4IneO+NqAxhBPpc9K0=; b=qrYqCPmGSRK+woRE+h2+hF3nXfSuwWM8QK2Wb+XQ1wYquFnHP1TSJUTPGnSbl6sDpD i/4Lg4lsXH/zOBpe1u4Rw3QMb01fwGjJh0I1eN2eMD6iezWRAh5g/e4MIOPcZMxynX9+ Zpp1P0jm8PIoLSLPg+6Fqu17RUW7MdZz/CnZFq+iIvWYohY4IsatuHyCUXbbnPVGqHu5 Yr7JvQpW3YMlk4YP7UiNdLOYpcD7ea50s6s+IN7Op2pmRKAvCVSS7VlTR917NcSGV258 jIMgcX3VBLk+p4EvGQjD1rZ2N+9Yb3T16vDlOBWgrnmKG9gutoHCWA1LKZLuL+xWl81d 1QpQ== X-Gm-Message-State: AOJu0YzWHROuA5/kZwwcNTA9eIaq1gvVGt9xHgt0ScF5CsYIPO26GBwz NB283tPLr9YZR5feeMuLPidj5P2hZUs= X-Google-Smtp-Source: AGHT+IFPcpnZ2oy08J7gWrA0lptVWnq7GFw/OdsC1z8g1T9U00Cp7qP+5HAorUx0SMgM1whw3X/xoA== X-Received: by 2002:a05:6a20:baa6:b0:199:7db6:1850 with SMTP id fb38-20020a056a20baa600b001997db61850mr2007410pzb.83.1704811349585; Tue, 09 Jan 2024 06:42:29 -0800 (PST) Received: from gnu-cfl-3.localdomain ([172.56.169.119]) by smtp.gmail.com with ESMTPSA id a1-20020a63d401000000b005c661a432d7sm1683534pgh.75.2024.01.09.06.42.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jan 2024 06:42:29 -0800 (PST) Received: by gnu-cfl-3.localdomain (Postfix, from userid 1000) id EFE5B7402D2; Tue, 9 Jan 2024 06:42:27 -0800 (PST) Date: Tue, 9 Jan 2024 06:42:27 -0800 From: "H.J. Lu" To: binutils@sourceware.org Subject: [PATCH v2] x86: Don't check R_386_NONE nor R_X86_64_NONE Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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 List-Id: This is what I am checking in. H.J. --- 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 ec001599cc1..f8905fbd4d4 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..9c96d825cc7 --- /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: --32 +#ld: -pie -melf_i386 +#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 0af9f047600..03266cba7e0 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" -- 2.43.0