Masami Hiramatsu
124bb83cd7
perf probe: Add bitfield member support
...
Add bitfield member accessing support to probe arguments.
Suggested-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net >
Cc: 2nddept-manager@sdl.hitachi.co.jp
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
LKML-Reference: <20110204125211.9507.60265.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
[ committer note: Fixed up '%lu' use for return of BYTES_TO_BITS ('%zd') ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2011-02-07 12:48:48 -02:00
Franck Bui-Huu
f50c2169bd
perf probe: Rewrite find_lazy_match_lines() by using getline(3)
...
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Cc: lkml <linux-kernel@vger.kernel.org >
LKML-Reference: <m3d3o185u1.fsf@gmail.com >
Signed-off-by: Franck Bui-Huu <fbuihuu@gmail.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2011-02-07 09:12:42 -02:00
Masami Hiramatsu
5069ed86be
perf probe: Enable to put probe inline function call site
...
Enable to put probe inline function call site. This will increase line-based
probe-ability.
<Without this patch>
$ ./perf probe -L schedule:48
<schedule:48>
pre_schedule(rq, prev);
50 if (unlikely(!rq->nr_running))
idle_balance(cpu, rq);
put_prev_task(rq, prev);
next = pick_next_task(rq);
56 if (likely(prev != next)) {
sched_info_switch(prev, next);
trace_sched_switch_out(prev, next);
perf_event_task_sched_out(prev, next);
<With this patch>
$ ./perf probe -L schedule:48
<schedule:48>
48 pre_schedule(rq, prev);
50 if (unlikely(!rq->nr_running))
51 idle_balance(cpu, rq);
53 put_prev_task(rq, prev);
54 next = pick_next_task(rq);
56 if (likely(prev != next)) {
57 sched_info_switch(prev, next);
58 trace_sched_switch_out(prev, next);
59 perf_event_task_sched_out(prev, next);
Cc: 2nddept-manager@sdl.hitachi.co.jp
Cc: Franck Bui-Huu <fbuihuu@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
LKML-Reference: <20110113124604.22426.48873.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2011-01-24 10:57:03 -02:00
Masami Hiramatsu
4cc9cec636
perf probe: Introduce lines walker interface
...
Introduce die_walk_lines() for walking on the line list of given die, and use
it in line_range finder and probe point finder.
Cc: 2nddept-manager@sdl.hitachi.co.jp
Cc: Franck Bui-Huu <fbuihuu@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
LKML-Reference: <20110113124558.22426.48170.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
[ committer note: s/%ld/%zd/ for a size_t nlines var that broke f14 x86 build]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2011-01-24 10:49:52 -02:00
Ingo Molnar
cc22219699
Merge commit 'v2.6.37-rc8' into perf/core
...
Merge reason: pick up latest -rc.
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2011-01-04 08:08:54 +01:00
Masami Hiramatsu
3b4694de35
perf probe: Fix to support libdwfl older than 0.148
...
Since the libdwfl library before 0.148 fails to analyze live kernel debuginfo,
'perf probe --list' compiled with those old libdwfl sometimes crashes.
To avoid that bug, perf probe does not use libdwfl's live kernel analysis
routine when it is compiled with older libdwfl.
Side effect: perf with older libdwfl doesn't support listing probe in modules
with source code line. Those could be shown by symbol+offset.
Cc: 2nddept-manager@sdl.hitachi.co.jp
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
LKML-Reference: <20101217131218.24123.62424.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-12-21 19:24:57 -02:00
Masami Hiramatsu
0e43e5d222
perf probe: Cleanup messages
...
Add new lines for error or debug messages, change dwarf related words to more
generic words (or just removed).
Cc: 2nddept-manager@sdl.hitachi.co.jp
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
LKML-Reference: <20101217131211.24123.40437.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-12-21 20:20:58 -02:00
Arnaldo Carvalho de Melo
66a301c380
perf probe: Fix format specified for Dwarf_Off parameter
...
Fixing the following error on 32-bit arches:
util/probe-finder.c: In function ‘line_range_search_cb’:
util/probe-finder.c:1734: error: format ‘%lx’ expects type ‘long
unsigned int’, but argument 3 has type ‘Dwarf_Off’
Reported-by: Ingo Molnar <mingo@elte.hu >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-23 15:31:20 -02:00
Masami Hiramatsu
469b9b8848
perf probe: Add basic module support
...
Add basic module probe support on perf probe. This introduces "--module
<MODNAME>" option to perf probe for putting probes and showing lines and
variables in the given module.
Currently, this supports only probing on running modules. Supporting off-line
module probing is the next step.
e.g.)
[show lines]
# ./perf probe --module drm -L drm_vblank_info
<drm_vblank_info:0>
0 int drm_vblank_info(struct seq_file *m, void *data)
1 {
struct drm_info_node *node = (struct drm_info_node *) m->private
3 struct drm_device *dev = node->minor->dev;
...
[show vars]
# ./perf probe --module drm -V drm_vblank_info:3
Available variables at drm_vblank_info:3
@<drm_vblank_info+20>
(unknown_type) data
struct drm_info_node* node
struct seq_file* m
[put a probe]
# ./perf probe --module drm drm_vblank_info:3 node m
Add new event:
probe:drm_vblank_info (on drm_vblank_info:3 with node m)
You can now use it on all perf tools, such as:
perf record -e probe:drm_vblank_info -aR sleep 1
[list probes]
# ./perf probe -l
probe:drm_vblank_info (on drm_vblank_info:3@drivers/gpu/drm/drm_info.c with ...
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20101021101341.3542.71638.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-21 16:11:44 -02:00
Masami Hiramatsu
fb8c5a56c7
perf probe: Show accessible global variables
...
Add --externs for allowing --vars to show accessible global (externally
defined) variables from a given probe point too.
This will give you a hint which globals can be accessible from the probe point.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20101021101335.3542.31003.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-21 16:06:42 -02:00
Masami Hiramatsu
cf6eb489e5
perf probe: Show accessible local variables
...
Add -V (--vars) option for listing accessible local variables at given probe
point. This will help finding which local variables are available for event
arguments.
e.g.)
# perf probe -V call_timer_fn:23
Available variables at call_timer_fn:23
@<run_timer_softirq+345>
function_type* fn
int preempt_count
long unsigned int data
struct list_head work_list
struct list_head* head
struct timer_list* timer
struct tvec_base* base
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20101021101323.3542.40282.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-21 15:59:06 -02:00
Masami Hiramatsu
632941c4f8
perf probe: Support global variables
...
Allow users to set external defined global variables as event arguments (e.g.
jiffies).
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
LKML-Reference: <20101021101316.3542.1999.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-21 15:58:27 -02:00
Masami Hiramatsu
378eeaad3e
perf probe: Fix local variable searching loop
...
Fix to check the die's address and search into the die only if it has given
address.
This will avoid finding wrong variables in wrong basic block.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
LKML-Reference: <20101021101309.3542.46434.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-21 15:58:05 -02:00
Masami Hiramatsu
4046b8bb5f
perf probe: Fix type searching
...
Fix to get the actual type die of variables by using dwarf_attr_integrate()
which gets attribute from die even if the type die is connected by
DW_AT_abstract_origin.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
LKML-Reference: <20101021101302.3542.38549.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-21 15:57:08 -02:00
Masami Hiramatsu
367e94c100
perf probe: Fix handling of arguments names
...
Don't make argument names from raw parameters (means the parameters are written
in kprobe-tracer syntax), because the argument syntax may include special
characters. Just leave it, then kprobe-tracer gives a new name.
Reported-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20100827113859.22882.75598.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-09-08 11:47:19 -03:00
Masami Hiramatsu
04ddd04b04
perf probe: Fix return probe support
...
Fix a bug to support %return probe syntax again. Previous commit 4235b04
has a
bug which disables the %return syntax on perf probe.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20100827113852.22882.87447.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-09-08 11:47:18 -03:00
Masami Hiramatsu
58432e1f36
perf probe: Fix to copy the type for raw parameters
...
Copy type field if it is for raw parameters.
Without this fix, perf probe drops the type if user passes it
for raw parameters (e.g. %ax:u32 will be converted to %ax).
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
LKML-Reference: <4C577AD8.50808@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-08-06 16:25:56 -03:00
Andrea Gelmini
7935f65f77
perf probe: Remove duplicated #include
...
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <1281016299-23958-15-git-send-email-andrea.gelmini@gelma.net >
Signed-off-by: Andrea Gelmini <andrea.gelmini@gelma.net >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-08-05 19:38:02 -03:00
Srikar Dronamraju
0e60836bbd
perf probe: Rename common fields/functions from kprobe to probe.
...
As a precursor for perf to support uprobes, rename fields/functions
that had kprobe in their name but can be shared across perf-kprobes
and perf-uprobes to probe.
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com >
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: Christoph Hellwig <hch@infradead.org >
Cc: "Frank Ch. Eigler" <fche@redhat.com >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Jim Keniston <jkenisto@linux.vnet.ibm.com >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Mark Wielaard <mjw@redhat.com >
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com >
Cc: Naren A Devaiah <naren.devaiah@in.ibm.com >
Cc: Oleg Nesterov <oleg@redhat.com >
Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Randy Dunlap <rdunlap@xenotime.net >
Cc: Steven Rostedt <rostedt@goodmis.org >
LKML-Reference: <20100729141351.GG21723@linux.vnet.ibm.com >
Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-07-30 12:01:38 -03:00
Masami Hiramatsu
8217563359
perf probe: Fix the logic of die_compare_name
...
Invert the return value of die_compare_name(), because it returns a 'bool'
result which should be expeced true if the die's name is same as compared
string.
LKML-Reference: <4C36EBED.1000006@hitachi.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Ingo Molnar <mingo@elte.hu >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-07-16 11:48:34 -03:00
Masami Hiramatsu
6a330a3c8a
perf probe: Support comp_dir to find an absolute source path
...
Gcc generates DW_AT_comp_dir and stores relative source path if building kernel
without O= option. In that case, perf probe --line sometimes doesn't work
without --source option, because it tries to access relative source path.
This adds DW_AT_comp_dir support to perf probe for finding an absolute source
path when no --source option.
LKML-Reference: <4C36EBE7.3060802@hitachi.com >
Cc: Ingo Molnar <mingo@elte.hu >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-07-16 11:48:09 -03:00
Masami Hiramatsu
7cf0b79e6f
perf probe: Fix error message if get_real_path() failed
...
Perf probe -L shows incorrect error message (Dwarf error) if it fails to find
source file. This can confuse users.
# ./perf probe -s /nowhere -L vfs_read
Debuginfo analysis failed. (-2)
Error: Failed to show lines. (-2)
With this patch, it shows correct message.
# ./perf probe -s /nowhere -L vfs_read
Failed to find source file. (-2)
Error: Failed to show lines. (-2)
LKML-Reference: <4C36EBDB.4020308@hitachi.com >
Cc: Chase Douglas <chase.douglas@canonical.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Ingo Molnar <mingo@elte.hu >
Acked-by: Chase Douglas <chase.douglas@canonical.com >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-07-16 11:46:34 -03:00
Masami Hiramatsu
b7dcb857cc
perf probe: Support static and global variables
...
Add static and global variables support to perf probe.
This allows user to trace non-local variables (and
structure members) at probe points.
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20100519195749.2885.17451.stgit@localhost6.localdomain6 >
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-07-05 18:51:33 -03:00
Masami Hiramatsu
b2a3c12b74
perf probe: Support tracing an entry of array
...
Add array-entry tracing support to perf probe. This enables to trace an entry
of array which is indexed by constant value, e.g. array[0].
For example:
$ perf probe -a 'bio_split bi->bi_io_vec[0]'
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20100519195742.2885.5344.stgit@localhost6.localdomain6 >
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-07-05 18:50:27 -03:00
Masami Hiramatsu
73317b9540
perf probe: Support "string" type
...
Support string type casting to event argument. If perf-probe finds an argument
casted as string, it ensures the target variable is "(unsigned/signed) char
*(or []). perf-probe also adds dereference if the target is a pointer.
So, both of 'char buf[10];' and 'char *buf;' can be accessed by 'buf:string'
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20100519195734.2885.1666.stgit@localhost6.localdomain6 >
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-07-05 18:47:28 -03:00
Chase Douglas
9ed7e1b85c
perf probe: Add kernel source path option
...
The probe plugin requires access to the source code for some operations. The
source code must be in the exact same location as specified by the DWARF tags,
but sometimes the location is an absolute path that cannot be replicated by a
normal user. This change adds the -s|--source option to allow the user to
specify the root of the kernel source tree.
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Masami Hiramatsu <mhiramat@redhat.com >
LKML-Reference: <1276543590-10486-1-git-send-email-chase.douglas@canonical.com >
Signed-off-by: Chase Douglas <chase.douglas@canonical.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-06-17 10:27:57 -03:00
Arnaldo Carvalho de Melo
b448c4b613
perf probe: Fix some error exit paths
...
That could leave filedescriptors open and leak memory. Also stop using
xmalloc, use malloc and handle results just like other error cases in
the same routine that used it.
Cc: Frédéric Weisbecker <fweisbec@gmail.com >
Cc: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-05-18 23:04:28 -03:00
Masami Hiramatsu
7752f1b096
perf probe: Don't compile CFI related code if elfutils is old
...
Check elfutils version, and if it is old don't compile CFI analysis code. This
allows to compile perf with old elfutils.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Tested-by: Stephane Eranian <eranian@google.com >
Reported-by: Robert Richter <robert.richter@amd.com >
Cc: Ingo Molnar <mingo@elte.hu >
LKML-Reference: <20100510171207.26029.97604.stgit@localhost6.localdomain6 >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-05-17 22:13:51 -03:00
Masami Hiramatsu
ef4a356574
perf probe: Add --max-probes option
...
Add --max-probes option to change the maximum limit of
findable probe points per event, since inlined function can be
expanded into thousands of probe points. Default value is 128.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Suggested-by: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
LKML-Reference: <20100421195640.24664.62984.stgit@localhost6.localdomain6 >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-04-26 15:35:20 -03:00
Masami Hiramatsu
5d1ee0413c
perf probe: Fix to exit callback soon after finding too many probe points
...
Fix to exit callback soon after finding too many probe points.
Don't try to continue searching because it already failed.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
LKML-Reference: <20100421195632.24664.42598.stgit@localhost6.localdomain6 >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-04-26 15:33:08 -03:00
Ian Munsie
cd932c5939
perf: Move arch specific code into separate arch directory
...
The perf userspace tool included some architecture specific code to map
registers from the DWARF register number into the names used by the regs
and stack access API.
This moves the architecture specific code out into a separate
arch/x86 directory along with the infrastructure required to use it.
Signed-off-by: Ian Munsie <imunsie@au.ibm.com >
Acked-by: Masami Hiramatsu <mhiramat@redhat.com >
Signed-off-by: Paul Mackerras <paulus@samba.org >
2010-04-22 13:48:31 +10:00
Masami Hiramatsu
f6c903f585
perf probe: Show function entry line as probe-able
...
Function entry line should be shown as probe-able line,
because each function has declared line attribute.
LKML-Reference: <20100414224007.14630.96915.stgit@localhost6.localdomain6 >
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-04-14 17:45:39 -03:00
Masami Hiramatsu
de1439d8a5
perf probe: Support DW_OP_plus_uconst in DW_AT_data_member_location
...
DW_OP_plus_uconst can be used for DW_AT_data_member_location.
This patch adds DW_OP_plus_uconst support when getting
structure member offset.
Commiter note:
Fixed up the size_t format specifier in one case:
cc1: warnings being treated as errors
util/probe-finder.c: In function ‘die_get_data_member_location’:
util/probe-finder.c:270: error: format ‘%d’ expects type ‘int’, but argument 4 has type ‘size_t’
make: *** [/home/acme/git/build/perf/util/probe-finder.o] Error 1
LKML-Reference: <20100414223958.14630.5230.stgit@localhost6.localdomain6 >
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-04-14 17:44:00 -03:00
Masami Hiramatsu
d3b63d7ae0
perf probe: Fix a bug that --line range can be overflow
...
Since line_finder.lno_s/e are signed int but line_range.start/end
are unsigned int, it is possible to be overflow when converting
line_range->start/end to line_finder->lno_s/e.
This changes line_range.start/end and line_list.line to signed int
and adds overflow checks when setting line_finder.lno_s/e.
LKML-Reference: <20100414223942.14630.72730.stgit@localhost6.localdomain6 >
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-04-14 17:41:21 -03:00
Masami Hiramatsu
02b95dadc8
perf probe: Remove xstrdup()/xstrndup() from util/probe-{event, finder}.c
...
Remove all xstr*dup() calls from util/probe-{event,finder}.c since
it may cause 'sudden death' in utility functions and it makes
reusing it from other code difficult.
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20100412171756.3790.89607.stgit@localhost6.localdomain6 >
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-04-14 17:28:52 -03:00
Masami Hiramatsu
e334016f1d
perf probe: Remove xzalloc() from util/probe-{event, finder}.c
...
Remove all xzalloc() calls from util/probe-{event,finder}.c since
it may cause 'sudden death' in utility functions and it makes
reusing it from other code difficult.
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20100412171749.3790.33303.stgit@localhost6.localdomain6 >
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-04-14 17:28:45 -03:00
Masami Hiramatsu
b55a87ade3
perf probe: Remove die() from probe-finder code
...
Remove die() and DIE_IF() code from util/probe-finder.c since
these 'sudden death' in utility functions make reusing it from
other code (especially tui/gui) difficult.
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20100412171735.3790.88853.stgit@localhost6.localdomain6 >
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-04-14 17:28:30 -03:00
Masami Hiramatsu
a34a985499
perf probe: Support DW_OP_call_frame_cfa in debuginfo
...
When building kernel without CONFIG_FRAME_POINTER, gcc uses
CFA (canonical frame address) for frame base. With this patch,
perf probe just gets CFI (call frame information) from debuginfo
and search corresponding CFA from the CFI. IOW, this allows
perf probe works correctly on the kernel without CONFIG_FRAME_POINTER.
<Before>
./perf probe -fn sched_slice:12 lw.weight
Fatal: DW_OP 156 is not supported.
(^^^ DW_OP_call_frame_cfa)
<After>
./perf probe -fn sched_slice:12 lw.weight
Add new event:
probe:sched_slice (on sched_slice:12 with weight=lw.weight)
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20100412171728.3790.98217.stgit@localhost6.localdomain6 >
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-04-14 17:28:20 -03:00
Masami Hiramatsu
11a1ca3554
perf probe: Support basic type casting
...
Add basic type casting for arguments to perf probe. This allows
users to specify the actual type of arguments. Of course, if
user sets invalid types, kprobe-tracer rejects that.
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20100412171722.3790.50372.stgit@localhost6.localdomain6 >
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-04-14 17:28:09 -03:00
Masami Hiramatsu
4984912eb2
perf probe: Query basic types from debuginfo
...
Query the basic type information (byte-size and signed-flag) from
debuginfo and pass that to kprobe-tracer. This is especially useful
for tracing the members of data structure, because each member has
different byte-size on the memory.
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20100412171715.3790.23730.stgit@localhost6.localdomain6 >
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-04-14 17:27:56 -03:00
Masami Hiramatsu
48481938b0
perf probe: Support argument name
...
Set given names to event arguments. The syntax is same as kprobe-tracer,
you can add 'NAME=' right before each argument.
e.g.
./perf probe vfs_read foo=file
then, 'foo' is set to the argument name as below.
./perf probe -l
probe:vfs_read (on vfs_read@linux-2.6-tip/fs/read_write.c with foo)
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20100412171653.3790.74624.stgit@localhost6.localdomain6 >
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-04-14 17:26:04 -03:00
Masami Hiramatsu
75ec5a245c
perf probe: Fix to close dwarf when failing to analyze it
...
Fix to close libdw routine when failing to analyze it in
find_perf_probe_point().
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: systemtap <systemtap@sources.redhat.com >
Cc: DLE <dle-develop@lists.sourceforge.net >
LKML-Reference: <20100402165059.23551.95587.stgit@localhost6.localdomain6 >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2010-04-02 19:35:44 +02:00
Masami Hiramatsu
12e5a7ae47
perf probe: Correct error message for non-structure type
...
perf probe outputs incorrect error message when it is called with
non-existent field on a non-data structure local variable.
<Before>
# perf probe vfs_read 'count.hoge'
Fatal: Structure on a register is not supported yet.
# perf probe vfs_read 'count->hoge'
Fatal: Semantic error: hoge must be referred by '.'
This corrects the messsage.
<After>
# perf probe vfs_read 'count.hoge'
Fatal: count is not a data structure.
# perf probe vfs_read 'count->hoge'
Fatal: count is not a data structure.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: systemtap <systemtap@sources.redhat.com >
Cc: DLE <dle-develop@lists.sourceforge.net >
LKML-Reference: <20100402165052.23551.75866.stgit@localhost6.localdomain6 >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2010-04-02 19:35:43 +02:00
Masami Hiramatsu
c9e385826d
perf probe: Fix not to return non-matched file
...
Fix cu_find_realpath() not to return the last file path
if that is not matched to input pattern.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: systemtap <systemtap@sources.redhat.com >
Cc: DLE <dle-develop@lists.sourceforge.net >
LKML-Reference: <20100402165045.23551.47780.stgit@localhost6.localdomain6 >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2010-04-02 19:35:42 +02:00
Masami Hiramatsu
7df2f32956
perf probe: Add data structure member access support
...
Support accessing members in the data structures. With this,
perf-probe accepts data-structure members(IOW, it now accepts
dot '.' and arrow '->' operators) as probe arguemnts.
e.g.
./perf probe --add 'schedule:44 rq->curr'
./perf probe --add 'vfs_read file->f_op->read file->f_path.dentry'
Note that '>' can be interpreted as redirection in command-line.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: systemtap <systemtap@sources.redhat.com >
Cc: DLE <dle-develop@lists.sourceforge.net >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
LKML-Reference: <20100316220626.32050.57552.stgit@localhost6.localdomain6 >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2010-03-17 12:11:15 +01:00
Masami Hiramatsu
fb1587d869
perf probe: List probes with line number and file name
...
Improve --list to show current exist probes with line number and
file name. This enables user easily to check which line is
already probed.
for example:
./perf probe --list
probe:vfs_read (on vfs_read:8@linux-2.6-tip/fs/read_write.c)
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: systemtap <systemtap@sources.redhat.com >
Cc: DLE <dle-develop@lists.sourceforge.net >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
LKML-Reference: <20100316220619.32050.48702.stgit@localhost6.localdomain6 >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2010-03-17 11:32:32 +01:00
Masami Hiramatsu
4235b0454e
perf probe: Introduce kprobe_trace_event and perf_probe_event
...
Introduce kprobe_trace_event and perf_probe_event and replace
old probe_point structure with it. probe_point structure is
not enough flexible nor extensible. New data structures
will help implementing further features.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: systemtap <systemtap@sources.redhat.com >
Cc: DLE <dle-develop@lists.sourceforge.net >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
LKML-Reference: <20100316220612.32050.33806.stgit@localhost6.localdomain6 >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2010-03-17 11:32:31 +01:00
Masami Hiramatsu
016f262e4f
perf probe: Introduce die_find_child() function
...
Introduce die_find_child() function to integrate DIE-tree
searching functions.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: systemtap <systemtap@sources.redhat.com >
Cc: DLE <dle-develop@lists.sourceforge.net >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
LKML-Reference: <20100316220558.32050.7905.stgit@localhost6.localdomain6 >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2010-03-17 11:32:31 +01:00
Masami Hiramatsu
95a3e4c4e2
perf probe: Rename some die_get_* functions
...
Rename die_get_real_subprogram and die_get_inlinefunc to
die_find_real_subprogram and die_find_inlinefunc respectively,
because these functions search its children. After that,
'die_get_' means getting a property of that die, and
'die_find_' means searching DIE-tree to get an appropriate
child die.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: systemtap <systemtap@sources.redhat.com >
Cc: DLE <dle-develop@lists.sourceforge.net >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
LKML-Reference: <20100316220551.32050.36181.stgit@localhost6.localdomain6 >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2010-03-17 11:32:30 +01:00
Masami Hiramatsu
31facc5f1a
perf probe: Use wrapper functions
...
Use wrapped functions as much as possible, to check out of
memory conditions in perf probe.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com >
Cc: systemtap <systemtap@sources.redhat.com >
Cc: DLE <dle-develop@lists.sourceforge.net >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
LKML-Reference: <20100316220530.32050.53951.stgit@localhost6.localdomain6 >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2010-03-17 11:32:29 +01:00