/illumos-gate/usr/src/cmd/sgs/rtld/common/ |
H A D | remove.c | 90 Rt_map *lmp = *_tobj; in purge_exit_handlers() local 92 num += MMAPCNT(lmp); in purge_exit_handlers() 111 Rt_map *lmp = *_tobj; in purge_exit_handlers() local 112 mmapobj_result_t *mpp = MMAPS(lmp); in purge_exit_handlers() 115 for (ndx = 0; ndx < MMAPCNT(lmp); ndx++, mpp++) { in purge_exit_handlers() 212 remove_so(Lm_list *lml, Rt_map *lmp, Rt_map *clmp) in remove_so() argument 216 if (lmp == NULL) in remove_so() 222 if (lml && lmp) in remove_so() 223 lm_delete(lml, lmp, clmp); in remove_so() 235 if (lml->lm_lcs[tag].lc_lmp == lmp) { in remove_so() [all …]
|
H A D | elf.c | 269 Rt_map *lmp = lml_main.lm_head; in elf_verify() local 271 if ((lml_main.lm_flags & LML_FLG_TRC_LDDSTUB) && lmp && in elf_verify() 272 (FLAGS1(lmp) & FL1_RT_LDDSTUB) && (NEXT(lmp) == NULL)) { in elf_verify() 303 Rt_map *lmp = lml->lm_head; in elf_rtld_load() local 308 if (elf_needed(lml, ALIST_OFF_DATA, lmp, NULL) == 0) in elf_rtld_load() 323 (void) elf_reloc_relative_count((ulong_t)JMPREL(lmp), in elf_rtld_load() 324 (ulong_t)(PLTRELSZ(lmp) / RELENT(lmp)), (ulong_t)RELENT(lmp), in elf_rtld_load() 325 (ulong_t)ADDR(lmp), lmp, NULL, 0); in elf_rtld_load() 461 Rt_map *lmp = lml_main.lm_head; in elf_entry_point() local 462 Ehdr *ehdr = (Ehdr *)ADDR(lmp); in elf_entry_point() [all …]
|
H A D | tls.c | 118 tls_modaddrem(Rt_map *lmp, uint_t flag) in tls_modaddrem() argument 120 Lm_list *lml = LIST(lmp); in tls_modaddrem() 127 } else if (FLAGS1(lmp) & FL1_RT_TLSADD) { in tls_modaddrem() 133 tlsphdr = PTTLS(lmp); in tls_modaddrem() 136 tmi.tm_modname = PATHNAME(lmp); in tls_modaddrem() 137 tmi.tm_modid = TLSMODID(lmp); in tls_modaddrem() 140 if (!(FLAGS(lmp) & FLG_RT_FIXED)) in tls_modaddrem() 142 ADDR(lmp)); in tls_modaddrem() 149 DBG_CALL(Dbg_tls_modactivity(LIST(lmp), &tmi, flag)); in tls_modaddrem() 156 FLAGS1(lmp) |= FL1_RT_TLSADD; in tls_modaddrem() [all …]
|
H A D | analyze.c | 58 load_filtees(Rt_map *lmp, int *in_nfavl) in load_filtees() argument 60 if ((FLAGS1(lmp) & MSK_RT_FILTER) && in load_filtees() 61 ((FLAGS(lmp) & FLG_RT_LOADFLTR) || in load_filtees() 62 (LIST(lmp)->lm_tflags & LML_TFLG_LOADFLTR))) { in load_filtees() 63 Dyninfo *dip = DYNINFO(lmp); in load_filtees() 64 uint_t cnt, max = DYNINFOCNT(lmp); in load_filtees() 72 SLOOKUP_INIT(sl, 0, lmp, lmp, ld_entry_cnt, 0, 0, 0, 0, 0); in load_filtees() 107 Rt_map *lmp; in analyze_lmc() local 134 for (lmp = nlmp; lmp; lmp = NEXT_RT_MAP(lmp)) { in analyze_lmc() 135 if (FLAGS(lmp) & in analyze_lmc() [all …]
|
H A D | tsort.c | 95 Rt_map *lmp; in sort_scc() local 109 Rt_map *lmp, *lmp2; in sort_scc() local 111 lmp = sort->s_lmp; in sort_scc() 114 if (aplist_append(&sort->s_queue, lmp, sort->s_num) == NULL) in sort_scc() 117 IDX(lmp) = ndx++; in sort_scc() 177 lmp = sort->s_lmpa[ndx]; in sort_scc() 178 CYCGROUP(lmp) = cnt; in sort_scc() 181 (void) printf(ffmt, NAME(lmp)); in sort_scc() 182 DBG_CALL(Dbg_util_scc_entry(lmp, ndx)); in sort_scc() 188 lmp = sort->s_lmpa[ndx]; in sort_scc() [all …]
|
H A D | move.c | 53 elf_move_bad(Lm_list *lml, Rt_map *lmp, Sym *sym, ulong_t num, Addr addr) in elf_move_bad() argument 66 name = (const char *)(STRTAB(lmp) + sym->st_name); in elf_move_bad() 81 move_data(Rt_map *lmp, APlist **textrel) in move_data() argument 83 Lm_list *lml = LIST(lmp); in move_data() 84 Move *mv = MOVETAB(lmp); in move_data() 85 ulong_t num, mvnum = MOVESZ(lmp) / MOVEENT(lmp); in move_data() 94 moves = (lmp == lml->lm_head) && ((FLAGS1(lmp) & FL1_RT_DTFLAGS) == 0); in move_data() 96 DBG_CALL(Dbg_move_data(lmp)); in move_data() 103 if ((sym = (Sym *)SYMTAB(lmp) + ELF_M_SYM(mv->m_info)) == 0) in move_data() 113 if ((FLAGS(lmp) & FLG_RT_FIXED) == 0) in move_data() [all …]
|
H A D | paths.c | 110 get_dir_list(uchar_t rules, Rt_map *lmp, uint_t flags) in get_dir_list() argument 113 Lm_list *lml = LIST(lmp); in get_dir_list() 121 ((FLAGS1(lmp) & FL1_RT_LDDSTUB) == 0) && in get_dir_list() 175 (void) expand_paths(lmp, rpl_libpath, in get_dir_list() 216 (void) expand_paths(lmp, prm_libpath, in get_dir_list() 229 if (RPATH(lmp)) { in get_dir_list() 230 DBG_CALL(Dbg_libs_path(lml, RPATH(lmp), LA_SER_RUNPATH, in get_dir_list() 231 NAME(lmp))); in get_dir_list() 243 RPATH(lmp), NAME(lmp)); in get_dir_list() 244 if (RLIST(lmp) && (rtld_flags & RT_FL_SECURE) && in get_dir_list() [all …]
|
H A D | util.c | 381 fpavl_insert(Lm_list *lml, Rt_map *lmp, const char *name, avl_index_t where) in fpavl_insert() argument 406 fpnp->fpn_lmp = lmp; in fpavl_insert() 408 if (aplist_append(&FPNODE(lmp), fpnp, AL_CNT_FPNODE) == NULL) { in fpavl_insert() 422 fpavl_remove(Rt_map *lmp) in fpavl_remove() argument 427 for (APLIST_TRAVERSE(FPNODE(lmp), idx, fpnp)) { in fpavl_remove() 428 avl_remove(LIST(lmp)->lm_fpavl, fpnp); in fpavl_remove() 431 free(FPNODE(lmp)); in fpavl_remove() 432 FPNODE(lmp) = NULL; in fpavl_remove() 659 call_array(Addr *array, uint_t arraysz, Rt_map *lmp, Word shtype) in call_array() argument 687 DBG_CALL(Dbg_util_call_array(lmp, (void *)fptr, ndx, shtype)); in call_array() [all …]
|
H A D | _inline_reloc.h | 38 _elf_reloc_relative(ulong_t rbgn, ulong_t base, Rt_map *lmp, APlist **textrel, in _elf_reloc_relative() argument 52 if ((mpp = find_segment((caddr_t)roffset, lmp)) == NULL) in _elf_reloc_relative() 60 ((set_prot(lmp, mpp, 1) == 0) || in _elf_reloc_relative() 98 Rt_map *lmp, APlist **textrel, int add) in elf_reloc_relative() argument 103 if (_elf_reloc_relative(rbgn, base, lmp, textrel, add) == 0) in elf_reloc_relative() 127 ulong_t base, Rt_map *lmp, APlist **textrel, int add) in elf_reloc_relative_count() argument 130 if (_elf_reloc_relative(rbgn, base, lmp, textrel, add) == 0) in elf_reloc_relative_count() 145 is_sym_deferred(ulong_t rbgn, ulong_t base, Rt_map *lmp, APlist **textrel, in is_sym_deferred() argument 159 sipe = (Syminfo *)((char *)sip + (sndx * SYMINENT(lmp))); in is_sym_deferred() 174 if ((FLAGS(lmp) & FLG_RT_RELOCED) == 0) in is_sym_deferred() [all …]
|
H A D | dlfcns.c | 73 Rt_map *lmp; in _caller() local 75 for (lmp = lmc->lc_head; lmp; in _caller() 76 lmp = NEXT_RT_MAP(lmp)) { in _caller() 78 if (find_segment(cpc, lmp)) in _caller() 79 return (lmp); in _caller() 128 hdl_add(Grp_hdl *ghp, Rt_map *lmp, uint_t dflags, int *alep) in hdl_add() argument 139 if (gdp->gd_depend == lmp) { in hdl_add() 151 gd.gd_depend = lmp; in hdl_add() 157 if (aplist_append(&GROUPS(lmp), ghp, AL_CNT_GROUPS) == NULL) in hdl_add() 173 DBG_CALL(Dbg_file_hdl_action(ghp, lmp, DBG_DEP_ADD, in hdl_add() [all …]
|
H A D | config_elf.c | 47 elf_config_validate(Addr addr, Rtc_head *head, Rt_map *lmp) in elf_config_validate() argument 49 Lm_list *lml = LIST(lmp); in elf_config_validate() 67 const char *aname = PATHNAME(lmp); in elf_config_validate() 85 ((FLAGS1(lmp) & FL1_RT_LDDSTUB) == 0)) { in elf_config_validate() 97 if ((FLAGS1(lmp) & FL1_RT_LDDSTUB) == 0) { in elf_config_validate() 98 ORIGNAME(lmp) = _cname; in elf_config_validate() 99 DIRSZ(lmp) = cname - _cname - 1; in elf_config_validate() 197 elf_config(Rt_map *lmp) in elf_config() argument 212 if ((str = strrchr(PATHNAME(lmp), '/')) != NULL) in elf_config() 215 str = PATHNAME(lmp); in elf_config() [all …]
|
H A D | cap.c | 412 cap_check_lmp_init(Rt_map *lmp) in cap_check_lmp_init() argument 429 if ((file = strrchr(NAME(lmp), '/')) != NULL) in cap_check_lmp_init() 435 (HWAVL_RECORDED(NAME(lmp)) != 0) || in cap_check_lmp_init() 436 ((PATHNAME(lmp) != NAME(lmp)) && in cap_check_lmp_init() 437 (HWAVL_RECORDED(PATHNAME(lmp)) != 0))) in cap_check_lmp_init() 444 for (APLIST_TRAVERSE(ALIAS(lmp), idx, cp)) { in cap_check_lmp_init() 457 FLAGS1(lmp) |= FL1_RT_ALTCAP; in cap_check_lmp_init() 458 FLAGS1(lmp) |= FL1_RT_ALTCHECK; in cap_check_lmp_init() 468 cap_check_lmp(Rt_map *lmp, Rej_desc *rej) in cap_check_lmp() argument 470 if ((FLAGS1(lmp) & FL1_RT_ALTCHECK) == 0) in cap_check_lmp() [all …]
|
H A D | audit.c | 398 Rt_map *lmp; in audit_activity() local 413 for (APLIST_TRAVERSE(aud_activity, idx, lmp)) { in audit_activity() 414 if ((clmp != lmp) && AUDITORS(lmp) && in audit_activity() 415 (AUDITORS(lmp)->ad_flags & LML_TFLG_AUD_ACTIVITY)) { in audit_activity() 416 _audit_activity(AUDITORS(lmp)->ad_list, lmp, flags, in audit_activity() 703 _audit_objclose(APlist *list, Rt_map *lmp) in _audit_objclose() argument 707 Lm_list *lml = LIST(lmp); in _audit_objclose() 716 if ((acp = _audit_client(AUDINFO(lmp), almp)) == NULL) in _audit_objclose() 719 DBG_CALL(Dbg_audit_objclose(lml, alp->al_libname, NAME(lmp))); in _audit_objclose() 736 add_objclose_list(Rt_map *lmp, APlist **alpp) in add_objclose_list() argument [all …]
|
/illumos-gate/usr/src/cmd/sgs/rtld/amd64/ |
H A D | amd64_elf.c | 66 ldso_plt_init(Rt_map *lmp) in ldso_plt_init() argument 74 if (PLTGOT(lmp)) in ldso_plt_init() 75 elf_plt_init((PLTGOT(lmp)), (caddr_t)lmp); in ldso_plt_init() 212 elf_bndr(Rt_map *lmp, ulong_t pltndx, caddr_t from) in elf_bndr() argument 233 lml = LIST(lmp); in elf_bndr() 244 if ((!lmp) && (pltndx <= in elf_bndr() 245 (ulong_t)PLTRELSZ(lmp) / (ulong_t)RELENT(lmp))) { in elf_bndr() 250 EC_NATPTR(lmp), EC_XWORD(pltndx), EC_NATPTR(from)); in elf_bndr() 253 reloff = pltndx * (ulong_t)RELENT(lmp); in elf_bndr() 258 addr = (ulong_t)JMPREL(lmp); in elf_bndr() [all …]
|
H A D | dlamd64getunwind.c | 39 Rt_map *lmp; in getunwind_core() local 72 lmp = _caller(pc, CL_NONE); in getunwind_core() 74 if (lmp) { in getunwind_core() 80 if ((mpp = find_segment(pc, lmp)) == NULL) in getunwind_core() 83 unwindinfo->dlui_objname = (char *)PATHNAME(lmp); in getunwind_core() 87 if (PTUNWIND(lmp) && (mpp->mr_addr)) { in getunwind_core() 90 if (FLAGS(lmp) & FLG_RT_FIXED) in getunwind_core() 93 base = ADDR(lmp); in getunwind_core() 96 (void *)(PTUNWIND(lmp)->p_vaddr + base); in getunwind_core() 98 (void *)(PTUNWIND(lmp)->p_vaddr + in getunwind_core() [all …]
|
/illumos-gate/usr/src/cmd/sgs/rtld/i386/ |
H A D | i386_elf.c | 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() [all …]
|
/illumos-gate/usr/src/cmd/sgs/rtld/sparcv9/ |
H A D | sparc_elf.c | 97 ldso_plt_init(Rt_map *lmp) in ldso_plt_init() argument 105 if (PLTGOT(lmp)) { in ldso_plt_init() 112 elf_plt2_init(PLTGOT(lmp) + pltoff, lmp); in ldso_plt_init() 121 elf_plt_init(PLTGOT(lmp), (caddr_t)elf_rtbndr_far); in ldso_plt_init() 127 elf_plt_init(PLTGOT(lmp) + pltoff, (caddr_t)elf_rtbndr); in ldso_plt_init() 477 elf_bndr(Rt_map *lmp, ulong_t pltoff, caddr_t from) in elf_bndr() argument 501 lml = LIST(lmp); in elf_bndr() 536 if (!lmp || (!farplt && (addr % M_PLT_ENTSIZE) != 0) || in elf_bndr() 542 EC_NATPTR(lmp), EC_XWORD(pltoff), EC_NATPTR(from)); in elf_bndr() 550 addr = (ulong_t)JMPREL(lmp); in elf_bndr() [all …]
|
/illumos-gate/usr/src/cmd/sgs/rtld/sparc/ |
H A D | sparc_elf.c | 86 ldso_plt_init(Rt_map *lmp) in ldso_plt_init() argument 94 if (PLTGOT(lmp)) in ldso_plt_init() 95 elf_plt_init((PLTGOT(lmp)), (caddr_t)lmp); in ldso_plt_init() 350 elf_bndr(Rt_map *lmp, ulong_t pltoff, caddr_t from) in elf_bndr() argument 373 lml = LIST(lmp); in elf_bndr() 396 if (!lmp || ((addr % M_PLT_ENTSIZE) != 0)) { in elf_bndr() 401 EC_NATPTR(lmp), EC_XWORD(pltoff), EC_NATPTR(from)); in elf_bndr() 409 addr = (ulong_t)JMPREL(lmp); in elf_bndr() 412 rsym = (Sym *)((ulong_t)SYMTAB(lmp) + (rsymndx * SYMENT(lmp))); in elf_bndr() 413 name = (char *)(STRTAB(lmp) + rsym->st_name); in elf_bndr() [all …]
|
H A D | common_sparc.c | 92 elf_regsyms(Rt_map *lmp) in elf_regsyms() argument 105 for (dyn = DYN(lmp), dip = DYNINFO(lmp); in elf_regsyms() 116 symdef = (Sym *)((unsigned long)SYMTAB(lmp) + in elf_regsyms() 117 (rsymndx * SYMENT(lmp))); in elf_regsyms() 131 sym2 = (STRTAB(lmp) + symdef->st_name); in elf_regsyms() 143 if (LIST(lmp)->lm_flags & LML_FLG_TRC_WARN) { in elf_regsyms() 147 sym1, NAME(lmp), sym2); in elf_regsyms() 149 eprintf(LIST(lmp), ERR_FATAL, in elf_regsyms() 153 sym1, NAME(lmp), sym2); in elf_regsyms() 159 rp->rl_lmp = lmp; in elf_regsyms()
|
/illumos-gate/usr/src/cmd/sgs/liblddbg/common/ |
H A D | util.c | 38 Dbg_util_call_main(Rt_map *lmp) in Dbg_util_call_main() argument 40 Lm_list *lml = LIST(lmp); in Dbg_util_call_main() 43 dbg_print(lml, MSG_INTL(MSG_UTL_TRANS), NAME(lmp)); in Dbg_util_call_main() 48 Dbg_util_call_init(Rt_map *lmp, int flag) in Dbg_util_call_init() argument 50 Lm_list *lml = LIST(lmp); in Dbg_util_call_init() 66 dbg_print(lml, MSG_INTL(MSG_UTL_INIT), str, NAME(lmp)); in Dbg_util_call_init() 71 Dbg_util_intoolate(Rt_map *lmp) in Dbg_util_intoolate() argument 73 Lm_list *lml = LIST(lmp); in Dbg_util_intoolate() 76 dbg_print(lml, MSG_INTL(MSG_UTL_INTOOLATE), NAME(lmp)); in Dbg_util_intoolate() 129 Dbg_util_call_array(Rt_map *lmp, void *addr, int ndx, Word shtype) in Dbg_util_call_array() argument [all …]
|
H A D | files.c | 40 Dbg_file_analyze(Rt_map *lmp) in Dbg_file_analyze() argument 43 Lm_list *lml = LIST(lmp); in Dbg_file_analyze() 49 dbg_print(lml, MSG_INTL(MSG_FIL_ANALYZE), NAME(lmp), in Dbg_file_analyze() 50 conv_dl_mode(MODE(lmp), 1, &dl_mode_buf)); in Dbg_file_analyze() 107 Dbg_file_ldso(Rt_map *lmp, char **envp, auxv_t *auxv, const char *lmid, in Dbg_file_ldso() argument 110 Lm_list *lml = LIST(lmp); in Dbg_file_ldso() 116 dbg_print(lml, MSG_INTL(MSG_FIL_LDSO), PATHNAME(lmp)); in Dbg_file_ldso() 117 dbg_print(lml, MSG_INTL(MSG_FIL_DATA_AS), EC_ADDR(ADDR(lmp)), in Dbg_file_ldso() 118 EC_OFF(MSIZE(lmp))); in Dbg_file_ldso() 127 Dbg_file_prot(Rt_map *lmp, int prot) in Dbg_file_prot() argument [all …]
|
/illumos-gate/usr/src/cmd/mdb/common/modules/libumem/ |
H A D | leaky_subr.c | 95 leaky_mtab(uintptr_t addr, const umem_bufctl_audit_t *bcp, leak_mtab_t **lmp) in leaky_mtab() argument 97 leak_mtab_t *lm = (*lmp)++; in leaky_mtab() 107 leaky_mtab_addr(uintptr_t addr, void *ignored, leak_mtab_t **lmp) in leaky_mtab_addr() argument 109 leak_mtab_t *lm = (*lmp)++; in leaky_mtab_addr() 117 leaky_seg(uintptr_t addr, const vmem_seg_t *seg, leak_mtab_t **lmp) in leaky_seg() argument 119 leak_mtab_t *lm = (*lmp)++; in leaky_seg() 128 leaky_vmem(uintptr_t addr, const vmem_t *vmem, leak_mtab_t **lmp) in leaky_vmem() argument 134 if (mdb_pwalk("vmem_alloc", (mdb_walk_cb_t)leaky_seg, lmp, addr) == -1) in leaky_vmem() 203 leaky_read_segs(uintptr_t addr, const vmem_seg_t *seg, leaky_maps_t *lmp) in leaky_read_segs() argument 205 leaky_seg_info_t *my_si = lmp->lm_segs + lmp->lm_seg_count; in leaky_read_segs() [all …]
|
/illumos-gate/usr/src/lib/libdtrace/common/ |
H A D | dlink_init.c | 50 Link_map *lmp; in dtrace_drti_init() local 55 if (dlinfo(RTLD_SELF, RTLD_DI_LINKMAP, &lmp) == -1 || lmp == NULL) { in dtrace_drti_init() 65 dtrace_link_dof(&__SUNW_dof, lmid, lmp->l_name, lmp->l_addr); in dtrace_drti_init()
|
/illumos-gate/usr/src/cmd/mdb/common/modules/genunix/ |
H A D | leaky_subr.c | 70 leaky_mtab(uintptr_t addr, const kmem_bufctl_audit_t *bcp, leak_mtab_t **lmp) in leaky_mtab() argument 72 leak_mtab_t *lm = (*lmp)++; in leaky_mtab() 82 leaky_mtab_addr(uintptr_t addr, void *ignored, leak_mtab_t **lmp) in leaky_mtab_addr() argument 84 leak_mtab_t *lm = (*lmp)++; in leaky_mtab_addr() 92 leaky_seg(uintptr_t addr, const vmem_seg_t *seg, leak_mtab_t **lmp) in leaky_seg() argument 94 leak_mtab_t *lm = (*lmp)++; in leaky_seg() 113 leaky_vmem(uintptr_t addr, const vmem_t *vmem, leak_mtab_t **lmp) in leaky_vmem() argument 118 if (mdb_pwalk("vmem_alloc", (mdb_walk_cb_t)leaky_seg, lmp, addr) == -1) in leaky_vmem() 181 leaky_cache(uintptr_t addr, const kmem_cache_t *c, leak_mtab_t **lmp) in leaky_cache() argument 183 leak_mtab_t *lm = *lmp; in leaky_cache() [all …]
|
/illumos-gate/usr/src/cmd/sgs/link_audit/common/ |
H A D | symbindrep.c | 68 la_objopen(Link_map *lmp, Lmid_t lmid, uintptr_t *cookie) in la_objopen() argument 73 (check_list(bindto_list, lmp->l_name))) in la_objopen() 79 (check_list(bindfrom_list, lmp->l_name))) in la_objopen() 82 *cookie = (uintptr_t)lmp->l_name; in la_objopen()
|