Lines Matching refs:lmp
59 load_filtees(Rt_map *lmp, int *in_nfavl) in load_filtees() argument
61 if ((FLAGS1(lmp) & MSK_RT_FILTER) && in load_filtees()
62 ((FLAGS(lmp) & FLG_RT_LOADFLTR) || in load_filtees()
63 (LIST(lmp)->lm_tflags & LML_TFLG_LOADFLTR))) { in load_filtees()
64 Dyninfo *dip = DYNINFO(lmp); in load_filtees()
65 uint_t cnt, max = DYNINFOCNT(lmp); in load_filtees()
73 SLOOKUP_INIT(sl, 0, lmp, lmp, ld_entry_cnt, 0, 0, 0, 0, 0); in load_filtees()
108 Rt_map *lmp; in analyze_lmc() local
135 for (lmp = nlmp; lmp; lmp = NEXT_RT_MAP(lmp)) { in analyze_lmc()
136 if (FLAGS(lmp) & in analyze_lmc()
143 FLAGS(lmp) |= FLG_RT_ANALZING; in analyze_lmc()
149 if (FLAGS(lmp) & FLG_RT_OBJECT) { in analyze_lmc()
152 if ((olmp = elf_obj_fini(lml, lmp, clmp, in analyze_lmc()
173 if (nlmp == lmp) in analyze_lmc()
175 lmp = olmp; in analyze_lmc()
178 DBG_CALL(Dbg_file_analyze(lmp)); in analyze_lmc()
183 if (LM_NEEDED(lmp)(lml, nlmco, lmp, in_nfavl) == 0) { in analyze_lmc() local
190 FLAGS(lmp) &= ~FLG_RT_ANALZING; in analyze_lmc()
191 FLAGS(lmp) |= FLG_RT_ANALYZED; in analyze_lmc()
200 load_filtees(lmp, in_nfavl); in analyze_lmc()
214 lmp = nlmc->lc_head; in analyze_lmc()
287 relocate_so(Lm_list *lml, Rt_map *lmp, int *relocated, int now, int *in_nfavl) in relocate_so() argument
302 if ((LM_RELOC(lmp)(lmp, now, in_nfavl, &textrel) == 0) && in relocate_so()
312 if ((FLAGS(lmp) & FLG_RT_MOVE) && in relocate_so()
313 (move_data(lmp, &textrel) == 0) && in relocate_so()
327 (void) set_prot(lmp, mpp, 0); in relocate_so()
341 Rt_map *lmp; in _relocate_lmc() local
343 for (lmp = nlmp; lmp; lmp = NEXT_RT_MAP(lmp)) { in _relocate_lmc()
349 if (FLAGS(lmp) & in _relocate_lmc()
356 FLAGS(lmp) |= FLG_RT_RELOCING; in _relocate_lmc()
361 if (relocate_so(lml, lmp, relocated, 0, in_nfavl) == 0) in _relocate_lmc()
367 FLAGS(lmp) &= ~FLG_RT_RELOCING; in _relocate_lmc()
368 FLAGS(lmp) |= FLG_RT_RELOCED; in _relocate_lmc()
391 load_filtees(lmp, in_nfavl); in _relocate_lmc()
406 Rt_map *lmp; in _relocate_lmc() local
426 for (APLIST_TRAVERSE(COPY_S(nlmp), idx1, lmp)) { in _relocate_lmc()
430 for (ALIST_TRAVERSE(COPY_R(lmp), idx2, rcp)) { in _relocate_lmc()
573 Rt_map *lmp; in relocate_lmc() local
582 for (APLIST_TRAVERSE(alp, idx, lmp)) { in relocate_lmc()
590 MODE(lmp) &= ~RTLD_NOW; in relocate_lmc()
591 MODE(lmp) |= RTLD_LAZY; in relocate_lmc()
608 if (relocate_so(lml, lmp, 0, 1, in_nfavl) == 0) in relocate_lmc()
731 is_so_matched(Rt_map *lmp, const char *name, int path) in is_so_matched() argument
736 if (_is_so_matched(name, NAME(lmp), path) == 0) in is_so_matched()
737 return (lmp); in is_so_matched()
739 if (PATHNAME(lmp) != NAME(lmp)) { in is_so_matched()
740 if (_is_so_matched(name, PATHNAME(lmp), path) == 0) in is_so_matched()
741 return (lmp); in is_so_matched()
744 for (APLIST_TRAVERSE(ALIAS(lmp), idx, cp)) { in is_so_matched()
746 return (lmp); in is_so_matched()
786 Rt_map *lmp; in is_so_loaded() local
799 if (((lmp = fpavl_recorded(lml, name, hash, &where)) != NULL) && in is_so_loaded()
800 ((FLAGS(lmp) & (FLG_RT_OBJECT | FLG_RT_DELETE)) == 0)) in is_so_loaded()
801 return (lmp); in is_so_loaded()
825 for (lmp = lmc->lc_head; lmp; lmp = NEXT_RT_MAP(lmp)) { in is_so_loaded()
826 if (FLAGS(lmp) & (FLG_RT_OBJECT | FLG_RT_DELETE)) in is_so_loaded()
829 if (is_so_matched(lmp, name, path)) in is_so_loaded()
830 return (lmp); in is_so_loaded()
909 update_mode(Rt_map *lmp, int omode, int nmode) in update_mode() argument
911 Lm_list *lml = LIST(lmp); in update_mode()
921 if ((FLAGS(lmp) & FLG_RT_MODESET) == 0) { in update_mode()
922 MODE(lmp) |= nmode & ~(RTLD_PARENT | RTLD_NOLOAD | RTLD_FIRST); in update_mode()
923 FLAGS(lmp) |= FLG_RT_MODESET; in update_mode()
934 MODE(lmp) &= ~RTLD_LAZY; in update_mode()
941 DBG_CALL(Dbg_file_mode_promote(lmp, pmode)); in update_mode()
942 MODE(lmp) |= pmode; in update_mode()
953 (FLAGS(lmp) & (FLG_RT_RELOCED | FLG_RT_RELOCING))) { in update_mode()
957 lmc = (Lm_cntl *)alist_item_by_offset(LIST(lmp)->lm_lists, in update_mode()
958 CNTL(lmp)); in update_mode()
959 (void) aplist_append(&lmc->lc_now, lmp, AL_CNT_LMNOW); in update_mode()
975 if (((FLAGS(lmp) & in update_mode()
978 (FLAGS(lmp) & (FLG_RT_RELOCED | FLG_RT_RELOCING))))) { in update_mode()
979 FLAGS(lmp) &= ~FLG_RT_INITCLCT; in update_mode()
980 LIST(lmp)->lm_init++; in update_mode()
981 LIST(lmp)->lm_flags |= LML_FLG_OBJREEVAL; in update_mode()
996 append_alias(Rt_map *lmp, const char *str, int *added) in append_alias() argument
1004 for (APLIST_TRAVERSE(ALIAS(lmp), idx, cp)) { in append_alias()
1013 (aplist_append(&ALIAS(lmp), cp, AL_CNT_ALIAS) == NULL)) in append_alias()
2552 Rt_map *lmp = NULL; in load_one() local
2559 lmp = load_cap(lml, lmco, pdp->pd_pname, clmp, in load_one()
2575 lmp = load_path(lml, lmco, clmp, mode, flags, hdl, &fd, in load_one()
2578 if (lmp) in load_one()
2579 return (lmp); in load_one()
2600 is_sym_interposer(Rt_map *lmp, Sym *sym) in is_sym_interposer() argument
2602 Syminfo *sip = SYMINFO(lmp); in is_sym_interposer()
2607 ndx = (((ulong_t)sym - (ulong_t)SYMTAB(lmp)) / SYMENT(lmp)); in is_sym_interposer()
2609 sip = (Syminfo *)((char *)sip + (ndx * SYMINENT(lmp))); in is_sym_interposer()
2624 Rt_map *lmp, *clmp, *dlmp = srp->sr_dmap; in lookup_sym_interpose() local
2661 lmp = lml->lm_head; in lookup_sym_interpose()
2683 if (osym && ((FLAGS1(lmp) & FL1_RT_DTFLAGS) == 0) && in lookup_sym_interpose()
2684 (FCT(lmp) == &elf_fct) && in lookup_sym_interpose()
2697 sl.sl_imap = lmp; in lookup_sym_interpose()
2704 if (SYMINTP(lmp)(&sl, &sr, binfo, in_nfavl)) { in lookup_sym_interpose()
2709 are_bits_zero(lmp, isym, 1)) { in lookup_sym_interpose()
2728 lmp = lml->lm_head; in lookup_sym_interpose()
2731 if (((FLAGS(lmp) & MSK_RT_INTPOSE) == 0) || (sl.sl_flags & LKUP_COPY)) in lookup_sym_interpose()
2732 lmp = NEXT_RT_MAP(lmp); in lookup_sym_interpose()
2734 for (; lmp; lmp = NEXT_RT_MAP(lmp)) { in lookup_sym_interpose()
2735 if (FLAGS(lmp) & FLG_RT_DELETE) in lookup_sym_interpose()
2737 if ((FLAGS(lmp) & MSK_RT_INTPOSE) == 0) in lookup_sym_interpose()
2744 if (lmp == dlmp) in lookup_sym_interpose()
2751 if (callable(clmp, lmp, 0, sl.sl_flags)) { in lookup_sym_interpose()
2761 sl.sl_imap = lmp; in lookup_sym_interpose()
2763 if (SYMINTP(lmp)(&sl, &sr, binfo, in_nfavl)) { in lookup_sym_interpose()
2796 Rt_map *lmp, int *in_nfavl) in lookup_sym_direct() argument
2844 sl.sl_imap = lmp = bdp->b_caller; in lookup_sym_direct()
2845 if (ret = SYMINTP(lmp)(&sl, srp, binfo, in_nfavl)) in lookup_sym_direct()
2863 sl.sl_imap = lmp = gdp->gd_depend; in lookup_sym_direct()
2864 if (ret = SYMINTP(lmp)(&sl, srp, binfo, in lookup_sym_direct()
2875 sl.sl_imap = lmp = clmp; in lookup_sym_direct()
2877 sl.sl_imap = lmp; in lookup_sym_direct()
2879 if (lmp) in lookup_sym_direct()
2880 ret = SYMINTP(lmp)(&sl, srp, binfo, in_nfavl); in lookup_sym_direct()
2906 Rt_map *lmp; in core_lookup_sym() local
2913 lmp = NEXT_RT_MAP(ilmp); in core_lookup_sym()
2915 lmp = ilmp; in core_lookup_sym()
2917 for (; lmp; lmp = NEXT_RT_MAP(lmp)) { in core_lookup_sym()
2918 if (callable(slp->sl_cmap, lmp, 0, slp->sl_flags)) { in core_lookup_sym()
2920 slp->sl_imap = lmp; in core_lookup_sym()
2921 if ((SYMINTP(lmp)(slp, srp, binfo, in_nfavl)) || in core_lookup_sym()
2933 Rt_map *lmp; in rescan_lazy_find_sym() local
2935 for (lmp = ilmp; lmp; lmp = NEXT_RT_MAP(lmp)) { in rescan_lazy_find_sym()
2936 if (LAZY(lmp) == 0) in rescan_lazy_find_sym()
2938 if (callable(slp->sl_cmap, lmp, 0, slp->sl_flags)) { in rescan_lazy_find_sym()
2940 slp->sl_imap = lmp; in rescan_lazy_find_sym()
2954 Rt_map *ilmp = slp->sl_imap, *lmp; in _lookup_sym() local
3006 lmp = 0; in _lookup_sym()
3008 lmp = elf_lazy_load(clmp, slp, bound, in _lookup_sym()
3028 sip, lmp, in_nfavl); in _lookup_sym()
3126 if ((lmp = ilmp) == 0) in _lookup_sym()
3127 lmp = LIST(clmp)->lm_head; in _lookup_sym()
3129 lml = LIST(lmp); in _lookup_sym()
3347 relocate_finish(Rt_map *lmp, APlist *bound, int ret) in relocate_finish() argument
3349 DBG_CALL(Dbg_reloc_run(lmp, 0, ret, DBG_REL_FINISH)); in relocate_finish()
3366 used = LIST(lmp)->lm_flags & in relocate_finish()
3373 if (bind_one(lmp, _lmp, BND_REFER) || used) in relocate_finish()
3395 set_prot(Rt_map *lmp, mmapobj_result_t *mpp, int perm) in set_prot() argument
3403 if (FLAGS(lmp) & FLG_RT_IMGALLOC) in set_prot()
3406 DBG_CALL(Dbg_file_prot(lmp, perm)); in set_prot()
3416 eprintf(LIST(lmp), ERR_FATAL, MSG_INTL(MSG_SYS_MPROT), in set_prot()
3417 NAME(lmp), strerror(err)); in set_prot()