Lines Matching defs:verinfo
474 UT_STATIC int check_verinfo(Verdef *def, int16_t *versym, uint32_t index, struct verinfo *verinfo, char *strings)
476 /* if the versym and verinfo is null , then not need version. */
478 if (strlen(verinfo->v) == 0) {
481 LD_LOGD("check_verinfo versym or def is null and verinfo->v exist, s:%{public}s v:%{public}s.",
482 verinfo->s, verinfo->v);
490 if (verinfo->use_vna_hash) {
492 return check_vna_hash(def, vsym, verinfo->vna_hash);
497 if (strlen(verinfo->v) == 0) {
501 LD_LOGD("check_verinfo not default version. vsym:%{public}d s:%{public}s", vsym, verinfo->s);
520 int ret = !strcmp(verinfo->v, strings + aux->vda_name);
524 verinfo->s, verinfo->v, vsym, strings + aux->vda_name);
556 static Sym *sysv_lookup(struct verinfo *verinfo, struct sym_info_pair s_info_p, struct dso *dso)
565 && (!memcmp(verinfo->s, strings+syms[i].st_name, s_info_p.sym_l))) {
566 if (!check_verinfo(dso->verdef, dso->versym, i, verinfo, dso->strings)) {
576 dso->name, verinfo->s, verinfo->v, verinfo->use_vna_hash, verinfo->vna_hash);
580 static Sym *gnu_lookup(struct sym_info_pair s_info_p, uint32_t *hashtab, struct dso *dso, struct verinfo *verinfo)
588 LD_LOGD("gnu_lookup symbol not found (bloom filter), so:%{public}s s:%{public}s", dso->name, verinfo->s);
597 && !memcmp(verinfo->s, dso->strings + dso->syms[i].st_name, s_info_p.sym_l)) {
598 if (!check_verinfo(dso->verdef, dso->versym, i, verinfo, dso->strings)) {
610 dso->name, verinfo->s, verinfo->v, verinfo->use_vna_hash, verinfo->vna_hash);
776 struct dso *dso, struct verinfo *verinfo, struct sym_info_pair s_info_g, int need_def, ns_t *ns)
798 sym = gnu_lookup(s_info_g, ght, dso, verinfo);
801 s_info_s = sysv_hash(verinfo->s);
803 sym = sysv_lookup(verinfo, s_info_s, dso);
828 static inline struct symdef find_sym2(struct dso *dso, struct verinfo *verinfo, int need_def, int use_deps, ns_t *ns)
830 struct sym_info_pair s_info_g = gnu_hash(verinfo->s);
843 sym = gnu_lookup(s_info_g, ght, dso, verinfo);
845 if (!s_info_s.sym_h) s_info_s = sysv_hash(verinfo->s);
846 sym = sysv_lookup(verinfo, s_info_s, dso);
866 static inline struct symdef find_sym_by_deps(struct dso *dso, struct verinfo *verinfo, int need_def, ns_t *ns)
868 struct sym_info_pair s_info_g = gnu_hash(verinfo->s);
881 sym = gnu_lookup(s_info_g, ght, dso, verinfo);
883 if (!s_info_s.sym_h) s_info_s = sysv_hash(verinfo->s);
884 sym = sysv_lookup(verinfo, s_info_s, dso);
905 int sym_type, struct dso *dso, struct verinfo *verinfo, int need_def, struct dso *dso_relocating)
907 struct sym_info_pair s_info_g = gnu_hash(verinfo->s);
920 sym = gnu_lookup(s_info_g, ght, dso_searching, verinfo);
922 if (!s_info_s.sym_h) s_info_s = sysv_hash(verinfo->s);
923 sym = sysv_lookup(verinfo, s_info_s, dso_searching);
944 struct verinfo verinfo = { .s = s, .v = "", .use_vna_hash = false };
945 return find_sym2(dso, &verinfo, need_def, 0, NULL);
990 static void get_verinfo(struct dso *dso, int sym_index, struct verinfo *vinfo)
1072 struct verinfo vinfo = { .s = name, .v = ""};
3832 struct verinfo verinfo = { .s = s, .v = v, .use_vna_hash = false };
3833 struct symdef def = use_deps ? find_sym_by_deps(p, &verinfo, 0, ns) :
3834 find_sym2(p, &verinfo, 0, use_deps, ns);