[binutils-gdb] RISC-V: define elf_backend_dtrel_excludes_plt

Jiawei Chen via Binutils-cvs <[email protected]>
Newsgroups gmane.comp.gnu.binutils.cvs
Message-ID <[email protected]>
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=4e8ba93fdb24f9bcf31f706e62e67c57ae91168f

commit 4e8ba93fdb24f9bcf31f706e62e67c57ae91168f
Author: juewang <[email protected]>
Date:   Fri Jul 24 09:26:42 2026 +0800

    RISC-V: define elf_backend_dtrel_excludes_plt
    
    The RISC-V port never defined elf_backend_dtrel_excludes_plt, unlike
    x86-64, AArch64, arm, ppc, mips and s390.  As a result DT_RELASZ counted
    .rela.dyn + .rela.plt instead of just .rela.dyn.
    
    With an empty .rela.dyn this makes DT_RELA alias DT_JMPREL (DT_RELA ==
    DT_JMPREL, DT_RELASZ == DT_PLTRELSZ).  glibc accepts the aliased range,
    but tools that read the two ranges independently, such as llvm-bolt, then
    process .rela.plt twice.
    
    Define the macro so DT_RELASZ excludes .rela.plt, matching every other
    target.  When .rela.dyn is empty DT_RELA is now zeroed and the aliasing
    is gone.
    
            * elfnn-riscv.c (elf_backend_dtrel_excludes_plt): Define.
    
    Signed-off-by: wangjue.wangjue <[email protected]>

Diff:
---
 bfd/elfnn-riscv.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c
index 1c1c3ea36c5..1ca23e4964a 100644
--- a/bfd/elfnn-riscv.c
+++ b/bfd/elfnn-riscv.c
@@ -5587,6 +5587,7 @@ elfNN_riscv_merge_gnu_properties (struct bfd_link_info *info, bfd *abfd,
 #define elf_backend_got_header_size		(ARCH_SIZE / 8)
 #define elf_backend_want_dynrelro		1
 #define elf_backend_rela_normal			1
+#define elf_backend_dtrel_excludes_plt	1
 #define elf_backend_default_execstack		0
 
 #undef  elf_backend_obj_attrs_vendor
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.