Lines Matching refs:obj

118 init_pltgot(Obj_Entry *obj)  in init_pltgot()  argument
120 if (obj->pltgot != NULL) { in init_pltgot()
121 obj->pltgot[1] = (Elf_Addr) obj; in init_pltgot()
122 obj->pltgot[2] = (Elf_Addr) &_rtld_bind_start; in init_pltgot()
128 reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, int flags, in reloc_non_plt() argument
148 if (obj != obj_rtld) { in reloc_non_plt()
149 cache = calloc(obj->dynsymcount, sizeof(SymCache)); in reloc_non_plt()
154 relalim = (const Elf_Rela *)((const char*)obj->rela + obj->relasize); in reloc_non_plt()
155 for (rela = obj->rela; rela < relalim; rela++) { in reloc_non_plt()
169 def = find_symdef(ELF_R_SYM(rela->r_info), obj, in reloc_non_plt()
189 obj->non_plt_gnu_ifunc = true; in reloc_non_plt()
201 obj->path); in reloc_non_plt()
216 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_non_plt()
242 if (!obj->mainprog) { in reloc_non_plt()
244 "relocation in shared library", obj->path); in reloc_non_plt()
265 obj->path); in reloc_non_plt()
286 obj->path); in reloc_non_plt()
304 *where = (Elf_Addr)(obj->relocbase + rela->r_addend); in reloc_non_plt()
307 obj->irelative_nonplt = true; in reloc_non_plt()
317 " in non-PLT relocations\n", obj->path, in reloc_non_plt()
330 reloc_plt(Obj_Entry *obj, int flags __unused, RtldLockState *lockstate __unused) in reloc_plt() argument
335 relalim = (const Elf_Rela *)((const char *)obj->pltrela + obj->pltrelasize); in reloc_plt()
336 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_plt()
342 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_plt()
343 *where += (Elf_Addr)obj->relocbase; in reloc_plt()
347 obj->irelative = true; in reloc_plt()
361 reloc_jmpslots(Obj_Entry *obj, int flags, RtldLockState *lockstate) in reloc_jmpslots() argument
366 if (obj->jmpslots_done) in reloc_jmpslots()
368 relalim = (const Elf_Rela *)((const char *)obj->pltrela + obj->pltrelasize); in reloc_jmpslots()
369 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_jmpslots()
376 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_jmpslots()
377 def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj, in reloc_jmpslots()
382 obj->gnu_ifunc = true; in reloc_jmpslots()
386 reloc_jmpslot(where, target, defobj, obj, (const Elf_Rel *)rela); in reloc_jmpslots()
398 obj->jmpslots_done = true; in reloc_jmpslots()
405 const struct Struct_Obj_Entry *obj __unused, in reloc_jmpslot()
418 reloc_iresolve_one(Obj_Entry *obj, const Elf_Rela *rela, in reloc_iresolve_one() argument
423 ptr = (Elf_Addr *)(obj->relocbase + rela->r_addend); in reloc_iresolve_one()
424 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_iresolve_one()
432 reloc_iresolve(Obj_Entry *obj, RtldLockState *lockstate) in reloc_iresolve() argument
437 if (!obj->irelative) in reloc_iresolve()
439 obj->irelative = false; in reloc_iresolve()
440 relalim = (const Elf_Rela *)((const char *)obj->pltrela + in reloc_iresolve()
441 obj->pltrelasize); in reloc_iresolve()
442 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_iresolve()
444 reloc_iresolve_one(obj, rela, lockstate); in reloc_iresolve()
450 reloc_iresolve_nonplt(Obj_Entry *obj, RtldLockState *lockstate) in reloc_iresolve_nonplt() argument
455 if (!obj->irelative_nonplt) in reloc_iresolve_nonplt()
457 obj->irelative_nonplt = false; in reloc_iresolve_nonplt()
458 relalim = (const Elf_Rela *)((const char *)obj->rela + obj->relasize); in reloc_iresolve_nonplt()
459 for (rela = obj->rela; rela < relalim; rela++) { in reloc_iresolve_nonplt()
461 reloc_iresolve_one(obj, rela, lockstate); in reloc_iresolve_nonplt()
467 reloc_gnu_ifunc(Obj_Entry *obj, int flags, RtldLockState *lockstate) in reloc_gnu_ifunc() argument
472 if (!obj->gnu_ifunc) in reloc_gnu_ifunc()
474 relalim = (const Elf_Rela *)((const char *)obj->pltrela + obj->pltrelasize); in reloc_gnu_ifunc()
475 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_gnu_ifunc()
482 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_gnu_ifunc()
483 def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj, in reloc_gnu_ifunc()
492 reloc_jmpslot(where, target, defobj, obj, (const Elf_Rel *)rela); in reloc_gnu_ifunc()
496 obj->gnu_ifunc = false; in reloc_gnu_ifunc()