/* 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)
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
(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. */
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. */
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 \