|
@@ -191,7 +191,8 @@ static void __zero_source_counters(struct sym_entry *syme)
|
|
symbol__annotate_zero_histograms(sym);
|
|
symbol__annotate_zero_histograms(sym);
|
|
}
|
|
}
|
|
|
|
|
|
-static void record_precise_ip(struct sym_entry *syme, int counter, u64 ip)
|
|
|
|
|
|
+static void record_precise_ip(struct sym_entry *syme, struct map *map,
|
|
|
|
+ int counter, u64 ip)
|
|
{
|
|
{
|
|
struct annotation *notes;
|
|
struct annotation *notes;
|
|
struct symbol *sym;
|
|
struct symbol *sym;
|
|
@@ -205,8 +206,8 @@ static void record_precise_ip(struct sym_entry *syme, int counter, u64 ip)
|
|
if (pthread_mutex_trylock(¬es->lock))
|
|
if (pthread_mutex_trylock(¬es->lock))
|
|
return;
|
|
return;
|
|
|
|
|
|
- ip = syme->map->map_ip(syme->map, ip);
|
|
|
|
- symbol__inc_addr_samples(sym, syme->map, counter, ip);
|
|
|
|
|
|
+ ip = map->map_ip(map, ip);
|
|
|
|
+ symbol__inc_addr_samples(sym, map, counter, ip);
|
|
|
|
|
|
pthread_mutex_unlock(¬es->lock);
|
|
pthread_mutex_unlock(¬es->lock);
|
|
}
|
|
}
|
|
@@ -810,7 +811,7 @@ static void perf_event__process_sample(const union perf_event *event,
|
|
evsel = perf_evlist__id2evsel(top.evlist, sample->id);
|
|
evsel = perf_evlist__id2evsel(top.evlist, sample->id);
|
|
assert(evsel != NULL);
|
|
assert(evsel != NULL);
|
|
syme->count[evsel->idx]++;
|
|
syme->count[evsel->idx]++;
|
|
- record_precise_ip(syme, evsel->idx, ip);
|
|
|
|
|
|
+ record_precise_ip(syme, al.map, evsel->idx, ip);
|
|
pthread_mutex_lock(&top.active_symbols_lock);
|
|
pthread_mutex_lock(&top.active_symbols_lock);
|
|
if (list_empty(&syme->node) || !syme->node.next) {
|
|
if (list_empty(&syme->node) || !syme->node.next) {
|
|
static bool first = true;
|
|
static bool first = true;
|