Lines Matching defs:sym1

441 static bool maybe_same_file(struct symbol *sym1, struct symbol *sym2)
443 if (!sym1->file || !sym2->file)
445 if (sym1->file == sym2->file)
447 return sym1->file->twin == sym2->file;
456 static bool same_file(struct symbol *sym1, struct symbol *sym2)
458 if (llvm_suffix(sym1->name) && llvm_suffix(sym2->name))
460 if (!sym1->file && !sym2->file)
462 if (!sym1->file || !sym2->file)
464 if (sym1->file == sym2->file)
466 return sym1->file->twin == sym2->file;
479 * Try to find sym1's twin in patched using deterministic matching.
515 static struct symbol *find_twin(struct elfs *e, struct symbol *sym1)
526 for_each_sym_by_demangled_name(e->orig, sym1->demangled_name, sym2) {
527 if (sym2->twin || sym1->type != sym2->type || sym2->dont_correlate ||
528 (!maybe_same_file(sym1, sym2)))
535 if (is_tu_local_sym(sym1) != is_tu_local_sym(sym2))
540 if (!same_file(sym1, sym2))
545 if (sym1->len != sym2->len || !sym1->csum.checksum ||
546 sym1->csum.checksum != sym2->csum.checksum)
552 for_each_sym_by_demangled_name(e->patched, sym1->demangled_name, sym2) {
553 if (sym2->twin || sym1->type != sym2->type || sym2->dont_correlate ||
554 !maybe_same_file(sym1, sym2))
562 if (is_tu_local_sym(sym1) != is_tu_local_sym(sym2))
568 if (!same_file(sym1, sym2))
574 if (sym1->len != sym2->len || !sym1->csum.checksum ||
575 sym1->csum.checksum != sym2->csum.checksum)
596 sym1->name, is_func_sym(sym1) ? "()" : "",
670 static struct symbol *find_twin_suffixed(struct elf *elf, struct symbol *sym1)
678 suffix = llvm_suffix(sym1->name);
692 sym1->demangled_name, patched_suffix))
696 if (sym2->twin || sym1->type != sym2->type || sym2->dont_correlate)
706 sym1->name, is_func_sym(sym1) ? "()" : "",
729 static struct symbol *find_twin_positional(struct elfs *e, struct symbol *sym1)
735 for_each_sym_by_demangled_name(e->orig, sym1->demangled_name, sym2) {
736 if (sym2->twin || sym1->type != sym2->type || sym2->dont_correlate ||
737 !maybe_same_file(sym1, sym2))
739 if (is_tu_local_sym(sym1) != is_tu_local_sym(sym2) ||
740 is_llvm_sym(sym1) != is_llvm_sym(sym2))
742 if (sym1 == sym2)
747 for_each_sym_by_demangled_name(e->patched, sym1->demangled_name, sym2) {
748 if (sym2->twin || sym1->type != sym2->type || sym2->dont_correlate ||
749 !maybe_same_file(sym1, sym2))
751 if (is_tu_local_sym(sym1) != is_tu_local_sym(sym2) ||
752 is_llvm_sym(sym1) != is_llvm_sym(sym2))
763 sym1->name, is_func_sym(sym1) ? "()" : "",
777 struct symbol *sym1, *sym2;
780 for_each_sym(e->orig, sym1)
781 sym1->dont_correlate = dont_correlate(sym1);
824 for_each_sym(e->orig, sym1) {
825 if (sym1->twin || sym1->dont_correlate)
827 sym2 = find_twin(e, sym1);
830 sym1->twin = sym2;
831 sym2->twin = sym1;
838 for_each_sym(e->orig, sym1) {
839 if (sym1->twin || sym1->dont_correlate)
841 sym2 = find_twin_suffixed(e->patched, sym1);
844 sym1->twin = sym2;
845 sym2->twin = sym1;
850 for_each_sym(e->orig, sym1) {
851 if (sym1->twin || sym1->dont_correlate)
853 sym2 = find_twin_positional(e, sym1);
856 sym1->twin = sym2;
857 sym2->twin = sym1;
860 for_each_sym(e->orig, sym1) {
861 if (sym1->twin || sym1->dont_correlate)
863 WARN("no correlation: %s", sym1->name);