Re: [PATCH] RISC-V: define elf_backend_dtrel_excludes_plt
Nelson Chu <[email protected]> Wed, 29 Jul 2026 19:30:43 +0800
| Newsgroups | gmane.comp.gnu.binutils |
|---|---|
| Message-ID | <CAHT-pJwCoPy_np24snaL1bZ2PdCWTF42Vezi9o3ZqAxGjd0gjg@mail.gmail.com> |
wangjue <[email protected]> > From: juewang <[email protected]> > > 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. Sounds reasonable, please commit. Thanks Nelson > * elfnn-riscv.c (elf_backend_dtrel_excludes_plt): Define. > > Signed-off-by: wangjue.wangjue <[email protected]> > --- > 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 > -- > 2.34.1 > >