Lines Matching refs:obj

164 reloc_nonplt_object(Obj_Entry *obj_rtld __unused, Obj_Entry *obj,  in reloc_nonplt_object()  argument
183 def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj, in reloc_nonplt_object()
206 obj->non_plt_gnu_ifunc = true; in reloc_nonplt_object()
214 obj->path); in reloc_nonplt_object()
228 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_nonplt_object()
257 "Thread Local Storage", obj->path); in reloc_nonplt_object()
271 symval = (Elf_Addr)(obj->relocbase + rela->r_addend); in reloc_nonplt_object()
286 if (!obj->mainprog) { in reloc_nonplt_object()
289 obj->path); in reloc_nonplt_object()
297 obj->irelative = true; in reloc_nonplt_object()
307 " in non-PLT relocations\n", obj->path, in reloc_nonplt_object()
319 reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, int flags, in reloc_non_plt() argument
332 if (obj != obj_rtld) { in reloc_non_plt()
333 cache = calloc(obj->dynsymcount, sizeof(SymCache)); in reloc_non_plt()
343 relalim = (const Elf_Rela *)((const char *)obj->rela + obj->relasize); in reloc_non_plt()
344 for (rela = obj->rela; rela < relalim; rela++) { in reloc_non_plt()
345 if (reloc_nonplt_object(obj_rtld, obj, rela, cache, flags, in reloc_non_plt()
358 for (phdr = obj->phdr; in reloc_non_plt()
359 (const char *)phdr < (const char *)obj->phdr + obj->phsize; in reloc_non_plt()
362 __syncicache(obj->relocbase + phdr->p_vaddr, in reloc_non_plt()
374 reloc_plt_object(Obj_Entry *obj, const Elf_Rela *rela) in reloc_plt_object() argument
376 Elf_Word *where = (Elf_Word *)(obj->relocbase + rela->r_offset); in reloc_plt_object()
379 int N = obj->pltrelasize / sizeof(Elf_Rela); in reloc_plt_object()
382 reloff = rela - obj->pltrela; in reloc_plt_object()
387 if (obj->gotptr != NULL) { in reloc_plt_object()
388 *where += (Elf_Addr)obj->relocbase; in reloc_plt_object()
392 pltlongresolve = obj->pltgot + 5; in reloc_plt_object()
406 jmptab = obj->pltgot + JMPTAB_BASE(N); in reloc_plt_object()
432 reloc_plt(Obj_Entry *obj, int flags __unused, RtldLockState *lockstate __unused) in reloc_plt() argument
436 int N = obj->pltrelasize / sizeof(Elf_Rela); in reloc_plt()
438 if (obj->pltrelasize != 0) { in reloc_plt()
440 relalim = (const Elf_Rela *)((const char *)obj->pltrela + in reloc_plt()
441 obj->pltrelasize); in reloc_plt()
442 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_plt()
445 obj->irelative = true; in reloc_plt()
456 if (reloc_plt_object(obj, rela) < 0) { in reloc_plt()
466 if (obj->pltgot != NULL && obj->gotptr == NULL) in reloc_plt()
467 __syncicache(obj->pltgot, JMPTAB_BASE(N)*4); in reloc_plt()
476 reloc_jmpslots(Obj_Entry *obj, int flags, RtldLockState *lockstate) in reloc_jmpslots() argument
485 relalim = (const Elf_Rela *)((const char *)obj->pltrela + in reloc_jmpslots()
486 obj->pltrelasize); in reloc_jmpslots()
487 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_jmpslots()
492 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_jmpslots()
493 def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj, in reloc_jmpslots()
508 obj->gnu_ifunc = true; in reloc_jmpslots()
511 reloc_jmpslot(where, target, defobj, obj, in reloc_jmpslots()
516 obj->jmpslots_done = true; in reloc_jmpslots()
527 const Obj_Entry *defobj __unused, const Obj_Entry *obj, const Elf_Rel *rel) in reloc_jmpslot() argument
542 if (obj->gotptr != NULL) { in reloc_jmpslot()
543 assert(wherep >= (Elf_Word *)obj->pltgot); in reloc_jmpslot()
545 (Elf_Word *)obj->pltgot + obj->pltrelasize); in reloc_jmpslot()
570 int N = obj->pltrelasize / sizeof(Elf_Rela); in reloc_jmpslot()
571 int reloff = rela - obj->pltrela; in reloc_jmpslot()
576 pltcall = obj->pltgot; in reloc_jmpslot()
581 jmptab = obj->pltgot + JMPTAB_BASE(N); in reloc_jmpslot()
604 reloc_iresolve(Obj_Entry *obj, in reloc_iresolve() argument
615 if (!obj->irelative) in reloc_iresolve()
618 relalim = (const Elf_Rela *)((const char *)obj->rela + obj->relasize); in reloc_iresolve()
619 for (rela = obj->rela; rela < relalim; rela++) { in reloc_iresolve()
621 ptr = (Elf_Addr *)(obj->relocbase + rela->r_addend); in reloc_iresolve()
622 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_iresolve()
635 relalim = (const Elf_Rela *)((const char *)obj->pltrela + obj->pltrelasize); in reloc_iresolve()
636 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_iresolve()
638 ptr = (Elf_Addr *)(obj->relocbase + rela->r_addend); in reloc_iresolve()
639 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_iresolve()
649 obj->irelative = false; in reloc_iresolve()
654 reloc_iresolve_nonplt(Obj_Entry *obj __unused, in reloc_iresolve_nonplt()
661 reloc_gnu_ifunc(Obj_Entry *obj __unused, int flags __unused, in reloc_gnu_ifunc()
670 if (!obj->gnu_ifunc) in reloc_gnu_ifunc()
672 relalim = (const Elf_Rela *)((const char *)obj->pltrela + obj->pltrelasize); in reloc_gnu_ifunc()
673 for (rela = obj->pltrela; rela < relalim; rela++) { in reloc_gnu_ifunc()
675 where = (Elf_Addr *)(obj->relocbase + rela->r_offset); in reloc_gnu_ifunc()
676 def = find_symdef(ELF_R_SYM(rela->r_info), obj, &defobj, in reloc_gnu_ifunc()
685 reloc_jmpslot(where, target, defobj, obj, in reloc_gnu_ifunc()
689 obj->gnu_ifunc = false; in reloc_gnu_ifunc()
701 init_pltgot(Obj_Entry *obj) in init_pltgot() argument
705 int N = obj->pltrelasize / sizeof(Elf_Rela); in init_pltgot()
707 pltcall = obj->pltgot; in init_pltgot()
714 if (obj->gotptr != NULL) { in init_pltgot()
715 obj->gotptr[1] = (Elf_Addr)_rtld_bind_secureplt_start; in init_pltgot()
716 obj->gotptr[2] = (Elf_Addr)obj; in init_pltgot()
718 obj->path, obj->gotptr, in init_pltgot()
719 (void *)obj->gotptr[1], (void *)obj->gotptr[2]); in init_pltgot()
750 jmptab = obj->pltgot + JMPTAB_BASE(N); in init_pltgot()
763 pltlongresolve = obj->pltgot + 5; in init_pltgot()
774 pltresolve[3] |= _ppc_ha(obj); in init_pltgot()
775 pltresolve[4] |= _ppc_la(obj); in init_pltgot()