Lines Matching +full:local +full:- +full:cap +full:- +full:size

1 /*-
2 * Copyright (c) 2007-2013 Kai Wang
37 ELFTC_VCSID("$Id: symbols.c 3520 2017-04-17 01:47:52Z kaiwang27 $");
47 Elf32_Sym *l32; /* 32bit local symbol */
49 Elf64_Sym *l64; /* 64bit local symbol */
65 size_t cap; /* buffer capacity */ member
72 struct strimpl l; /* local symbols */
153 /* Compiler generated local symbols that start with .L */ in is_local_label()
168 if (BIT_ISSET(ecp->v_rel, i)) in is_needed_symbol()
172 if (BIT_ISSET(ecp->v_grp, i)) in is_needed_symbol()
179 if (ecp->flags & RELOCATABLE) { in is_needed_symbol()
180 if (is_global_symbol(s->st_info) || is_weak_symbol(s->st_info)) in is_needed_symbol()
208 if (s->st_shndx != SHN_UNDEF && s->st_shndx < SHN_LORESERVE && in is_remove_symbol()
209 ecp->secndx[s->st_shndx] == 0) in is_remove_symbol()
212 /* Keep the symbol if specified by command line option -K. */ in is_remove_symbol()
216 if (ecp->strip == STRIP_ALL) in is_remove_symbol()
220 if (ecp->v_rel == NULL) in is_remove_symbol()
224 if (ecp->v_grp == NULL) in is_remove_symbol()
228 * Strip the symbol if specified by command line option -N, in is_remove_symbol()
232 if (BIT_ISSET(ecp->v_rel, i)) { in is_remove_symbol()
243 if (ecp->strip == STRIP_UNNEEDED) in is_remove_symbol()
246 if ((ecp->flags & DISCARD_LOCAL) && is_local_symbol(s->st_info) && in is_remove_symbol()
247 !is_debug_symbol(s->st_info)) in is_remove_symbol()
250 if ((ecp->flags & DISCARD_LLABEL) && is_local_symbol(s->st_info) && in is_remove_symbol()
251 !is_debug_symbol(s->st_info) && is_local_label(name)) in is_remove_symbol()
254 if (ecp->strip == STRIP_DEBUG && is_debug_symbol(s->st_info)) in is_remove_symbol()
275 ecp->v_rel = calloc((sc + 7) / 8, 1); in mark_reloc_symbols()
276 if (ecp->v_rel == NULL) in mark_reloc_symbols()
279 if (elf_getshstrndx(ecp->ein, &indx) == 0) in mark_reloc_symbols()
281 elf_errmsg(-1)); in mark_reloc_symbols()
284 while ((s = elf_nextscn(ecp->ein, s)) != NULL) { in mark_reloc_symbols()
287 elf_errmsg(-1)); in mark_reloc_symbols()
296 if ((name = elf_strptr(ecp->ein, indx, sh.sh_name)) == NULL) in mark_reloc_symbols()
298 elf_errmsg(-1)); in mark_reloc_symbols()
304 if (sh.sh_link != elf_ndxscn(ecp->symtab->is)) in mark_reloc_symbols()
310 len = d->d_size / sh.sh_entsize; in mark_reloc_symbols()
316 elf_errmsg(-1)); in mark_reloc_symbols()
322 elf_errmsg(-1)); in mark_reloc_symbols()
326 BIT_SET(ecp->v_rel, n); in mark_reloc_symbols()
351 ecp->v_grp = calloc((sc + 7) / 8, 1); in mark_section_group_symbols()
352 if (ecp->v_grp == NULL) in mark_section_group_symbols()
355 if (elf_getshstrndx(ecp->ein, &indx) == 0) in mark_section_group_symbols()
357 elf_errmsg(-1)); in mark_section_group_symbols()
360 while ((s = elf_nextscn(ecp->ein, s)) != NULL) { in mark_section_group_symbols()
363 elf_errmsg(-1)); in mark_section_group_symbols()
368 if ((name = elf_strptr(ecp->ein, indx, sh.sh_name)) == NULL) in mark_section_group_symbols()
370 elf_errmsg(-1)); in mark_section_group_symbols()
375 BIT_SET(ecp->v_grp, sh.sh_info); in mark_section_group_symbols()
402 if (elf_getshstrndx(ecp->ein, &ishstrndx) == 0) in generate_symbols()
404 elf_errmsg(-1)); in generate_symbols()
405 if ((ec = gelf_getclass(ecp->eout)) == ELFCLASSNONE) in generate_symbols()
407 elf_errmsg(-1)); in generate_symbols()
414 sy_buf->gcap = sy_buf->lcap = 64; in generate_symbols()
415 st_buf->g.cap = 256; in generate_symbols()
416 st_buf->l.cap = 64; in generate_symbols()
417 st_buf->l.sz = 1; /* '\0' at start. */ in generate_symbols()
418 st_buf->g.sz = 0; in generate_symbols()
420 ecp->symtab->sz = 0; in generate_symbols()
421 ecp->strtab->sz = 0; in generate_symbols()
422 ecp->symtab->buf = sy_buf; in generate_symbols()
423 ecp->strtab->buf = st_buf; in generate_symbols()
431 ecp->v_secsym = calloc((ecp->nos + 7) / 8, 1); in generate_symbols()
432 if (ecp->v_secsym == NULL) in generate_symbols()
439 while ((is = elf_nextscn(ecp->ein, is)) != NULL) { in generate_symbols()
442 elf_errmsg(-1)); in generate_symbols()
443 if ((name = elf_strptr(ecp->ein, ishstrndx, ish.sh_name)) == in generate_symbols()
446 elf_errmsg(-1)); in generate_symbols()
465 while ((is = elf_nextscn(ecp->ein, is)) != NULL) { in generate_symbols()
468 elf_errmsg(-1)); in generate_symbols()
469 if ((name = elf_strptr(ecp->ein, ishstrndx, ish.sh_name)) == in generate_symbols()
472 elf_errmsg(-1)); in generate_symbols()
491 ecp->symndx = calloc(sc, sizeof(*ecp->symndx)); in generate_symbols()
492 if (ecp->symndx == NULL) in generate_symbols()
511 elf_errmsg(-1)); in generate_symbols()
512 if ((name = elf_strptr(ecp->ein, symndx, sym.st_name)) == NULL) in generate_symbols()
514 elf_errmsg(-1)); in generate_symbols()
527 if (ecp->flags & WEAKEN_ALL || in generate_symbols()
537 if (ecp->flags & KEEP_GLOBAL && in generate_symbols()
542 if (ecp->flags & LOCALIZE_HIDDEN && in generate_symbols()
558 name = sp->newname; in generate_symbols()
562 if (ecp->prefix_sym != NULL && name != NULL && *name != '\0') { in generate_symbols()
563 namelen = strlen(name) + strlen(ecp->prefix_sym) + 1; in generate_symbols()
566 snprintf(newname, namelen, "%s%s", ecp->prefix_sym, in generate_symbols()
575 ecp->symndx[i] = sy_buf->ngs; in generate_symbols()
577 ecp->symndx[i] = sy_buf->nls; in generate_symbols()
590 assert(ecp->secndx[sym.st_shndx] < (uint64_t)ecp->nos); in generate_symbols()
591 BIT_SET(ecp->v_secsym, ecp->secndx[sym.st_shndx]); in generate_symbols()
598 * check if that only local symbol is the reserved symbol. in generate_symbols()
600 if (sy_buf->nls <= 1 && sy_buf->ngs == 0) in generate_symbols()
608 TAILQ_FOREACH(s, &ecp->v_sec, sec_list) { in generate_symbols()
609 if (s->pseudo) in generate_symbols()
611 if (strcmp(s->name, ".symtab") == 0 || in generate_symbols()
612 strcmp(s->name, ".strtab") == 0 || in generate_symbols()
613 strcmp(s->name, ".shstrtab") == 0) in generate_symbols()
615 if ((ecp->flags & RELOCATABLE) != 0 && in generate_symbols()
616 ((s->type == SHT_REL) || (s->type == SHT_RELA))) in generate_symbols()
619 if ((ndx = elf_ndxscn(s->os)) == SHN_UNDEF) in generate_symbols()
621 elf_errmsg(-1)); in generate_symbols()
623 if (!BIT_ISSET(ecp->v_secsym, ndx)) { in generate_symbols()
625 sym.st_value = s->vma; in generate_symbols()
640 * global/weak symbols are put after local symbols. in generate_symbols()
649 sy_buf->g32[ecp->symndx[i]].st_name += in generate_symbols()
650 st_buf->l.sz; in generate_symbols()
652 sy_buf->g64[ecp->symndx[i]].st_name += in generate_symbols()
653 st_buf->l.sz; in generate_symbols()
656 ecp->symndx[i] += sy_buf->nls; in generate_symbols()
676 sy = ecp->symtab; in create_symtab()
677 st = ecp->strtab; in create_symtab()
690 TAILQ_FOREACH(s, &ecp->v_sec, sec_list) { in create_symtab()
691 if (s->os == NULL) in create_symtab()
693 if ((ndx = elf_ndxscn(s->os)) == SHN_UNDEF) in create_symtab()
695 elf_errmsg(-1)); in create_symtab()
699 ecp->secndx[elf_ndxscn(sy->is)] = maxndx + 1; in create_symtab()
700 ecp->secndx[elf_ndxscn(st->is)] = maxndx + 2; in create_symtab()
708 if (((ecp->flags & SYMTAB_INTACT) == 0) && !generate_symbols(ecp)) { in create_symtab()
709 TAILQ_REMOVE(&ecp->v_sec, ecp->symtab, sec_list); in create_symtab()
710 TAILQ_REMOVE(&ecp->v_sec, ecp->strtab, sec_list); in create_symtab()
711 free(ecp->symtab->buf); in create_symtab()
712 free(ecp->symtab); in create_symtab()
713 free(ecp->strtab->buf); in create_symtab()
714 free(ecp->strtab); in create_symtab()
715 ecp->symtab = NULL; in create_symtab()
716 ecp->strtab = NULL; in create_symtab()
717 ecp->flags &= ~SYMTAB_EXIST; in create_symtab()
722 if ((sy->os = elf_newscn(ecp->eout)) == NULL || in create_symtab()
723 (st->os = elf_newscn(ecp->eout)) == NULL) in create_symtab()
725 elf_errmsg(-1)); in create_symtab()
727 ecp->secndx[elf_ndxscn(sy->is)] = elf_ndxscn(sy->os); in create_symtab()
728 ecp->secndx[elf_ndxscn(st->is)] = elf_ndxscn(st->os); in create_symtab()
738 if (ecp->flags & SYMTAB_INTACT) { in create_symtab()
755 if (ecp->symtab != NULL && ecp->symtab->buf != NULL) { in free_symtab()
756 sy_buf = ecp->symtab->buf; in free_symtab()
757 if (sy_buf->l32 != NULL) in free_symtab()
758 free(sy_buf->l32); in free_symtab()
759 if (sy_buf->g32 != NULL) in free_symtab()
760 free(sy_buf->g32); in free_symtab()
761 if (sy_buf->l64 != NULL) in free_symtab()
762 free(sy_buf->l64); in free_symtab()
763 if (sy_buf->g64 != NULL) in free_symtab()
764 free(sy_buf->g64); in free_symtab()
767 if (ecp->strtab != NULL && ecp->strtab->buf != NULL) { in free_symtab()
768 st_buf = ecp->strtab->buf; in free_symtab()
769 if (st_buf->l.buf != NULL) in free_symtab()
770 free(st_buf->l.buf); in free_symtab()
771 if (st_buf->g.buf != NULL) in free_symtab()
772 free(st_buf->g.buf); in free_symtab()
774 LIST_FOREACH_SAFE(sh, &st_buf->l.hash[i], sh_next, in free_symtab()
779 LIST_FOREACH_SAFE(sh, &st_buf->g.hash[i], sh_next, in free_symtab()
787 if (ecp->symndx != NULL) { in free_symtab()
788 free(ecp->symndx); in free_symtab()
789 ecp->symndx = NULL; in free_symtab()
791 if (ecp->v_rel != NULL) { in free_symtab()
792 free(ecp->v_rel); in free_symtab()
793 ecp->v_rel = NULL; in free_symtab()
795 if (ecp->v_grp != NULL) { in free_symtab()
796 free(ecp->v_grp); in free_symtab()
797 ecp->v_grp = NULL; in free_symtab()
799 if (ecp->v_secsym != NULL) { in free_symtab()
800 free(ecp->v_secsym); in free_symtab()
801 ecp->v_secsym = NULL; in free_symtab()
814 if (ecp->oec == ELFCLASS32) in create_external_symtab()
815 ecp->symtab = create_external_section(ecp, ".symtab", NULL, in create_external_symtab()
818 ecp->symtab = create_external_section(ecp, ".symtab", NULL, in create_external_symtab()
821 ecp->strtab = create_external_section(ecp, ".strtab", NULL, NULL, 0, 0, in create_external_symtab()
825 if (gelf_getshdr(ecp->symtab->os, &sh) == NULL) in create_external_symtab()
827 elf_errmsg(-1)); in create_external_symtab()
828 sh.sh_link = elf_ndxscn(ecp->strtab->os); in create_external_symtab()
829 if (!gelf_update_shdr(ecp->symtab->os, &sh)) in create_external_symtab()
831 elf_errmsg(-1)); in create_external_symtab()
838 sy_buf->gcap = sy_buf->lcap = 64; in create_external_symtab()
839 st_buf->g.cap = 256; in create_external_symtab()
840 st_buf->l.cap = 64; in create_external_symtab()
841 st_buf->l.sz = 1; /* '\0' at start. */ in create_external_symtab()
842 st_buf->g.sz = 0; in create_external_symtab()
844 ecp->symtab->sz = 0; in create_external_symtab()
845 ecp->strtab->sz = 0; in create_external_symtab()
846 ecp->symtab->buf = sy_buf; in create_external_symtab()
847 ecp->strtab->buf = st_buf; in create_external_symtab()
854 TAILQ_FOREACH(s, &ecp->v_sec, sec_list) { in create_external_symtab()
855 if (s->pseudo) in create_external_symtab()
857 if (strcmp(s->name, ".symtab") == 0 || in create_external_symtab()
858 strcmp(s->name, ".strtab") == 0 || in create_external_symtab()
859 strcmp(s->name, ".shstrtab") == 0) in create_external_symtab()
862 if ((ndx = elf_ndxscn(s->os)) == SHN_UNDEF) { in create_external_symtab()
864 elf_errmsg(-1)); in create_external_symtab()
884 * Convenient macro for copying global/local 32/64 bit symbols in add_to_symtab()
887 * updating for symbols with non-special section index. in add_to_symtab()
890 #define _ST_NAME_EMPTY_g -1 in add_to_symtab()
892 if (sy_buf->B##SZ == NULL) { \ in add_to_symtab()
893 sy_buf->B##SZ = malloc(sy_buf->B##cap * \ in add_to_symtab()
895 if (sy_buf->B##SZ == NULL) \ in add_to_symtab()
897 } else if (sy_buf->n##B##s >= sy_buf->B##cap) { \ in add_to_symtab()
898 sy_buf->B##cap *= 2; \ in add_to_symtab()
899 sy_buf->B##SZ = realloc(sy_buf->B##SZ, sy_buf->B##cap * \ in add_to_symtab()
901 if (sy_buf->B##SZ == NULL) \ in add_to_symtab()
904 sy_buf->B##SZ[sy_buf->n##B##s].st_info = st_info; \ in add_to_symtab()
905 sy_buf->B##SZ[sy_buf->n##B##s].st_other = st_other; \ in add_to_symtab()
906 sy_buf->B##SZ[sy_buf->n##B##s].st_value = st_value; \ in add_to_symtab()
907 sy_buf->B##SZ[sy_buf->n##B##s].st_size = st_size; \ in add_to_symtab()
909 sy_buf->B##SZ[sy_buf->n##B##s].st_shndx = st_shndx; \ in add_to_symtab()
911 sy_buf->B##SZ[sy_buf->n##B##s].st_shndx = st_shndx; \ in add_to_symtab()
913 sy_buf->B##SZ[sy_buf->n##B##s].st_shndx = \ in add_to_symtab()
914 ecp->secndx[st_shndx]; \ in add_to_symtab()
915 if (st_buf->B.buf == NULL) { \ in add_to_symtab()
916 st_buf->B.buf = calloc(st_buf->B.cap, \ in add_to_symtab()
917 sizeof(*st_buf->B.buf)); \ in add_to_symtab()
918 if (st_buf->B.buf == NULL) \ in add_to_symtab()
922 pos = lookup_exact_string(st_buf->B.hash, st_buf->B.buf,\ in add_to_symtab()
924 if (pos != -1) \ in add_to_symtab()
925 sy_buf->B##SZ[sy_buf->n##B##s].st_name = pos; \ in add_to_symtab()
927 sy_buf->B##SZ[sy_buf->n##B##s].st_name = \ in add_to_symtab()
928 st_buf->B.sz; \ in add_to_symtab()
929 while (st_buf->B.sz + strlen(name) >= \ in add_to_symtab()
930 st_buf->B.cap - 1) { \ in add_to_symtab()
931 st_buf->B.cap *= 2; \ in add_to_symtab()
932 st_buf->B.buf = realloc(st_buf->B.buf, \ in add_to_symtab()
933 st_buf->B.cap); \ in add_to_symtab()
934 if (st_buf->B.buf == NULL) \ in add_to_symtab()
940 sh->sh_off = st_buf->B.sz; \ in add_to_symtab()
942 LIST_INSERT_HEAD(&st_buf->B.hash[hash], sh, \ in add_to_symtab()
944 strncpy(&st_buf->B.buf[st_buf->B.sz], name, \ in add_to_symtab()
946 st_buf->B.buf[st_buf->B.sz + strlen(name)] = '\0'; \ in add_to_symtab()
947 st_buf->B.sz += strlen(name) + 1; \ in add_to_symtab()
950 sy_buf->B##SZ[sy_buf->n##B##s].st_name = \ in add_to_symtab()
952 sy_buf->n##B##s++; \ in add_to_symtab()
955 sy_buf = ecp->symtab->buf; in add_to_symtab()
956 st_buf = ecp->strtab->buf; in add_to_symtab()
958 if (ecp->oec == ELFCLASS32) { in add_to_symtab()
970 /* Update section size. */ in add_to_symtab()
971 ecp->symtab->sz = (sy_buf->nls + sy_buf->ngs) * in add_to_symtab()
972 (ecp->oec == ELFCLASS32 ? sizeof(Elf32_Sym) : sizeof(Elf64_Sym)); in add_to_symtab()
973 ecp->strtab->sz = st_buf->l.sz + st_buf->g.sz; in add_to_symtab()
989 * are put after local symbols) in finalize_external_symtab()
991 sy_buf = ecp->symtab->buf; in finalize_external_symtab()
992 st_buf = ecp->strtab->buf; in finalize_external_symtab()
993 for (i = 0; (size_t) i < sy_buf->ngs; i++) { in finalize_external_symtab()
994 if (ecp->oec == ELFCLASS32) { in finalize_external_symtab()
995 if (sy_buf->g32[i].st_name == (Elf32_Word)-1) in finalize_external_symtab()
996 sy_buf->g32[i].st_name = 0; in finalize_external_symtab()
998 sy_buf->g32[i].st_name += st_buf->l.sz; in finalize_external_symtab()
1000 if (sy_buf->g64[i].st_name == (Elf64_Word)-1) in finalize_external_symtab()
1001 sy_buf->g64[i].st_name = 0; in finalize_external_symtab()
1003 sy_buf->g64[i].st_name += st_buf->l.sz; in finalize_external_symtab()
1017 sy = ecp->symtab; in create_symtab_data()
1018 st = ecp->strtab; in create_symtab_data()
1020 if (gelf_getshdr(sy->os, &shy) == NULL) in create_symtab_data()
1022 elf_errmsg(-1)); in create_symtab_data()
1023 if (gelf_getshdr(st->os, &sht) == NULL) in create_symtab_data()
1025 elf_errmsg(-1)); in create_symtab_data()
1029 * for local symbols and another for global symbols. Note that in create_symtab_data()
1030 * local symbols appear first in the .symtab. in create_symtab_data()
1032 sy_buf = sy->buf; in create_symtab_data()
1033 if (sy_buf->nls > 0) { in create_symtab_data()
1034 if ((lsydata = elf_newdata(sy->os)) == NULL) in create_symtab_data()
1036 elf_errmsg(-1)); in create_symtab_data()
1037 if (ecp->oec == ELFCLASS32) { in create_symtab_data()
1038 lsydata->d_align = 4; in create_symtab_data()
1039 lsydata->d_off = 0; in create_symtab_data()
1040 lsydata->d_buf = sy_buf->l32; in create_symtab_data()
1041 lsydata->d_size = sy_buf->nls * in create_symtab_data()
1043 lsydata->d_type = ELF_T_SYM; in create_symtab_data()
1044 lsydata->d_version = EV_CURRENT; in create_symtab_data()
1046 lsydata->d_align = 8; in create_symtab_data()
1047 lsydata->d_off = 0; in create_symtab_data()
1048 lsydata->d_buf = sy_buf->l64; in create_symtab_data()
1049 lsydata->d_size = sy_buf->nls * in create_symtab_data()
1051 lsydata->d_type = ELF_T_SYM; in create_symtab_data()
1052 lsydata->d_version = EV_CURRENT; in create_symtab_data()
1055 if (sy_buf->ngs > 0) { in create_symtab_data()
1056 if ((gsydata = elf_newdata(sy->os)) == NULL) in create_symtab_data()
1058 elf_errmsg(-1)); in create_symtab_data()
1059 if (ecp->oec == ELFCLASS32) { in create_symtab_data()
1060 gsydata->d_align = 4; in create_symtab_data()
1061 gsydata->d_off = sy_buf->nls * in create_symtab_data()
1063 gsydata->d_buf = sy_buf->g32; in create_symtab_data()
1064 gsydata->d_size = sy_buf->ngs * in create_symtab_data()
1066 gsydata->d_type = ELF_T_SYM; in create_symtab_data()
1067 gsydata->d_version = EV_CURRENT; in create_symtab_data()
1069 gsydata->d_align = 8; in create_symtab_data()
1070 gsydata->d_off = sy_buf->nls * in create_symtab_data()
1072 gsydata->d_buf = sy_buf->g64; in create_symtab_data()
1073 gsydata->d_size = sy_buf->ngs * in create_symtab_data()
1075 gsydata->d_type = ELF_T_SYM; in create_symtab_data()
1076 gsydata->d_version = EV_CURRENT; in create_symtab_data()
1081 * Create two Elf_Data for .strtab, one for local symbol name in create_symtab_data()
1082 * and another for globals. Same as .symtab, local symbol names in create_symtab_data()
1085 st_buf = st->buf; in create_symtab_data()
1086 if ((lstdata = elf_newdata(st->os)) == NULL) in create_symtab_data()
1088 elf_errmsg(-1)); in create_symtab_data()
1089 lstdata->d_align = 1; in create_symtab_data()
1090 lstdata->d_off = 0; in create_symtab_data()
1091 lstdata->d_buf = st_buf->l.buf; in create_symtab_data()
1092 lstdata->d_size = st_buf->l.sz; in create_symtab_data()
1093 lstdata->d_type = ELF_T_BYTE; in create_symtab_data()
1094 lstdata->d_version = EV_CURRENT; in create_symtab_data()
1096 if (st_buf->g.sz > 0) { in create_symtab_data()
1097 if ((gstdata = elf_newdata(st->os)) == NULL) in create_symtab_data()
1099 elf_errmsg(-1)); in create_symtab_data()
1100 gstdata->d_align = 1; in create_symtab_data()
1101 gstdata->d_off = lstdata->d_size; in create_symtab_data()
1102 gstdata->d_buf = st_buf->g.buf; in create_symtab_data()
1103 gstdata->d_size = st_buf->g.sz; in create_symtab_data()
1104 gstdata->d_type = ELF_T_BYTE; in create_symtab_data()
1105 gstdata->d_version = EV_CURRENT; in create_symtab_data()
1109 shy.sh_addralign = (ecp->oec == ELFCLASS32 ? 4 : 8); in create_symtab_data()
1110 shy.sh_size = sy->sz; in create_symtab_data()
1113 shy.sh_entsize = gelf_fsize(ecp->eout, ELF_T_SYM, 1, in create_symtab_data()
1117 * the symbol table index of the last local symbol(binding in create_symtab_data()
1120 shy.sh_info = sy_buf->nls; in create_symtab_data()
1124 sht.sh_size = st->sz; in create_symtab_data()
1131 if (!gelf_update_shdr(sy->os, &shy)) in create_symtab_data()
1133 elf_errmsg(-1)); in create_symtab_data()
1134 if (!gelf_update_shdr(st->os, &sht)) in create_symtab_data()
1136 elf_errmsg(-1)); in create_symtab_data()
1146 STAILQ_FOREACH(s, &ecp->v_symop, symop_list) in add_to_symop_list()
1147 if (!strcmp(name, s->name)) in add_to_symop_list()
1152 STAILQ_INSERT_TAIL(&ecp->v_symop, s, symop_list); in add_to_symop_list()
1153 s->name = name; in add_to_symop_list()
1156 s->newname = newname; in add_to_symop_list()
1157 s->op |= op; in add_to_symop_list()
1166 STAILQ_FOREACH(s, &ecp->v_symop, symop_list) { in lookup_symop_list()
1167 if ((s->op & op) == 0) in lookup_symop_list()
1169 if (name == NULL || !strcmp(name, s->name)) in lookup_symop_list()
1171 if ((ecp->flags & WILDCARD) == 0) in lookup_symop_list()
1175 pattern = s->name; in lookup_symop_list()
1199 if (strcmp(buf + sh->sh_off, s) == 0) in lookup_exact_string()
1200 return sh->sh_off; in lookup_exact_string()
1201 return (-1); in lookup_exact_string()
1212 return (hash & (STHASHSIZE - 1)); in str_hash()