diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/util/hist.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c index 627a02e03c57..d25fded72a11 100644 --- a/tools/perf/util/hist.c +++ b/tools/perf/util/hist.c @@ -158,6 +158,18 @@ struct hist_entry *__hists__add_entry(struct hists *self, if (!cmp) { he->period += period; ++he->nr_events; + + /* If the map of an existing hist_entry has + * become out-of-date due to an exec() or + * similar, update it. Otherwise we will + * mis-adjust symbol addresses when computing + * the history counter to increment. + */ + if (he->ms.map != entry->ms.map) { + he->ms.map = entry->ms.map; + if (he->ms.map) + he->ms.map->referenced = true; + } goto out; } |