android_kernel_motorola_sm6225/tools/perf/util
Masami Hiramatsu 3d918a12a1 perf probe: Find fentry mcount fuzzed parameter location
At this point, --fentry (mcount function entry) option for gcc fuzzes
the debuginfo variable locations by skipping the mcount instruction
offset (on x86, this is a 5 byte call instruction).

This makes variable searching fail at the entry of functions which
are mcount'ed.

e.g.)
Available variables at vfs_read
        @<vfs_read+0>
                (No matched variables)

This patch adds additional location search at the function entry point
to solve this issue, which tries to find the earliest address for the
variable location.

Note that this only works with function parameters (formal parameters)
because any local variables should not exist on the function entry
address (those are not initialized yet).

With this patch, perf probe shows correct parameters if possible;
 # perf probe --vars vfs_read
 Available variables at vfs_read
         @<vfs_read+0>
                 char*   buf
                 loff_t* pos
                 size_t  count
                 struct file*    file

Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20131011071025.15557.13275.stgit@udc4-manage.rcp.hitachi.co.jp
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2013-10-23 09:55:37 -03:00
..
include tools/perf: Turn strlcpy() into a __weak function 2013-10-09 08:48:49 +02:00
scripting-engines perf scripting perl: Fix build error on Fedora 12 2013-10-15 08:34:00 -03:00
abspath.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
alias.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
annotate.c perf annotate: Find kcore symbols on other maps 2013-10-14 10:29:20 -03:00
annotate.h perf tools: Separate out GTK codes to libperf-gtk.so 2013-10-09 15:55:25 -03:00
bitmap.c perf tools: Add bitmap_or function into bitmap object 2012-02-13 23:28:10 -02:00
build-id.c perf tools: Stop using 'self' in some more places 2013-10-23 09:55:37 -03:00
build-id.h perf tools: Move BUILD_ID_SIZE into build-id object 2012-10-29 11:35:32 -02:00
cache.h tools/perf: Turn strlcpy() into a __weak function 2013-10-09 08:48:49 +02:00
callchain.c perf callchain: Convert children list to rbtree 2013-10-21 17:33:23 -03:00
callchain.h perf callchain: Convert children list to rbtree 2013-10-21 17:33:23 -03:00
cgroup.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
cgroup.h perf tool: Add cgroup support 2011-02-16 13:30:48 +01:00
color.c perf tools: Use scnprintf where applicable 2012-03-14 12:36:19 -03:00
color.h perf hist: Replace ->print() routines by ->snprintf() equivalents 2010-04-02 16:28:15 -03:00
config.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
cpumap.c perf stat: Add per-core aggregation 2013-03-25 16:13:26 -03:00
cpumap.h perf tools: Rename cpu_map__all() to cpu_map__empty() 2013-07-12 13:45:44 -03:00
ctype.c perf tools: ctype.c only wants util.h 2012-02-13 23:17:40 -02:00
data.c perf tools: Add perf_data_file__open interface to data object 2013-10-21 17:33:24 -03:00
data.h perf session: Separating data file properties from session 2013-10-21 17:33:25 -03:00
debug.c perf tools: Fix TUI helpline output 2012-12-09 08:46:07 -03:00
debug.h perf evsel: Introduce perf_evsel__open_strerror method 2013-01-24 16:40:09 -03:00
dso.c perf tools: Save failed result of get_srcline() 2013-10-09 16:02:02 -03:00
dso.h perf tools: Save failed result of get_srcline() 2013-10-09 16:02:02 -03:00
dwarf-aux.c perf probe: Fix to find line information for probe list 2013-10-04 15:16:05 -03:00
dwarf-aux.h perf probe: Fix to find line information for probe list 2013-10-04 15:16:05 -03:00
environment.c
event.c perf tools: Add attr->mmap2 support 2013-09-11 10:09:32 -03:00
event.h perf evlist: Fix perf_evlist__mmap_read event overflow 2013-10-11 12:17:40 -03:00
evlist.c perf evlist: Factor out duplicated mmap code 2013-10-21 11:19:43 -03:00
evlist.h perf trace: Improve messages related to /proc/sys/kernel/perf_event_paranoid 2013-10-17 17:38:29 -03:00
evsel.c perf evsel: Add missing decrement in id sample parsing 2013-10-21 11:18:49 -03:00
evsel.h tools/perf/stat: Add perf stat --transaction 2013-10-04 10:06:07 +02: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 tools/perf: Standardize feature support define names to: HAVE_{FEATURE}_SUPPORT 2013-10-09 08:48:28 +02:00
header.c perf session: Separating data file properties from session 2013-10-21 17:33:25 -03:00
header.h perf header: Recognize version number for perf data file 2013-07-17 17:04:00 -03:00
help.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -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: Stop using 'self' in some more places 2013-10-23 09:55:37 -03:00
hist.h perf tools: Separate out GTK codes to libperf-gtk.so 2013-10-09 15:55:25 -03:00
hweight.c perf tools: Don't use code surrounded by __KERNEL__ 2010-05-02 12:00:44 -03:00
intlist.c perf util: Add findnew method to intlist 2013-10-14 10:28:48 -03:00
intlist.h perf util: Add findnew method to intlist 2013-10-14 10:28:48 -03:00
levenshtein.c
levenshtein.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
machine.c perf report: Add --max-stack option to limit callchain stack scan 2013-10-21 17:36:25 -03:00
machine.h perf report: Add --max-stack option to limit callchain stack scan 2013-10-21 17:36:25 -03:00
map.c perf annotate: Another fix for annotate_browser__callq() 2013-10-14 12:21:18 -03:00
map.h perf annotate: Another fix for annotate_browser__callq() 2013-10-14 12:21:18 -03:00
pager.c perf tools: Fix pager on minimal-install embedded systems 2012-05-30 15:10:39 -03:00
parse-events.c perf list: Show error if tracepoints not available 2013-10-21 17:33:22 -03:00
parse-events.h perf parse events: Demystify memory allocations 2013-07-12 13:52:05 -03:00
parse-events.l perf tools: Move start conditions to start of the flex file 2013-10-11 12:17:31 -03:00
parse-events.y perf parse events: Demystify memory allocations 2013-07-12 13:52:05 -03:00
parse-options.c perf tools: Long option completion support for each subcommands 2012-10-02 18:36:44 -03:00
parse-options.h perf tools: Long option completion support for each subcommands 2012-10-02 18:36:44 -03:00
path.c tools/perf: Turn strlcpy() into a __weak function 2013-10-09 08:48:49 +02:00
PERF-VERSION-GEN perf tools: Align perf version output to other build messages 2013-10-11 12:18:10 -03:00
perf_regs.h tools/perf: Standardize feature support define names to: HAVE_{FEATURE}_SUPPORT 2013-10-09 08:48:28 +02:00
pmu.c tools/perf/stat: Add perf stat --transaction 2013-10-04 10:06:07 +02:00
pmu.h tools/perf/stat: Add perf stat --transaction 2013-10-04 10:06:07 +02:00
pmu.l perf tools: Add perf pmu object to access pmu format definition 2012-03-16 14:29:35 -03:00
pmu.y perf tools: Fix build with bison 2.3 and older. 2013-02-14 16:12:34 -03:00
probe-event.c perf probe: Support "$vars" meta argument syntax for local variables 2013-10-23 09:55:37 -03:00
probe-event.h perf probe: Provide perf interface for uprobes 2012-05-11 13:58:17 -03:00
probe-finder.c perf probe: Find fentry mcount fuzzed parameter location 2013-10-23 09:55:37 -03:00
probe-finder.h perf probe: Support "$vars" meta argument syntax for local variables 2013-10-23 09:55:37 -03:00
pstack.c perf tools: Stop using 'self' in pstack 2012-11-14 16:50:38 -03:00
pstack.h perf ui: Move hists browser to util/ui/browsers/ 2010-08-10 16:11:08 -03:00
python-ext-sources perf tools: Introduce tools/lib/lk library 2013-03-15 13:06:00 -03:00
python.c perf tools: Adding throttle event data struct support 2013-10-09 11:39:18 -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
rblist.c perf util: Add findnew method to intlist 2013-10-14 10:28:48 -03:00
rblist.h perf util: Add findnew method to intlist 2013-10-14 10:28:48 -03:00
record.c perf tools: Add support for PERF_SAMPLE_IDENTIFIER 2013-08-29 16:09:31 -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 report: Add --max-stack option to limit callchain stack scan 2013-10-21 17:36:25 -03:00
session.h perf session: Separating data file properties from session 2013-10-21 17:33:25 -03:00
setup.py perf tools: Merge all *CFLAGS* make variable into CFLAGS 2013-05-30 16:12:03 +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: Stop using 'self' in some more places 2013-10-23 09:55:37 -03:00
sort.h tools/perf: Add support for record transaction flags 2013-10-04 10:06:12 +02:00
srcline.c perf tools: Fix old GCC build error in 'get_srcline' 2013-10-14 10:28:52 -03:00
stat.c perf stats: Add max and min stats 2013-08-07 17:35:26 -03:00
stat.h perf stats: Add max and min stats 2013-08-07 17:35:26 -03:00
strbuf.c perf tools: Fix strbuf_addf() when the buffer needs to grow 2012-10-30 10:32:56 -02:00
strbuf.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
strfilter.c perf tools: Stop using 'self' in some more places 2013-10-23 09:55:37 -03:00
strfilter.h perf tools: Add strfilter for general purpose string filter 2011-01-28 09:19:38 -02:00
string.c perf tools: Default to cpu// for events v5 2013-07-12 13:53:52 -03:00
strlist.c perf probe: Fix segfault 2013-03-13 17:00:33 -03:00
strlist.h perf tools: Stop using 'self' in strlist 2013-01-25 12:49:28 -03: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-elf.c perf symbols: Fix a mmap and munmap mismatched bug 2013-10-14 12:21:23 -03:00
symbol-minimal.c perf buildid-cache: Add ability to add kcore to the cache 2013-10-14 12:20:38 -03:00
symbol.c perf symbols: Fix a memory leak due to symbol__delete not being used 2013-10-14 12:21:20 -03:00
symbol.h perf buildid-cache: Add ability to add kcore to the cache 2013-10-14 12:20:38 -03:00
sysfs.c perf tools: Fix possible (unlikely) buffer overflow 2013-01-24 16:40:18 -03:00
sysfs.h perf tools: Add sysfs mountpoint interface 2012-02-13 23:27:15 -02:00
target.c perf tools: Replace mempcpy with memcpy 2012-09-05 19:35:21 -03:00
target.h perf target: Add uses_mmap field 2012-05-17 12:32:54 -03:00
thread.c perf tools: Stop using 'self' in some more places 2013-10-23 09:55:37 -03:00
thread.h perf tools: Add pid to struct thread 2013-08-27 11:05:53 -03:00
thread_map.c perf tools: fix thread_map__new_by_pid_str() memory leak in error path 2012-05-25 11:40:59 -03:00
thread_map.h perf evlist: Add thread_map__nr() helper 2013-03-15 13:06:02 -03:00
tool.h perf tools: Add attr->mmap2 support 2013-09-11 10:09:32 -03:00
top.c perf top: Fix percent output when no samples collected 2013-05-28 16:23:59 +03:00
top.h perf top: Add --max-stack option to limit callchain stack scan 2013-10-21 17:36:25 -03:00
trace-event-info.c perf util: No need to call read_trace_init() in tracing_data_header() 2013-07-12 13:52:31 -03:00
trace-event-parse.c perf tools: Remove unused trace-event-* code 2013-10-09 11:15:28 -03:00
trace-event-read.c perf util: Parse header_page to get proper long size 2013-07-12 13:52:24 -03:00
trace-event-scripting.c perf script: Fix named threads support 2013-07-22 11:55:53 -03:00
trace-event.h perf tools: Remove unused trace-event-* code 2013-10-09 11:15:28 -03:00
types.h perf tools: Add union u64_swap type for swapping u64 data 2012-05-22 12:50:25 -03:00
unwind.c perf tools: Remove filter parameter of thread__find_addr_map() 2013-08-12 10:31:12 -03:00
unwind.h tools/perf: Standardize feature support define names to: HAVE_{FEATURE}_SUPPORT 2013-10-09 08:48:28 +02:00
usage.c perf target: Introduce perf_target__parse_uid() 2012-05-07 16:46:48 -03:00
util.c perf tools: Introduce filename__read_int helper 2013-10-17 16:33:43 -03:00
util.h perf tools: Introduce filename__read_int helper 2013-10-17 16:33:43 -03:00
values.c perf tools: Fix a memory leak on perf_read_values_destroy 2011-12-20 13:41:34 -02:00
values.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
vdso.c perf symbols: Fix vdso list searching 2013-07-08 17:59:07 -03:00
vdso.h perf tools: Back [vdso] DSO with real data 2012-09-11 12:08:30 -03:00
wrapper.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -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