]> git.karo-electronics.de Git - linux-beck.git/commitdiff
perf tools: Stop copying kallsyms into the perf.data file header
authorArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 22 Jul 2015 20:02:18 +0000 (17:02 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 24 Jul 2015 01:51:12 +0000 (22:51 -0300)
Since we now ask libtraceevent, the only user of this payload, to use
perf's symbol resolution routines, there is no need to carry about
~4.5MB per perf.data when we can get it from one of the places the perf
symbol resolution looks for that symtab (debuginfo, ~/.debug/,
/proc/kallsyms, --symfs, etc), using the kernel and modules build-ids to
make sure the right table is used.

Acked-by: David Ahern <dsahern@gmail.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Link: http://lkml.kernel.org/n/tip-h89ituf9rso2rv1v7kjrbeda@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/trace-event-info.c

index eb72716017ac265bf1572c912769bad3bf21c643..22245986e59e45632d4998285dbc3b6557ed370d 100644 (file)
@@ -341,20 +341,14 @@ out:
 
 static int record_proc_kallsyms(void)
 {
-       unsigned int size;
-       const char *path = "/proc/kallsyms";
-       struct stat st;
-       int ret, err = 0;
-
-       ret = stat(path, &st);
-       if (ret < 0) {
-               /* not found */
-               size = 0;
-               if (write(output_fd, &size, 4) != 4)
-                       err = -EIO;
-               return err;
-       }
-       return record_file(path, 4);
+       unsigned long long size = 0;
+       /*
+        * Just to keep older perf.data file parsers happy, record a zero
+        * sized kallsyms file, i.e. do the same thing that was done when
+        * /proc/kallsyms (or something specified via --kallsyms, in a
+        * different path) couldn't be read.
+        */
+       return write(output_fd, &size, 4) != 4 ? -EIO : 0;
 }
 
 static int record_ftrace_printk(void)