Lines Matching full:symbols
181 void symbols__fixup_duplicate(struct rb_root_cached *symbols) in symbols__fixup_duplicate() argument
189 nd = rb_first_cached(symbols); in symbols__fixup_duplicate()
206 rb_erase_cached(&next->rb_node, symbols); in symbols__fixup_duplicate()
213 rb_erase_cached(&curr->rb_node, symbols); in symbols__fixup_duplicate()
219 /* Update zero-sized symbols using the address of the next symbol */
220 void symbols__fixup_end(struct rb_root_cached *symbols, bool is_kallsyms) in symbols__fixup_end() argument
222 struct rb_node *nd, *prevnd = rb_first_cached(symbols); in symbols__fixup_end()
242 * In kallsyms, it determines module symbols using '[' character in symbols__fixup_end()
305 void symbols__delete(struct rb_root_cached *symbols) in symbols__delete() argument
308 struct rb_node *next = rb_first_cached(symbols); in symbols__delete()
313 rb_erase_cached(&pos->rb_node, symbols); in symbols__delete()
318 void __symbols__insert(struct rb_root_cached *symbols, in __symbols__insert() argument
321 struct rb_node **p = &symbols->rb_root.rb_node; in __symbols__insert()
349 rb_insert_color_cached(&sym->rb_node, symbols, leftmost); in __symbols__insert()
352 void symbols__insert(struct rb_root_cached *symbols, struct symbol *sym) in symbols__insert() argument
354 __symbols__insert(symbols, sym, false); in symbols__insert()
357 static struct symbol *symbols__find(struct rb_root_cached *symbols, u64 ip) in symbols__find() argument
361 if (symbols == NULL) in symbols__find()
364 n = symbols->rb_root.rb_node; in symbols__find()
380 static struct symbol *symbols__first(struct rb_root_cached *symbols) in symbols__first() argument
382 struct rb_node *n = rb_first_cached(symbols); in symbols__first()
390 static struct symbol *symbols__last(struct rb_root_cached *symbols) in symbols__last() argument
392 struct rb_node *n = rb_last(&symbols->rb_root); in symbols__last()
458 static struct symbol *symbols__find_by_name(struct symbol *symbols[], in symbols__find_by_name() argument
477 cmp = symbol__match_symbol_name(symbols[i]->name, name, includes); in symbols__find_by_name()
486 s = symbols[i]; in symbols__find_by_name()
493 struct symbol *tmp = symbols[i - 1]; in symbols__find_by_name()
503 assert(!found_idx || !s || s == symbols[*found_idx]); in symbols__find_by_name()
515 __symbols__insert(&dso->symbols, sym, dso->kernel); in dso__insert_symbol()
527 rb_erase_cached(&sym->rb_node, &dso->symbols); in dso__delete_symbol()
536 dso->last_find_result.symbol = symbols__find(&dso->symbols, addr); in dso__find_symbol()
544 return symbols__find(&dso->symbols, addr); in dso__find_symbol_nocache()
549 return symbols__first(&dso->symbols); in dso__first_symbol()
554 return symbols__last(&dso->symbols); in dso__last_symbol()
590 dso->symbol_names = symbols__sort_by_name(&dso->symbols, &len); in dso__sort_by_name()
676 * These are symbols in the kernel image, so make sure that
722 struct rb_root_cached *root = &dso->symbols; in map__process_kallsym_symbol()
727 /* Ignore local symbols for ARM modules */ in map__process_kallsym_symbol()
732 * module symbols are not sorted so we add all in map__process_kallsym_symbol()
733 * symbols, setting length to 0, and rely on in map__process_kallsym_symbol()
740 * We will pass the symbols to the filter later, in in map__process_kallsym_symbol()
763 struct rb_root_cached old_root = dso->symbols; in maps__split_kallsyms_for_kcore()
764 struct rb_root_cached *root = &dso->symbols; in maps__split_kallsyms_for_kcore()
797 symbols__insert(&curr_map_dso->symbols, pos); in maps__split_kallsyms_for_kcore()
801 /* Symbols have been adjusted */ in maps__split_kallsyms_for_kcore()
808 * Split the symbols into maps, making sure there are no overlaps, i.e. the
819 struct rb_root_cached *root = &dso->symbols; in maps__split_kallsyms()
851 * We assume all symbols of a module are in maps__split_kallsyms()
854 * symbols are in its kmap. Mark it as in maps__split_kallsyms()
882 * These symbols are not needed anymore since the in maps__split_kallsyms()
884 * symbols instead. Avoid having to deal with in maps__split_kallsyms()
887 * symbols at this point. in maps__split_kallsyms()
943 symbols__insert(&curr_map_dso->symbols, pos); in maps__split_kallsyms()
1376 * If one of the corresponding symbols is there, assume the in dso__load_kcore()
1453 symbols__fixup_end(&dso->symbols, true); in __dso__load_kallsyms()
1454 symbols__fixup_duplicate(&dso->symbols); in __dso__load_kallsyms()
1515 symbols__insert(&dso->symbols, sym); in dso__load_perf_map()
1560 asymbol **symbols, *sym; in dso__load_bfd_symbols() local
1587 symbols = malloc(symbols_size); in dso__load_bfd_symbols()
1588 if (!symbols) in dso__load_bfd_symbols()
1591 symbols_count = bfd_canonicalize_symtab(abfd, symbols); in dso__load_bfd_symbols()
1598 if (!strcmp(bfd_asymbol_name(symbols[i]), "__ImageBase") || in dso__load_bfd_symbols()
1599 !strcmp(bfd_asymbol_name(symbols[i]), "__image_base__")) in dso__load_bfd_symbols()
1603 /* PE symbols can only have 4 bytes, so use .text high bits */ in dso__load_bfd_symbols()
1605 dso->text_offset += (u32)bfd_asymbol_value(symbols[i]); in dso__load_bfd_symbols()
1611 qsort(symbols, symbols_count, sizeof(asymbol *), bfd_symbols__cmpvalue); in dso__load_bfd_symbols()
1617 sym = symbols[i]; in dso__load_bfd_symbols()
1623 bfd_asymbol_section(symbols[i + 1]) == section && in dso__load_bfd_symbols()
1624 bfd2elf_binding(symbols[i + 1]) < 0) in dso__load_bfd_symbols()
1628 bfd_asymbol_section(symbols[i + 1]) == section) in dso__load_bfd_symbols()
1629 len = symbols[i + 1]->value - sym->value; in dso__load_bfd_symbols()
1639 symbols__insert(&dso->symbols, symbol); in dso__load_bfd_symbols()
1645 symbols__fixup_end(&dso->symbols, false); in dso__load_bfd_symbols()
1646 symbols__fixup_duplicate(&dso->symbols); in dso__load_bfd_symbols()
1651 free(symbols); in dso__load_bfd_symbols()
1981 pr_debug("Using %s for symbols\n", symfs_vmlinux); in dso__load_vmlinux()
2179 pr_debug("Using %s for symbols\n", kallsyms_filename); in dso__load_kernel_sym()
2224 pr_debug("Using %s for symbols\n", kallsyms_filename); in dso__load_guest_kernel_sym()
2470 * A path to symbols of "/" is identical to "" in symbol__init()