Lines Matching refs:lmp
69 ldso_plt_init(Rt_map *lmp) in ldso_plt_init() argument
77 if (PLTGOT(lmp)) in ldso_plt_init()
78 elf_plt_init((PLTGOT(lmp)), (caddr_t)lmp); in ldso_plt_init()
193 elf_bndr(Rt_map *lmp, ulong_t reloff, caddr_t from) in elf_bndr() argument
214 lml = LIST(lmp); in elf_bndr()
225 if (!lmp || ((reloff % sizeof (Rel)) != 0)) { in elf_bndr()
230 EC_NATPTR(lmp), EC_XWORD(reloff), EC_NATPTR(from)); in elf_bndr()
237 addr = (ulong_t)JMPREL(lmp); in elf_bndr()
240 rsym = (Sym *)((ulong_t)SYMTAB(lmp) + (rsymndx * SYMENT(lmp))); in elf_bndr()
241 name = (char *)(STRTAB(lmp) + rsym->st_name); in elf_bndr()
253 SLOOKUP_INIT(sl, name, lmp, lml->lm_head, ld_entry_cnt, 0, in elf_bndr()
258 eprintf(lml, ERR_FATAL, MSG_INTL(MSG_REL_NOSYM), NAME(lmp), in elf_bndr()
272 if ((lmp != nlmp) && ((FLAGS1(nlmp) & FL1_RT_NOINIFIN) == 0)) { in elf_bndr()
276 if (bind_one(lmp, nlmp, BND_REFER) == 0) in elf_bndr()
280 if ((lml->lm_tflags | AFLAGS(lmp) | AFLAGS(nlmp)) & in elf_bndr()
284 symval = audit_symbind(lmp, nlmp, nsym, symndx, symval, in elf_bndr()
290 if (!(FLAGS(lmp) & FLG_RT_FIXED)) in elf_bndr()
291 addr += ADDR(lmp); in elf_bndr()
292 if (((lml->lm_tflags | AFLAGS(lmp)) & in elf_bndr()
294 AUDINFO(lmp)->ai_dynplts) { in elf_bndr()
300 symval = (ulong_t)elf_plt_trace_write(addr, lmp, nlmp, in elf_bndr()
317 DBG_CALL(Dbg_bind_global(lmp, (Addr)from, (Off)(from - ADDR(lmp)), in elf_bndr()
344 is_dep_init(nlmp, lmp); in elf_bndr()
360 elf_reloc(Rt_map *lmp, uint_t plt, int *in_nfavl, APlist **textrel) in elf_reloc() argument
372 int relacount = RELACOUNT(lmp), plthint = 0; in elf_reloc()
382 if ((plt == 0) && PLTGOT(lmp)) { in elf_reloc()
389 find_segment((caddr_t)PLTGOT(lmp), lmp)) != NULL) && in elf_reloc()
391 ((set_prot(lmp, mpp, 1) == 0) || in elf_reloc()
395 elf_plt_init(PLTGOT(lmp), (caddr_t)lmp); in elf_reloc()
401 if ((pltbgn = (ulong_t)JMPREL(lmp)) != 0) in elf_reloc()
402 pltend = pltbgn + (ulong_t)(PLTRELSZ(lmp)); in elf_reloc()
404 relsiz = (ulong_t)(RELENT(lmp)); in elf_reloc()
405 basebgn = ADDR(lmp); in elf_reloc()
407 if (PLTRELSZ(lmp)) in elf_reloc()
408 plthint = PLTRELSZ(lmp) / relsiz; in elf_reloc()
430 SLOOKUP_INIT(sl, MSG_ORIG(MSG_SYM_PLT), lmp, lmp, ld_entry_cnt, in elf_reloc()
439 if (!(FLAGS(lmp) & FLG_RT_FIXED) && in elf_reloc()
442 _pltend = _pltbgn + (((PLTRELSZ(lmp) / relsiz)) * in elf_reloc()
467 relbgn = (ulong_t)(REL(lmp)); in elf_reloc()
468 relend = relbgn + (ulong_t)(RELSZ(lmp)); in elf_reloc()
477 DBG_CALL(Dbg_reloc_run(lmp, 0, plt, DBG_REL_NONE)); in elf_reloc()
480 DBG_CALL(Dbg_reloc_run(lmp, M_REL_SHT_TYPE, plt, DBG_REL_START)); in elf_reloc()
488 if (pltbgn && ((MODE(lmp) & RTLD_NOW) == 0) && in elf_reloc()
489 (FLAGS(lmp) & FLG_RT_FIXED)) in elf_reloc()
492 sip = SYMINFO(lmp); in elf_reloc()
508 ((FLAGS(lmp) & FLG_RT_FIXED) == 0) && (DBG_ENABLED == 0)) { in elf_reloc()
511 relacount, relsiz, basebgn, lmp, in elf_reloc()
516 relsiz, basebgn, lmp, textrel, 0); in elf_reloc()
528 if (!(FLAGS(lmp) & FLG_RT_FIXED)) { in elf_reloc()
536 ((MODE(lmp) & RTLD_NOW) == 0)) { in elf_reloc()
538 plthint, relsiz, basebgn, lmp, textrel, 0); in elf_reloc()
572 if ((mpp = find_segment((caddr_t)roffset, lmp)) == NULL) { in elf_reloc()
573 elf_reloc_bad(lmp, (void *)rel, rtype, roffset, in elf_reloc()
589 if (sip && is_sym_deferred((ulong_t)rel, basebgn, lmp, in elf_reloc()
596 symref = (Sym *)((ulong_t)SYMTAB(lmp) + in elf_reloc()
597 (rsymndx * SYMENT(lmp))); in elf_reloc()
615 value = TLSMODID(lmp); in elf_reloc()
618 if ((value = elf_static_tls(lmp, symref, in elf_reloc()
639 DBG_CALL(Dbg_bind_weak(lmp, in elf_reloc()
660 value = audit_symbind(lmp, _lmp, in elf_reloc()
674 name = (char *)(STRTAB(lmp) + in elf_reloc()
677 SLOOKUP_INIT(sl, name, lmp, 0, in elf_reloc()
699 if (elf_reloc_error(lmp, name, in elf_reloc()
710 DBG_CALL(Dbg_bind_weak(lmp, in elf_reloc()
723 if ((lmp != _lmp) && ((FLAGS1(_lmp) & in elf_reloc()
769 value = audit_symbind(lmp, _lmp, in elf_reloc()
808 value = TLSMODID(lmp); in elf_reloc()
815 DBG_CALL(Dbg_reloc_in(LIST(lmp), ELF_DBG_RTLD, M_MACH, in elf_reloc()
822 ((set_prot(lmp, mpp, 1) == 0) || in elf_reloc()
833 if (elf_copy_reloc(name, symref, lmp, (void *)roffset, in elf_reloc()
838 if (((LIST(lmp)->lm_tflags | AFLAGS(lmp)) & in elf_reloc()
840 AUDINFO(lmp)->ai_dynplts) { in elf_reloc()
843 (uintptr_t)JMPREL(lmp)) / relsiz); in elf_reloc()
847 (void) elf_plt_trace_write(roffset, lmp, _lmp, in elf_reloc()
857 DBG_CALL(Dbg_reloc_apply_val(LIST(lmp), in elf_reloc()
868 (Word *)&value, name, NAME(lmp), LIST(lmp)) == 0) in elf_reloc()
871 DBG_CALL(Dbg_reloc_apply_val(LIST(lmp), ELF_DBG_RTLD, in elf_reloc()
876 ((LIST(lmp)->lm_flags & LML_FLG_TRC_WARN) == 0)) in elf_reloc()
880 DBG_CALL(Dbg_bind_global(lmp, (Addr)roffset, in elf_reloc()
886 return (relocate_finish(lmp, bound, ret)); in elf_reloc()
901 Rt_map *lmp = (Rt_map *)l; in elf_plt_init() local
904 *_got = (uint_t)lmp; in elf_plt_init()
980 elf_copy_gen(Rt_map *lmp) in elf_copy_gen() argument
986 DBG_CALL(Dbg_reloc_run(lmp, M_REL_SHT_TYPE, 0, in elf_copy_gen()
989 if (_elf_copy_reloc(MSG_ORIG(MSG_SYM_CTYPE), lmp, in elf_copy_gen()
990 (Rt_map *)NEXT(lmp)) == 0) in elf_copy_gen()
992 if (_elf_copy_reloc(MSG_ORIG(MSG_SYM_IOB), lmp, in elf_copy_gen()
993 (Rt_map *)NEXT(lmp)) == 0) in elf_copy_gen()