Lines Matching refs:obj
117 init_pltgot(Obj_Entry *obj) in init_pltgot() argument
119 if (obj->pltgot != NULL) { in init_pltgot()
120 obj->pltgot[1] = (Elf_Addr) obj; in init_pltgot()
121 obj->pltgot[2] = (Elf_Addr) &_rtld_bind_start; in init_pltgot()
127 reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, int flags, in reloc_non_plt() argument
147 if (obj != obj_rtld) { in reloc_non_plt()
148 cache = calloc(obj->dynsymcount, sizeof(SymCache)); in reloc_non_plt()
153 relalim = (const Elf_Rela *)((const char*)obj->rela + obj->relasize); in reloc_non_plt()
154 for (rela = obj->rela; rela < relalim; rela++) { in reloc_non_plt()
168 def = find_symdef(ELF_R_SYM(rela->r_info), obj, in reloc_non_plt()
188 obj->non_plt_gnu_ifunc = true; in reloc_non_plt()
200 obj->path); in reloc_non_plt()
215 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_non_plt()
241 if (!obj->mainprog) { in reloc_non_plt()
243 "relocation in shared library", obj->path); in reloc_non_plt()
264 obj->path); in reloc_non_plt()
285 obj->path); in reloc_non_plt()
303 *where = (Elf_Addr)(obj->relocbase + rela->r_addend); in reloc_non_plt()
306 obj->irelative_nonplt = true; in reloc_non_plt()
316 " in non-PLT relocations\n", obj->path, in reloc_non_plt()
329 reloc_plt(Obj_Entry *obj, int flags __unused, RtldLockState *lockstate __unused) in reloc_plt() argument
334 relalim = (const Elf_Rela *)((const char *)obj->pltrela + obj->pltrelasize); in reloc_plt()
335 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_plt()
341 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_plt()
342 *where += (Elf_Addr)obj->relocbase; in reloc_plt()
346 obj->irelative = true; in reloc_plt()
360 reloc_jmpslots(Obj_Entry *obj, int flags, RtldLockState *lockstate) in reloc_jmpslots() argument
365 if (obj->jmpslots_done) in reloc_jmpslots()
367 relalim = (const Elf_Rela *)((const char *)obj->pltrela + obj->pltrelasize); in reloc_jmpslots()
368 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_jmpslots()
375 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_jmpslots()
376 def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj, in reloc_jmpslots()
381 obj->gnu_ifunc = true; in reloc_jmpslots()
385 reloc_jmpslot(where, target, defobj, obj, (const Elf_Rel *)rela); in reloc_jmpslots()
397 obj->jmpslots_done = true; in reloc_jmpslots()
404 const struct Struct_Obj_Entry *obj __unused, in reloc_jmpslot()
417 reloc_iresolve_one(Obj_Entry *obj, const Elf_Rela *rela, in reloc_iresolve_one() argument
422 ptr = (Elf_Addr *)(obj->relocbase + rela->r_addend); in reloc_iresolve_one()
423 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_iresolve_one()
431 reloc_iresolve(Obj_Entry *obj, RtldLockState *lockstate) in reloc_iresolve() argument
436 if (!obj->irelative) in reloc_iresolve()
438 obj->irelative = false; in reloc_iresolve()
439 relalim = (const Elf_Rela *)((const char *)obj->pltrela + in reloc_iresolve()
440 obj->pltrelasize); in reloc_iresolve()
441 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_iresolve()
443 reloc_iresolve_one(obj, rela, lockstate); in reloc_iresolve()
449 reloc_iresolve_nonplt(Obj_Entry *obj, RtldLockState *lockstate) in reloc_iresolve_nonplt() argument
454 if (!obj->irelative_nonplt) in reloc_iresolve_nonplt()
456 obj->irelative_nonplt = false; in reloc_iresolve_nonplt()
457 relalim = (const Elf_Rela *)((const char *)obj->rela + obj->relasize); in reloc_iresolve_nonplt()
458 for (rela = obj->rela; rela < relalim; rela++) { in reloc_iresolve_nonplt()
460 reloc_iresolve_one(obj, rela, lockstate); in reloc_iresolve_nonplt()
466 reloc_gnu_ifunc(Obj_Entry *obj, int flags, RtldLockState *lockstate) in reloc_gnu_ifunc() argument
471 if (!obj->gnu_ifunc) in reloc_gnu_ifunc()
473 relalim = (const Elf_Rela *)((const char *)obj->pltrela + obj->pltrelasize); in reloc_gnu_ifunc()
474 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_gnu_ifunc()
481 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_gnu_ifunc()
482 def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj, in reloc_gnu_ifunc()
491 reloc_jmpslot(where, target, defobj, obj, (const Elf_Rel *)rela); in reloc_gnu_ifunc()
495 obj->gnu_ifunc = false; in reloc_gnu_ifunc()