Home
last modified time | relevance | path

Searched refs:ifl (Results 1 – 24 of 24) sorted by relevance

/titanic_51/usr/src/cmd/sgs/libld/common/
H A Dfiles.c87 Ifl_desc *ifl; in ifl_setup() local
101 if ((ifl = libld_calloc(1, sizeof (Ifl_desc))) == NULL) in ifl_setup()
103 ifl->ifl_name = name; in ifl_setup()
104 ifl->ifl_ehdr = ehdr; in ifl_setup()
105 ifl->ifl_elf = elf; in ifl_setup()
106 ifl->ifl_flags = flags; in ifl_setup()
129 ifl->ifl_shnum = (Word)shdr0->sh_size; in ifl_setup()
131 ifl->ifl_shstrndx = shdr0->sh_link; in ifl_setup()
133 ifl->ifl_shstrndx = ehdr->e_shstrndx; in ifl_setup()
135 ifl in ifl_setup()
163 process_section(const char * name,Ifl_desc * ifl,Shdr * shdr,Elf_Scn * scn,Word ndx,int ident,Ofl_desc * ofl) process_section() argument
238 sf1_cap(Ofl_desc * ofl,Xword val,Ifl_desc * ifl,Is_desc * cisp) sf1_cap() argument
815 process_cap(Ofl_desc * ofl,Ifl_desc * ifl,Is_desc * cisp) process_cap() argument
1163 process_capinfo(Ofl_desc * ofl,Ifl_desc * ifl,Is_desc * isp) process_capinfo() argument
1280 process_input(const char * name,Ifl_desc * ifl,Shdr * shdr,Elf_Scn * scn,Word ndx,int ident,Ofl_desc * ofl) process_input() argument
1295 process_reloc(const char * name,Ifl_desc * ifl,Shdr * shdr,Elf_Scn * scn,Word ndx,int ident,Ofl_desc * ofl) process_reloc() argument
1320 process_strtab(const char * name,Ifl_desc * ifl,Shdr * shdr,Elf_Scn * scn,Word ndx,int ident,Ofl_desc * ofl) process_strtab() argument
1375 invalid_section(const char * name,Ifl_desc * ifl,Shdr * shdr,Elf_Scn * scn,Word ndx,int ident,Ofl_desc * ofl) invalid_section() argument
1434 process_progbits_alloc(const char * name,Ifl_desc * ifl,Shdr * shdr,Word ndx,int * ident,Ofl_desc * ofl,Boolean is_stab_index,Word * is_flags) process_progbits_alloc() argument
1528 process_progbits(const char * name,Ifl_desc * ifl,Shdr * shdr,Elf_Scn * scn,Word ndx,int ident,Ofl_desc * ofl) process_progbits() argument
1601 process_debug(const char * name,Ifl_desc * ifl,Shdr * shdr,Elf_Scn * scn,Word ndx,int ident,Ofl_desc * ofl) process_debug() argument
1617 process_nobits(const char * name,Ifl_desc * ifl,Shdr * shdr,Elf_Scn * scn,Word ndx,int ident,Ofl_desc * ofl) process_nobits() argument
1638 process_array(const char * name,Ifl_desc * ifl,Shdr * shdr,Elf_Scn * scn,Word ndx,int ident,Ofl_desc * ofl) process_array() argument
1655 array_process(Is_desc * isc,Ifl_desc * ifl,Ofl_desc * ofl) array_process() argument
1682 process_sym_shndx(const char * name,Ifl_desc * ifl,Shdr * shdr,Elf_Scn * scn,Word ndx,int ident,Ofl_desc * ofl) process_sym_shndx() argument
1711 sym_shndx_process(Is_desc * isc,Ifl_desc * ifl,Ofl_desc * ofl) sym_shndx_process() argument
1738 process_rel_dynamic(const char * name,Ifl_desc * ifl,Shdr * shdr,Elf_Scn * scn,Word ndx,int ident,Ofl_desc * ofl) process_rel_dynamic() argument
2081 process_dynamic_isgnu(const char * name,Ifl_desc * ifl,Shdr * shdr,Elf_Scn * scn,Word ndx,int ident,Ofl_desc * ofl) process_dynamic_isgnu() argument
2117 process_dynamic(Is_desc * isc,Ifl_desc * ifl,Ofl_desc * ofl) process_dynamic() argument
2320 process_progbits_final(Is_desc * isc,Ifl_desc * ifl,Ofl_desc * ofl) process_progbits_final() argument
2333 process_group(const char * name,Ifl_desc * ifl,Shdr * shdr,Elf_Scn * scn,Word ndx,int ident,Ofl_desc * ofl) process_group() argument
2357 rel_process(Is_desc * isc,Ifl_desc * ifl,Ofl_desc * ofl) rel_process() argument
2434 process_exclude(const char * name,Ifl_desc * ifl,Shdr * shdr,Elf_Scn * scn,Word ndx,Ofl_desc * ofl) process_exclude() argument
2531 process_elf(Ifl_desc * ifl,Elf * elf,Ofl_desc * ofl) process_elf() argument
3067 Ifl_desc *ifl; ld_process_ifl() local
3442 Ifl_desc *ifl; ld_process_mem() local
3498 Ifl_desc *ifl; process_req_lib() local
3542 Ifl_desc *ifl; ld_finish_libs() local
[all...]
H A Dversion.c308 vers_derefer(Ifl_desc *ifl, Ver_desc *vdp, int weak) in vers_derefer() argument
312 Ver_index *vip = &ifl->ifl_verndx[vdp->vd_ndx]; in vers_derefer()
328 vers_derefer(ifl, _vdp, weak); in vers_derefer()
340 Ifl_desc *ifl; in ld_vers_check_need() local
362 for (APLIST_TRAVERSE(ofl->ofl_sos, idx1, ifl)) { in ld_vers_check_need()
368 if (!(ifl->ifl_flags & FLG_IF_NEEDED)) in ld_vers_check_need()
371 if (ifl->ifl_vercnt <= VER_NDX_GLOBAL) in ld_vers_check_need()
381 for (cnt = 0; cnt <= ifl->ifl_vercnt; cnt++) { in ld_vers_check_need()
382 vip = &ifl->ifl_verndx[cnt]; in ld_vers_check_need()
404 for (APLIST_TRAVERSE(ifl in ld_vers_check_need()
463 vers_select(Ofl_desc * ofl,Ifl_desc * ifl,Ver_desc * vdp,const char * ref) vers_select() argument
477 vers_index(Ofl_desc * ofl,Ifl_desc * ifl,int avail) vers_index() argument
563 ld_vers_sym_process(Ofl_desc * ofl,Is_desc * isp,Ifl_desc * ifl) ld_vers_sym_process() argument
596 ld_vers_def_process(Is_desc * isp,Ifl_desc * ifl,Ofl_desc * ofl) ld_vers_def_process() argument
818 ld_vers_need_process(Is_desc * isp,Ifl_desc * ifl,Ofl_desc * ofl) ld_vers_need_process() argument
894 ld_vers_promote(Sym_desc * sdp,Word ndx,Ifl_desc * ifl,Ofl_desc * ofl) ld_vers_promote() argument
1024 Ifl_desc *ifl = sdf->sdf_file; ld_vers_verify() local
[all...]
H A Dresolve.c55 sym_null(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl, in sym_null() argument
62 Ifl_desc *ifl, Ofl_desc *ofl) in sym_visibility_diag() argument
73 ifl->ifl_name, conv_sym_other(nsym->st_other, &inv_nbuf)); in sym_visibility_diag()
77 ifl->ifl_name); in sym_visibility_diag()
120 sym_visibility(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, Ofl_desc *ofl) in sym_visibility() argument
150 (ifl->ifl_ehdr->e_type == ET_DYN)) { in sym_visibility()
158 (ifl->ifl_ehdr->e_type == ET_REL)) { in sym_visibility()
189 nsym, ifl, ofl); in sym_visibility()
192 nsym, ifl, ofl); in sym_visibility()
202 nsym, ifl, of in sym_visibility()
268 sym_typecheck(Sym_desc * sdp,Sym * nsym,Ifl_desc * ifl,Ofl_desc * ofl,int ndx,Word nshndx,sd_flag_t nsdflags) sym_typecheck() argument
300 sym_mach_check(Sym_desc * sdp,Sym * nsym,Ifl_desc * ifl,Ofl_desc * ofl,int ndx,Word nshndx,sd_flag_t nsdflags) sym_mach_check() argument
316 sym_promote(Sym_desc * sdp,Sym * nsym,Ifl_desc * ifl,Ofl_desc * ofl,int ndx,Word nshndx,sd_flag_t nsdflags) sym_promote() argument
358 sym_override(Sym_desc * sdp,Sym * nsym,Ifl_desc * ifl,Ofl_desc * ofl,int ndx,Word nshndx,sd_flag_t nsdflags) sym_override() argument
520 sym_twoundefs(Sym_desc * sdp,Sym * nsym,Ifl_desc * ifl,Ofl_desc * ofl,int ndx,Word nshndx,sd_flag_t nsdflags) sym_twoundefs() argument
550 sym_tworeals(Sym_desc * sdp,Sym * nsym,Ifl_desc * ifl,Ofl_desc * ofl,int ndx,Word nshndx,sd_flag_t nsdflags) sym_tworeals() argument
652 sym_realtent(Sym_desc * sdp,Sym * nsym,Ifl_desc * ifl,Ofl_desc * ofl,int ndx,Word nshndx,sd_flag_t nsdflags) sym_realtent() argument
830 sym_twotent(Sym_desc * sdp,Sym * nsym,Ifl_desc * ifl,Ofl_desc * ofl,int ndx,Word nshndx,sd_flag_t nsdflags) global() argument
1082 ld_sym_resolve(Sym_desc * sdp,Sym * nsym,Ifl_desc * ifl,Ofl_desc * ofl,int ndx,Word nshndx,sd_flag_t nsdflags) global() argument
[all...]
H A Dorder.c122 is_keyshndx_ok(Ifl_desc *ifl, Word keyshndx) in is_keyshndx_ok() argument
130 if ((keyshndx == 0) || (keyshndx >= ifl->ifl_shnum)) in is_keyshndx_ok()
140 if (ifl->ifl_isdesc[keyshndx]->is_shdr->sh_flags & ALL_SHF_ORDER) in is_keyshndx_ok()
154 * ifl - Input file descriptor
169 validate_shf_ordered_dest(Ofl_desc *ofl, Ifl_desc *ifl, Word ndx, in validate_shf_ordered_dest() argument
172 Word shnum = ifl->ifl_shnum; in validate_shf_ordered_dest()
183 isp1 = ifl->ifl_isdesc[ndx]; in validate_shf_ordered_dest()
193 isp2 = ifl->ifl_isdesc[isp2_ndx]; in validate_shf_ordered_dest()
214 if ((error = is_keyshndx_ok(ifl, isp2->is_shdr->sh_info)) != 0) in validate_shf_ordered_dest()
247 DBG_CALL(Dbg_sec_order_error(ofl->ofl_lml, ifl, nd in validate_shf_ordered_dest()
292 ld_process_ordered(Ofl_desc * ofl,Ifl_desc * ifl,Place_path_info * path_info,Word ndx) ld_process_ordered() argument
[all...]
H A Dsyms.c77 string(Ofl_desc *ofl, Ifl_desc *ifl, Sym *sym, const char *strs, size_t strsize, in string() argument
84 if ((ifl->ifl_flags & FLG_IF_HSTRTAB) == 0) { in string()
86 ifl->ifl_name, EC_WORD(symsecndx), symsecname, in string()
92 MSG_INTL(MSG_FIL_EXCSTRTABLE), ifl->ifl_name, in string()
104 const char *regname = (*ld_targ.t_ms.ms_is_regsym)(ofl, ifl, in string()
124 ifl->ifl_name, EC_WORD(symsecndx), symsecname, symndx, in string()
197 ld_sym_nodirect(Is_desc *isp, Ifl_desc *ifl, Ofl_desc *ofl) in ld_sym_nodirect() argument
215 if ((sifshdr->sh_link == 0) || (sifshdr->sh_link >= ifl->ifl_shnum)) { in ld_sym_nodirect()
220 ifl->ifl_name, isp->is_name, EC_XWORD(sifshdr->sh_link)); in ld_sym_nodirect()
223 symshdr = ifl->ifl_isdesc[sifshdr->sh_link]->is_shdr; in ld_sym_nodirect()
[all …]
H A Dmachsym.sparc.c58 ld_reg_check_sparc(Sym_desc *sdp, Sym *nsym, const char *nname, Ifl_desc *ifl, in ld_reg_check_sparc() argument
82 ifl->ifl_name, demangle(nname)); in ld_reg_check_sparc()
98 ifl->ifl_name, demangle(nname)); in ld_reg_check_sparc()
110 ifl->ifl_name); in ld_reg_check_sparc()
118 ifl->ifl_name, in ld_reg_check_sparc()
126 ld_mach_sym_typecheck_sparc(Sym_desc *sdp, Sym *nsym, Ifl_desc *ifl, in ld_mach_sym_typecheck_sparc() argument
142 0, &inv_buf1), ifl->ifl_name, in ld_mach_sym_typecheck_sparc()
143 conv_sym_info_type(ifl->ifl_ehdr->e_machine, in ld_mach_sym_typecheck_sparc()
148 return (ld_reg_check_sparc(sdp, nsym, sdp->sd_name, ifl, ofl)); in ld_mach_sym_typecheck_sparc()
161 ld_is_regsym_sparc(Ofl_desc *ofl, Ifl_desc *ifl, Sy argument
[all...]
H A Drelocate.c93 Ifl_desc *ifl = crp->c_sdp->sd_file; in is_disp_copied() local
105 if ((ifl->ifl_flags & FLG_IF_DISPDONE) && in is_disp_copied()
108 conv_reloc_type(ifl->ifl_ehdr->e_machine, in is_disp_copied()
110 ifl->ifl_name, demangle(sdp->sd_name)); in is_disp_copied()
112 if ((ifl->ifl_flags & FLG_IF_DISPPEND) == 0) in is_disp_copied()
118 for (APLIST_TRAVERSE(ifl->ifl_relsect, idx, irel)) { in is_disp_copied()
124 trel = ifl->ifl_isdesc[irel->is_shdr->sh_info]; in is_disp_copied()
156 rsdp = ifl->ifl_oldndx[rstndx]; in is_disp_copied()
166 conv_reloc_type(ifl->ifl_ehdr->e_machine, in is_disp_copied()
169 0, &inv_buf), ifl in is_disp_copied()
233 disp_scansyms(Ifl_desc * ifl,Rel_desc * rld,Boolean rlocal,int inspect,Ofl_desc * ofl) disp_scansyms() argument
340 Ifl_desc *ifl = rsp->rel_isdesc->is_file; ld_disp_errmsg() local
381 Ifl_desc *ifl = rld->rel_isdesc->is_file; disp_inspect() local
1293 Ifl_desc *ifl = rsp->rel_isdesc->is_file; reloc_generic() local
1352 Ifl_desc *ifl = rsp->rel_isdesc->is_file; reloc_relobj() local
1401 Ifl_desc *ifl = rsp->rel_isdesc->is_file; reloc_TLS() local
1609 Ifl_desc *ifl = reld->rel_isdesc->is_file; ld_process_sym_reloc() local
1627 Ifl_desc *ifl = reld->rel_isdesc->is_file; ld_process_sym_reloc() local
1744 Ifl_desc *ifl; sloppy_comdat_reloc() local
1888 Ifl_desc *ifl = isp->is_file; process_reld() local
[all...]
H A Dplace.c320 gnu_comdat_sym(Ifl_desc *ifl, Is_desc *gisp) in gnu_comdat_sym() argument
324 for (ndx = 1; ndx < ifl->ifl_shnum; ndx++) { in gnu_comdat_sym()
328 if (((isp = ifl->ifl_isdesc[ndx]) == NULL) || in gnu_comdat_sym()
510 * ifl - Descriptor for input file, or NULL if there is none.
525 ld_place_path_info_init(Ofl_desc *ofl, Ifl_desc *ifl, Place_path_info *info) in ld_place_path_info_init() argument
532 if ((ifl == NULL) || !(ofl->ofl_flags & FLG_OF_EC_FILES)) in ld_place_path_info_init()
535 info->ppi_path = ifl->ifl_name; in ld_place_path_info_init()
537 info->ppi_isar = (ifl->ifl_flags & FLG_IF_EXTRACT) != 0; in ld_place_path_info_init()
742 Ifl_desc *ifl = isp->is_file; in ld_place_section() local
993 ((sname = gnu_comdat_sym(ifl, is in ld_place_section()
[all...]
H A Dsections.c95 ignore_sym(Ofl_desc *ofl, Ifl_desc *ifl, Sym_desc *sdp, int allow_ldynsym) in ignore_sym() argument
117 if (((ifl->ifl_flags & FLG_IF_FILEREF) == 0) && in ignore_sym()
121 if (ifl->ifl_flags & FLG_IF_IGNORE) in ignore_sym()
140 if (ifl->ifl_flags & FLG_IF_IGNORE) in ignore_sym()
154 if (ifl->ifl_flags & FLG_IF_IGNORE) { in ignore_sym()
166 Ifl_desc *ifl = isp->is_file; in isdesc_discarded() local
177 if (ifl && in isdesc_discarded()
178 (((ifl->ifl_flags & FLG_IF_FILEREF) == 0) || in isdesc_discarded()
182 (ifl->ifl_flags & FLG_IF_IGNORE)) in isdesc_discarded()
276 Ifl_desc *ifl; in ignore_section_processing() local
944 Ifl_desc *ifl; make_dynamic() local
3482 ld_comdat_validate(Ofl_desc * ofl,Ifl_desc * ifl) ld_comdat_validate() argument
[all...]
H A Dmap_support.c165 Ifl_desc *ifl; in ld_map_ifl() local
174 if ((ifl = libld_calloc(sizeof (Ifl_desc), 1)) == NULL) in ld_map_ifl()
176 ifl->ifl_name = mf->mf_name; in ld_map_ifl()
177 ifl->ifl_flags = (FLG_IF_MAPFILE | FLG_IF_NEEDED | FLG_IF_FILEREF); in ld_map_ifl()
178 if ((ifl->ifl_ehdr = libld_calloc(sizeof (Ehdr), 1)) == NULL) in ld_map_ifl()
180 ifl->ifl_ehdr->e_type = ET_REL; in ld_map_ifl()
182 if (aplist_append(&mf->mf_ofl->ofl_objs, ifl, AL_CNT_OFL_OBJS) == NULL) in ld_map_ifl()
185 mf->mf_ifl = ifl; in ld_map_ifl()
440 Ifl_desc *ifl; /* Dummy input file structure */ in ld_map_seg_size_symbol() local
466 if ((ifl in ld_map_seg_size_symbol()
[all...]
H A Dgroups.c90 Ifl_desc *ifl = isp->is_file; in ld_get_group() local
99 for (ALIST_TRAVERSE(ifl->ifl_groups, idx, gdp)) { in ld_get_group()
117 ifl->ifl_name, EC_WORD(isp->is_scnndx), isp->is_name); in ld_get_group()
H A Dupdate.c177 Ifl_desc *ifl; in update_osym() local
627 for (APLIST_TRAVERSE(ofl->ofl_objs, idx1, ifl)) { in update_osym()
628 Xword lndx, local = ifl->ifl_locscnt; in update_osym()
629 Cap_desc *cdp = ifl->ifl_caps; in update_osym()
638 sdp = ifl->ifl_oldndx[lndx]; in update_osym()
693 if (ifl != sdp->sd_file) in update_osym()
2068 Ifl_desc *ifl; in update_odynamic() local
2105 for (APLIST_TRAVERSE(ofl->ofl_sos, idx, ifl)) { in update_odynamic()
2106 if ((ifl->ifl_flags & in update_odynamic()
2113 if ((ifl in update_odynamic()
2752 Ifl_desc *ifl; update_overneed() local
3202 Ifl_desc *ifl; update_ogroup() local
3544 Ifl_desc *ifl; translate_link() local
[all...]
H A Dldmain.c506 Ifl_desc *ifl; in ifl_list_cleanup() local
508 for (APLIST_TRAVERSE(apl, idx, ifl)) { in ifl_list_cleanup()
509 if (ifl->ifl_elf) in ifl_list_cleanup()
510 (void) elf_end(ifl->ifl_elf); in ifl_list_cleanup()
H A Dlibs.c495 Ifl_desc *ifl; in ar_extract_bysym() local
543 ifl = sdp->sd_file; in ar_extract_bysym()
550 if (ifl->ifl_vercnt) { in ar_extract_bysym()
555 vip = &ifl->ifl_verndx[vndx]; in ar_extract_bysym()
564 if (((ifl->ifl_flags & FLG_IF_NEEDED) == 0) || in ar_extract_bysym()
H A Doutfile.c525 Ifl_desc *ifl = isp->is_file; in ld_create_outfile() local
543 if (ifl && in ld_create_outfile()
544 (((ifl->ifl_flags & FLG_IF_FILEREF) == 0) || in ld_create_outfile()
550 if (ifl->ifl_flags & FLG_IF_IGNORE) { in ld_create_outfile()
574 if (ifl && dataidx && in ld_create_outfile()
H A Dsupport.c254 ld_sup_input_section(Ofl_desc *ofl, Ifl_desc *ifl, const char *sname, in ld_sup_input_section() argument
276 ifl->ifl_name); in ld_sup_input_section()
290 Ehdr *ehdr = ifl->ifl_ehdr; in ld_sup_input_section()
H A Dargs.c1719 Ifl_desc *ifl; in parseopt_pass2() local
1762 if (((ifl = libld_calloc(1, in parseopt_pass2()
1764 (aplist_append(&ofl->ofl_sos, ifl, in parseopt_pass2()
1768 ifl->ifl_name = MSG_INTL(MSG_STR_COMMAND); in parseopt_pass2()
1769 ifl->ifl_soname = optarg; in parseopt_pass2()
1770 ifl->ifl_flags = (FLG_IF_NEEDSTR | in parseopt_pass2()
H A Dmachrel.sparc.c1558 Ifl_desc *ifl = isp->is_file; in ld_reloc_register() local
1565 for (ndx = ifl->ifl_locscnt; in ld_reloc_register()
1566 ndx < ifl->ifl_symscnt; ndx++) { in ld_reloc_register()
1567 if (((sdp = ifl->ifl_oldndx[ndx]) != 0) && in ld_reloc_register()
1573 if (sdp && (sdp->sd_file != ifl)) in ld_reloc_register()
/titanic_51/usr/src/cmd/sgs/liblddbg/common/
H A Dsections.c364 Ifl_desc *ifl = isp1->is_file; in Dbg_sec_order_list() local
396 isp2 = ifl->ifl_isdesc[link]; in Dbg_sec_order_list()
399 ifl->ifl_name, msg, isp2->is_name); in Dbg_sec_order_list()
421 Dbg_sec_order_error(Lm_list *lml, Ifl_desc *ifl, Word ndx, int error) in Dbg_sec_order_error() argument
435 dbg_fmt_isec_name(ifl->ifl_isdesc[ndx], buf, &alloc_mem), in Dbg_sec_order_error()
436 ifl->ifl_name); in Dbg_sec_order_error()
H A Dsyms.c249 Dbg_syms_process(Lm_list *lml, Ifl_desc *ifl) in Dbg_syms_process() argument
257 dbg_print(lml, MSG_INTL(MSG_SYM_PROCESS), ifl->ifl_name, in Dbg_syms_process()
258 conv_ehdr_type(ifl->ifl_ehdr->e_ident[EI_OSABI], in Dbg_syms_process()
259 ifl->ifl_ehdr->e_type, 0, &inv_buf)); in Dbg_syms_process()
443 int col, Sym *osym, Sym *nsym, Sym_desc *sdp, Ifl_desc *ifl) in Dbg_syms_resolving() argument
463 osabi, mach, nsym, 0, 0, NULL, ifl->ifl_name); in Dbg_syms_resolving()
H A Dfiles.c656 Dbg_file_generic(Lm_list *lml, Ifl_desc *ifl) in Dbg_file_generic() argument
664 dbg_print(lml, MSG_INTL(MSG_FIL_BASIC), ifl->ifl_name, in Dbg_file_generic()
665 conv_ehdr_type(ifl->ifl_ehdr->e_ident[EI_OSABI], in Dbg_file_generic()
666 ifl->ifl_ehdr->e_type, 0, &inv_buf)); in Dbg_file_generic()
/titanic_51/usr/src/cmd/troff/
H A Dnii.c100 int ifl[NSO]; variable
H A Dext.h105 extern int ifl[NSO];
H A Dn1.c1230 if ((ifile = ifl[ifi]) == 0) { in popf()
1360 ifl[ifi] = ifile;
1368 if (!ifl[ifi++]) {