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,
202 struct map *prev, *curr; in __map_groups__fixup_end()
208 curr = rb_entry(prevnd, struct map, rb_node); in __map_groups__fixup_end()
212 curr = rb_entry(nd, struct map, rb_node); in __map_groups__fixup_end()
272 offset = al->addr - al->map->start - sym->start; in symbol__fprintf_symname_offs()
552 struct map *map; member
596 struct rb_root *root = &a->dso->symbols[a->map->type]; in map__process_kallsym_symbol()
598 if (!symbol_type__is_a(type, a->map->type)) in map__process_kallsym_symbol()
624 struct map *map) 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
633 struct map_groups *kmaps = map__kmaps(map); in dso__split_kallsyms_for_kcore()
634 struct map *curr_map; in dso__split_kallsyms_for_kcore()
637 struct rb_root *root = &dso->symbols[map->type]; in dso__split_kallsyms_for_kcore()
653 curr_map = map_groups__find(kmaps, map->type, pos->start); in dso__split_kallsyms_for_kcore()
662 if (curr_map != map) { 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
688 struct map_groups *kmaps = map__kmaps(map); in dso__split_kallsyms()
690 struct map *curr_map = map; in dso__split_kallsyms()
693 struct rb_root *root = &dso->symbols[map->type]; in dso__split_kallsyms()
716 if (curr_map != map && in dso__split_kallsyms()
731 map->type, module); in dso__split_kallsyms()
737 curr_map = map; in dso__split_kallsyms()
751 } else if (curr_map != map) { in dso__split_kallsyms()
762 curr_map = map; in dso__split_kallsyms()
781 curr_map = map__new2(pos->start, ndso, map->type); in dso__split_kallsyms()
800 if (curr_map != map) { in dso__split_kallsyms()
809 if (curr_map != map && in dso__split_kallsyms()
972 static int do_validate_kcore_modules(const char *filename, struct map *map, in do_validate_kcore_modules() argument
976 struct map *old_map; in do_validate_kcore_modules()
983 old_map = map_groups__first(kmaps, map->type); in do_validate_kcore_modules()
985 struct map *next = map_groups__next(old_map); in do_validate_kcore_modules()
988 if (old_map == map || old_map->start == map->start) { in do_validate_kcore_modules()
1034 struct map *map) in validate_kcore_modules() argument
1036 struct map_groups *kmaps = map__kmaps(map); in validate_kcore_modules()
1046 if (do_validate_kcore_modules(modules_filename, map, kmaps)) in validate_kcore_modules()
1053 struct map *map) in validate_kcore_addresses() argument
1055 struct kmap *kmap = map__kmap(map); in validate_kcore_addresses()
1069 return validate_kcore_modules(kallsyms_filename, map); in validate_kcore_addresses()
1081 struct map *map; in kcore_mapfn() local
1083 map = map__new2(start, md->dso, md->type); in kcore_mapfn()
1084 if (map == NULL) in kcore_mapfn()
1087 map->end = map->start + len; in kcore_mapfn()
1088 map->pgoff = pgoff; in kcore_mapfn()
1090 list_add(&map->node, &md->maps); in kcore_mapfn()
1095 static int dso__load_kcore(struct dso *dso, struct map *map, in dso__load_kcore() argument
1098 struct map_groups *kmaps = map__kmaps(map); in dso__load_kcore()
1101 struct map *old_map, *new_map, *replacement_map = NULL; in dso__load_kcore()
1113 if (map != machine->vmlinux_maps[map->type]) in dso__load_kcore()
1121 if (validate_kcore_addresses(kallsyms_filename, map)) in dso__load_kcore()
1125 md.type = map->type; in dso__load_kcore()
1145 old_map = map_groups__first(kmaps, map->type); in dso__load_kcore()
1147 struct map *next = map_groups__next(old_map); in dso__load_kcore()
1149 if (old_map != map) in dso__load_kcore()
1155 sym = dso__first_symbol(dso, map->type); in dso__load_kcore()
1165 replacement_map = list_entry(md.maps.next, struct map, node); in dso__load_kcore()
1169 new_map = list_entry(md.maps.next, struct map, node); in dso__load_kcore()
1172 map->start = new_map->start; in dso__load_kcore()
1173 map->end = new_map->end; in dso__load_kcore()
1174 map->pgoff = new_map->pgoff; in dso__load_kcore()
1175 map->map_ip = new_map->map_ip; in dso__load_kcore()
1176 map->unmap_ip = new_map->unmap_ip; in dso__load_kcore()
1179 map_groups__remove(kmaps, map); in dso__load_kcore()
1180 map_groups__insert(kmaps, map); in dso__load_kcore()
1198 if (map->type == MAP__FUNCTION) in dso__load_kcore()
1207 map = list_entry(md.maps.next, struct map, node); in dso__load_kcore()
1208 list_del(&map->node); in dso__load_kcore()
1209 map__delete(map); in dso__load_kcore()
1219 static int kallsyms__delta(struct map *map, const char *filename, u64 *delta) in kallsyms__delta() argument
1221 struct kmap *kmap = map__kmap(map); in kallsyms__delta()
1240 struct map *map, symbol_filter_t filter) in dso__load_kallsyms() argument
1247 if (dso__load_all_kallsyms(dso, filename, map) < 0) in dso__load_kallsyms()
1250 if (kallsyms__delta(map, filename, &delta)) 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()
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
1310 if (filter && filter(map, sym)) in dso__load_perf_map()
1313 symbols__insert(&dso->symbols[map->type], sym); in dso__load_perf_map()
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()
1386 return dso__load_kernel_sym(dso, map, filter); in dso__load()
1388 return dso__load_guest_kernel_sym(dso, map, filter); in dso__load()
1390 if (map->groups && map->groups->machine) in dso__load()
1391 machine = map->groups->machine; in dso__load()
1409 ret = dso__load_perf_map(dso, map, filter); 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()
1505 struct map *map_groups__find_by_name(struct map_groups *mg, in map_groups__find_by_name()
1511 struct map *map = rb_entry(nd, struct map, rb_node); in map_groups__find_by_name() local
1513 if (map->dso && strcmp(map->dso->short_name, name) == 0) in map_groups__find_by_name()
1514 return map; in map_groups__find_by_name()
1520 int dso__load_vmlinux(struct dso *dso, struct map *map, in dso__load_vmlinux() argument
1542 err = dso__load_sym(dso, map, &ss, &ss, filter, 0); 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
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()
1585 static int find_matching_kcore(struct map *map, char *dir, size_t dir_sz) in find_matching_kcore() argument
1604 if (!validate_kcore_addresses(kallsyms_filename, map)) { in find_matching_kcore()
1616 static char *dso__find_kallsyms(struct dso *dso, struct map *map) in dso__find_kallsyms() argument
1659 if (!validate_kcore_addresses("/proc/kallsyms", map)) in dso__find_kallsyms()
1664 if (!find_matching_kcore(map, path, sizeof(path))) in dso__find_kallsyms()
1671 if (!find_matching_kcore(map, path, sizeof(path))) 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()
1745 map__fixup_start(map); in dso__load_kernel_sym()
1746 map__fixup_end(map); 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
1760 if (!map->groups) { in dso__load_guest_kernel_sym()
1764 machine = map->groups->machine; in dso__load_guest_kernel_sym()
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()
1794 map__fixup_start(map); in dso__load_guest_kernel_sym()
1795 map__fixup_end(map); in dso__load_guest_kernel_sym()