mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-22 21:10:07 +00:00
dd8f8da99d
On s390, the current prelink undo code in elf_machine_lazy_rel() has the requirement, that the plt stubs use the first got slots after the 3 reserved ones. In case of undoing prelink, the plt got slots are reset to the correct addresses whithin the corresponding plt-stub. Therefore the address is calculated by the address of the first plt-stub-address which was written by prelink (see l->l_mach.plt) to got[1] and index of current relocation multiplied with 32 (=size of one plt slot). The index was calculated with ¤t-got-slot - &got[3]. This patch removes the requirement, that the plt-got-slots are starting at got[3]. The index is now calculated with ¤t-reloc - &reloc[0]. The first struct Elf64_Rela is stored at DT_JMPREL. This patch is needed to prepare for partial relro support. Ulrich Weigand suggested this approach to use DT_JMPREL - Thanks. ChangeLog: * sysdeps/s390/linkmap.h (struct link_map_machine): Remove member gotplt and add member jmprel. * sysdeps/s390/s390-32/dl-machine.h (elf_machine_runtime_setup): Setup member jmprel with DT_JMPREL instead of gotplt with &got[3]. (elf_machine_lazy_rel): Calculate address with reloc and jmprel. * sysdeps/s390/s390-64/dl-machine.h: Likewise. |
||
---|---|---|
.. | ||
bits | ||
multiarch | ||
__longjmp.c | ||
add_n.S | ||
backtrace.c | ||
bcopy.S | ||
bsd-_setjmp.S | ||
bsd-setjmp.S | ||
bzero.S | ||
crti.S | ||
crtn.S | ||
dl-machine.h | ||
dl-trampoline.h | ||
dl-trampoline.S | ||
Implies | ||
Makefile | ||
memchr.S | ||
memcmp.S | ||
memcpy.S | ||
memset.S | ||
s390x-mcount.S | ||
setjmp.S | ||
stackguard-macros.h | ||
start.S | ||
strcmp.S | ||
strcpy.S | ||
strncpy.S | ||
sub_n.S | ||
sysdep.h | ||
tls-macros.h | ||
tst-audit.h |