linux/tools/perf/util
Masami Hiramatsu 3f4460a28f perf probe: Filter out redundant inline-instances
With gcc4.6, some instances of concrete inlined function looks redundant
and broken, because it appears inside of a concrete instance and its
call_file and call_line are same as the original abstruct's decl_file
and decl_line respectively.

e.g.
 [  d1aa]    subprogram
             external             (flag) Yes
             name                 (strp) "add_timer"
             decl_file            (data1) 2		;here is original
             decl_line            (data2) 847		;line and file
             prototyped           (flag) Yes
             inline               (data1) inlined (1)
             sibling              (ref4) [  d1c6]
...
 [ 11d84]    subprogram
             abstract_origin      (ref4) [  d1aa]	; concrete instance
             low_pc               (addr) .text+0x000000000000246f <add_timer>
             high_pc              (addr) .text+0x000000000000248b <mod_timer_pending>
             frame_base           (block1)               [   0] call_frame_cfa
             sibling              (ref4) [ 11dd9]
 [ 11d9f]      formal_parameter
               abstract_origin      (ref4) [  d1b9]
               location             (data4) location list [  701b]
 [ 11da8]      inlined_subroutine
               abstract_origin      (ref4) [  d1aa]	; redundant instance
               low_pc               (addr) .text+0x000000000000247e <add_timer+0xf>
               high_pc              (addr) .text+0x0000000000002480 <add_timer+0x11>
               call_file            (data1) 2		; call line and file
               call_line            (data2) 847		; are same as above

Those redundant instances leads unwilling results;

e.g. find probe points inside of functions even if we specify
a function entry as below;

$ perf probe -V add_timer
Available variables at add_timer
        @<add_timer+0>
                struct timer_list*      timer
        @<add_timer+15>
                (No matched variables)

