[PATCH] RISC-V: define elf_backend_dtrel_excludes_plt
Nelson Chu
nelson.chu1990@gmail.com
Wed Jul 29 11:30:43 GMT 2026
wangjue <juewang@linux.alibaba.com>
> From: juewang <juewang@linux.alibaba.com>
>
> 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 <wangjue.wangjue@alibaba-inc.com>
> ---
> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://sourceware.org/pipermail/binutils/attachments/20260729/22a29544/attachment.htm>
More information about the Binutils
mailing list