(elf_machine_fixup_plt): DT_JMPREL and DT_PLTGOT entries are already
relocated. (elf_machine_rela): Likewise for DT_SYMTAB.
This commit is contained in:
parent
1d32500284
commit
3e3649f6e2
@ -1,5 +1,5 @@
|
|||||||
/* Machine-dependent ELF dynamic relocation inline functions. Alpha version.
|
/* Machine-dependent ELF dynamic relocation inline functions. Alpha version.
|
||||||
Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Richard Henderson <rth@tamu.edu>.
|
Contributed by Richard Henderson <rth@tamu.edu>.
|
||||||
|
|
||||||
@ -350,8 +350,8 @@ elf_machine_fixup_plt(struct link_map *l, const Elf64_Rela *reloc,
|
|||||||
|
|
||||||
/* Recover the PLT entry address by calculating reloc's index into the
|
/* Recover the PLT entry address by calculating reloc's index into the
|
||||||
.rela.plt, and finding that entry in the .plt. */
|
.rela.plt, and finding that entry in the .plt. */
|
||||||
rela_plt = (void *)(l->l_addr + l->l_info[DT_JMPREL]->d_un.d_ptr);
|
rela_plt = (void *) l->l_info[DT_JMPREL]->d_un.d_ptr;
|
||||||
plte = (void *)(l->l_addr + l->l_info[DT_PLTGOT]->d_un.d_ptr + 32);
|
plte = (void *) (l->l_info[DT_PLTGOT]->d_un.d_ptr + 32);
|
||||||
plte += 3 * (reloc - rela_plt);
|
plte += 3 * (reloc - rela_plt);
|
||||||
|
|
||||||
/* Find the displacement from the plt entry to the function. */
|
/* Find the displacement from the plt entry to the function. */
|
||||||
@ -481,7 +481,7 @@ elf_machine_rela (struct link_map *map,
|
|||||||
than the dynamic linker's built-in definitions used
|
than the dynamic linker's built-in definitions used
|
||||||
while loading those libraries. */
|
while loading those libraries. */
|
||||||
const Elf64_Sym *const dlsymtab
|
const Elf64_Sym *const dlsymtab
|
||||||
= (void *)(map->l_addr + map->l_info[DT_SYMTAB]->d_un.d_ptr);
|
= (void *) map->l_info[DT_SYMTAB]->d_un.d_ptr;
|
||||||
sym_value -= map->l_addr;
|
sym_value -= map->l_addr;
|
||||||
sym_value -= dlsymtab[ELF64_R_SYM(reloc->r_info)].st_value;
|
sym_value -= dlsymtab[ELF64_R_SYM(reloc->r_info)].st_value;
|
||||||
sym_value -= reloc->r_addend;
|
sym_value -= reloc->r_addend;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user