Age | Commit message (Collapse) | Author | Files | Lines |
|
It figures out the direction and draws downwards arrows too if that is
the case.
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
The counterpart of 'ret' instructions.
Suggested-by: Linus Torvalds <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
Annotation improvements:
Now the default annotate browser uses a much more compact format, implementing
suggestions made made by several people, notably Linus.
Here is part of the new __list_del_entry() annotation:
__list_del_entry
8.47 │ push %rbp
8.47 │ mov (%rdi),%rdx
20.34 │ mov $0xdead000000100100,%rcx
3.39 │ mov 0x8(%rdi),%rax
0.00 │ mov %rsp,%rbp
1.69 │ cmp %rcx,%rdx
0.00 │ je 43
1.69 │ mov $0xdead000000200200,%rcx
3.39 │ cmp %rcx,%rax
0.00 │ je a3
5.08 │ mov (%rax),%r8
18.64 │ cmp %r8,%rdi
0.00 │ jne 84
1.69 │ mov 0x8(%rdx),%r8
25.42 │ cmp %r8,%rdi
0.00 │ jne 65
1.69 │ mov %rax,0x8(%rdx)
0.00 │ mov %rdx,(%rax)
0.00 │ leaveq
0.00 │ retq
0.00 │ 43: mov %rdx,%r8
0.00 │ mov %rdi,%rcx
0.00 │ mov $0xffffffff817cd6a8,%rdx
0.00 │ mov $0x31,%esi
0.00 │ mov $0xffffffff817cd6e0,%rdi
0.00 │ xor %eax,%eax
0.00 │ callq ffffffff8104eab0 <warn_slowpath_fmt>
0.00 │ leaveq
0.00 │ retq
0.00 │ 65: mov %rdi,%rcx
0.00 │ mov $0xffffffff817cd780,%rdx
0.00 │ mov $0x3a,%esi
0.00 │ mov $0xffffffff817cd6e0,%rdi
0.00 │ xor %eax,%eax
0.00 │ callq ffffffff8104eab0 <warn_slowpath_fmt>
0.00 │ leaveq
0.00 │ retq
The infrastructure is there to provide formatters for any instruction,
like the one I'll do for call functions to elide the address.
Further fixes on top of the first iteration:
- Sometimes a jump points to an offset with no instructions, make the
mark jump targets function handle that, for now just ignoring such
jump targets, more investigation is needed to figure out how to cope
with that.
- Handle jump targets that are outside the function, for now just don't
try to draw the connector arrow, right thing seems to be to mark this
jump with a -> (right arrow) and handle it like a callq.
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
|
|
As described in the previous patch. Next step is to properly label those
jumps by using a -> arrow, i.e. not backwards/forwards, and allow the
user to navigate to this other function when enter or -> is pressed.
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
I.e. jumps that go to code outside the current function, that is denoted
in objdump -dS as:
399f877a9f: jne 399f87bcf4 <_L_lock_5154>
I.e. without the + after the name of the current function, like in:
399f877aa5: jmp 399f877ab2 <_int_free+0x412>
The browser will use that info to avoid drawing connectors to the start
of the function, since ops.target.addr was zero.
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
As libtraceevent will be a library, having struct record is far
too generic of a name to use. Renaming it to be consistent with the
rest of the functions will be a better long term solution.
Signed-off-by: Steven Rostedt <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Arun Sharma <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
|
|
Fix memset(ptr, 0, sizeof(ptr)) to memset(ptr, 0, sizeof(*ptr))
Signed-off-by: Steven Rostedt <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Arun Sharma <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
|
|
Add multiply and divide operations in the printk format.
Signed-off-by: Steven Rostedt <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Arun Sharma <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
|
|
The '+' opcode is not supported in the arguments for the print format.
This patch adds support for it.
Cc: Michael Rubin <[email protected]>
Cc: David Sharp <[email protected]>
Signed-off-by: Vaibhav Nagarnaik <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Steven Rostedt <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Arun Sharma <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
|
|
The pevent_free() should ack like other free()s and allow a
NULL pointer to be passed to it which makes error handling a bit
easier for the users of pevent_free().
Signed-off-by: Steven Rostedt <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Arun Sharma <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
|
|
If an invalid opcode is encountered in parsing event print format, the
trace-cmd calls exit() without parsing any other events.
This patch adds handling for such an error where the get_op_prio() is
called. If the return value is -1, then the event print format parsing
is skipped and parsing continues.
Cc: Michael Rubin <[email protected]>
Cc: David Sharp <[email protected]>
Signed-off-by: Vaibhav Nagarnaik <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Steven Rostedt <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Arun Sharma <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
|
|
If an invalid opcode is encountered, trace-cmd exits with an error.
Instead it can be treated as a soft error where the event's print format
is not parsed and its binary data is dumped out.
This patch adds a return value to arg_num_eval() function to indicate if
the parsing was successful. If not, then the error is considered soft
and the parsing of the offending event fails.
Cc: Michael Rubin <[email protected]>
Cc: David Sharp <[email protected]>
Signed-off-by: Vaibhav Nagarnaik <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Steven Rostedt <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Arun Sharma <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
|
|
This is a forward port of commit 5660ce34241ab
perf tools: Correct size given to memset
written by Julia Lawall and forward ported by Steven Rostedt.
Signed-off-by: Julia Lawall <[email protected]>
Signed-off-by: Steven Rostedt <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Arun Sharma <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
|
|
This is a port of commit eb9a42caa7a92
perf trace: Add flag/symbolic format_flags
of the old trace-event-parse.c to the new event-parse.c that
was written by Tom Zanussi and forward ported by Steven Rostedt.
Signed-off-by: Tom Zanussi <[email protected]>
Signed-off-by: Steven Rostedt <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Arun Sharma <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
|
|
libtraceevent library prints out in usecs but perf wants to print out
in nsecs. Add a flag that lets the user decide to print out in usec
or nsec times.
Signed-off-by: Steven Rostedt <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Arun Sharma <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
|
|
The event parsing code in perf was originally copied from trace-cmd
but never was kept up-to-date with the changes that was done there.
The trace-cmd libtraceevent.a code is much more mature than what is
currently in perf.
This updates the code to use wrappers to handle the calls to the
new event parsing code. The new code requires a handle to be pass
around, which removes the global event variables and allows
more than one event structure to be read from different files
(and different machines).
But perf still has the old global events and the code throughout
perf does not yet have a nice way to pass around a handle.
A global 'pevent' has been made for perf and the old calls have
been created as wrappers to the new event parsing code that uses
the global pevent.
With this change, perf can later incorporate the pevent handle into
the perf structures and allow more than one file to be read and
compared, that contains different events.
Signed-off-by: Steven Rostedt <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Arun Sharma <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
|
|
Some of the util functions of libtraceevent.a conflict with perf,
such as die(), warning() and others. Move them into event-util.h
that is not included by the perf tools.
Also, as perf compiles with 'bool' the filter_arg->bool needs to
be renamed to filter_arg->boolean.
Signed-off-by: Steven Rostedt <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Arun Sharma <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
|
|
Have building perf also build libtraceevent.a. Currently, perf does
not use the code within libtraceevent.a, but it soon will.
Signed-off-by: Steven Rostedt <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Arun Sharma <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
|
|
We were using ins_ops->target for callq addresses and jump offsets,
disambiguate by having ins_ops->target.addr and ins_ops->target.offset.
For jumps we'll need both to fixup lines that don't have an offset on
the <> part.
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
In annotate_browser__mark_jump_targets
702 dlt = browser->offsets[dl->ops.target];
703 bdlt = disasm_line__browser(dlt);
704 bdlt->jump_target = true;
705 }
706
707 }
(gdb) p size
$5 = 2415
(gdb) p offset
$6 = 140
(gdb) p dl->ops.target
$7 = 143
(gdb) p browser->offsets[143]
$8 = (struct disasm_line *) 0x0
(gdb) p dl->name
$9 = 0x2363bd0 "je"
(gdb)
Really strange, the code assumed that at the jump target we would have
an assembly line, but only in the previous instruction offset we have a
'lock':
(gdb) p browser->offsets[144]
$10 = (struct disasm_line *) 0x0
(gdb) p browser->offsets[142]
$11 = (struct disasm_line *) 0x27bd620
(gdb) p browser->offsets[142]->name
$12 = 0x237a8a0 "lock"
(gdb)
I'll study this more, but for now I'll just check if there is a
disasm_line at dl->ops.target, i.e. a valid jump target.
Reported-by: Hagen Paul Pfeifer <[email protected]>
Reported-by: Ingo Molnar <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
Copy over the files from trace-cmd to the Linux tools directory
such that applications like perf and latencytrace can use the
more advanced parsing code.
Because some of the file names of perf conflict with trace-cmd file
names, the trace-cmd files have been renamed as follows:
parse-events.c ==> event-parse.c
parse-events.h ==> event-parse.h
utils.h ==> event-utils.h
The files have been updated to handle the changes to the header files
but other than that, they are identical to what was in the trace-cmd
repository. The history of these files, including authorship is
available at the git repo:
git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git
The Makefile was also copied over, but most of it was removed to
focus on the parse-events code first. The parts of the Makefile for
the plugins have also been removed, but will be added back when the
plugin code is copied over as well. But that may be in its own
separate directory.
Signed-off-by: Steven Rostedt <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Arun Sharma <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
|
|
Move the trace-event-parse.c code that originally came from trace-cmd into
their own files. The new file will be called trace-parse-events.c, as
the name of trace-cmd's file was parse-events.c too, but it conflicted
with the parse-events.c file in perf that parses the command line.
This tries to update the code with mimimal changes.
Perf specific code stays in the trace-event-parse.[ch] files and
the common parsing code is now in trace-parse-events.c and
trace-parse-events.h.
Signed-off-by: Steven Rostedt <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Arun Sharma <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
|
|
Merge v3.4-rc4 - we were on -rc2 before.
Signed-off-by: Ingo Molnar <[email protected]>
|
|
Simple algorithm, just look for the next backward jump that points to
before the cursor.
Then draw an arrow connecting the jump to its target.
Do this as you move the cursor, entering/exiting possible loops.
Ex (graph chars replaced to avoid mail encoding woes):
avc_has_perm_flags
0.00 | nopl 0x0(%rax)
5.36 |+-> 68: mov (%rax),%rax
5.15 || test %rax,%rax
0.00 || v je 130
2.96 || 74: cmp -0x20(%rax),%ebx
47.38 || lea -0x20(%rax),%rcx
0.28 || ^ jne 68
3.16 || cmp -0x18(%rax),%dx
0.00 |+------^ jne 68
4.92 | cmp 0x4(%rcx),%r13d
0.00 | v jne 68
1.15 | test %rcx,%rcx
0.00 | v je 130
Suggested-by: Linus Torvalds <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
The if branch is completely unnecessary since 'realloc' handles NULL
pointers for the first parameter.
This is really only a cleanup and submitted mainly to prevent
proliferation of bad practices.
Signed-off-by: Ulrich Drepper <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Robert Richter <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
To save typing on the switch char set slang stuff.
It also helps in removing more slang direct calls, wrapping them at the
ui_browser level, where at some point I'll try to implement those in
terms of GTK+.
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
By just returning to the previous function being annotated or to the top
main screen when popping out the base of the annotation stack.
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
Just use a left arrow prefixing retqs.
Requested-by: Linus Torvalds <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
Using up/down arrows just before the instruction, replacing the actual chars
with approximations to avoid mail encoding snafus:
avtab_search_node
0.00 | push %rbp
0.00 | mov %rsp,%rbp
0.00 | callq mcount
0.00 | movzwl 0x6(%rsi),%edx
0.00 | and $0x7fff,%dx
0.00 | test %rdi,%rdi
0.00 | v jne 20
0.00 | 17: xor %eax,%eax
0.00 | 19: leaveq
0.00 | retq
0.00 | nopl 0x0(%rax,%rax,1)
0.00 | 20: mov (%rdi),%rax
0.00 | test %rax,%rax
0.00 | ^ je 17
0.00 | movzwl (%rsi),%ecx
0.00 | movzwl 0x2(%rsi),%r9d
0.00 | movzwl 0x4(%rsi),%r8d
0.00 | movzwl %cx,%esi
0.00 | movzwl %r9w,%r10d
0.00 | shl $0x9,%esi
0.00 | lea (%rsi,%r10,4),%esi
0.00 | lea (%r8,%rsi,1),%esi
0.00 | and 0x10(%rdi),%si
0.00 | movzwl %si,%esi
0.00 | mov (%rax,%rsi,8),%rax
0.00 | test %rax,%rax
0.00 | ^ je 19
0.00 | nopw 0x0(%rax,%rax,1)
0.00 | 60: cmp %cx,(%rax)
0.00 | v jne 7e
0.00 | cmp %r9w,0x2(%rax)
0.00 | v jne 7e
0.00 | cmp %r8w,0x4(%rax)
0.00 | v jne 79
0.00 | test %dx,0x6(%rax)
0.00 | ^ jne 19
0.00 | 79: cmp %r8w,0x4(%rax)
93.04 | 7e:^ ja 17
2.53 | mov 0x10(%rax),%rax
4.43 | test %rax,%rax
0.00 | ^ jne 60
0.00 | leaveq
0.00 | retq
Next low hanging fruit is to use left arrow for retqs, then work on clearling
marking loops.
Requested-by: Linus Torvalds <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
0.00 | callq ffffffff8112f190 <__mod_zone_page_state>
Becomes:
0.00 | callq __mod_zone_page_state
But if you press 'o' it gets verbose, i.e. as in objdump -dS:
0.00 | ffffffff8116bdda: callq ffffffff8112f190 <__mod_zone_page_state>
Requested-by: Linus Torvalds <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
We need to cope with things like:
$ objdump -d --no-show-raw -S -C /lib/modules/3.4.0-rc2+/build/vmlinux
<SNIP>
ffffffff8125ec60 <copy_user_generic_unrolled>:
* Output:
* eax uncopied bytes or 0 if successful.
*/
ENTRY(copy_user_generic_unrolled)
CFI_STARTPROC
cmpl $8,%edx
ffffffff8125ec60: cmp $0x8,%edx
jb 20f /* less then 8 bytes, go to byte copy loop */
ffffffff8125ec63: jb ffffffff8125ecf5 <copy_user_generic_unrolled+0x95>
ALIGN_DESTINATION
<SNIP>
ffffffff8125ec8d: je ffffffff8125ecd9 <copy_user_generic_unrolled+0x79>
1: movq (%rsi),%r8
ffffffff8125ec8f: mov (%rsi),%r8
2: movq 1*8(%rsi),%r9
ffffffff8125ec92: mov 0x8(%rsi),%r9
3: movq 2*8(%rsi),%r10
ffffffff8125ec96: mov 0x10(%rsi),%r10
4: movq 3*8(%rsi),%r11
<SNIP>
Probably expect that the length of the addr field be the same...
Lazy move for now, back to supporting suppressing the address on callq lines...
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
So that the ins_ops can handle them in a single place, instead of adding
more and more functions or ins_ops parameters.
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
When loading symbols from DSO we check multiple paths of DSO binary
until we succeed to load symbols ('.symtab' section). Once symbols are
read we try to load also plt symbols.
During the reading of plt symbols, the dso file is reopened from
location given by dso->long_name. This could be wrong in case we want
process buildid binaries.
The change is to make the plt symbols being read from the DSO path, that
normal symbols were read from.
Signed-off-by: Jiri Olsa <[email protected]>
Cc: Corey Ashford <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
[ committer note: moved dso to be the first parameter of that function ]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
Taken from binutils:
[acme@sandy binutils-2.22]$ grep ^j opcodes/i386-opc.tbl | cut -d, -f1 | sort -u
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
Where we had ':'.
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
But now we have a lot of space on the right...
Perhaps we should add a "Trending on G+" gizmo... ;-)
Requested-by: Linus Torvalds <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
Find out at browser startup the max width and use it when rendering jump
labels on the screen.
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
This:
0.00 : ffffffff8116bd00: lock btsl $0x0,(%r12)
100.00 : ffffffff8116bd07: sbb %eax,%eax
0.00 : ffffffff8116bd09: test %eax,%eax
0.00 : ffffffff8116bd0b: jne ffffffff8116bf5f <__mem_cgroup_commit_charge+0x28f>
0.00 : ffffffff8116bd11: mov (%r12),%rax
0.00 : ffffffff8116bd15: test $0x2,%al
0.00 : ffffffff8116bd17: jne ffffffff8116bf6e <__mem_cgroup_commit_charge+0x29e>
0.00 : ffffffff8116bd1d: test %r9b,%r9b
0.00 : ffffffff8116bd20: jne ffffffff8116be30 <__mem_cgroup_commit_charge+0x160>
0.00 : ffffffff8116bd26: xor %eax,%eax
0.00 : ffffffff8116bd28: mov %r13,0x8(%r12)
0.00 : ffffffff8116bd2d: lock orb $0x2,(%r12)
0.00 : ffffffff8116bd33: test %r9b,%r9b
0.00 : ffffffff8116bd36: je ffffffff8116bdf3 <__mem_cgroup_commit_charge+0x123>
Becomes:
0.00 : 30: lock btsl $0x0,(%r12)
100.00 : sbb %eax,%eax
0.00 : test %eax,%eax
0.00 : jne 28f
0.00 : mov (%r12),%rax
0.00 : test $0x2,%al
0.00 : jne 29e
0.00 : test %r9b,%r9b
0.00 : jne 160
0.00 : 56: xor %eax,%eax
0.00 : 58: mov %r13,0x8(%r12)
0.00 : lock orb $0x2,(%r12)
0.00 : test %r9b,%r9b
0.00 : je 123
I.e. We trow away all those useless addresses and keep just jump labels.
Suggested-by: Linus Torvalds <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
Fixing some off by one cases in the process.
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
Its not just an rb_node, it carries extra state that is private to the
browser. And will carry some more in the next patches.
Better name it browser_disasm_line, i.e. something derived from
disasm_line, that specializes it.
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
And implement the jump one, where if the operands string is not passed,
a compact form that uses just the target address is used.
Right now this is toggled via the 'o' option in the annotate browser,
switching from:
0.00 : ffffffff811661e8: je ffffffff81166204 <mem_cgroup_count_vm_event+0x44>
0.00 : ffffffff811661ea: cmp $0xb,%esi
0.00 : ffffffff811661ed: je ffffffff811661f8 <mem_cgroup_count_vm_event+0x38>
To:
0.00 : 28: je 44
0.00 : 2a: cmp $0xb,%esi
0.00 : 2d: je 38
Suggested-by: Linus Torvalds <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
No need to do it everytime the user presses enter/-> on a call
instruction.
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
So that at disassembly time we parse targets, etc.
Supporting jump instructions initially, call functions are next.
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
They were dropped during conversion of event parser. Add test case to
make sure this will not happen again.
Signed-off-by: Gleb Natapov <[email protected]>
Acked-by: Jiri Olsa <[email protected]>
Cc: Avi Kivity <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Jiri Olsa <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
The flex and bison tools generate arch-independent C code so its
binaries are not prefixed with the target-arch prefix. With this patch
the Linux 3.4-rc2 can be successfuly build on OE-Core.
Signed-off-by: Otavio Salvador <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
No need to reparse it everytime.
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
For lines with instructions find the name and operands, breaking those
tokens for consumption by the browser.
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
We want to move away from using 'objdump -dS' as the only disassembler
supported.
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
While testing https://lkml.org/lkml/2012/4/10/123 I hit this crash:
(gdb) bt
0 0x000000000042000f in __cmd_report (rep=0x7fff80cec580) at builtin-report.c:380
1 cmd_report (argc=0, argv=<optimized out>, prefix=<optimized out>) at builtin-report.c:759
2 0x0000000000414513 in run_builtin (p=0x7724a8, argc=3, argv=0x7fff80ceca70) at perf.c:273
3 0x0000000000413d41 in handle_internal_command (argv=0x7fff80ceca70, argc=3) at perf.c:345
4 run_argv (argv=0x7fff80cec880, argcp=0x7fff80cec88c) at perf.c:389
5 main (argc=3, argv=0x7fff80ceca70) at perf.c:487
kernel_map can be NULL, so need to handle it while dumping a warning
to user.
v2:
- fixed RB_EMPTY_ROOT check -- desc takes the altnerative output when RB_EMPTY_ROOT is false.
Signed-off-by: David Ahern <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Cc: Namhyung Kim <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
|
|
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent
Pull perf tooling fixes from Arnaldo Carvalho de Melo:
. Properly handle ~/.debug, the build id cache, when it is a symlink,
fix from Chanho Park
. Fixes for the parser generation process, from Jiri Olsa and Namhyung Kim
. Fix build when NO_GTK2 is specified, From Stephane Eranian
. When a machine is not found, bump the relevant error stat but return
0, so that we correctly move to the next perf event. Fix from Jiri Olsa
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
|