(elf_machine_runtime_setup): DT_PLTGOT entry is already relocated.
This commit is contained in:
parent
3aa76df334
commit
e675032fec
|
@ -98,7 +98,7 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
|
|||
/* The GOT entries for the functions in the PLT have not been
|
||||
filled in yet. Their initial contents are directed to the
|
||||
PLT which arranges for the dynamic linker to be called. */
|
||||
plt = l->l_addr + l->l_info[DT_PLTGOT]->d_un.d_ptr;
|
||||
plt = l->l_info[DT_PLTGOT]->d_un.d_ptr;
|
||||
|
||||
/* This function will be called to perform the relocation. */
|
||||
if (!profile)
|
||||
|
|
|
@ -80,7 +80,7 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
|
|||
to push an offset into the .rela.plt section, push
|
||||
_GLOBAL_OFFSET_TABLE_[1], and then jump to
|
||||
_GLOBAL_OFFSET_TABLE_[2]. */
|
||||
got = (Elf32_Addr *) (l->l_addr + l->l_info[DT_PLTGOT]->d_un.d_ptr);
|
||||
got = (Elf32_Addr *) l->l_info[DT_PLTGOT]->d_un.d_ptr;
|
||||
got[1] = (Elf32_Addr) l; /* Identify this shared object. */
|
||||
|
||||
/* The got[2] entry contains the address of a function which gets
|
||||
|
|
|
@ -156,8 +156,7 @@ elf_machine_got_rel (struct link_map *map, int lazy)
|
|||
(ref)? sym_loadaddr + ref->st_value: 0; \
|
||||
})
|
||||
|
||||
got = (ElfW(Addr) *) ((void *) map->l_addr
|
||||
+ map->l_info[DT_PLTGOT]->d_un.d_ptr);
|
||||
got = (ElfW(Addr) *) map->l_info[DT_PLTGOT]->d_un.d_ptr;
|
||||
|
||||
/* got[0] is reserved. got[1] is also reserved for the dynamic object
|
||||
generated by gnu ld. Skip these reserved entries from relocation. */
|
||||
|
@ -232,8 +231,7 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
|
|||
Their initial contents will arrange when called to put an
|
||||
offset into the .dynsym section in t8, the return address
|
||||
in t7 and then jump to _GLOBAL_OFFSET_TABLE[0]. */
|
||||
got = (ElfW(Addr) *) ((void *) l->l_addr
|
||||
+ l->l_info[DT_PLTGOT]->d_un.d_ptr);
|
||||
got = (ElfW(Addr) *) l->l_info[DT_PLTGOT]->d_un.d_ptr;
|
||||
|
||||
/* This function will get called to fix up the GOT entry indicated by
|
||||
the register t8, and then jump to the resolved address. */
|
||||
|
@ -350,7 +348,7 @@ __dl_runtime_resolve (ElfW(Word) sym_index, \
|
|||
const char *strtab \
|
||||
= (const void *) l->l_info[DT_STRTAB]->d_un.d_ptr; \
|
||||
const ElfW(Addr) *got \
|
||||
= (const ElfW(Addr) *) (l->l_addr + l->l_info[DT_PLTGOT]->d_un.d_ptr); \
|
||||
= (const ElfW(Addr) *) l->l_info[DT_PLTGOT]->d_un.d_ptr; \
|
||||
const ElfW(Word) local_gotno \
|
||||
= (const ElfW(Word)) l->l_info[DT_MIPS (LOCAL_GOTNO)]->d_un.d_val; \
|
||||
const ElfW(Word) gotsym \
|
||||
|
|
Loading…
Reference in New Issue