perf annotate: Validate addr in symbol__inc_addr_samples
[firefly-linux-kernel-4.4.55.git] / tools / perf / util / map.c
index 316aa0ab71224142ce9594000b0ade67f0e5fd1f..35ae56864e4f59625369941886b196438f107c99 100644 (file)
@@ -38,6 +38,7 @@ void map__init(struct map *self, enum map_type type,
        RB_CLEAR_NODE(&self->rb_node);
        self->groups   = NULL;
        self->referenced = false;
+       self->erange_warned = false;
 }
 
 struct map *map__new(struct list_head *dsos__list, u64 start, u64 len,
@@ -212,6 +213,21 @@ size_t map__fprintf(struct map *self, FILE *fp)
                       self->start, self->end, self->pgoff, self->dso->name);
 }
 
+size_t map__fprintf_dsoname(struct map *map, FILE *fp)
+{
+       const char *dsoname;
+
+       if (map && map->dso && (map->dso->name || map->dso->long_name)) {
+               if (symbol_conf.show_kernel_path && map->dso->long_name)
+                       dsoname = map->dso->long_name;
+               else if (map->dso->name)
+                       dsoname = map->dso->name;
+       } else
+               dsoname = "[unknown]";
+
+       return fprintf(fp, "%s", dsoname);
+}
+
 /*
  * objdump wants/reports absolute IPs for ET_EXEC, and RIPs for ET_DYN.
  * map->dso->adjust_symbols==1 for ET_EXEC-like cases.