Lines Matching defs:verinfo

508 UT_STATIC int check_verinfo(Verdef *def, int16_t *versym, uint32_t index, struct verinfo *verinfo, char *strings)
510 /* if the versym and verinfo is null , then not need version. */
512 if (strlen(verinfo->v) == 0) {
515 LD_LOGD("check_verinfo versym or def is null and verinfo->v exist, s:%{public}s v:%{public}s.",
516 verinfo->s, verinfo->v);
524 if (verinfo->use_vna_hash) {
526 return check_vna_hash(def, vsym, verinfo->vna_hash);
531 if (strlen(verinfo->v) == 0) {
535 LD_LOGD("check_verinfo not default version. vsym:%{public}d s:%{public}s", vsym, verinfo->s);
554 int ret = !strcmp(verinfo->v, strings + aux->vda_name);
558 verinfo->s, verinfo->v, vsym, strings + aux->vda_name);
590 static Sym *sysv_lookup(struct verinfo *verinfo, struct sym_info_pair s_info_p, struct dso *dso)
599 && (!memcmp(verinfo->s, strings+syms[i].st_name, s_info_p.sym_l))) {
600 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);
614 static Sym *gnu_lookup(struct sym_info_pair s_info_p, uint32_t *hashtab, struct dso *dso, struct verinfo *verinfo)
622 LD_LOGD("gnu_lookup symbol not found (bloom filter), so:%{public}s s:%{public}s", dso->name, verinfo->s);
631 && !memcmp(verinfo->s, dso->strings + dso->syms[i].st_name, s_info_p.sym_l)) {
632 if (!check_verinfo(dso->verdef, dso->versym, i, verinfo, dso->strings)) {
644 dso->name, verinfo->s, verinfo->v, verinfo->use_vna_hash, verinfo->vna_hash);
810 struct dso *dso, struct verinfo *verinfo, struct sym_info_pair s_info_g, int need_def, ns_t *ns)
832 sym = gnu_lookup(s_info_g, ght, dso, verinfo);
835 s_info_s = sysv_hash(verinfo->s);
837 sym = sysv_lookup(verinfo, s_info_s, dso);
862 static inline struct symdef find_sym2(struct dso *dso, struct verinfo *verinfo, int need_def, int use_deps, ns_t *ns)
864 struct sym_info_pair s_info_g = gnu_hash(verinfo->s);
878 sym = gnu_lookup(s_info_g, ght, dso, verinfo);
880 if (!s_info_s.sym_h) s_info_s = sysv_hash(verinfo->s);
881 sym = sysv_lookup(verinfo, s_info_s, dso);
901 static inline struct symdef find_sym_by_deps(struct dso *dso, struct verinfo *verinfo, int need_def, ns_t *ns)
903 struct sym_info_pair s_info_g = gnu_hash(verinfo->s);
916 sym = gnu_lookup(s_info_g, ght, dso, verinfo);
918 if (!s_info_s.sym_h) s_info_s = sysv_hash(verinfo->s);
919 sym = sysv_lookup(verinfo, s_info_s, dso);
940 int sym_type, struct dso *dso, struct verinfo *verinfo, int need_def, struct dso *dso_relocating)
942 struct sym_info_pair s_info_g = gnu_hash(verinfo->s);
955 sym = gnu_lookup(s_info_g, ght, dso_searching, verinfo);
957 if (!s_info_s.sym_h) s_info_s = sysv_hash(verinfo->s);
958 sym = sysv_lookup(verinfo, s_info_s, dso_searching);
979 struct verinfo verinfo = { .s = s, .v = "", .use_vna_hash = false };
980 return find_sym2(dso, &verinfo, need_def, 0, NULL);
1025 static void get_verinfo(struct dso *dso, int sym_index, struct verinfo *vinfo)
1107 struct verinfo vinfo = { .s = name, .v = ""};
4149 struct verinfo verinfo = { .s = s, .v = v, .use_vna_hash = false };
4150 struct symdef def = use_deps ? find_sym_by_deps(p, &verinfo, 0, ns) :
4151 find_sym2(p, &verinfo, 0, use_deps, ns);