Lines Matching refs:map
105 static void map__init(struct map *map, u64 start, u64 end, u64 pgoff, in map__init() argument
108 map__set_start(map, start); in map__init()
109 map__set_end(map, end); in map__init()
110 map__set_pgoff(map, pgoff); in map__init()
111 assert(map__reloc(map) == 0); in map__init()
112 map__set_dso(map, dso__get(dso)); in map__init()
113 refcount_set(map__refcnt(map), 1); in map__init()
114 RC_CHK_ACCESS(map)->prot = prot; in map__init()
115 RC_CHK_ACCESS(map)->flags = flags; in map__init()
116 map__set_mapping_type(map, MAPPING_TYPE__DSO); in map__init()
117 assert(map__erange_warned(map) == false); in map__init()
118 assert(map__priv(map) == false); in map__init()
119 assert(map__hit(map) == false); in map__init()
122 struct map *map__new(struct machine *machine, u64 start, u64 len, in map__new()
127 struct map *result; in map__new()
128 RC_STRUCT(map) *map; in map__new()
132 map = zalloc(sizeof(*map)); in map__new()
133 if (ADD_RC_CHK(result, map)) { in map__new()
178 map->mapping_type = MAPPING_TYPE__IDENTITY; 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(dso) ? sizeof(struct kmap) : 0)); in map__new2()
227 if (ADD_RC_CHK(result, map)) { in map__new2()
235 bool __map__is_kernel(const struct map *map) in __map__is_kernel() argument
237 if (!dso__kernel(map__dso(map))) in __map__is_kernel()
239 return machine__kernel_map(maps__machine(map__kmaps((struct map *)map))) == map; in __map__is_kernel()
242 bool __map__is_extra_kernel_map(const struct map *map) in __map__is_extra_kernel_map() argument
244 struct kmap *kmap = __map__kmap((struct map *)map); in __map__is_extra_kernel_map()
249 bool __map__is_bpf_prog(const struct map *map) in __map__is_bpf_prog() argument
252 struct dso *dso = map__dso(map); in __map__is_bpf_prog()
266 bool __map__is_bpf_image(const struct map *map) in __map__is_bpf_image() argument
269 struct dso *dso = map__dso(map); in __map__is_bpf_image()
283 bool __map__is_ool(const struct map *map) in __map__is_ool() argument
285 const struct dso *dso = map__dso(map); in __map__is_ool()
290 bool map__has_symbols(const struct map *map) in map__has_symbols() argument
292 return dso__has_symbols(map__dso(map)); in map__has_symbols()
295 static void map__exit(struct map *map) in map__exit() argument
297 BUG_ON(refcount_read(map__refcnt(map)) != 0); in map__exit()
298 dso__zput(RC_CHK_ACCESS(map)->dso); in map__exit()
301 void map__delete(struct map *map) in map__delete() argument
303 map__exit(map); in map__delete()
304 RC_CHK_FREE(map); in map__delete()
307 void map__put(struct map *map) in map__put() argument
309 if (map && refcount_dec_and_test(map__refcnt(map))) in map__put()
310 map__delete(map); in map__put()
312 RC_CHK_PUT(map); in map__put()
315 void map__fixup_start(struct map *map) in map__fixup_start() argument
317 struct dso *dso = map__dso(map); in map__fixup_start()
324 map__set_start(map, sym->start); in map__fixup_start()
328 void map__fixup_end(struct map *map) in map__fixup_end() argument
330 struct dso *dso = map__dso(map); in map__fixup_end()
336 map__set_end(map, sym->end); in map__fixup_end()
342 int map__load(struct map *map) in map__load() argument
344 struct dso *dso = map__dso(map); in map__load()
351 nr = dso__load(dso, map); in map__load()
383 struct symbol *map__find_symbol(struct map *map, u64 addr) in map__find_symbol() argument
385 if (map__load(map) < 0) in map__find_symbol()
388 return dso__find_symbol(map__dso(map), addr); in map__find_symbol()
391 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
395 if (map__load(map) < 0) in map__find_symbol_by_name_idx()
398 dso = map__dso(map); in map__find_symbol_by_name_idx()
404 struct symbol *map__find_symbol_by_name(struct map *map, const char *name) in map__find_symbol_by_name() argument
408 return map__find_symbol_by_name_idx(map, name, &idx); in map__find_symbol_by_name()
411 struct map *map__clone(struct map *from) in map__clone()
413 struct map *result; in map__clone()
414 RC_STRUCT(map) *map; in map__clone()
415 size_t size = sizeof(RC_STRUCT(map)); in map__clone()
421 map = memdup(RC_CHK_ACCESS(from), size); in map__clone()
422 if (ADD_RC_CHK(result, map)) { in map__clone()
423 refcount_set(&map->refcnt, 1); in map__clone()
424 map->dso = dso__get(dso); in map__clone()
430 size_t map__fprintf(struct map *map, FILE *fp) in map__fprintf() argument
432 const struct dso *dso = map__dso(map); in map__fprintf()
435 map__start(map), map__end(map), map__pgoff(map), dso__name(dso)); in map__fprintf()
445 static size_t __map__fprintf_dsoname(struct map *map, bool print_off, FILE *fp) in __map__fprintf_dsoname() argument
449 const struct dso *dso = map ? map__dso(map) : NULL; in __map__fprintf_dsoname()
466 size_t map__fprintf_dsoname(struct map *map, FILE *fp) in map__fprintf_dsoname() argument
468 return __map__fprintf_dsoname(map, false, fp); in map__fprintf_dsoname()
471 size_t map__fprintf_dsoname_dsoff(struct map *map, bool print_off, u64 addr, FILE *fp) in map__fprintf_dsoname_dsoff() argument
473 const struct dso *dso = map ? map__dso(map) : NULL; in map__fprintf_dsoname_dsoff()
479 printed += __map__fprintf_dsoname(map, print_off, fp); in map__fprintf_dsoname_dsoff()
487 char *map__srcline(struct map *map, u64 addr, struct symbol *sym) in map__srcline() argument
489 if (map == NULL) in map__srcline()
492 return get_srcline(map__dso(map), map__rip_2objdump(map, addr), sym, true, true, addr); in map__srcline()
495 int map__fprintf_srcline(struct map *map, u64 addr, const char *prefix, in map__fprintf_srcline() argument
498 const struct dso *dso = map ? map__dso(map) : NULL; in map__fprintf_srcline()
502 char *srcline = map__srcline(map, addr, NULL); in map__fprintf_srcline()
527 u64 map__rip_2objdump(struct map *map, u64 rip) in map__rip_2objdump() argument
529 struct kmap *kmap = __map__kmap(map); in map__rip_2objdump()
530 const struct dso *dso = map__dso(map); in map__rip_2objdump()
541 struct map *kernel_map = machine__kernel_map(machine); in map__rip_2objdump()
544 map = kernel_map; in map__rip_2objdump()
552 return rip - map__pgoff(map); in map__rip_2objdump()
557 return map__unmap_ip(map, rip) - map__reloc(map); in map__rip_2objdump()
572 u64 map__objdump_2mem(struct map *map, u64 ip) in map__objdump_2mem() argument
574 const struct dso *dso = map__dso(map); in map__objdump_2mem()
577 return map__unmap_ip(map, ip); in map__objdump_2mem()
580 return map__unmap_ip(map, ip + map__pgoff(map)); in map__objdump_2mem()
583 return map__unmap_ip(map, ip - dso__text_offset(dso)); in map__objdump_2mem()
585 return ip + map__reloc(map); in map__objdump_2mem()
589 u64 map__objdump_2rip(struct map *map, u64 ip) in map__objdump_2rip() argument
591 const struct dso *dso = map__dso(map); in map__objdump_2rip()
597 return ip + map__pgoff(map); in map__objdump_2rip()
602 return map__map_ip(map, ip + map__reloc(map)); in map__objdump_2rip()
605 bool map__contains_symbol(const struct map *map, const struct symbol *sym) in map__contains_symbol() argument
607 u64 ip = map__unmap_ip(map, sym->start); in map__contains_symbol()
609 return ip >= map__start(map) && ip < map__end(map); in map__contains_symbol()
612 struct kmap *__map__kmap(struct map *map) in __map__kmap() argument
614 const struct dso *dso = map__dso(map); in __map__kmap()
618 return (struct kmap *)(&RC_CHK_ACCESS(map)[1]); in __map__kmap()
621 struct kmap *map__kmap(struct map *map) in map__kmap() argument
623 struct kmap *kmap = __map__kmap(map); in map__kmap()
630 struct maps *map__kmaps(struct map *map) in map__kmaps() argument
632 struct kmap *kmap = map__kmap(map); in map__kmaps()