diff options
Diffstat (limited to 'sysdeps/sparc')
-rw-r--r-- | sysdeps/sparc/sparc32/dl-machine.h | 7 | ||||
-rw-r--r-- | sysdeps/sparc/sparc64/dl-machine.h | 9 |
2 files changed, 11 insertions, 5 deletions
diff --git a/sysdeps/sparc/sparc32/dl-machine.h b/sysdeps/sparc/sparc32/dl-machine.h index a160f7d41f..83deb16594 100644 --- a/sysdeps/sparc/sparc32/dl-machine.h +++ b/sysdeps/sparc/sparc32/dl-machine.h @@ -285,8 +285,9 @@ _dl_start_user: .size _dl_start_user, . - _dl_start_user .previous"); -static inline void -elf_machine_fixup_plt (struct link_map *map, const Elf32_Rela *reloc, +static inline Elf32_Addr +elf_machine_fixup_plt (struct link_map *map, lookup_t t, + const Elf32_Rela *reloc, Elf32_Addr *reloc_addr, Elf32_Addr value) { #ifndef RTLD_BOOTSTRAP @@ -315,6 +316,8 @@ elf_machine_fixup_plt (struct link_map *map, const Elf32_Rela *reloc, reloc_addr[1] = OPCODE_SETHI_G1 | (value >> 10); if (do_flush) __asm __volatile ("flush %0+4" : : "r"(reloc_addr)); + + return value; } /* Return the final value of a plt relocation. */ diff --git a/sysdeps/sparc/sparc64/dl-machine.h b/sysdeps/sparc/sparc64/dl-machine.h index 7b89ebe733..4e8447214a 100644 --- a/sysdeps/sparc/sparc64/dl-machine.h +++ b/sysdeps/sparc/sparc64/dl-machine.h @@ -66,9 +66,10 @@ elf_machine_load_address (void) /* We have 4 cases to handle. And we code different code sequences for each one. I love V9 code models... */ -static inline void -elf_machine_fixup_plt(struct link_map *map, const Elf64_Rela *reloc, - Elf64_Addr *reloc_addr, Elf64_Addr value) +static inline Elf64_Addr +elf_machine_fixup_plt (struct link_map *map, lookup_t t, + const Elf64_Rela *reloc, + Elf64_Addr *reloc_addr, Elf64_Addr value) { unsigned int *insns = (unsigned int *) reloc_addr; Elf64_Addr plt_vaddr = (Elf64_Addr) reloc_addr; @@ -156,6 +157,8 @@ elf_machine_fixup_plt(struct link_map *map, const Elf64_Rela *reloc, insns[1] = 0x03000000 | (high32 >> 10); __asm __volatile ("flush %0 + 4" : : "r" (insns)); } + + return value; } /* Return the final value of a plt relocation. */ |