Lines Matching refs:map
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,
206 struct map *next, *curr; in __map_groups__fixup_end()
278 offset = al->addr - al->map->start - sym->start; in symbol__fprintf_symname_offs()
573 struct map *map; member
617 struct rb_root *root = &a->dso->symbols[a->map->type]; in map__process_kallsym_symbol()
619 if (!symbol_type__is_a(type, a->map->type)) in map__process_kallsym_symbol()
645 struct map *map) in dso__load_all_kallsyms() argument
647 struct process_kallsyms_args args = { .map = map, .dso = dso, }; in dso__load_all_kallsyms()
651 static int dso__split_kallsyms_for_kcore(struct dso *dso, struct map *map, in dso__split_kallsyms_for_kcore() argument
654 struct map_groups *kmaps = map__kmaps(map); in dso__split_kallsyms_for_kcore()
655 struct map *curr_map; in dso__split_kallsyms_for_kcore()
658 struct rb_root old_root = dso->symbols[map->type]; in dso__split_kallsyms_for_kcore()
659 struct rb_root *root = &dso->symbols[map->type]; in dso__split_kallsyms_for_kcore()
679 curr_map = map_groups__find(kmaps, map->type, pos->start); in dso__split_kallsyms_for_kcore()
704 static int dso__split_kallsyms(struct dso *dso, struct map *map, u64 delta, in dso__split_kallsyms() argument
707 struct map_groups *kmaps = map__kmaps(map); in dso__split_kallsyms()
709 struct map *curr_map = map; in dso__split_kallsyms()
712 struct rb_root *root = &dso->symbols[map->type]; in dso__split_kallsyms()
735 if (curr_map != map && in dso__split_kallsyms()
750 map->type, module); in dso__split_kallsyms()
756 curr_map = map; in dso__split_kallsyms()
770 } else if (curr_map != map) { in dso__split_kallsyms()
781 curr_map = map; in dso__split_kallsyms()
800 curr_map = map__new2(pos->start, ndso, map->type); in dso__split_kallsyms()
819 if (curr_map != map) { in dso__split_kallsyms()
828 if (curr_map != map && in dso__split_kallsyms()
991 static int do_validate_kcore_modules(const char *filename, struct map *map, in do_validate_kcore_modules() argument
995 struct map *old_map; in do_validate_kcore_modules()
1002 old_map = map_groups__first(kmaps, map->type); in do_validate_kcore_modules()
1004 struct map *next = map_groups__next(old_map); in do_validate_kcore_modules()
1007 if (old_map == map || old_map->start == map->start) { in do_validate_kcore_modules()
1053 struct map *map) in validate_kcore_modules() argument
1055 struct map_groups *kmaps = map__kmaps(map); in validate_kcore_modules()
1065 if (do_validate_kcore_modules(modules_filename, map, kmaps)) in validate_kcore_modules()
1072 struct map *map) in validate_kcore_addresses() argument
1074 struct kmap *kmap = map__kmap(map); in validate_kcore_addresses()
1088 return validate_kcore_modules(kallsyms_filename, map); in validate_kcore_addresses()
1100 struct map *map; in kcore_mapfn() local
1102 map = map__new2(start, md->dso, md->type); in kcore_mapfn()
1103 if (map == NULL) in kcore_mapfn()
1106 map->end = map->start + len; in kcore_mapfn()
1107 map->pgoff = pgoff; in kcore_mapfn()
1109 list_add(&map->node, &md->maps); in kcore_mapfn()
1114 static int dso__load_kcore(struct dso *dso, struct map *map, in dso__load_kcore() argument
1117 struct map_groups *kmaps = map__kmaps(map); in dso__load_kcore()
1120 struct map *old_map, *new_map, *replacement_map = NULL; in dso__load_kcore()
1132 if (map != machine->vmlinux_maps[map->type]) in dso__load_kcore()
1140 if (validate_kcore_addresses(kallsyms_filename, map)) in dso__load_kcore()
1144 md.type = map->type; in dso__load_kcore()
1167 old_map = map_groups__first(kmaps, map->type); in dso__load_kcore()
1169 struct map *next = map_groups__next(old_map); in dso__load_kcore()
1171 if (old_map != map) in dso__load_kcore()
1177 sym = dso__first_symbol(dso, map->type); in dso__load_kcore()
1187 replacement_map = list_entry(md.maps.next, struct map, node); in dso__load_kcore()
1191 new_map = list_entry(md.maps.next, struct map, node); in dso__load_kcore()
1194 map->start = new_map->start; in dso__load_kcore()
1195 map->end = new_map->end; in dso__load_kcore()
1196 map->pgoff = new_map->pgoff; in dso__load_kcore()
1197 map->map_ip = new_map->map_ip; in dso__load_kcore()
1198 map->unmap_ip = new_map->unmap_ip; in dso__load_kcore()
1200 map__get(map); in dso__load_kcore()
1201 map_groups__remove(kmaps, map); in dso__load_kcore()
1202 map_groups__insert(kmaps, map); in dso__load_kcore()
1203 map__put(map); in dso__load_kcore()
1223 if (map->type == MAP__FUNCTION) in dso__load_kcore()
1232 map = list_entry(md.maps.next, struct map, node); in dso__load_kcore()
1233 list_del_init(&map->node); in dso__load_kcore()
1234 map__put(map); in dso__load_kcore()
1244 static int kallsyms__delta(struct map *map, const char *filename, u64 *delta) in kallsyms__delta() argument
1246 struct kmap *kmap = map__kmap(map); in kallsyms__delta()
1265 struct map *map, symbol_filter_t filter) in dso__load_kallsyms() argument
1272 if (dso__load_all_kallsyms(dso, filename, map) < 0) in dso__load_kallsyms()
1275 if (kallsyms__delta(map, filename, &delta)) in dso__load_kallsyms()
1278 symbols__fixup_duplicate(&dso->symbols[map->type]); in dso__load_kallsyms()
1279 symbols__fixup_end(&dso->symbols[map->type]); in dso__load_kallsyms()
1286 if (!dso__load_kcore(dso, map, filename)) in dso__load_kallsyms()
1287 return dso__split_kallsyms_for_kcore(dso, map, filter); in dso__load_kallsyms()
1289 return dso__split_kallsyms(dso, map, delta, filter); in dso__load_kallsyms()
1292 static int dso__load_perf_map(struct dso *dso, struct map *map, in dso__load_perf_map() argument
1335 if (filter && filter(map, sym)) in dso__load_perf_map()
1338 symbols__insert(&dso->symbols[map->type], sym); in dso__load_perf_map()
1396 int dso__load(struct dso *dso, struct map *map, symbol_filter_t filter) in dso__load() argument
1412 if (dso__loaded(dso, map->type)) { in dso__load()
1419 ret = dso__load_kernel_sym(dso, map, filter); in dso__load()
1421 ret = dso__load_guest_kernel_sym(dso, map, filter); in dso__load()
1426 if (map->groups && map->groups->machine) in dso__load()
1427 machine = map->groups->machine; in dso__load()
1445 ret = dso__load_perf_map(dso, map, filter); in dso__load()
1528 ret = dso__load_sym(dso, map, syms_ss, runtime_ss, filter, kmod); in dso__load()
1535 nr_plt = dso__synthesize_plt_symbols(dso, runtime_ss, map, filter); in dso__load()
1547 dso__set_loaded(dso, map->type); in dso__load()
1553 struct map *map_groups__find_by_name(struct map_groups *mg, in map_groups__find_by_name()
1557 struct map *map; in map_groups__find_by_name() local
1561 for (map = maps__first(maps); map; map = map__next(map)) { in map_groups__find_by_name()
1562 if (map->dso && strcmp(map->dso->short_name, name) == 0) in map_groups__find_by_name()
1566 map = NULL; in map_groups__find_by_name()
1570 return map; in map_groups__find_by_name()
1573 int dso__load_vmlinux(struct dso *dso, struct map *map, in dso__load_vmlinux() argument
1595 err = dso__load_sym(dso, map, &ss, &ss, filter, 0); in dso__load_vmlinux()
1604 dso__set_loaded(dso, map->type); in dso__load_vmlinux()
1611 int dso__load_vmlinux_path(struct dso *dso, struct map *map, in dso__load_vmlinux_path() argument
1621 err = dso__load_vmlinux(dso, map, vmlinux_path[i], false, filter); in dso__load_vmlinux_path()
1629 err = dso__load_vmlinux(dso, map, filename, true, filter); in dso__load_vmlinux_path()
1638 static int find_matching_kcore(struct map *map, char *dir, size_t dir_sz) in find_matching_kcore() argument
1657 if (!validate_kcore_addresses(kallsyms_filename, map)) { in find_matching_kcore()
1669 static char *dso__find_kallsyms(struct dso *dso, struct map *map) in dso__find_kallsyms() argument
1712 if (!validate_kcore_addresses("/proc/kallsyms", map)) in dso__find_kallsyms()
1717 if (!find_matching_kcore(map, path, sizeof(path))) in dso__find_kallsyms()
1724 if (!find_matching_kcore(map, path, sizeof(path))) in dso__find_kallsyms()
1742 static int dso__load_kernel_sym(struct dso *dso, struct map *map, in dso__load_kernel_sym() argument
1769 return dso__load_vmlinux(dso, map, symbol_conf.vmlinux_name, in dso__load_kernel_sym()
1774 err = dso__load_vmlinux_path(dso, map, filter); in dso__load_kernel_sym()
1783 kallsyms_allocated_filename = dso__find_kallsyms(dso, map); in dso__load_kernel_sym()
1790 err = dso__load_kallsyms(dso, kallsyms_filename, map, filter); in dso__load_kernel_sym()
1798 map__fixup_start(map); in dso__load_kernel_sym()
1799 map__fixup_end(map); in dso__load_kernel_sym()
1805 static int dso__load_guest_kernel_sym(struct dso *dso, struct map *map, in dso__load_guest_kernel_sym() argument
1813 if (!map->groups) { in dso__load_guest_kernel_sym()
1817 machine = map->groups->machine; in dso__load_guest_kernel_sym()
1826 err = dso__load_vmlinux(dso, map, in dso__load_guest_kernel_sym()
1840 err = dso__load_kallsyms(dso, kallsyms_filename, map, filter); in dso__load_guest_kernel_sym()
1847 map__fixup_start(map); in dso__load_guest_kernel_sym()
1848 map__fixup_end(map); in dso__load_guest_kernel_sym()