Lines Matching refs:map

105 void map__init(struct map *map, u64 start, u64 end, u64 pgoff, struct dso *dso)  in map__init()  argument
107 map__set_start(map, start); in map__init()
108 map__set_end(map, end); in map__init()
109 map__set_pgoff(map, pgoff); in map__init()
110 map__set_reloc(map, 0); in map__init()
111 map__set_dso(map, dso__get(dso)); in map__init()
112 map__set_map_ip(map, map__dso_map_ip); in map__init()
113 map__set_unmap_ip(map, map__dso_unmap_ip); in map__init()
114 map__set_erange_warned(map, false); in map__init()
115 refcount_set(map__refcnt(map), 1); in map__init()
118 struct map *map__new(struct machine *machine, u64 start, u64 len, in map__new()
123 struct map *result; in map__new()
124 RC_STRUCT(map) *map; in map__new()
128 map = malloc(sizeof(*map)); in map__new()
129 if (ADD_RC_CHK(result, map)) { in map__new()
138 map->prot = prot; in map__new()
139 map->flags = flags; in map__new()
175 map->map_ip = map->unmap_ip = identity__map_ip; in map__new()
221 struct map *map__new2(u64 start, struct dso *dso) in map__new2()
223 struct map *result; in map__new2()
224 RC_STRUCT(map) *map; in map__new2()
226 map = calloc(1, sizeof(*map) + (dso->kernel ? sizeof(struct kmap) : 0)); in map__new2()
227 if (ADD_RC_CHK(result, map)) { in map__new2()
237 bool __map__is_kernel(const struct map *map) in __map__is_kernel() argument
239 if (!map__dso(map)->kernel) in __map__is_kernel()
241 return machine__kernel_map(maps__machine(map__kmaps((struct map *)map))) == map; in __map__is_kernel()
244 bool __map__is_extra_kernel_map(const struct map *map) in __map__is_extra_kernel_map() argument
246 struct kmap *kmap = __map__kmap((struct map *)map); in __map__is_extra_kernel_map()
251 bool __map__is_bpf_prog(const struct map *map) in __map__is_bpf_prog() argument
254 struct dso *dso = map__dso(map); in __map__is_bpf_prog()
268 bool __map__is_bpf_image(const struct map *map) in __map__is_bpf_image() argument
271 struct dso *dso = map__dso(map); in __map__is_bpf_image()
285 bool __map__is_ool(const struct map *map) in __map__is_ool() argument
287 const struct dso *dso = map__dso(map); in __map__is_ool()
292 bool map__has_symbols(const struct map *map) in map__has_symbols() argument
294 return dso__has_symbols(map__dso(map)); in map__has_symbols()
297 static void map__exit(struct map *map) in map__exit() argument
299 BUG_ON(refcount_read(map__refcnt(map)) != 0); in map__exit()
300 dso__zput(RC_CHK_ACCESS(map)->dso); in map__exit()
303 void map__delete(struct map *map) in map__delete() argument
305 map__exit(map); in map__delete()
306 RC_CHK_FREE(map); in map__delete()
309 void map__put(struct map *map) in map__put() argument
311 if (map && refcount_dec_and_test(map__refcnt(map))) in map__put()
312 map__delete(map); in map__put()
314 RC_CHK_PUT(map); in map__put()
317 void map__fixup_start(struct map *map) in map__fixup_start() argument
319 struct dso *dso = map__dso(map); in map__fixup_start()
326 map__set_start(map, sym->start); in map__fixup_start()
330 void map__fixup_end(struct map *map) in map__fixup_end() argument
332 struct dso *dso = map__dso(map); in map__fixup_end()
338 map__set_end(map, sym->end); in map__fixup_end()
344 int map__load(struct map *map) in map__load() argument
346 struct dso *dso = map__dso(map); in map__load()
353 nr = dso__load(dso, map); in map__load()
385 struct symbol *map__find_symbol(struct map *map, u64 addr) in map__find_symbol() argument
387 if (map__load(map) < 0) in map__find_symbol()
390 return dso__find_symbol(map__dso(map), addr); in map__find_symbol()
393 struct symbol *map__find_symbol_by_name_idx(struct map *map, const char *name, size_t *idx) in map__find_symbol_by_name_idx() argument
397 if (map__load(map) < 0) in map__find_symbol_by_name_idx()
400 dso = map__dso(map); in map__find_symbol_by_name_idx()
406 struct symbol *map__find_symbol_by_name(struct map *map, const char *name) in map__find_symbol_by_name() argument
410 return map__find_symbol_by_name_idx(map, name, &idx); in map__find_symbol_by_name()
413 struct map *map__clone(struct map *from) in map__clone()
415 struct map *result; in map__clone()
416 RC_STRUCT(map) *map; in map__clone()
417 size_t size = sizeof(RC_STRUCT(map)); in map__clone()
423 map = memdup(RC_CHK_ACCESS(from), size); in map__clone()
424 if (ADD_RC_CHK(result, map)) { in map__clone()
425 refcount_set(&map->refcnt, 1); in map__clone()
426 map->dso = dso__get(dso); in map__clone()
432 size_t map__fprintf(struct map *map, FILE *fp) in map__fprintf() argument
434 const struct dso *dso = map__dso(map); in map__fprintf()
437 map__start(map), map__end(map), map__pgoff(map), dso->name); in map__fprintf()
447 static size_t __map__fprintf_dsoname(struct map *map, bool print_off, FILE *fp) in __map__fprintf_dsoname() argument
451 const struct dso *dso = map ? map__dso(map) : NULL; in __map__fprintf_dsoname()
468 size_t map__fprintf_dsoname(struct map *map, FILE *fp) in map__fprintf_dsoname() argument
470 return __map__fprintf_dsoname(map, false, fp); in map__fprintf_dsoname()
473 size_t map__fprintf_dsoname_dsoff(struct map *map, bool print_off, u64 addr, FILE *fp) in map__fprintf_dsoname_dsoff() argument
475 const struct dso *dso = map ? map__dso(map) : NULL; in map__fprintf_dsoname_dsoff()
481 printed += __map__fprintf_dsoname(map, print_off, fp); in map__fprintf_dsoname_dsoff()
489 char *map__srcline(struct map *map, u64 addr, struct symbol *sym) in map__srcline() argument
491 if (map == NULL) in map__srcline()
494 return get_srcline(map__dso(map), map__rip_2objdump(map, addr), sym, true, true, addr); in map__srcline()
497 int map__fprintf_srcline(struct map *map, u64 addr, const char *prefix, in map__fprintf_srcline() argument
500 const struct dso *dso = map ? map__dso(map) : NULL; in map__fprintf_srcline()
504 char *srcline = map__srcline(map, addr, NULL); in map__fprintf_srcline()
529 u64 map__rip_2objdump(struct map *map, u64 rip) in map__rip_2objdump() argument
531 struct kmap *kmap = __map__kmap(map); in map__rip_2objdump()
532 const struct dso *dso = map__dso(map); in map__rip_2objdump()
543 struct map *kernel_map = machine__kernel_map(machine); in map__rip_2objdump()
546 map = kernel_map; in map__rip_2objdump()
554 return rip - map__pgoff(map); in map__rip_2objdump()
563 return map__unmap_ip(map, rip) - map__reloc(map); in map__rip_2objdump()
578 u64 map__objdump_2mem(struct map *map, u64 ip) in map__objdump_2mem() argument
580 const struct dso *dso = map__dso(map); in map__objdump_2mem()
583 return map__unmap_ip(map, ip); in map__objdump_2mem()
586 return map__unmap_ip(map, ip + map__pgoff(map)); in map__objdump_2mem()
593 return map__unmap_ip(map, ip - dso->text_offset); in map__objdump_2mem()
595 return ip + map__reloc(map); in map__objdump_2mem()
598 bool map__contains_symbol(const struct map *map, const struct symbol *sym) in map__contains_symbol() argument
600 u64 ip = map__unmap_ip(map, sym->start); in map__contains_symbol()
602 return ip >= map__start(map) && ip < map__end(map); in map__contains_symbol()
605 struct kmap *__map__kmap(struct map *map) in __map__kmap() argument
607 const struct dso *dso = map__dso(map); in __map__kmap()
611 return (struct kmap *)(&RC_CHK_ACCESS(map)[1]); in __map__kmap()
614 struct kmap *map__kmap(struct map *map) in map__kmap() argument
616 struct kmap *kmap = __map__kmap(map); in map__kmap()
623 struct maps *map__kmaps(struct map *map) in map__kmaps() argument
625 struct kmap *kmap = map__kmap(map); in map__kmaps()
634 u64 map__dso_map_ip(const struct map *map, u64 ip) in map__dso_map_ip() argument
636 return ip - map__start(map) + map__pgoff(map); in map__dso_map_ip()
639 u64 map__dso_unmap_ip(const struct map *map, u64 ip) in map__dso_unmap_ip() argument
641 return ip + map__start(map) - map__pgoff(map); in map__dso_unmap_ip()
644 u64 identity__map_ip(const struct map *map __maybe_unused, u64 ip) in identity__map_ip()