aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorNamhyung Kim <namhyung.kim@lge.com>2013-02-06 00:57:15 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2013-02-06 16:09:25 -0500
commit51f27d1440cede5a413d279a20b38767b6f85097 (patch)
treeb51d9ee1ee674c3d13bc8d8dd34670c3c46cad57 /tools
parent2209001fd895e8932ae2c85bfca233758234499a (diff)
perf sort: Drop ip_[lr] arguments from _sort__sym_cmp()
Current _sort__sym_cmp() function is used for comparing symbols between two hist entries on symbol, symbol_from and symbol_to sort keys. Those functions pass addresses of symbols but it's meaningless since it gets over-written inside of the _sort__sym_cmp function to a start address of the symbol. So just get rid of them. This might cause a difference than prior output for branch stacks since it seems not using start address of the symbol but branch address. However AFAICS it'd be same as it gets overwritten anyway. Also remove redundant part of code in sort__sym_cmp(). Signed-off-by: Namhyung Kim <namhyung@kernel.org> Acked-by: Jiri Olsa <jolsa@redhat.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/r/1360130237-9963-1-git-send-email-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/perf/util/sort.c23
1 files changed, 6 insertions, 17 deletions
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 83336610faa9..03cabe5678d0 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -160,9 +160,10 @@ struct sort_entry sort_dso = {
160 160
161/* --sort symbol */ 161/* --sort symbol */
162 162
163static int64_t _sort__sym_cmp(struct symbol *sym_l, struct symbol *sym_r, 163static int64_t _sort__sym_cmp(struct symbol *sym_l, struct symbol *sym_r)
164 u64 ip_l, u64 ip_r)
165{ 164{
165 u64 ip_l, ip_r;
166
166 if (!sym_l || !sym_r) 167 if (!sym_l || !sym_r)
167 return cmp_null(sym_l, sym_r); 168 return cmp_null(sym_l, sym_r);
168 169
@@ -178,21 +179,10 @@ static int64_t _sort__sym_cmp(struct symbol *sym_l, struct symbol *sym_r,
178static int64_t 179static int64_t
179sort__sym_cmp(struct hist_entry *left, struct hist_entry *right) 180sort__sym_cmp(struct hist_entry *left, struct hist_entry *right)
180{ 181{
181 u64 ip_l, ip_r;
182
183 if (!left->ms.sym && !right->ms.sym) 182 if (!left->ms.sym && !right->ms.sym)
184 return right->level - left->level; 183 return right->level - left->level;
185 184
186 if (!left->ms.sym || !right->ms.sym) 185 return _sort__sym_cmp(left->ms.sym, right->ms.sym);
187 return cmp_null(left->ms.sym, right->ms.sym);
188
189 if (left->ms.sym == right->ms.sym)
190 return 0;
191
192 ip_l = left->ms.sym->start;
193 ip_r = right->ms.sym->start;
194
195 return _sort__sym_cmp(left->ms.sym, right->ms.sym, ip_l, ip_r);
196} 186}
197 187
198static int _hist_entry__sym_snprintf(struct map *map, struct symbol *sym, 188static int _hist_entry__sym_snprintf(struct map *map, struct symbol *sym,
@@ -383,8 +373,7 @@ sort__sym_from_cmp(struct hist_entry *left, struct hist_entry *right)
383 if (!from_l->sym && !from_r->sym) 373 if (!from_l->sym && !from_r->sym)
384 return right->level - left->level; 374 return right->level - left->level;
385 375
386 return _sort__sym_cmp(from_l->sym, from_r->sym, from_l->addr, 376 return _sort__sym_cmp(from_l->sym, from_r->sym);
387 from_r->addr);
388} 377}
389 378
390static int64_t 379static int64_t
@@ -396,7 +385,7 @@ sort__sym_to_cmp(struct hist_entry *left, struct hist_entry *right)
396 if (!to_l->sym && !to_r->sym) 385 if (!to_l->sym && !to_r->sym)
397 return right->level - left->level; 386 return right->level - left->level;
398 387
399 return _sort__sym_cmp(to_l->sym, to_r->sym, to_l->addr, to_r->addr); 388 return _sort__sym_cmp(to_l->sym, to_r->sym);
400} 389}
401 390
402static int hist_entry__sym_from_snprintf(struct hist_entry *self, char *bf, 391static int hist_entry__sym_from_snprintf(struct hist_entry *self, char *bf,