Lines Matching refs:dso
26 static int dso__load_kernel_sym(struct dso *dso, struct map *map,
28 static int dso__load_guest_kernel_sym(struct dso *dso, struct map *map,
438 struct symbol *dso__find_symbol(struct dso *dso, in dso__find_symbol() argument
441 return symbols__find(&dso->symbols[type], addr); in dso__find_symbol()
444 struct symbol *dso__first_symbol(struct dso *dso, enum map_type type) in dso__first_symbol() argument
446 return symbols__first(&dso->symbols[type]); in dso__first_symbol()
465 struct symbol *dso__find_symbol_by_name(struct dso *dso, enum map_type type, in dso__find_symbol_by_name() argument
468 return symbols__find_by_name(&dso->symbol_names[type], name); in dso__find_symbol_by_name()
471 void dso__sort_by_name(struct dso *dso, enum map_type type) in dso__sort_by_name() argument
473 dso__set_sorted_by_name(dso, type); in dso__sort_by_name()
474 return symbols__sort_by_name(&dso->symbol_names[type], in dso__sort_by_name()
475 &dso->symbols[type]); in dso__sort_by_name()
478 size_t dso__fprintf_symbols_by_name(struct dso *dso, in dso__fprintf_symbols_by_name() argument
485 for (nd = rb_first(&dso->symbol_names[type]); nd; nd = rb_next(nd)) { in dso__fprintf_symbols_by_name()
553 struct dso *dso; member
596 struct rb_root *root = &a->dso->symbols[a->map->type]; in map__process_kallsym_symbol()
623 static int dso__load_all_kallsyms(struct dso *dso, const char *filename, in dso__load_all_kallsyms() argument
626 struct process_kallsyms_args args = { .map = map, .dso = dso, }; in dso__load_all_kallsyms()
630 static int dso__split_kallsyms_for_kcore(struct dso *dso, struct map *map, in dso__split_kallsyms_for_kcore() argument
637 struct rb_root *root = &dso->symbols[map->type]; in dso__split_kallsyms_for_kcore()
665 &curr_map->dso->symbols[curr_map->type], in dso__split_kallsyms_for_kcore()
675 dso->adjust_symbols = 1; in dso__split_kallsyms_for_kcore()
685 static int dso__split_kallsyms(struct dso *dso, struct map *map, u64 delta, in dso__split_kallsyms() argument
693 struct rb_root *root = &dso->symbols[map->type]; in dso__split_kallsyms()
715 if (strcmp(curr_map->dso->short_name, module)) { in dso__split_kallsyms()
717 dso->kernel == DSO_TYPE_GUEST_KERNEL && in dso__split_kallsyms()
726 dso__set_loaded(curr_map->dso, in dso__split_kallsyms()
741 if (curr_map->dso->loaded && in dso__split_kallsyms()
753 struct dso *ndso; in dso__split_kallsyms()
766 if (dso->kernel == DSO_TYPE_GUEST_KERNEL) in dso__split_kallsyms()
779 ndso->kernel = dso->kernel; in dso__split_kallsyms()
802 symbols__insert(&curr_map->dso->symbols[curr_map->type], pos); in dso__split_kallsyms()
810 dso->kernel == DSO_TYPE_GUEST_KERNEL && in dso__split_kallsyms()
812 dso__set_loaded(curr_map->dso, curr_map->type); in dso__split_kallsyms()
995 mi = find_module(old_map->dso->short_name, &modules); in do_validate_kcore_modules()
1073 struct dso *dso; member
1083 map = map__new2(start, md->dso, md->type); in kcore_mapfn()
1095 static int dso__load_kcore(struct dso *dso, struct map *map, in dso__load_kcore() argument
1124 md.dso = dso; in dso__load_kcore()
1137 dso->is_64_bit = is_64_bit; in dso__load_kcore()
1155 sym = dso__first_symbol(dso, map->type); in dso__load_kcore()
1190 if (dso->kernel == DSO_TYPE_GUEST_KERNEL) in dso__load_kcore()
1191 dso->binary_type = DSO_BINARY_TYPE__GUEST_KCORE; in dso__load_kcore()
1193 dso->binary_type = DSO_BINARY_TYPE__KCORE; in dso__load_kcore()
1194 dso__set_long_name(dso, strdup(kcore_filename), true); in dso__load_kcore()
1239 int dso__load_kallsyms(struct dso *dso, const char *filename, in dso__load_kallsyms() argument
1247 if (dso__load_all_kallsyms(dso, filename, map) < 0) in dso__load_kallsyms()
1253 symbols__fixup_duplicate(&dso->symbols[map->type]); in dso__load_kallsyms()
1254 symbols__fixup_end(&dso->symbols[map->type]); in dso__load_kallsyms()
1256 if (dso->kernel == DSO_TYPE_GUEST_KERNEL) in dso__load_kallsyms()
1257 dso->symtab_type = DSO_BINARY_TYPE__GUEST_KALLSYMS; in dso__load_kallsyms()
1259 dso->symtab_type = DSO_BINARY_TYPE__KALLSYMS; in dso__load_kallsyms()
1261 if (!dso__load_kcore(dso, map, filename)) in dso__load_kallsyms()
1262 return dso__split_kallsyms_for_kcore(dso, map, filter); in dso__load_kallsyms()
1264 return dso__split_kallsyms(dso, map, delta, filter); in dso__load_kallsyms()
1267 static int dso__load_perf_map(struct dso *dso, struct map *map, in dso__load_perf_map() argument
1275 file = fopen(dso->long_name, "r"); in dso__load_perf_map()
1313 symbols__insert(&dso->symbols[map->type], sym); in dso__load_perf_map()
1329 static bool dso__is_compatible_symtab_type(struct dso *dso, bool kmod, in dso__is_compatible_symtab_type() argument
1340 return !kmod && dso->kernel == DSO_TYPE_USER; in dso__is_compatible_symtab_type()
1345 return dso->kernel == DSO_TYPE_KERNEL; in dso__is_compatible_symtab_type()
1350 return dso->kernel == DSO_TYPE_GUEST_KERNEL; in dso__is_compatible_symtab_type()
1360 return kmod && dso->symtab_type == type; in dso__is_compatible_symtab_type()
1371 int dso__load(struct dso *dso, struct map *map, symbol_filter_t filter) in dso__load() argument
1383 dso__set_loaded(dso, map->type); in dso__load()
1385 if (dso->kernel == DSO_TYPE_KERNEL) in dso__load()
1386 return dso__load_kernel_sym(dso, map, filter); in dso__load()
1387 else if (dso->kernel == DSO_TYPE_GUEST_KERNEL) in dso__load()
1388 return dso__load_guest_kernel_sym(dso, map, filter); in dso__load()
1395 dso->adjust_symbols = 0; in dso__load()
1397 if (strncmp(dso->name, "/tmp/perf-", 10) == 0) { in dso__load()
1400 if (lstat(dso->name, &st) < 0) in dso__load()
1405 "ignoring it.\n", dso->name); in dso__load()
1409 ret = dso__load_perf_map(dso, map, filter); in dso__load()
1410 dso->symtab_type = ret > 0 ? DSO_BINARY_TYPE__JAVA_JIT : in dso__load()
1422 kmod = dso->symtab_type == DSO_BINARY_TYPE__SYSTEM_PATH_KMODULE || in dso__load()
1423 dso->symtab_type == DSO_BINARY_TYPE__SYSTEM_PATH_KMODULE_COMP || in dso__load()
1424 dso->symtab_type == DSO_BINARY_TYPE__GUEST_KMODULE || in dso__load()
1425 dso->symtab_type == DSO_BINARY_TYPE__GUEST_KMODULE_COMP; in dso__load()
1438 if (!dso__is_compatible_symtab_type(dso, kmod, symtab_type)) in dso__load()
1441 if (dso__read_binary_type_filename(dso, symtab_type, in dso__load()
1446 if (symsrc__init(ss, dso, name, symtab_type) < 0) in dso__load()
1452 if (!dso->symsrc_filename) in dso__load()
1453 dso->symsrc_filename = strdup(name); in dso__load()
1484 ret = dso__load_sym(dso, map, syms_ss, runtime_ss, filter, kmod); in dso__load()
1491 nr_plt = dso__synthesize_plt_symbols(dso, runtime_ss, map, filter); in dso__load()
1500 if (ret < 0 && strstr(dso->name, " (deleted)") != NULL) in dso__load()
1513 if (map->dso && strcmp(map->dso->short_name, name) == 0) in map_groups__find_by_name()
1520 int dso__load_vmlinux(struct dso *dso, struct map *map, in dso__load_vmlinux() argument
1534 if (dso->kernel == DSO_TYPE_GUEST_KERNEL) in dso__load_vmlinux()
1539 if (symsrc__init(&ss, dso, symfs_vmlinux, symtab_type)) in dso__load_vmlinux()
1542 err = dso__load_sym(dso, map, &ss, &ss, filter, 0); in dso__load_vmlinux()
1546 if (dso->kernel == DSO_TYPE_GUEST_KERNEL) in dso__load_vmlinux()
1547 dso->binary_type = DSO_BINARY_TYPE__GUEST_VMLINUX; in dso__load_vmlinux()
1549 dso->binary_type = DSO_BINARY_TYPE__VMLINUX; in dso__load_vmlinux()
1550 dso__set_long_name(dso, vmlinux, vmlinux_allocated); in dso__load_vmlinux()
1551 dso__set_loaded(dso, map->type); in dso__load_vmlinux()
1558 int dso__load_vmlinux_path(struct dso *dso, struct map *map, in dso__load_vmlinux_path() argument
1565 filename = dso__build_id_filename(dso, NULL, 0); in dso__load_vmlinux_path()
1567 err = dso__load_vmlinux(dso, map, filename, true, filter); in dso__load_vmlinux_path()
1577 err = dso__load_vmlinux(dso, map, vmlinux_path[i], false, filter); in dso__load_vmlinux_path()
1616 static char *dso__find_kallsyms(struct dso *dso, struct map *map) in dso__find_kallsyms() argument
1623 if (!dso->has_build_id) { in dso__find_kallsyms()
1633 is_host = dso__build_id_equal(dso, host_build_id); in dso__find_kallsyms()
1635 build_id__sprintf(dso->build_id, sizeof(dso->build_id), sbuild_id); in dso__find_kallsyms()
1689 static int dso__load_kernel_sym(struct dso *dso, struct map *map, in dso__load_kernel_sym() argument
1716 return dso__load_vmlinux(dso, map, symbol_conf.vmlinux_name, in dso__load_kernel_sym()
1721 err = dso__load_vmlinux_path(dso, map, filter); in dso__load_kernel_sym()
1730 kallsyms_allocated_filename = dso__find_kallsyms(dso, map); in dso__load_kernel_sym()
1737 err = dso__load_kallsyms(dso, kallsyms_filename, map, filter); in dso__load_kernel_sym()
1742 if (err > 0 && !dso__is_kcore(dso)) { in dso__load_kernel_sym()
1743 dso->binary_type = DSO_BINARY_TYPE__KALLSYMS; in dso__load_kernel_sym()
1744 dso__set_long_name(dso, "[kernel.kallsyms]", false); in dso__load_kernel_sym()
1752 static int dso__load_guest_kernel_sym(struct dso *dso, struct map *map, in dso__load_guest_kernel_sym() argument
1773 err = dso__load_vmlinux(dso, map, in dso__load_guest_kernel_sym()
1787 err = dso__load_kallsyms(dso, kallsyms_filename, map, filter); in dso__load_guest_kernel_sym()
1790 if (err > 0 && !dso__is_kcore(dso)) { in dso__load_guest_kernel_sym()
1791 dso->binary_type = DSO_BINARY_TYPE__GUEST_KALLSYMS; in dso__load_guest_kernel_sym()
1793 dso__set_long_name(dso, strdup(path), true); in dso__load_guest_kernel_sym()