Lines Matching full:symtab

748 	ctf_sect_t ctdata, symtab, strtab;  in Pbuild_file_ctf()  local
793 symtab.cts_name = fptr->file_ctf_dyn ? ".dynsym" : ".symtab"; in Pbuild_file_ctf()
794 symtab.cts_type = symp->sym_hdr_pri.sh_type; in Pbuild_file_ctf()
795 symtab.cts_flags = symp->sym_hdr_pri.sh_flags; in Pbuild_file_ctf()
796 symtab.cts_data = symp->sym_data_pri->d_buf; in Pbuild_file_ctf()
797 symtab.cts_size = symp->sym_hdr_pri.sh_size; in Pbuild_file_ctf()
798 symtab.cts_entsize = symp->sym_hdr_pri.sh_entsize; in Pbuild_file_ctf()
799 symtab.cts_offset = symp->sym_hdr_pri.sh_offset; in Pbuild_file_ctf()
809 fptr->file_ctfp = ctf_bufopen(&ctdata, &symtab, &strtab, &err); in Pbuild_file_ctf()
1172 * (both dynsym and symtab), the procedure linkage table (PLT) base,
1175 * being the symtab and CTF data.
1479 symtab_getsym(sym_tbl_t *symtab, int ndx, GElf_Sym *dst) in symtab_getsym() argument
1481 /* If index is in range of primary symtab, look it up there */ in symtab_getsym()
1482 if (ndx >= symtab->sym_symn_aux) { in symtab_getsym()
1483 return (gelf_getsym(symtab->sym_data_pri, in symtab_getsym()
1484 ndx - symtab->sym_symn_aux, dst)); in symtab_getsym()
1487 /* Not in primary: Look it up in the auxiliary symtab */ in symtab_getsym()
1488 return (gelf_getsym(symtab->sym_data_aux, ndx, dst)); in symtab_getsym()
1492 optimize_symtab(sym_tbl_t *symtab) in optimize_symtab() argument
1498 if (symtab == NULL || symtab->sym_data_pri == NULL || in optimize_symtab()
1499 symtab->sym_byaddr != NULL) in optimize_symtab()
1502 symn = symtab->sym_symn; in optimize_symtab()
1503 strsz = symtab->sym_strsz; in optimize_symtab()
1517 if (symtab_getsym(symtab, i, symp) != NULL && in optimize_symtab()
1529 symtab->sym_count = count; in optimize_symtab()
1530 indexa = symtab->sym_byaddr = calloc(sizeof (uint_t), count); in optimize_symtab()
1531 indexb = symtab->sym_byname = calloc(sizeof (uint_t), count); in optimize_symtab()
1535 symtab->sym_count = 0; in optimize_symtab()
1538 symtab->sym_byaddr = NULL; in optimize_symtab()
1564 sort_strs = symtab->sym_strs; in optimize_symtab()
1567 qsort(symtab->sym_byaddr, count, sizeof (uint_t), byaddr_cmp); in optimize_symtab()
1568 qsort(symtab->sym_byname, count, sizeof (uint_t), byname_cmp); in optimize_symtab()
2003 * for the .symtab, .dynsym, .SUNW_ldynsym, .dynamic, .plt, in Pbuild_file_symtab()
2016 * only contain the dynsym (not the symtab) or the in Pbuild_file_symtab()
2219 * to find: the ones in the loop above and possibly the symtab that in Pbuild_file_symtab()
2575 sym_by_addr_binary(sym_tbl_t *symtab, GElf_Addr addr, GElf_Sym *symp, in sym_by_addr_binary() argument
2579 uint_t i, oid, *byaddr = symtab->sym_byaddr; in sym_by_addr_binary()
2582 if (symtab->sym_data_pri == NULL || symtab->sym_count == 0) in sym_by_addr_binary()
2586 max = symtab->sym_count - 1; in sym_by_addr_binary()
2597 (void) symtab_getsym(symtab, i, &sym); in sym_by_addr_binary()
2629 (void) symtab_getsym(symtab, oid, &osym); in sym_by_addr_binary()
2644 sym_by_addr_linear(sym_tbl_t *symtab, GElf_Addr addr, GElf_Sym *symbolp, in sym_by_addr_linear() argument
2647 size_t symn = symtab->sym_symn; in sym_by_addr_linear()
2648 char *strs = symtab->sym_strs; in sym_by_addr_linear()
2653 if (symtab->sym_data_pri == NULL || symn == 0 || strs == NULL) in sym_by_addr_linear()
2657 if ((symp = symtab_getsym(symtab, i, &sym)) != NULL) { in sym_by_addr_linear()
2690 sym_by_addr(sym_tbl_t *symtab, GElf_Addr addr, GElf_Sym *symp, uint_t *idp) in sym_by_addr() argument
2693 return (sym_by_addr_linear(symtab, addr, symp, idp)); in sym_by_addr()
2695 return (sym_by_addr_binary(symtab, addr, symp, idp)); in sym_by_addr()
2703 sym_by_name_binary(sym_tbl_t *symtab, const char *name, GElf_Sym *symp, in sym_by_name_binary() argument
2706 char *strs = symtab->sym_strs; in sym_by_name_binary()
2707 uint_t i, *byname = symtab->sym_byname; in sym_by_name_binary()
2710 if (symtab->sym_data_pri == NULL || strs == NULL || in sym_by_name_binary()
2711 symtab->sym_count == 0) in sym_by_name_binary()
2715 max = symtab->sym_count - 1; in sym_by_name_binary()
2721 (void) symtab_getsym(symtab, i, symp); in sym_by_name_binary()
2742 sym_by_name_linear(sym_tbl_t *symtab, const char *name, GElf_Sym *symp, in sym_by_name_linear() argument
2745 size_t symn = symtab->sym_symn; in sym_by_name_linear()
2746 char *strs = symtab->sym_strs; in sym_by_name_linear()
2749 if (symtab->sym_data_pri == NULL || symn == 0 || strs == NULL) in sym_by_name_linear()
2753 if (symtab_getsym(symtab, i, symp) && in sym_by_name_linear()
2771 sym_by_name(sym_tbl_t *symtab, const char *name, GElf_Sym *symp, uint_t *idp) in sym_by_name() argument
2774 return (sym_by_name_linear(symtab, name, symp, idp)); in sym_by_name()
2776 return (sym_by_name_binary(symtab, name, symp, idp)); in sym_by_name()
2824 * Search both symbol tables, symtab first, then dynsym. in i_Pxlookup_by_addr()
2918 * name in the .symtab and .dynsym of each. If we encounter a match in Pxlookup_by_name()
3175 sym_tbl_t *symtab; in Psymbol_iter_com() local
3195 symtab = &fptr->file_symtab; in Psymbol_iter_com()
3199 symtab = &fptr->file_dynsym; in Psymbol_iter_com()
3210 symn = symtab->sym_symn; in Psymbol_iter_com()
3211 strs = symtab->sym_strs; in Psymbol_iter_com()
3212 strsz = symtab->sym_strsz; in Psymbol_iter_com()
3220 map = symtab->sym_byname; in Psymbol_iter_com()
3221 count = symtab->sym_count; in Psymbol_iter_com()
3224 map = symtab->sym_byaddr; in Psymbol_iter_com()
3225 count = symtab->sym_count; in Psymbol_iter_com()
3231 if (symtab->sym_data_pri == NULL || strs == NULL || count == 0) in Psymbol_iter_com()
3238 if (symtab_getsym(symtab, ndx, &sym) != NULL) { in Psymbol_iter_com()