linux/tools/perf
Frederic Weisbecker af0a6fa463 perf tools: Fix missing top level callchain
While recursively printing the branches of each callchains, we
forget to display the root. It is never printed.

Say we have:

    symbol
    f1
    f2
     |
     -------- f3
     |        f4
     |
     ---------f5
              f6

Actually we never see that, instead it displays:

    symbol
    |
    --------- f3
    |         f4
    |
    --------- f5
              f6

However f1 is always the same than "symbol" and if we are
sorting by symbols first then "symbol", f1 and f2 will be well
aligned like in the above example, so displaying f1 looks
redundant here.

But if we are sorting by something else first (dso, comm,
etc...), displaying f1 doesn't look redundant but rather
necessary because the symbol is not well aligned anymore with
its callchain:

     comm     dso        symbol
     f1
     f2
     |
     --------- [...]

And we want the callchain to be obvious.
So we fix the bug by printing the root branch, but we also
filter its first entry if we are sorting by symbols first.

Reported-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
LKML-Reference: <1256246604-17156-1-git-send-email-fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-10-23 07:55:16 +02:00
..
Documentation perf timechart: Add a process filter 2009-10-20 07:55:50 +02:00
util perf tools: Fix missing top level callchain 2009-10-23 07:55:16 +02:00
.gitignore perf tools: .gitignore += perf*.html 2009-09-24 14:01:22 +02:00
builtin-annotate.c perf annotate: Remove requirement of passing a symbol name 2009-10-20 21:12:58 +02:00
builtin-help.c perf: Enable more compiler warnings 2009-08-16 10:47:47 +02:00
builtin-list.c perf list: Fix large list output by using the pager 2009-08-13 09:05:48 +02:00
builtin-record.c perf tools: Introduce bitmask'ed additional headers 2009-10-19 09:26:35 +02:00
builtin-report.c perf tools: Fix missing top level callchain 2009-10-23 07:55:16 +02:00
builtin-sched.c perf tools: Use kernel bitmap library 2009-10-19 09:26:34 +02:00
builtin-stat.c perf stat: Count branches first 2009-10-19 13:36:32 +02:00
builtin-timechart.c perf timechart: Add a process filter 2009-10-20 07:55:50 +02:00
builtin-top.c perf top: Fix symbol annotation 2009-10-20 21:12:59 +02:00
builtin-trace.c perf tools: Move dereference after NULL test 2009-10-17 09:29:10 +02:00
builtin.h perf: Add the timechart tool 2009-09-19 11:42:13 +02:00
command-list.txt perf: Add timechart help text and add timechart to "perf help" 2009-09-19 18:57:53 +02:00
CREDITS perf_counter tools: Add CREDITS file for Git contributors 2009-06-24 19:54:29 +02:00
design.txt perf_event: Provide vmalloc() based mmap() backing 2009-10-06 14:21:50 +02:00
Makefile perf tools: Add 'make DEBUG=1' to remove the -O6 cflag 2009-10-21 13:39:57 +02:00
perf.c perf tools: Do not manually count string lengths 2009-10-13 11:55:31 +02:00
perf.h perf: Do the big rename: Performance Counters -> Performance Events 2009-09-21 14:28:04 +02:00