]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - tools/perf/util/annotate.c
perf annotate: Add call target name if it is missing
[karo-tx-linux.git] / tools / perf / util / annotate.c
index 646e38dad01b848d5afedd910660f2c8ac2be5d8..bfc5a27597d60e1f09b7f95ef691e37608f8c694 100644 (file)
@@ -825,6 +825,22 @@ static int symbol__parse_objdump_line(struct symbol *sym, struct map *map,
                dl->ops.target.offset = dl->ops.target.addr -
                                        map__rip_2objdump(map, sym->start);
 
+       /*
+        * kcore has no symbols, so add the call target name if it is on the
+        * same map.
+        */
+       if (dl->ins && ins__is_call(dl->ins) && !dl->ops.target.name) {
+               struct symbol *s;
+               u64 ip = dl->ops.target.addr;
+
+               if (ip >= map->start && ip <= map->end) {
+                       ip = map->map_ip(map, ip);
+                       s = map__find_symbol(map, ip, NULL);
+                       if (s && s->start == ip)
+                               dl->ops.target.name = strdup(s->name);
+               }
+       }
+
        disasm__add(&notes->src->source, dl);
 
        return 0;