(elf_machine_runtime_setup): DT_PLTGOT entry is already relocated.

This commit is contained in:
Ulrich Drepper 1999-02-20 18:22:38 +00:00
parent 3aa76df334
commit e675032fec
3 changed files with 5 additions and 7 deletions

View File

@ -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)

View File

@ -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

View File

@ -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 \