mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 14:50:05 +00:00
* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_fixup_plt):
Always perform the flush during RTLD_BOOTSTRAP.
This commit is contained in:
parent
0d1f3079f1
commit
1f5ed31e30
@ -1,3 +1,8 @@
|
||||
1998-05-23 David S. Miller <davem@dm.cobaltmicro.com>
|
||||
|
||||
* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_fixup_plt):
|
||||
Always perform the flush during RTLD_BOOTSTRAP.
|
||||
|
||||
1998-05-21 David S. Miller <davem@dm.cobaltmicro.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: Add
|
||||
|
@ -274,6 +274,10 @@ elf_machine_fixup_plt (struct link_map *map, const Elf32_Rela *reloc,
|
||||
if we execute it and hw does not support it. */
|
||||
__asm ("" : "=r" (hwcap) : "0" (hwcap));
|
||||
do_flush = (!hwcap || (*hwcap & HWCAP_SPARC_FLUSH));
|
||||
#else
|
||||
/* Unfortunately, this is necessary, so that we can ensure
|
||||
ld.so will not execute corrupt PLT entry instructions. */
|
||||
const int do_flush = 1;
|
||||
#endif
|
||||
|
||||
/* For thread safety, write the instructions from the bottom and
|
||||
@ -282,16 +286,12 @@ elf_machine_fixup_plt (struct link_map *map, const Elf32_Rela *reloc,
|
||||
But we also can't tell if we _can_ use flush, so don't. */
|
||||
|
||||
reloc_addr[2] = OPCODE_JMP_G1 | (value & 0x3ff);
|
||||
#ifndef RTLD_BOOTSTRAP
|
||||
if (do_flush)
|
||||
__asm __volatile ("flush %0+8" : : "r"(reloc_addr));
|
||||
#endif
|
||||
|
||||
reloc_addr[1] = OPCODE_SETHI_G1 | (value >> 10);
|
||||
#ifndef RTLD_BOOTSTRAP
|
||||
if (do_flush)
|
||||
__asm __volatile ("flush %0+4" : : "r"(reloc_addr));
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef RESOLVE
|
||||
|
Loading…
Reference in New Issue
Block a user