Lines Matching refs:sym

251 static void hash_add_symbol(struct symbol *sym)  in hash_add_symbol()  argument
255 hash = tdb_hash(sym->name) % SYMBOL_HASH_SIZE; in hash_add_symbol()
256 sym->next = symbolhash[hash]; in hash_add_symbol()
257 symbolhash[hash] = sym; in hash_add_symbol()
262 struct symbol *sym; in sym_add_unresolved() local
264 sym = alloc_symbol(name); in sym_add_unresolved()
265 sym->weak = weak; in sym_add_unresolved()
267 list_add_tail(&sym->list, &mod->unresolved_symbols); in sym_add_unresolved()
327 void *sym_get_data(const struct elf_info *info, const Elf_Sym *sym) in sym_get_data() argument
329 return sym_get_data_by_offset(info, get_secindex(info, sym), in sym_get_data()
330 sym->st_value); in sym_get_data()
392 static void sym_set_crc(struct symbol *sym, unsigned int crc) in sym_set_crc() argument
394 sym->crc = crc; in sym_set_crc()
395 sym->crc_valid = true; in sym_set_crc()
430 Elf_Sym *sym; in parse_elf() local
561 for (sym = info->symtab_start; sym < info->symtab_stop; sym++) { in parse_elf()
562 sym->st_shndx = TO_NATIVE(sym->st_shndx); in parse_elf()
563 sym->st_name = TO_NATIVE(sym->st_name); in parse_elf()
564 sym->st_value = TO_NATIVE(sym->st_value); in parse_elf()
565 sym->st_size = TO_NATIVE(sym->st_size); in parse_elf()
623 const Elf_Sym *sym, const char *symname) in handle_symbol() argument
625 switch (sym->st_shndx) { in handle_symbol()
634 if (ELF_ST_BIND(sym->st_info) != STB_GLOBAL && in handle_symbol()
635 ELF_ST_BIND(sym->st_info) != STB_WEAK) in handle_symbol()
642 if (ELF_ST_TYPE(sym->st_info) == STT_SPARC_REGISTER) in handle_symbol()
653 ELF_ST_BIND(sym->st_info) == STB_WEAK); in handle_symbol()
661 secname = sec_name(info, get_secindex(info, sym)); in handle_symbol()
723 static const char *sym_name(struct elf_info *elf, Elf_Sym *sym) in sym_name() argument
725 if (sym) in sym_name()
726 return elf->strtab + sym->st_name; in sym_name()
896 Elf_Rela *r, Elf_Sym *sym, const char *fromsec);
902 Elf_Rela *r, Elf_Sym *sym,
1132 static inline int is_valid_name(struct elf_info *elf, Elf_Sym *sym) in is_valid_name() argument
1134 const char *name = elf->strtab + sym->st_name; in is_valid_name()
1151 Elf_Sym *sym; in find_elf_symbol() local
1161 for (sym = elf->symtab_start; sym < elf->symtab_stop; sym++) { in find_elf_symbol()
1162 if (get_secindex(elf, sym) != relsym_secindex) in find_elf_symbol()
1164 if (ELF_ST_TYPE(sym->st_info) == STT_SECTION) in find_elf_symbol()
1166 if (!is_valid_name(elf, sym)) in find_elf_symbol()
1168 if (sym->st_value == addr) in find_elf_symbol()
1169 return sym; in find_elf_symbol()
1171 d = sym->st_value - addr; in find_elf_symbol()
1173 d = addr - sym->st_value; in find_elf_symbol()
1176 near = sym; in find_elf_symbol()
1195 Elf_Sym *sym; in find_elf_symbol2() local
1199 for (sym = elf->symtab_start; sym < elf->symtab_stop; sym++) { in find_elf_symbol2()
1202 if (is_shndx_special(sym->st_shndx)) in find_elf_symbol2()
1204 symsec = sec_name(elf, get_secindex(elf, sym)); in find_elf_symbol2()
1207 if (!is_valid_name(elf, sym)) in find_elf_symbol2()
1209 if (sym->st_value <= addr && addr - sym->st_value <= distance) { in find_elf_symbol2()
1210 distance = addr - sym->st_value; in find_elf_symbol2()
1211 near = sym; in find_elf_symbol2()
1217 static int is_function(Elf_Sym *sym) in is_function() argument
1219 if (sym) in is_function()
1220 return ELF_ST_TYPE(sym->st_info) == STT_FUNC; in is_function()
1271 Elf_Rela *r, Elf_Sym *sym, const char *fromsec) in default_mismatch_handler() argument
1282 tosec = sec_name(elf, get_secindex(elf, sym)); in default_mismatch_handler()
1283 to = find_elf_symbol(elf, r->r_addend, sym); in default_mismatch_handler()
1341 Elf_Rela* r, Elf_Sym* sym, in report_extable_warnings() argument
1346 Elf_Sym* tosym = find_elf_symbol(elf, r->r_addend, sym); in report_extable_warnings()
1365 is_executable_section(elf, get_secindex(elf, sym))) in report_extable_warnings()
1379 Elf_Rela* r, Elf_Sym* sym, in extable_mismatch_handler() argument
1382 const char* tosec = sec_name(elf, get_secindex(elf, sym)); in extable_mismatch_handler()
1386 report_extable_warnings(modname, elf, mismatch, r, sym, fromsec, tosec); in extable_mismatch_handler()
1395 else if (!is_executable_section(elf, get_secindex(elf, sym))) { in extable_mismatch_handler()
1414 Elf_Rela *r, Elf_Sym *sym, const char *fromsec) in check_section_mismatch() argument
1416 const char *tosec = sec_name(elf, get_secindex(elf, sym)); in check_section_mismatch()
1422 r, sym, fromsec); in check_section_mismatch()
1425 r, sym, fromsec); in check_section_mismatch()
1529 Elf_Sym *sym; in section_rela() local
1568 sym = elf->symtab_start + r_sym; in section_rela()
1570 if (is_shndx_special(sym->st_shndx)) in section_rela()
1574 check_section_mismatch(modname, elf, &r, sym, fromsec); in section_rela()
1581 Elf_Sym *sym; in section_rel() local
1627 sym = elf->symtab_start + r_sym; in section_rel()
1629 if (is_shndx_special(sym->st_shndx)) in section_rel()
1633 check_section_mismatch(modname, elf, &r, sym, fromsec); in section_rel()
1711 struct symbol *sym; in extract_crcs_for_object() local
1737 sym = sym_find_with_module(name, mod); in extract_crcs_for_object()
1738 if (sym) in extract_crcs_for_object()
1739 sym_set_crc(sym, crc); in extract_crcs_for_object()
1783 Elf_Sym *sym; in read_symbols() local
1816 for (sym = info.symtab_start; sym < info.symtab_stop; sym++) { in read_symbols()
1817 symname = remove_dot(info.strtab + sym->st_name); in read_symbols()
1819 handle_symbol(mod, &info, sym, symname); in read_symbols()
1820 handle_moddevtable(mod, &info, sym, symname); in read_symbols()
1823 for (sym = info.symtab_start; sym < info.symtab_stop; sym++) { in read_symbols()
1824 symname = remove_dot(info.strtab + sym->st_name); in read_symbols()
1829 sym_get_data(&info, sym)); in read_symbols()
2016 struct symbol *sym; in add_exported_symbols() local
2023 list_for_each_entry(sym, &mod->exported_symbols, list) { in add_exported_symbols()
2024 if (!sym->crc_valid) in add_exported_symbols()
2027 sym->name, mod->name, mod->is_vmlinux ? "" : ".ko", in add_exported_symbols()
2028 sym->name); in add_exported_symbols()
2031 sym->name, sym->crc, sym->is_gpl_only ? "_gpl" : ""); in add_exported_symbols()
2276 struct symbol *sym; in write_dump() local
2281 list_for_each_entry(sym, &mod->exported_symbols, list) { in write_dump()
2283 sym->crc, sym->name, mod->name, in write_dump()
2284 sym->is_gpl_only ? "_GPL" : "", in write_dump()
2285 sym->namespace ?: ""); in write_dump()