riscv: Use elf_machine_rela_relative to handle R_RISCV_RELATIVE

Minor clean-up, we need to change this part in following patch, clean this up
to prevent we duplicated the change twice.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
This commit is contained in:
Kito Cheng 2022-06-23 23:47:04 +08:00 committed by Palmer Dabbelt
parent bd42891bb3
commit 58fc66a91c
No known key found for this signature in database
GPG Key ID: 2E1319F35FBB1889

View File

@ -152,6 +152,14 @@ elf_machine_fixup_plt (struct link_map *map, lookup_t t,
#ifdef RESOLVE_MAP
static inline void
__attribute__ ((always_inline))
elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
void *const reloc_addr)
{
*(ElfW(Addr) *) reloc_addr = l_addr + reloc->r_addend;
}
/* Perform a relocation described by R_INFO at the location pointed to
by RELOC_ADDR. SYM is the relocation symbol specified by R_INFO and
MAP is the object containing the reloc. */
@ -182,7 +190,7 @@ elf_machine_rela (struct link_map *map, struct r_scope_elem *scope[],
switch (r_type)
{
case R_RISCV_RELATIVE:
*addr_field = map->l_addr + reloc->r_addend;
elf_machine_rela_relative (map->l_addr, reloc, addr_field);
break;
case R_RISCV_JUMP_SLOT:
case __WORDSIZE == 64 ? R_RISCV_64 : R_RISCV_32:
@ -258,14 +266,6 @@ elf_machine_rela (struct link_map *map, struct r_scope_elem *scope[],
}
}
static inline void
__attribute__ ((always_inline))
elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
void *const reloc_addr)
{
*(ElfW(Addr) *) reloc_addr = l_addr + reloc->r_addend;
}
static inline void
__attribute__ ((always_inline))
elf_machine_lazy_rel (struct link_map *map, struct r_scope_elem *scope[],