Lines Matching defs:ifl
87 Ifl_desc *ifl;
101 if ((ifl = libld_calloc(1, sizeof (Ifl_desc))) == NULL)
103 ifl->ifl_name = name;
104 ifl->ifl_ehdr = ehdr;
105 ifl->ifl_elf = elf;
106 ifl->ifl_flags = flags;
129 ifl->ifl_shnum = (Word)shdr0->sh_size;
131 ifl->ifl_shstrndx = shdr0->sh_link;
133 ifl->ifl_shstrndx = ehdr->e_shstrndx;
135 ifl->ifl_shnum = ehdr->e_shnum;
136 ifl->ifl_shstrndx = ehdr->e_shstrndx;
139 if ((ifl->ifl_isdesc = libld_calloc(ifl->ifl_shnum,
147 if (ifl->ifl_ehdr->e_type == ET_DYN) {
148 if (aplist_append(&ofl->ofl_sos, ifl, AL_CNT_OFL_LIBS) == NULL)
151 if (aplist_append(&ofl->ofl_objs, ifl, AL_CNT_OFL_OBJS) == NULL)
155 return (ifl);
163 process_section(const char *name, Ifl_desc *ifl, Shdr *shdr, Elf_Scn *scn,
176 isp->is_file = ifl;
184 ifl->ifl_name);
200 ifl->ifl_isdesc[ndx] = isp;
205 ifl->ifl_flags |= FLG_IF_ORDERED;
238 sf1_cap(Ofl_desc *ofl, Xword val, Ifl_desc *ifl, Is_desc *cisp)
255 if (ifl && (ifl->ifl_ehdr->e_type == ET_REL)) {
263 MSG_INTL(MSG_FIL_INADDR32SF1), ifl->ifl_name,
282 ifl->ifl_name, EC_WORD(cisp->is_scnndx), cisp->is_name,
288 ifl->ifl_name, EC_WORD(cisp->is_scnndx), cisp->is_name,
297 if (ifl->ifl_ehdr->e_type != ET_REL) {
312 MSG_INTL(MSG_FIL_EXADDR32SF1), ifl->ifl_name,
815 process_cap(Ofl_desc *ofl, Ifl_desc *ifl, Is_desc *cisp)
834 DBG_CALL(Dbg_cap_sec_title(ofl->ofl_lml, ifl->ifl_name));
894 ifl->ifl_name, EC_WORD(cisp->is_scnndx),
906 if ((info == 0) || (info > ifl->ifl_shnum)) {
908 ifl->ifl_name, EC_WORD(cisp->is_scnndx),
912 strs = (char *)ifl->ifl_isdesc[info]->is_indata->d_buf;
946 sf1_cap(ofl, data->c_un.c_val, ifl, cisp);
955 if (ifl->ifl_ehdr->e_type != ET_REL)
1000 if (ifl->ifl_ehdr->e_type != ET_REL)
1011 ifl->ifl_flags |= FLG_IF_OTOSCAP;
1032 ifl->ifl_caps = cdp;
1063 (ifl->ifl_flags & FLG_IF_OTOSCAP)) {
1163 process_capinfo(Ofl_desc *ofl, Ifl_desc *ifl, Is_desc *isp)
1165 Cap_desc *cdp = ifl->ifl_caps;
1191 if ((sdp = ifl->ifl_oldndx[cndx]) == NULL) {
1193 MSG_INTL(MSG_CAPINFO_INVALSYM), ifl->ifl_name,
1198 if ((lndx == 0) || (lndx >= ifl->ifl_symscnt) ||
1199 ((lsdp = ifl->ifl_oldndx[lndx]) == NULL) ||
1202 MSG_INTL(MSG_CAPINFO_INVALLEAD), ifl->ifl_name,
1280 process_input(const char *name, Ifl_desc *ifl, Shdr *shdr, Elf_Scn *scn,
1283 return (process_section(name, ifl, shdr, scn, ndx,
1295 process_reloc(const char *name, Ifl_desc *ifl, Shdr *shdr, Elf_Scn *scn,
1298 if (process_section(name, ifl,
1302 if (ifl->ifl_ehdr->e_type == ET_REL) {
1308 if (aplist_append(&ifl->ifl_relsect, ifl->ifl_isdesc[ndx],
1320 process_strtab(const char *name, Ifl_desc *ifl, Shdr *shdr, Elf_Scn *scn,
1346 error = process_section(name, ifl, shdr, scn, ndx, ident, ofl);
1355 isp = ifl->ifl_isdesc[ndx];
1361 MSG_INTL(MSG_FIL_MALSTR), ifl->ifl_name,
1366 ifl->ifl_flags |= FLG_IF_HSTRTAB;
1375 invalid_section(const char *name, Ifl_desc *ifl, Shdr *shdr, Elf_Scn *scn,
1381 ifl->ifl_name, EC_WORD(ndx), name,
1382 conv_sec_type(ifl->ifl_ehdr->e_ident[EI_OSABI],
1383 ifl->ifl_ehdr->e_machine, shdr->sh_type, 0, &inv_buf));
1423 * name, ifl, shdr, ndx, ident, ofl - As passed to process_progbits().
1434 process_progbits_alloc(const char *name, Ifl_desc *ifl, Shdr *shdr,
1528 process_progbits(const char *name, Ifl_desc *ifl, Shdr *shdr, Elf_Scn *scn,
1577 if (process_progbits_alloc(name, ifl, shdr, ndx,
1585 r = process_section(name, ifl, shdr, scn, ndx, ident, ofl);
1592 ifl->ifl_isdesc[ndx]->is_flags |= is_flags;
1601 process_debug(const char *name, Ifl_desc *ifl, Shdr *shdr, Elf_Scn *scn,
1610 return (process_progbits(name, ifl, shdr, scn, ndx, ident, ofl));
1617 process_nobits(const char *name, Ifl_desc *ifl, Shdr *shdr, Elf_Scn *scn,
1631 return (process_section(name, ifl, shdr, scn, ndx, ident, ofl));
1638 process_array(const char *name, Ifl_desc *ifl, Shdr *shdr, Elf_Scn *scn,
1646 error = process_section(name, ifl, shdr, scn, ndx, ident, ofl);
1655 array_process(Is_desc *isc, Ifl_desc *ifl, Ofl_desc *ofl)
1682 process_sym_shndx(const char *name, Ifl_desc *ifl, Shdr *shdr, Elf_Scn *scn,
1685 if (process_input(name, ifl, shdr, scn, ndx, ident, ofl) == S_ERROR)
1692 Is_desc *isp = ifl->ifl_isdesc[shdr->sh_link];
1697 MSG_INTL(MSG_FIL_INVSHLINK), ifl->ifl_name,
1701 isp->is_symshndx = ifl->ifl_isdesc[ndx];
1711 sym_shndx_process(Is_desc *isc, Ifl_desc *ifl, Ofl_desc *ofl)
1714 Is_desc *isp = ifl->ifl_isdesc[isc->is_shdr->sh_link];
1738 process_rel_dynamic(const char *name, Ifl_desc *ifl, Shdr *shdr, Elf_Scn *scn,
1755 if ((strscn = elf_getscn(ifl->ifl_elf, shdr->sh_link)) == NULL) {
1757 ifl->ifl_name);
1798 ifl->ifl_flags |= FLG_IF_GNUVER;
2081 process_dynamic_isgnu(const char *name, Ifl_desc *ifl, Shdr *shdr,
2088 error = process_section(name, ifl, shdr, scn, ndx, ident, ofl);
2097 ifl->ifl_flags |= FLG_IF_GNUVER;
2117 process_dynamic(Is_desc *isc, Ifl_desc *ifl, Ofl_desc *ofl)
2125 str = (char *)ifl->ifl_isdesc[isc->is_shdr->sh_link]->is_indata->d_buf;
2157 ifl->ifl_soname = soname;
2173 needed = expand(ifl->ifl_name, needed, NULL);
2179 sdf->sdf_rfile = ifl->ifl_name;
2192 ifl->ifl_flags &= ~FLG_IF_LAZYLD;
2194 ifl->ifl_flags |= FLG_IF_DISPPEND;
2196 ifl->ifl_flags |= FLG_IF_DISPDONE;
2198 ifl->ifl_flags |= FLG_IF_NODIRECT;
2214 ifl->ifl_flags |= FLG_IF_DEPREQD;
2217 (ifl->ifl_flags & FLG_IF_NEEDED)) {
2235 ifl->ifl_flags &= ~MSK_IF_POSFLAG1;
2243 ifl->ifl_flags |= FLG_IF_RTLDINF;
2250 if (ifl->ifl_flags & FLG_IF_NEEDED) {
2263 if ((strcmp(ifl->ifl_soname, sifl->ifl_soname) == 0) &&
2264 (ifl != sifl)) {
2274 iflb = strrchr(ifl->ifl_name, '/');
2276 iflb = ifl->ifl_name;
2293 ifl->ifl_name, sifl->ifl_soname, hint);
2304 (strcmp(ofl->ofl_soname, ifl->ifl_soname) == 0)) {
2306 MSG_INTL(MSG_REC_OPTCNFLT), ifl->ifl_name,
2307 MSG_INTL(MSG_MARG_SONAME), ifl->ifl_soname);
2320 process_progbits_final(Is_desc *isc, Ifl_desc *ifl, Ofl_desc *ofl)
2333 process_group(const char *name, Ifl_desc *ifl, Shdr *shdr, Elf_Scn *scn,
2338 error = process_section(name, ifl, shdr, scn, ndx, ident, ofl);
2346 ifl->ifl_flags |= FLG_IF_GROUPS;
2357 rel_process(Is_desc *isc, Ifl_desc *ifl, Ofl_desc *ofl)
2370 ifl->ifl_name, EC_WORD(isc->is_scnndx), isc->is_name,
2371 conv_sec_type(ifl->ifl_ehdr->e_ident[EI_OSABI],
2372 ifl->ifl_ehdr->e_machine, shdr->sh_type, 0, &inv_buf));
2384 if (rndx >= ifl->ifl_shnum) {
2389 ifl->ifl_name, EC_WORD(isc->is_scnndx), isc->is_name,
2398 } else if ((risc = ifl->ifl_isdesc[rndx]) != NULL) {
2418 MSG_INTL(MSG_FIL_INVRELOC1), ifl->ifl_name,
2434 process_exclude(const char *name, Ifl_desc *ifl, Shdr *shdr, Elf_Scn *scn,
2454 ifl->ifl_name, EC_WORD(ndx), name);
2461 return (process_section(name, ifl, shdr, scn, ndx, 0, ofl));
2531 process_elf(Ifl_desc *ifl, Elf *elf, Ofl_desc *ofl)
2550 path_info = ld_place_path_info_init(ofl, ifl, &path_info_buf);
2556 ld_sup_file(ofl, ifl->ifl_name, elf_kind(elf), ifl->ifl_flags, elf);
2558 sndx = ifl->ifl_shstrndx;
2561 ifl->ifl_name);
2566 ifl->ifl_name);
2572 ifl->ifl_name);
2576 if (ld_sup_input_section(ofl, ifl, name, &shdr, sndx, scn,
2587 ifl->ifl_name);
2591 error = process_strtab(name, ifl, shdr, scn, sndx, FALSE, ofl);
2594 str = ifl->ifl_isdesc[sndx]->is_indata->d_buf;
2600 if (ifl->ifl_ehdr->e_type == ET_DYN) {
2610 DBG_CALL(Dbg_file_generic(ofl->ofl_lml, ifl));
2625 ifl->ifl_name);
2630 if (ld_sup_input_section(ofl, ifl, name, &shdr, ndx, scn,
2648 if ((error = process_exclude(name, ifl, shdr, scn,
2661 if (Initial[row][column](name, ifl, shdr, scn,
2675 MSG_INTL(MSG_FIL_INVALSEC), ifl->ifl_name,
2677 ifl->ifl_ehdr->e_ident[EI_OSABI],
2678 ifl->ifl_ehdr->e_machine,
2687 if (process_section(name, ifl, shdr, scn,
2692 if (process_section(name, ifl, shdr, scn, ndx,
2695 capisp = ifl->ifl_isdesc[ndx];
2698 if (process_section(name, ifl, shdr, scn, ndx,
2701 capinfoisp = ifl->ifl_isdesc[ndx];
2705 if (process_debug(name, ifl, shdr, scn,
2710 if (process_section(name, ifl, shdr, scn, ndx,
2715 if (process_section(name, ifl, shdr, scn, ndx,
2718 sifisp = ifl->ifl_isdesc[ndx];
2721 if (process_progbits(name, ifl, shdr, scn,
2726 if (process_progbits(name, ifl, shdr, scn,
2729 ifl->ifl_isdesc[ndx]->is_flags |= FLG_IS_COMDAT;
2732 if (process_section(name, ifl, shdr, scn, ndx,
2735 vdfisp = ifl->ifl_isdesc[ndx];
2738 if (process_section(name, ifl, shdr, scn, ndx,
2741 vndisp = ifl->ifl_isdesc[ndx];
2744 if (process_section(name, ifl, shdr, scn, ndx,
2747 vsyisp = ifl->ifl_isdesc[ndx];
2759 if (process_section(name, ifl, shdr, scn, ndx,
2782 if (process_section(name, ifl, shdr,
2786 ifl->ifl_isdesc[ndx]->is_flags |=
2793 if (process_section(name, ifl, shdr, scn, ndx,
2810 if (ifl->ifl_flags & FLG_IF_GROUPS) {
2811 for (ndx = 1; ndx < ifl->ifl_shnum; ndx++) {
2814 if (((isp = ifl->ifl_isdesc[ndx]) == NULL) ||
2829 ld_comdat_validate(ofl, ifl);
2835 for (ndx = 1; ndx < ifl->ifl_shnum; ndx++) {
2838 if (((isp = ifl->ifl_isdesc[ndx]) == NULL) ||
2867 if (ifl->ifl_flags & FLG_IF_ORDERED) {
2868 for (ndx = ordndx; ndx < ifl->ifl_shnum; ndx++) {
2871 if (((isp = ifl->ifl_isdesc[ndx]) == NULL) ||
2878 if (ld_process_ordered(ofl, ifl, path_info, ndx) ==
2897 if (column && (ifl->ifl_flags & FLG_IF_NEEDED)) {
2904 if ((base = strrchr(ifl->ifl_name, '/')) == NULL)
2905 base = ifl->ifl_name;
2910 sdf->sdf_file = ifl;
2911 ifl->ifl_sdfdesc = sdf;
2922 if (capisp && (process_cap(ofl, ifl, capisp) == S_ERROR))
2932 if (ld_vers_need_process(vndisp, ifl, ofl) == S_ERROR)
2940 (void) ld_vers_sym_process(ofl, vsyisp, ifl);
2942 if (ifl->ifl_versym &&
2944 if (ld_vers_def_process(vdfisp, ifl, ofl) == S_ERROR)
2951 for (ndx = 0; ndx < ifl->ifl_shnum; ndx++) {
2954 if ((isp = ifl->ifl_isdesc[ndx]) == NULL)
2978 if (Final[row][column](isp, ifl,
3007 if (capinfoisp && (ifl->ifl_ehdr->e_type == ET_REL) &&
3008 (process_capinfo(ofl, ifl, capinfoisp) == S_ERROR))
3016 if (sifisp && ((ifl->ifl_flags & (FLG_IF_NEEDED | FLG_IF_NODIRECT)) ==
3018 (void) ld_sym_nodirect(sifisp, ifl, ofl);
3067 Ifl_desc *ifl;
3216 for (APLIST_TRAVERSE(apl, idx, ifl)) {
3221 if (ifl->ifl_flags & FLG_IF_NEEDSTR)
3224 if ((ifl->ifl_stino != status.st_ino) ||
3225 (ifl->ifl_stdev != status.st_dev))
3232 ifl->ifl_name, name));
3244 (ifl->ifl_flags & FLG_IF_CMDLINE)) {
3254 (strcmp(name, ifl->ifl_name) == 0) ?
3258 errmsg, name, ifl->ifl_name);
3261 *ifl_ret = ifl;
3270 ifl = ifl_setup(name, ehdr, elf, flags, ofl, rej);
3271 if ((ifl == NULL) || (ifl == (Ifl_desc *)S_ERROR))
3272 return ((uintptr_t)ifl);
3273 ifl->ifl_stdev = status.st_dev;
3274 ifl->ifl_stino = status.st_ino;
3282 ifl->ifl_flags |= FLG_IF_IGNORE;
3287 error = process_elf(ifl, elf, ofl);
3306 ifl->ifl_soname = ifl->ifl_name;
3308 ifl->ifl_soname = soname;
3316 ifl->ifl_flags |= FLG_IF_DIRECT;
3318 ifl->ifl_flags |= FLG_IF_LAZYLD;
3320 ifl->ifl_flags |= FLG_IF_GRPPRM;
3322 ifl->ifl_flags |=
3325 error = process_elf(ifl, elf, ofl);
3330 if (ifl->ifl_flags & MSK_IF_SYMINFO)
3339 ((ifl->ifl_flags & FLG_IF_RTLDINF) == 0)) {
3385 *ifl_ret = ifl;
3442 Ifl_desc *ifl;
3449 open_ret = ld_process_ifl(path, file, 0, elf, 0, ofl, rej, &ifl);
3452 return (ifl);
3498 Ifl_desc *ifl;
3505 0, rej, &ifl);
3510 return (ifl);
3542 Ifl_desc *ifl;
3555 for (APLIST_TRAVERSE(ofl->ofl_sos, idx2, ifl)) {
3556 if (!(ifl->ifl_flags & FLG_IF_NEEDSTR) &&
3557 (strcmp(file, ifl->ifl_soname) == 0)) {
3558 sdf->sdf_file = ifl;
3586 &fd, ofl, 0, &_rej, &ifl);
3602 sdf->sdf_file = ifl;
3613 ifl = process_req_lib(sdf, path, file, ofl, &_rej);
3614 if (ifl == (Ifl_desc *)S_ERROR) {
3623 if (ifl) {
3624 sdf->sdf_file = ifl;
3652 ifl = process_req_lib(sdf, path,
3654 if (ifl == (Ifl_desc *)S_ERROR) {
3663 if (ifl) {
3664 sdf->sdf_file = ifl;
3680 ifl = process_req_lib(sdf, path, file, ofl, &rej);
3681 if (ifl == (Ifl_desc *)S_ERROR) {
3690 if (ifl) {
3691 sdf->sdf_file = ifl;