Lines Matching refs:obj

59 init_pltgot(Obj_Entry *obj)  in init_pltgot()  argument
62 if (obj->pltgot != NULL) { in init_pltgot()
63 obj->pltgot[1] = (Elf_Addr) obj; in init_pltgot()
64 obj->pltgot[2] = (Elf_Addr) &_rtld_bind_start; in init_pltgot()
145 reloc_tlsdesc(const Obj_Entry *obj, const Elf_Rela *rela, Elf_Addr *where, in reloc_tlsdesc() argument
155 def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj, flags, in reloc_tlsdesc()
160 obj = defobj; in reloc_tlsdesc()
170 if (obj->tlsoffset != 0) { in reloc_tlsdesc()
173 where[1] = obj->tlsoffset + offs; in reloc_tlsdesc()
177 where[1] = reloc_tlsdesc_alloc(obj->tlsindex, offs); in reloc_tlsdesc()
185 reloc_plt(Obj_Entry *obj, int flags, RtldLockState *lockstate) in reloc_plt() argument
190 relalim = (const Elf_Rela *)((const char *)obj->pltrela + in reloc_plt()
191 obj->pltrelasize); in reloc_plt()
192 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_plt()
195 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_plt()
199 *where += (Elf_Addr)obj->relocbase; in reloc_plt()
202 reloc_tlsdesc(obj, rela, where, SYMLOOK_IN_PLT | flags, in reloc_plt()
206 obj->irelative = true; in reloc_plt()
224 reloc_jmpslots(Obj_Entry *obj, int flags, RtldLockState *lockstate) in reloc_jmpslots() argument
231 if (obj->jmpslots_done) in reloc_jmpslots()
234 relalim = (const Elf_Rela *)((const char *)obj->pltrela + in reloc_jmpslots()
235 obj->pltrelasize); in reloc_jmpslots()
236 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_jmpslots()
239 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_jmpslots()
242 def = find_symdef(ELF_R_SYM(rela->r_info), obj, in reloc_jmpslots()
247 obj->gnu_ifunc = true; in reloc_jmpslots()
251 reloc_jmpslot(where, target, defobj, obj, in reloc_jmpslots()
256 obj->jmpslots_done = true; in reloc_jmpslots()
262 reloc_iresolve_one(Obj_Entry *obj, const Elf_Rela *rela, in reloc_iresolve_one() argument
267 ptr = (Elf_Addr *)(obj->relocbase + rela->r_addend); in reloc_iresolve_one()
268 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_iresolve_one()
276 reloc_iresolve(Obj_Entry *obj, struct Struct_RtldLockState *lockstate) in reloc_iresolve() argument
281 if (!obj->irelative) in reloc_iresolve()
283 obj->irelative = false; in reloc_iresolve()
284 relalim = (const Elf_Rela *)((const char *)obj->pltrela + in reloc_iresolve()
285 obj->pltrelasize); in reloc_iresolve()
286 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_iresolve()
288 reloc_iresolve_one(obj, rela, lockstate); in reloc_iresolve()
294 reloc_iresolve_nonplt(Obj_Entry *obj, struct Struct_RtldLockState *lockstate) in reloc_iresolve_nonplt() argument
299 if (!obj->irelative_nonplt) in reloc_iresolve_nonplt()
301 obj->irelative_nonplt = false; in reloc_iresolve_nonplt()
302 relalim = (const Elf_Rela *)((const char *)obj->rela + obj->relasize); in reloc_iresolve_nonplt()
303 for (rela = obj->rela; rela < relalim; rela++) { in reloc_iresolve_nonplt()
305 reloc_iresolve_one(obj, rela, lockstate); in reloc_iresolve_nonplt()
311 reloc_gnu_ifunc(Obj_Entry *obj, int flags, in reloc_gnu_ifunc() argument
320 if (!obj->gnu_ifunc) in reloc_gnu_ifunc()
322 relalim = (const Elf_Rela *)((const char *)obj->pltrela + obj->pltrelasize); in reloc_gnu_ifunc()
323 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_gnu_ifunc()
325 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_gnu_ifunc()
326 def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj, in reloc_gnu_ifunc()
335 reloc_jmpslot(where, target, defobj, obj, in reloc_gnu_ifunc()
339 obj->gnu_ifunc = false; in reloc_gnu_ifunc()
345 const Obj_Entry *defobj __unused, const Obj_Entry *obj __unused, in reloc_jmpslot()
367 reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, int flags, in reloc_non_plt() argument
381 if (obj == obj_rtld) in reloc_non_plt()
384 cache = calloc(obj->dynsymcount, sizeof(SymCache)); in reloc_non_plt()
387 relalim = (const Elf_Rela *)((const char *)obj->rela + obj->relasize); in reloc_non_plt()
388 for (rela = obj->rela; rela < relalim; rela++) { in reloc_non_plt()
399 def = find_symdef(ELF_R_SYM(rela->r_info), obj, in reloc_non_plt()
418 obj->non_plt_gnu_ifunc = true; in reloc_non_plt()
426 obj->path); in reloc_non_plt()
441 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_non_plt()
455 if (!obj->mainprog) { in reloc_non_plt()
457 "relocation in shared library", obj->path); in reloc_non_plt()
462 reloc_tlsdesc(obj, rela, where, flags, lockstate); in reloc_non_plt()
478 "Thread Local Storage", obj->path); in reloc_non_plt()
499 *where = (Elf_Addr)(obj->relocbase + rela->r_addend); in reloc_non_plt()
504 obj->irelative_nonplt = true; in reloc_non_plt()
508 obj->path, ELF_R_TYPE(rela->r_info)); in reloc_non_plt()