So, this filters out those redundant instances based on call-site and
decl-site information.

Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: yrl.pp-manager.tt@hitachi.com
Link: http://lkml.kernel.org/r/20110811110317.19900.59525.stgit@fedora15
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-08-12 09:34:35 -03:00
..
include perf tools: Fix build on older systems 2011-05-26 11:16:29 -03:00
scripting-engines perf session: Pass evsel in event_ops->sample() 2011-03-23 19:28:58 -03:00
ui perf top browser: Remove spurious helpline update 2011-08-10 12:42:26 -03:00
abspath.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
alias.c perf_counter tools: Add more warnings and fix/annotate them 2009-07-01 12:49:48 +02:00
annotate.c perf symbols: Rename dso->origin to dso->symtab_type 2011-03-11 13:28:45 -03:00
annotate.h perf top: Live TUI Annotation 2011-02-22 12:02:07 -03:00
bitmap.c perf tools: Don't use code surrounded by __KERNEL__ 2010-05-02 12:00:44 -03:00
build-id.c perf session: Pass evsel in event_ops->sample() 2011-03-23 19:28:58 -03:00
build-id.h perf annotate: Use build-ids to find the right DSO 2010-05-20 12:15:33 -03:00
cache.h perf tools: Don't fallback to setup_pager unconditionally 2011-01-31 18:08:39 -02:00
callchain.c perf tools: Kill event_t typedef, use 'union perf_event' instead 2011-01-29 16:25:37 -02:00
callchain.h perf tools: Add inverted call graph report support. 2011-06-30 00:24:30 +02:00
cgroup.c perf: Fix a build error with some GCC versions 2011-04-08 17:40:21 +02:00
cgroup.h perf tool: Add cgroup support 2011-02-16 13:30:48 +01:00
color.c perf hist: Replace ->print() routines by ->snprintf() equivalents 2010-04-02 16:28:15 -03:00
color.h perf hist: Replace ->print() routines by ->snprintf() equivalents 2010-04-02 16:28:15 -03:00
config.c perf tools: Check $HOME/.perfconfig ownership 2011-08-09 12:42:13 -03:00
cpumap.c perf tools: Add missing cpu_map__delete() 2011-01-22 19:56:30 -02:00
cpumap.h perf tools: Add missing cpu_map__delete() 2011-01-22 19:56:30 -02:00
ctype.c perf tools: Move graph_line and graph_dotted_line from top 2009-11-23 21:55:20 +01:00
debug.c perf tools: Fixup exit path when not able to open events 2011-03-29 13:40:27 -03:00
debug.h perf tools: Fixup exit path when not able to open events 2011-03-29 13:40:27 -03:00
debugfs.c perf trace: Clean up find_debugfs() 2009-12-28 10:36:36 +01:00
debugfs.h perf tools: Mount debugfs automatically 2009-12-28 10:36:36 +01:00
dwarf-aux.c perf probe: Filter out redundant inline-instances 2011-08-12 09:34:35 -03:00
dwarf-aux.h perf probe: Search concrete out-of-line instances 2011-08-12 09:32:10 -03:00
environment.c
event.c perf evlist: Don't die if sample_{id_all|type} is invalid 2011-06-03 10:07:52 -03:00
event.h perf evlist: Don't die if sample_{id_all|type} is invalid 2011-06-03 10:07:52 -03:00
evlist.c perf evlist: Introduce 'disable' method 2011-07-25 11:06:19 -03:00
evlist.h perf evlist: Introduce 'disable' method 2011-07-25 11:06:19 -03:00
evsel.c perf evlist: Don't die if sample_{id_all|type} is invalid 2011-06-03 10:07:52 -03:00
evsel.h perf evlist: Don't die if sample_{id_all|type} is invalid 2011-06-03 10:07:52 -03:00
exec_cmd.c perf tools: Makefile: Remove various and sundry cruft 2011-02-18 07:43:06 -02:00
exec_cmd.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
generate-cmdlist.sh
header.c perf report: Use properly build_id kernel binaries 2011-08-11 08:58:03 -03:00
header.h perf tools: Move evlist sample helpers to evlist area 2011-05-22 03:12:29 +02:00
help.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
help.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
hist.c perf tools: Don't display ignored entries on stdio ui 2011-06-30 00:26:33 +02:00
hist.h perf session: Pass evsel in event_ops->sample() 2011-03-23 19:28:58 -03:00
hweight.c perf tools: Don't use code surrounded by __KERNEL__ 2010-05-02 12:00:44 -03:00
levenshtein.c
levenshtein.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
map.c perf tools: Fix 64 bit integer format strings 2011-01-22 23:41:57 -02:00
map.h perf probe: Add basic module support 2010-10-21 16:11:44 -02:00
pager.c perf_counter tools: Remove dead code 2009-06-27 06:06:39 +02:00
parse-events.c perf tools: De-opt the parse_events function 2011-07-21 10:41:11 +02:00
parse-events.h perf tools: De-opt the parse_events function 2011-07-21 10:41:11 +02:00
parse-options.c perf options: Type check all the remaining OPT_ variants 2010-05-17 16:22:41 -03:00
parse-options.h perf options: add OPT_CALLBACK_DEFAULT_NOOPT 2010-12-06 15:33:29 -02:00
path.c perf tools: add test for strlcpy() 2010-08-21 11:22:47 -03:00
PERF-VERSION-GEN perf: clear out make flags when calling kernel make kernelver 2011-06-15 22:12:55 +02:00
probe-event.c perf probe: Fix coredump introduced by probe module option 2011-08-08 09:35:41 -03:00
probe-event.h perf probe: Add probed module in front of function 2011-07-15 16:19:08 -04:00
probe-finder.c perf probe: Search concrete out-of-line instances 2011-08-12 09:32:10 -03:00
probe-finder.h perf probe: Fix to search local variables in appropriate scope 2011-08-12 09:28:45 -03:00
pstack.c perf newt: Make <- zoom out filters 2010-05-14 20:05:21 -03:00
pstack.h perf ui: Move hists browser to util/ui/browsers/ 2010-08-10 16:11:08 -03:00
python.c perf python: Add PERF_RECORD_{LOST,READ,SAMPLE} routine tables 2011-07-25 17:13:27 -03:00
quote.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
quote.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
run-command.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
run-command.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
session.c perf script: Fix display of IP address for non-callchain path 2011-07-21 10:09:28 +02:00
session.h perf tools: Fix endian conversion reading event attr from file header 2011-07-21 09:57:36 +02:00
setup.py perf tools: Add support to install perf python extension 2011-08-08 12:54:26 -03:00
sigchain.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
sigchain.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
sort.c perf tools: Allow sort dimensions to be registered more than once 2011-06-30 00:26:41 +02:00
sort.h perf tools: Remove sort print helpers declarations 2011-06-30 00:26:19 +02:00
strbuf.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
strbuf.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
strfilter.c perf: Fix missing strndup declaration 2011-03-04 01:17:18 +01:00
strfilter.h perf tools: Add strfilter for general purpose string filter 2011-01-28 09:19:38 -02:00
string.c perf probe: Move strtailcmp to string.c 2011-07-15 16:00:47 -04:00
strlist.c perf probe: Fix --del to update current event list 2009-12-15 20:22:01 +01:00
strlist.h perf tools: Add for_each macros for strlist 2009-12-15 20:22:02 +01:00
svghelper.c perf timechart: Fix black idle boxes in the title 2011-02-28 08:56:14 +01:00
svghelper.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
symbol.c perf: fix temporary file ownership check 2011-08-12 08:28:17 -03:00
symbol.h perf report: Use properly build_id kernel binaries 2011-08-11 08:58:03 -03:00
thread_map.c perf threads: Move thread_map to separate file 2011-01-24 10:59:00 -02:00
thread_map.h perf threads: Move thread_map to separate file 2011-01-24 10:59:00 -02:00
thread.c perf threads: Move thread_map to separate file 2011-01-24 10:59:00 -02:00
thread.h perf threads: Move thread_map to separate file 2011-01-24 10:59:00 -02:00
top.c perf top: Remove redundant syme->origin field 2011-03-11 13:28:45 -03:00
top.h perf symbol: Move sym_entry->skip to symbol->ignore 2011-03-11 13:36:01 -03:00
trace-event-info.c perf: Robustify proc and debugfs file recording 2011-07-14 15:53:01 -04:00
trace-event-parse.c rcu: Use softirq to address performance regression 2011-06-14 15:25:39 -07:00
trace-event-read.c perf: Use read() instead of lseek() in trace_event_read.c:skip() 2010-05-20 08:37:17 +02:00
trace-event-scripting.c perf session: Pass evsel in event_ops->sample() 2011-03-23 19:28:58 -03:00
trace-event.h perf session: Pass evsel in event_ops->sample() 2011-03-23 19:28:58 -03:00
types.h perf tools: Fix 64 bit integer format strings 2011-01-22 23:41:57 -02:00
usage.c perf top: Fall back to cpu-clock-tick hrtimer sampling if no cycle counter available 2009-06-07 17:31:52 +02:00
util.c perf util: Move do_read from session to util 2011-01-03 16:50:55 -02:00
util.h perf probe: Move strtailcmp to string.c 2011-07-15 16:00:47 -04:00
values.c perf tools: Fix 64 bit integer format strings 2011-01-22 23:41:57 -02:00
values.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
wrapper.c perf tools: remove xstrndup, xmalloc, xzalloc 2010-05-18 23:05:28 -03:00
xyarray.c perf tools: Introduce event selectors 2011-01-03 16:39:04 -02:00
xyarray.h perf tools: Introduce event selectors 2011-01-03 16:39:04 -02:00