Lines Matching refs:sym

32 	char *mod, *sym;  member
108 char *sym, *mod, *type; in read_exports() local
111 sym = strchr(line, '\t'); in read_exports()
112 if (!sym) { in read_exports()
117 *sym++ = '\0'; in read_exports()
119 mod = strchr(sym, '\t'); in read_exports()
135 if (*sym == '\0' || *mod == '\0') { in read_exports()
152 export->sym = strdup(sym); in read_exports()
153 if (!export->sym) { in read_exports()
158 hash_add(exports, &export->hash, str_hash(sym)); in read_exports()
191 struct symbol *sym; in read_sym_checksums() local
201 sym = reloc->sym; in read_sym_checksums()
203 if (is_sec_sym(sym)) { in read_sym_checksums()
204 ERROR("not sure how to handle section %s", sym->name); in read_sym_checksums()
208 if (is_func_sym(sym)) in read_sym_checksums()
209 sym->csum.checksum = sym_checksum->checksum; in read_sym_checksums()
217 struct symbol *sym; in first_file_symbol() local
219 for_each_sym(elf, sym) { in first_file_symbol()
220 if (is_file_sym(sym)) in first_file_symbol()
221 return sym; in first_file_symbol()
227 static struct symbol *next_file_symbol(struct elf *elf, struct symbol *sym) in next_file_symbol() argument
229 for_each_sym_continue(elf, sym) { in next_file_symbol()
230 if (is_file_sym(sym)) in next_file_symbol()
231 return sym; in next_file_symbol()
241 static bool is_uncorrelated_static_local(struct symbol *sym) in is_uncorrelated_static_local() argument
255 if (!is_object_sym(sym) || !is_local_sym(sym)) in is_uncorrelated_static_local()
258 if (!strcmp(sym->sec->name, ".data.once")) in is_uncorrelated_static_local()
262 if (strstarts(sym->name, vars[i])) in is_uncorrelated_static_local()
272 static bool is_clang_tmp_label(struct symbol *sym) in is_clang_tmp_label() argument
274 return sym->type == STT_NOTYPE && in is_clang_tmp_label()
275 is_text_sec(sym->sec) && in is_clang_tmp_label()
276 strstarts(sym->name, ".Ltmp") && in is_clang_tmp_label()
277 isdigit(sym->name[5]); in is_clang_tmp_label()
344 static bool dont_correlate(struct symbol *sym) in dont_correlate() argument
346 return is_file_sym(sym) || in dont_correlate()
347 is_null_sym(sym) || in dont_correlate()
348 is_sec_sym(sym) || in dont_correlate()
349 is_prefix_func(sym) || in dont_correlate()
350 is_uncorrelated_static_local(sym) || in dont_correlate()
351 is_clang_tmp_label(sym) || in dont_correlate()
352 is_string_sec(sym->sec) || in dont_correlate()
353 is_special_section(sym->sec) || in dont_correlate()
354 is_special_section_aux(sym->sec) || in dont_correlate()
355 strstarts(sym->name, "__initcall__"); in dont_correlate()
473 static unsigned long find_sympos(struct elf *elf, struct symbol *sym) in find_sympos() argument
480 if (sym->bind != STB_LOCAL) in find_sympos()
483 if (vmlinux && sym->type == STT_FUNC) { in find_sympos()
493 !strcmp(s->name, sym->name)) { in find_sympos()
495 if (s == sym) in find_sympos()
503 !strcmp(s->name, sym->name)) { in find_sympos()
505 if (s == sym) in find_sympos()
513 if (!strcmp(s->name, sym->name)) { in find_sympos()
515 if (s == sym) in find_sympos()
524 ERROR("can't find sympos for %s", sym->name); in find_sympos()
596 static const char *sym_type(struct symbol *sym) in sym_type() argument
598 switch (sym->type) { in sym_type()
608 static const char *sym_bind(struct symbol *sym) in sym_bind() argument
610 switch (sym->bind) { in sym_bind()
756 return section_reference_needed(reloc->sym->sec) == is_sec_sym(reloc->sym); in is_reloc_allowed()
759 static struct export *find_export(struct symbol *sym) in find_export() argument
763 hash_for_each_possible(exports, export, hash, str_hash(sym->name)) { in find_export()
764 if (!strcmp(export->sym, sym->name)) in find_export()
828 struct symbol *patched_sym = patched_reloc->sym; in klp_reloc_needed()
869 struct symbol *sym = reloc->sym; in convert_reloc_sym_to_secsym() local
870 struct section *sec = sym->sec; in convert_reloc_sym_to_secsym()
872 if (!sec->sym && !elf_create_section_symbol(elf, sec)) in convert_reloc_sym_to_secsym()
875 reloc->sym = sec->sym; in convert_reloc_sym_to_secsym()
876 set_reloc_sym(elf, reloc, sym->idx); in convert_reloc_sym_to_secsym()
877 set_reloc_addend(elf, reloc, sym->offset + reloc_addend(reloc)); in convert_reloc_sym_to_secsym()
883 struct symbol *sym = reloc->sym; in convert_reloc_secsym_to_sym() local
884 struct section *sec = sym->sec; in convert_reloc_secsym_to_sym()
887 sym = find_symbol_by_offset(sec, 0); in convert_reloc_secsym_to_sym()
888 if (sym && sym->len == sec_size(sec)) in convert_reloc_secsym_to_sym()
892 sym = find_symbol_containing(sec, arch_adjusted_addend(reloc)); in convert_reloc_secsym_to_sym()
893 if (!sym) { in convert_reloc_secsym_to_sym()
902 reloc->sym = sym; in convert_reloc_secsym_to_sym()
903 set_reloc_sym(elf, reloc, sym->idx); in convert_reloc_secsym_to_sym()
904 set_reloc_addend(elf, reloc, reloc_addend(reloc) - sym->offset); in convert_reloc_secsym_to_sym()
917 if (section_reference_needed(reloc->sym->sec)) in convert_reloc_sym()
930 struct symbol *patched_sym = patched_reloc->sym; in clone_reloc_klp()
934 struct symbol *sym, *klp_sym; in clone_reloc_klp() local
953 sym = patched_sym->clone; in clone_reloc_klp()
954 if (!sym) { in clone_reloc_klp()
956 sym = elf_create_symbol(e->out, patched_sym->name, NULL, in clone_reloc_klp()
958 if (!sym) in clone_reloc_klp()
961 patched_sym->clone = sym; in clone_reloc_klp()
962 sym->clone = patched_sym; in clone_reloc_klp()
965 if (!elf_create_reloc(e->out, sec, offset, sym, addend, reloc_type(patched_reloc))) in clone_reloc_klp()
974 sym_orig_name = export->sym; in clone_reloc_klp()
1027 if (!sec->sym && !elf_create_section_symbol(e->out, sec)) in clone_reloc_klp()
1032 sec->sym, offset, R_ABS64)) in clone_reloc_klp()
1037 klp_reloc_off + offsetof(struct klp_reloc, sym), in clone_reloc_klp()
1059 struct symbol *patched_sym = patched_reloc->sym; in clone_reloc()
1163 if (patched_reloc->sym->sec && in clone_sym_relocs()
1164 !strcmp(patched_reloc->sym->sec->name, ".altinstr_aux")) in clone_sym_relocs()
1170 patched_reloc->sym->name); in clone_sym_relocs()
1264 next_reloc->sym->sec != reloc->sym->sec) in create_fake_symbols()
1272 size = sec_size(reloc->sym->sec) - offset; in create_fake_symbols()
1274 if (create_fake_symbol(elf, reloc->sym->sec, offset, size)) in create_fake_symbols()
1313 static bool should_keep_special_sym(struct elf *elf, struct symbol *sym) in should_keep_special_sym() argument
1317 if (is_sec_sym(sym) || !sym->sec->rsec) in should_keep_special_sym()
1320 sym_for_each_reloc(elf, sym, reloc) { in should_keep_special_sym()
1324 if (is_func_sym(reloc->sym) && reloc->sym->included) in should_keep_special_sym()
1351 static int validate_special_section_klp_reloc(struct elfs *e, struct symbol *sym) in validate_special_section_klp_reloc() argument
1353 bool static_branch = !strcmp(sym->sec->name, "__jump_table"); in validate_special_section_klp_reloc()
1354 bool static_call = !strcmp(sym->sec->name, ".static_call_sites"); in validate_special_section_klp_reloc()
1363 sym_for_each_reloc(e->patched, sym, reloc) { in validate_special_section_klp_reloc()
1368 if (reloc->sym->type != STT_OBJECT) { in validate_special_section_klp_reloc()
1371 if (reloc->sym->type == STT_FUNC && !code_sym) { in validate_special_section_klp_reloc()
1372 code_sym = reloc->sym; in validate_special_section_klp_reloc()
1382 export = find_export(reloc->sym); in validate_special_section_klp_reloc()
1396 if (strstarts(reloc->sym->name, "__tracepoint_")) { in validate_special_section_klp_reloc()
1398 code_sym->name, reloc->sym->name + 13); in validate_special_section_klp_reloc()
1404 code_sym->name, code_offset, reloc->sym->name); in validate_special_section_klp_reloc()
1409 if (strstarts(reloc->sym->name, "__SCK__tp_func_")) { in validate_special_section_klp_reloc()
1415 code_sym->name, code_offset, reloc->sym->name); in validate_special_section_klp_reloc()
1477 struct symbol *funcs_sym, *str_sym, *sym; in create_klp_sections() local
1535 for_each_sym(e->out, sym) { in create_klp_sections()
1540 if (!is_func_sym(sym) || sym->cold || !sym->clone || !sym->clone->changed) in create_klp_sections()
1549 addend = elf_add_string(e->out, str_sec, sym->clone->twin->name); in create_klp_sections()
1561 sym, 0, R_ABS64)) in create_klp_sections()
1566 sympos = find_sympos(e->orig, sym->clone->twin); in create_klp_sections()
1588 sym = find_symbol_by_name(e->out, sym_name); in create_klp_sections()
1589 if (sym) { in create_klp_sections()
1592 reloc = find_reloc_by_dest(e->out, sym->sec, sym->offset); in create_klp_sections()
1597 reloc->sym, reloc_addend(reloc), R_ABS64)) in create_klp_sections()
1604 sym = find_symbol_by_name(e->out, sym_name); in create_klp_sections()
1605 if (sym) { in create_klp_sections()
1608 reloc = find_reloc_by_dest(e->out, sym->sec, sym->offset); in create_klp_sections()
1613 reloc->sym, reloc_addend(reloc), R_ABS64)) in create_klp_sections()
1620 sym = find_symbol_by_name(e->out, sym_name); in create_klp_sections()
1621 if (sym) { in create_klp_sections()
1624 reloc = find_reloc_by_dest(e->out, sym->sec, sym->offset); in create_klp_sections()
1629 reloc->sym, reloc_addend(reloc), R_ABS64)) in create_klp_sections()
1636 sym = find_symbol_by_name(e->out, sym_name); in create_klp_sections()
1637 if (sym) { in create_klp_sections()
1640 reloc = find_reloc_by_dest(e->out, sym->sec, sym->offset); in create_klp_sections()
1645 reloc->sym, reloc_addend(reloc), R_ABS64)) in create_klp_sections()