Lines Matching defs:obj

115 init_pltgot(Obj_Entry *obj)
117 if (obj->pltgot != NULL) {
118 obj->pltgot[1] = (Elf_Addr) obj;
119 obj->pltgot[2] = (Elf_Addr) &_rtld_bind_start;
125 reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, int flags,
141 if (obj != obj_rtld) {
142 cache = calloc(obj->dynsymcount, sizeof(SymCache));
147 rellim = (const Elf_Rel *)((caddr_t) obj->rel + obj->relsize);
148 for (rel = obj->rel; rel < rellim; rel++) {
157 def = find_symdef(ELF_R_SYM(rel->r_info), obj, &defobj,
167 obj->non_plt_gnu_ifunc = true;
178 obj->path);
193 where = (Elf_Addr *)(obj->relocbase + rel->r_offset);
217 if (!obj->mainprog) {
219 "relocation in shared library", obj->path);
227 *where += (Elf_Addr)obj->relocbase;
243 obj->path);
261 " in non-PLT relocations\n", obj->path,
274 reloc_plt(Obj_Entry *obj)
279 rellim = (const Elf_Rel *)((char *)obj->pltrel + obj->pltrelsize);
280 for (rel = obj->pltrel; rel < rellim; rel++) {
286 where = (Elf_Addr *)(obj->relocbase + rel->r_offset);
287 *where += (Elf_Addr)obj->relocbase;
291 obj->irelative = true;
305 reloc_jmpslots(Obj_Entry *obj, int flags, RtldLockState *lockstate)
310 if (obj->jmpslots_done)
312 rellim = (const Elf_Rel *)((char *)obj->pltrel + obj->pltrelsize);
313 for (rel = obj->pltrel; rel < rellim; rel++) {
320 where = (Elf_Addr *)(obj->relocbase + rel->r_offset);
321 def = find_symdef(ELF_R_SYM(rel->r_info), obj, &defobj,
326 obj->gnu_ifunc = true;
330 reloc_jmpslot(where, target, defobj, obj, rel);
343 obj->jmpslots_done = true;
348 reloc_iresolve(Obj_Entry *obj, RtldLockState *lockstate)
354 if (!obj->irelative)
356 rellim = (const Elf_Rel *)((char *)obj->pltrel + obj->pltrelsize);
357 for (rel = obj->pltrel; rel < rellim; rel++) {
360 where = (Elf_Addr *)(obj->relocbase + rel->r_offset);
362 target = ((Elf_Addr (*)(void))(obj->relocbase + *where))();
368 obj->irelative = false;
373 reloc_gnu_ifunc(Obj_Entry *obj, int flags, RtldLockState *lockstate)
378 if (!obj->gnu_ifunc)
380 rellim = (const Elf_Rel *)((char *)obj->pltrel + obj->pltrelsize);
381 for (rel = obj->pltrel; rel < rellim; rel++) {
388 where = (Elf_Addr *)(obj->relocbase + rel->r_offset);
389 def = find_symdef(ELF_R_SYM(rel->r_info), obj, &defobj,
398 reloc_jmpslot(where, target, defobj, obj, rel);
403 obj->gnu_ifunc = false;