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()
147 reloc_tlsdesc(const Obj_Entry *obj, const Elf_Rela *rela, Elf_Addr *where, in reloc_tlsdesc() argument
157 def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj, flags, in reloc_tlsdesc()
162 obj = defobj; in reloc_tlsdesc()
172 if (obj->tlsoffset != 0) { in reloc_tlsdesc()
175 where[1] = obj->tlsoffset + offs; in reloc_tlsdesc()
179 where[1] = reloc_tlsdesc_alloc(obj->tlsindex, offs); in reloc_tlsdesc()
187 reloc_plt(Obj_Entry *obj, int flags, RtldLockState *lockstate) in reloc_plt() argument
192 relalim = (const Elf_Rela *)((const char *)obj->pltrela + obj->pltrelasize); in reloc_plt()
193 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_plt()
196 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_plt()
200 *where += (Elf_Addr)obj->relocbase; in reloc_plt()
203 reloc_tlsdesc(obj, rela, where, SYMLOOK_IN_PLT | flags, in reloc_plt()
207 obj->irelative = true; in reloc_plt()
225 reloc_jmpslots(Obj_Entry *obj, int flags, RtldLockState *lockstate) in reloc_jmpslots() argument
232 if (obj->jmpslots_done) in reloc_jmpslots()
235 relalim = (const Elf_Rela *)((const char *)obj->pltrela + 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(Obj_Entry *obj, struct Struct_RtldLockState *lockstate) in reloc_iresolve() argument
268 if (!obj->irelative) in reloc_iresolve()
270 relalim = (const Elf_Rela *)((const char *)obj->pltrela + obj->pltrelasize); in reloc_iresolve()
271 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_iresolve()
273 ptr = (Elf_Addr *)(obj->relocbase + rela->r_addend); in reloc_iresolve()
274 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_iresolve()
281 obj->irelative = false; in reloc_iresolve()
286 reloc_gnu_ifunc(Obj_Entry *obj, int flags, in reloc_gnu_ifunc() argument
295 if (!obj->gnu_ifunc) in reloc_gnu_ifunc()
297 relalim = (const Elf_Rela *)((const char *)obj->pltrela + obj->pltrelasize); in reloc_gnu_ifunc()
298 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_gnu_ifunc()
300 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_gnu_ifunc()
301 def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj, in reloc_gnu_ifunc()
310 reloc_jmpslot(where, target, defobj, obj, in reloc_gnu_ifunc()
314 obj->gnu_ifunc = false; in reloc_gnu_ifunc()
320 const Obj_Entry *defobj __unused, const Obj_Entry *obj __unused, in reloc_jmpslot()
348 reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, int flags, in reloc_non_plt() argument
362 if (obj == obj_rtld) in reloc_non_plt()
365 cache = calloc(obj->dynsymcount, sizeof(SymCache)); in reloc_non_plt()
368 relalim = (const Elf_Rela *)((const char *)obj->rela + obj->relasize); in reloc_non_plt()
369 for (rela = obj->rela; rela < relalim; rela++) { in reloc_non_plt()
380 def = find_symdef(ELF_R_SYM(rela->r_info), obj, in reloc_non_plt()
399 obj->non_plt_gnu_ifunc = true; in reloc_non_plt()
407 obj->path); in reloc_non_plt()
422 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_non_plt()
436 if (!obj->mainprog) { in reloc_non_plt()
438 "relocation in shared library", obj->path); in reloc_non_plt()
443 reloc_tlsdesc(obj, rela, where, flags, lockstate); in reloc_non_plt()
459 "Thread Local Storage", obj->path); in reloc_non_plt()
474 "weak TLS variable\n", obj->path); in reloc_non_plt()
497 *where = (Elf_Addr)(obj->relocbase + rela->r_addend); in reloc_non_plt()
503 obj->path, ELF_R_TYPE(rela->r_info)); in reloc_non_plt()