diff options
Diffstat (limited to 'tools/perf/util/hist.c')
| -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 2ec4b60aff6..9f6d630d531 100644 --- a/tools/perf/util/hist.c +++ b/tools/perf/util/hist.c @@ -256,6 +256,18 @@ static struct hist_entry *add_hist_entry(struct hists *hists,  		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;  		}  |