Lines Matching defs:lmp
295 Rt_map *lmp = lml_main.lm_head;
297 if ((lml_main.lm_flags & LML_FLG_TRC_LDDSTUB) && lmp &&
298 (FLAGS1(lmp) & FL1_RT_LDDSTUB) && (NEXT(lmp) == NULL)) {
329 Rt_map *lmp = lml->lm_head;
334 if (elf_needed(lml, ALIST_OFF_DATA, lmp, NULL) == 0)
349 (void) elf_reloc_relative_count((ulong_t)JMPREL(lmp),
350 (ulong_t)(PLTRELSZ(lmp) / RELENT(lmp)), (ulong_t)RELENT(lmp),
351 (ulong_t)ADDR(lmp), lmp, NULL, 0);
487 Rt_map *lmp = lml_main.lm_head;
488 Ehdr *ehdr = (Ehdr *)ADDR(lmp);
491 if ((FLAGS(lmp) & FLG_RT_FIXED) == 0)
492 addr += ADDR(lmp);
776 elf_disable_filtee(Rt_map *lmp, Dyninfo *dip)
782 if (OBJFLTRNDX(lmp) != FLTR_DISABLED) {
783 REFNAME(lmp) = NULL;
784 OBJFLTRNDX(lmp) = FLTR_DISABLED;
790 SYMINTP(lmp) = elf_null_find_sym;
797 if (SYMSFLTRCNT(lmp))
798 SYMSFLTRCNT(lmp)--;
803 if (SYMAFLTRCNT(lmp))
804 SYMAFLTRCNT(lmp)--;
1653 Rt_map *lmp;
1717 * remove_so(0, lmp) can be used to tear down the link-map allocation
1723 if ((lmp = calloc(lmsz, 1)) == NULL)
1725 ELFPRV(lmp) = (void *)((uintptr_t)lmp + rtsz);
1726 DYNINFO(lmp) = (Dyninfo *)((uintptr_t)lmp + rtsz + epsz);
1727 LMSIZE(lmp) = lmsz;
1732 NAME(lmp) = (char *)name;
1733 ADDR(lmp) = addr;
1734 MSIZE(lmp) = msize;
1735 SYMINTP(lmp) = elf_find_sym;
1736 FCT(lmp) = &elf_fct;
1737 LIST(lmp) = lml;
1738 OBJFLTRNDX(lmp) = FLTR_DISABLED;
1739 SORTVAL(lmp) = -1;
1740 DYN(lmp) = dyn;
1741 DYNINFOCNT(lmp) = dyncnt;
1742 PTUNWIND(lmp) = uphdr;
1745 FLAGS(lmp) |= FLG_RT_FIXED;
1768 for (dynndx = 0, pdyn = NULL, dip = DYNINFO(lmp);
1814 SYMTAB(lmp) = (void *)(dyn->d_un.d_ptr + base);
1817 SUNWSYMTAB(lmp) =
1821 SUNWSYMSZ(lmp) = dyn->d_un.d_val;
1824 STRTAB(lmp) = (void *)(dyn->d_un.d_ptr + base);
1827 SYMENT(lmp) = dyn->d_un.d_val;
1834 MOVESZ(lmp) = dyn->d_un.d_val;
1835 FLAGS(lmp) |= FLG_RT_MOVE;
1838 MOVEENT(lmp) = dyn->d_un.d_val;
1841 MOVETAB(lmp) = (void *)(dyn->d_un.d_ptr + base);
1849 REL(lmp) = (void *)(dyn->d_un.d_ptr + base);
1853 RELSZ(lmp) = dyn->d_un.d_val;
1857 RELENT(lmp) = dyn->d_un.d_val;
1861 RELACOUNT(lmp) = (uint_t)dyn->d_un.d_val;
1864 HASH(lmp) = (uint_t *)(dyn->d_un.d_ptr + base);
1867 PLTGOT(lmp) =
1871 PLTRELSZ(lmp) = dyn->d_un.d_val;
1874 JMPREL(lmp) = (void *)(dyn->d_un.d_ptr + base);
1878 INIT(lmp) =
1884 FINI(lmp) =
1889 INITARRAY(lmp) = (Addr *)(dyn->d_un.d_ptr +
1893 INITARRAYSZ(lmp) = (uint_t)dyn->d_un.d_val;
1896 FINIARRAY(lmp) = (Addr *)(dyn->d_un.d_ptr +
1900 FINIARRAYSZ(lmp) = (uint_t)dyn->d_un.d_val;
1903 PREINITARRAY(lmp) = (Addr *)(dyn->d_un.d_ptr +
1907 PREINITARRAYSZ(lmp) = (uint_t)dyn->d_un.d_val;
1916 OBJFLTRNDX(lmp) = dynndx;
1917 FLAGS1(lmp) |= FL1_RT_OBJSFLTR;
1923 OBJFLTRNDX(lmp) = dynndx;
1925 FLAGS1(lmp) |= FL1_RT_OBJAFLTR;
1930 SYMSFLTRCNT(lmp)++;
1931 FLAGS1(lmp) |= FL1_RT_SYMSFLTR;
1937 SYMAFLTRCNT(lmp)++;
1939 FLAGS1(lmp) |= FL1_RT_SYMAFLTR;
1944 FLAGS1(lmp) |= FL1_RT_DEPAUD;
1971 VERNEED(lmp) = (Verneed *)(dyn->d_un.d_ptr +
1976 VERNEEDNUM(lmp) = (int)dyn->d_un.d_val;
1979 VERDEF(lmp) = (Verdef *)(dyn->d_un.d_ptr +
1984 VERDEFNUM(lmp) = (int)dyn->d_un.d_val;
1998 VERSYM(lmp) = (Versym *)(dyn->d_un.d_ptr +
2004 MODE(lmp) |= RTLD_NOW;
2005 MODE(lmp) &= ~RTLD_LAZY;
2009 FLAGS1(lmp) |= FL1_RT_DTFLAGS;
2011 FLAGS1(lmp) |= FL1_RT_SYMBOLIC;
2014 MODE(lmp) |= RTLD_NOW;
2015 MODE(lmp) &= ~RTLD_LAZY;
2022 FLAGS1(lmp) |= FL1_RT_TLSSTAT;
2023 MODE(lmp) |= RTLD_NODELETE;
2028 FLAGS1(lmp) |= FL1_RT_DISPREL;
2030 FLAGS(lmp) |=
2034 MODE(lmp) |= RTLD_NOW;
2035 MODE(lmp) &= ~RTLD_LAZY;
2038 MODE(lmp) |= RTLD_NODELETE;
2040 FLAGS(lmp) |= FLG_RT_INITFRST;
2042 FLAGS(lmp) |= FLG_RT_NOOPEN;
2044 FLAGS(lmp) |= FLG_RT_LOADFLTR;
2046 FLAGS(lmp) |= FLG_RT_NODUMP;
2050 FLAGS1(lmp) |= FL1_RT_DIRECT;
2052 FLAGS1(lmp) |= FL1_RT_NODEFLIB;
2054 FLAGS1(lmp) |= FL1_RT_ENDFILTE;
2056 FLAGS(lmp) |= FLG_RT_TRANS;
2069 FLAGS1(lmp) |= FL1_RT_GLOBAUD;
2071 DBG_CALL(Dbg_audit_ignore(lmp));
2084 DBG_CALL(Dbg_util_intoolate(lmp));
2088 NAME(lmp));
2090 FLAGS(lmp) |= FLG_RT_OBJINTPO;
2092 FLAGS(lmp) |= FLG_RT_SYMINTPO;
2097 SYMINFO(lmp) = (Syminfo *)(dyn->d_un.d_ptr +
2101 SYMINENT(lmp) = dyn->d_un.d_val;
2104 PLTPAD(lmp) = (void *)(dyn->d_un.d_ptr + base);
2122 remove_so(0, lmp, clmp);
2125 rti->rti_lmp = lmp;
2130 SUNWSORTENT(lmp) = dyn->d_un.d_val;
2133 SUNWSYMSORT(lmp) =
2137 SUNWSYMSORTSZ(lmp) = dyn->d_un.d_val;
2142 FLAGS(lmp) |= FLG_RT_REGSYMS;
2145 CAP(lmp) = (void *)(dyn->d_un.d_ptr + base);
2148 CAPINFO(lmp) = (void *)(dyn->d_un.d_ptr + base);
2151 CAPCHAIN(lmp) = (void *)(dyn->d_un.d_ptr +
2155 CAPCHAINENT(lmp) = dyn->d_un.d_val;
2158 CAPCHAINSZ(lmp) = dyn->d_un.d_val;
2167 for (dynndx = 0, dyn = DYN(lmp), dip = DYNINFO(lmp);
2177 dip->di_name = STRTAB(lmp) + dyn->d_un.d_val;
2185 if (PLTPAD(lmp)) {
2187 PLTPAD(lmp) = NULL;
2189 PLTPADEND(lmp) = (void *)((Addr)PLTPAD(lmp) +
2216 if ((SUNWSYMTAB(lmp) != NULL) &&
2217 (((char *)SYMTAB(lmp) <= (char *)SUNWSYMTAB(lmp)) ||
2218 (((char *)SYMTAB(lmp) >=
2219 (SUNWSYMSZ(lmp) + (char *)SUNWSYMTAB(lmp)))))) {
2221 SUNWSYMTAB(lmp) = NULL;
2222 SUNWSYMSZ(lmp) = 0;
2235 (char *)STRTAB(lmp));
2241 RPATH(lmp) = (char *)(rpath + (char *)STRTAB(lmp));
2243 REFNAME(lmp) = (char *)(fltr + (char *)STRTAB(lmp));
2254 if (!RELENT(lmp) && JMPREL(lmp))
2255 RELENT(lmp) = sizeof (M_RELOC);
2263 char *cp = audit + (char *)STRTAB(lmp);
2266 if (((AUDITORS(lmp) =
2268 ((AUDITORS(lmp)->ad_name = strdup(cp)) == NULL)) {
2269 remove_so(0, lmp, clmp);
2273 if (audit_setup(lmp, AUDITORS(lmp), 0,
2275 remove_so(0, lmp, clmp);
2278 AFLAGS(lmp) |= AUDITORS(lmp)->ad_flags;
2284 if (tphdr && (tls_assign(lml, lmp, tphdr) == 0)) {
2285 remove_so(0, lmp, clmp);
2295 if ((CAP(lmp) == NULL) && cap)
2296 CAP(lmp) = cap;
2301 if (CAPINFO(lmp) && (CAPINFO(lmp)[0] > CAPINFO_CURRENT))
2302 CAPINFO(lmp) = NULL;
2303 if (CAPCHAIN(lmp) && (CAPCHAIN(lmp)[0] > CAPCHAIN_CURRENT))
2304 CAPCHAIN(lmp) = NULL;
2311 FLAGS1(lmp) |= FL1_RT_ALTCHECK;
2312 CAPSET(lmp) = fdp->fd_scapset;
2315 FLAGS1(lmp) |= FL1_RT_ALTCAP;
2317 } else if ((cap = CAP(lmp)) != NULL) {
2326 CAPSET(lmp).sc_hw_1 = cap->c_un.c_val;
2329 CAPSET(lmp).sc_sf_1 = cap->c_un.c_val;
2332 CAPSET(lmp).sc_hw_2 = cap->c_un.c_val;
2335 CAPSET(lmp).sc_plat = STRTAB(lmp) +
2339 CAPSET(lmp).sc_mach = STRTAB(lmp) +
2355 if (CAPCHAIN(lmp)) {
2358 if ((capchain = calloc(CAPCHAINSZ(lmp), 1)) == NULL)
2360 (void) memcpy(capchain, CAPCHAIN(lmp), CAPCHAINSZ(lmp));
2361 CAPCHAIN(lmp) = capchain;
2367 lm_append(lml, lmco, lmp);
2372 if (REL(lmp)) {
2373 (void) madvise((void *)ADDR(lmp), (uintptr_t)REL(lmp) +
2374 (uintptr_t)RELSZ(lmp) - (uintptr_t)ADDR(lmp),
2377 return (lmp);
2483 elf_dladdr(ulong_t addr, Rt_map *lmp, Dl_info *dlip, void **info, int flags)
2512 str = STRTAB(lmp);
2513 if (SUNWSYMSZ(lmp) == NULL) {
2514 sym = SYMTAB(lmp);
2519 if (HASH(lmp) == NULL)
2521 cnt = HASH(lmp)[1];
2523 sym = SUNWSYMTAB(lmp);
2524 cnt = SUNWSYMSZ(lmp) / SYMENT(lmp);
2525 dynaddr_ndx = SUNWSYMSORT(lmp);
2527 dynaddr_n = SUNWSYMSORTSZ(lmp) / SUNWSORTENT(lmp);
2530 if (FLAGS(lmp) & FLG_RT_FIXED)
2533 base = ADDR(lmp);
2632 *info = (void *)lmp;
2671 dlip->dli_saddr = (void *) ADDR(lmp);
2689 Rt_map *lmp1, *lmp = slp->sl_imap, *clmp = slp->sl_cmap;
2722 if (aplist_append(&alist, lmp, AL_CNT_LAZYFIND) == NULL)
2735 lmp = lmp1;
2736 for (dynndx = 0, dip = DYNINFO(lmp), pdip = NULL;
2802 if ((nlmp = elf_lazy_load(lmp, &sl1, dynndx, name,
2875 elf_reloc_bad(Rt_map *lmp, void *rel, uchar_t rtype, ulong_t roffset,
2879 Lm_list *lml = LIST(lmp);
2893 Sym *symref = (Sym *)((ulong_t)SYMTAB(lmp) +
2894 (rsymndx * SYMENT(lmp)));
2897 name = (char *)(STRTAB(lmp) + symref->st_name);
2919 elf_static_tls(Rt_map *lmp, Sym *sym, void *rel, uchar_t rtype, char *name,
2922 Lm_list *lml = LIST(lmp);
2931 if (PTTLS(lmp) == NULL) {
2935 _conv_reloc_type((uint_t)rtype), NAME(lmp),
2945 if (TLSSTATOFF(lmp) == 0) {
2946 FLAGS1(lmp) |= FL1_RT_TLSSTAT;
2947 MODE(lmp) |= RTLD_NODELETE;
2949 if (tls_assign(lml, lmp, PTTLS(lmp)) == 0) {
2953 _conv_reloc_type((uint_t)rtype), NAME(lmp),
2974 return (-(TLSSTATOFF(lmp) - value));
2982 elf_reloc_error(Rt_map *lmp, const char *name, void *rel, uint_t binfo)
2984 Lm_list *lml = LIST(lmp);
3001 demangle(name), NAME(lmp));
3011 eprintf(lml, ERR_FATAL, MSG_INTL(MSG_REL_NOSYM), NAME(lmp),