linux/tools/perf
Luigi Semenzato 9fdbf671ba perf tools: do not flush maps on COMM for perf report
This fixes a long-standing bug caused by the lack of separate COMM and EXEC
record types, which makes "perf report" lose track of symbols when a process
renames itself.

With this fix (suggested by Stephane Eranian), a COMM (rename) no longer
flushes the maps, which is the correct behavior.  An EXEC also no longer
flushes the maps, but this doesn't matter because as new mappings are created
(for the executable and the libraries) the old mappings are automatically
removed.  This is not by accident: the functionality is necessary because DLLs
can be explicitly loaded at any time with dlopen(), possibly on top of existing
text, so "perf report" handles correctly the clobbering of new mappings on top
of old ones.

An alternative patch (which I proposed earlier) would be to introduce a
separate PERF_RECORD_EXEC type, but it is a much larger change (about 300
lines) and is not necessary.

Signed-off-by: Luigi Semenzato <semenzato@chromium.org>
Tested-by: Stephane Eranian <eranian@google.com>
Acked-by: Stephane Eranian <eranian@google.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Lucas De Marchi <lucas.demarchi@profusion.mobi>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Olof Johansson <olofj@chromium.org>
Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Robert Richter <robert.richter@amd.com>
Cc: Sonny Rao <sonnyrao@chromium.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Stephen Wilson <wilsons@start.ca>
Cc: Tejun Heo <tj@kernel.org>
Cc: Vasiliy Kulikov <segoon@openwall.com>
Link: http://lkml.kernel.org/r/1345585940-6497-1-git-send-email-semenzato@chromium.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2012-10-22 13:55:53 -02:00
..
arch perf tools: Support for DWARF CFI unwinding on post processing 2012-08-11 15:06:56 -03:00
bench perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
config perf tools: Check libaudit availability for perf-trace builtin 2012-09-27 10:56:40 -03:00
Documentation perf trace: New tool 2012-09-26 20:42:23 -03:00
python perf python: Use attr.watermark in twatch.py 2012-01-30 18:38:23 -02:00
scripts perf scripts: Add event_analyzing_sample-record/report 2012-09-17 13:11:15 -03:00
ui perf hists browser: Add back callchain folding symbol 2012-10-17 13:54:08 -03:00
util perf tools: do not flush maps on COMM for perf report 2012-10-22 13:55:53 -02:00
.gitignore perf tools: Ignore compiled python binaries 2012-09-07 12:10:58 -03:00
bash_completion perf tools: Complete tracepoint event names 2012-10-04 12:44:52 -03:00
builtin-annotate.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
builtin-bench.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
builtin-buildid-cache.c perf buildid-cache: Don't use globals where not needed to 2012-10-02 18:36:35 -03:00
builtin-buildid-list.c perf buildid-list: Don't use globals where not needed to 2012-10-02 18:36:36 -03:00
builtin-diff.c perf tool: Add hpp interface to enable/disable hpp column 2012-10-04 13:30:27 -03:00
builtin-evlist.c perf evlist: Don't use globals where not needed to 2012-10-02 18:36:39 -03:00
builtin-help.c perf help: Fix --help for builtins 2012-10-22 12:35:49 -02:00
builtin-inject.c perf inject: Don't use globals where not needed to 2012-10-02 18:36:41 -03:00
builtin-kmem.c perf kmem: Don't use globals where not needed to 2012-10-02 18:36:32 -03:00
builtin-kvm.c perf kvm: Move global variables into a perf_kvm struct 2012-10-03 11:10:17 -03:00
builtin-list.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
builtin-lock.c perf lock: Don't use globals where not needed to 2012-10-02 18:36:33 -03:00
builtin-probe.c perf probe: Don't use globals where not needed to 2012-10-02 18:36:37 -03:00
builtin-record.c perf record: Don't use globals where not needed to 2012-10-02 18:36:40 -03:00
builtin-report.c perf tool: Add hpp interface to enable/disable hpp column 2012-10-04 13:30:27 -03:00
builtin-sched.c perf sched: Look up thread using tid instead of pid 2012-10-02 18:36:28 -03:00
builtin-script.c perf script: Don't use globals where not needed to 2012-10-02 18:36:30 -03:00
builtin-stat.c perf stat: Don't use globals where not needed to 2012-10-02 18:36:29 -03:00
builtin-test.c perf test: Add test to check we correctly parse and match syscall open parms 2012-09-26 13:42:01 -03:00
builtin-timechart.c perf timechart: Don't use globals where not needed to 2012-10-02 18:36:34 -03:00
builtin-top.c perf tools: Removing hists pair argument from output path 2012-10-04 13:29:45 -03:00
builtin-trace.c perf trace: Check if sample raw_data field is set 2012-10-21 23:07:36 -02:00
builtin.h perf trace: New tool 2012-09-26 20:42:23 -03:00
command-list.txt perf trace: New tool 2012-09-26 20:42:23 -03:00
CREDITS perf_counter tools: Add CREDITS file for Git contributors 2009-06-24 19:54:29 +02:00
design.txt perf tools: Update ioctl documentation for PERF_IOC_FLAG_GROUP 2012-05-31 11:38:42 -03:00
Makefile perf python: Properly link with libtraceevent 2012-10-20 02:43:08 +02:00
MANIFEST perf kvm: Events analysis tool 2012-09-21 12:51:22 -03:00
perf-archive.sh perf archive: Make 'f' the last parameter for tar 2012-09-17 13:10:42 -03:00
perf.c perf tools: Convert to LIBAUDIT_SUPPORT 2012-10-02 18:36:21 -03:00
perf.h perf/urgent fixes: 2012-10-20 02:40:26 +02:00