• Arnaldo Carvalho de Melo's avatar
    perf record: Handle restrictive permissions in /proc/{kallsyms,modules} · c1a3a4b9
    Arnaldo Carvalho de Melo authored
    The 59365d13 commit, even being reverted by 33e0d57f, showed a non robust
    behavior in 'perf record': it really should just warn the user that some
    functionality will not be available.
    
    The new behavior then becomes:
    
    	[acme@felicio linux]$ ls -la /proc/{kallsyms,modules}
    	-r-------- 1 root root 0 Nov 22 12:19 /proc/kallsyms
    	-r-------- 1 root root 0 Nov 22 12:19 /proc/modules
    	[acme@felicio linux]$ perf record ls -R > /dev/null
    	Couldn't record kernel reference relocation symbol
    	Symbol resolution may be skewed if relocation was used (e.g. kexec).
    	Check /proc/kallsyms permission or run as root.
    	[ perf record: Woken up 1 times to write data ]
    	[ perf record: Captured and wrote 0.004 MB perf.data (~161 samples) ]
    	[acme@felicio linux]$ perf report --stdio
    	[kernel.kallsyms] with build id 77b05e00e64e4de1c9347d83879779b540d69f00 not found, continuing without symbols
    	# Events: 98  cycles
    	#
    	# Overhead  Command    Shared Object                Symbol
    	# ........  .......  ...............  ....................
    	#
    	    48.26%       ls  [kernel]         [k] ffffffff8102b92b
    	    22.49%       ls  libc-2.12.90.so  [.] __strlen_sse2
    	     8.35%       ls  libc-2.12.90.so  [.] __GI___strcoll_l
    	     8.17%       ls  ls               [.]            11580
    	     3.35%       ls  libc-2.12.90.so  [.] _IO_new_file_xsputn
    	     3.33%       ls  libc-2.12.90.so  [.] _int_malloc
    	     1.88%       ls  libc-2.12.90.so  [.] _int_free
    	     0.84%       ls  libc-2.12.90.so  [.] malloc_consolidate
    	     0.84%       ls  libc-2.12.90.so  [.] __readdir64
    	     0.83%       ls  ls               [.] strlen@plt
    	     0.83%       ls  libc-2.12.90.so  [.] __GI_fwrite_unlocked
    	     0.83%       ls  libc-2.12.90.so  [.] __memcpy_sse2
    
    	#
    	# (For a higher level overview, try: perf report --sort comm,dso)
    	#
    [acme@felicio linux]$
    
    It still has the build-ids for DSOs in the maps with hits:
    
    [acme@felicio linux]$ perf buildid-list
    77b05e00e64e4de1c9347d83879779b540d69f00 [kernel.kallsyms]
    09c4a431a4a8b648fcfc2c2bdda70f56050ddff1 /bin/ls
    af75ea9ad951d25e0f038901a11b3846dccb29a4 /lib64/libc-2.12.90.so
    [acme@felicio linux]$
    
    That can be used in another machine to resolve kernel symbols.
    
    Cc: Eugene Teo <eugeneteo@kernel.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Jesper Juhl <jj@chaosbits.net>
    Cc: Marcus Meissner <meissner@suse.de>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sarah Sharp <sarah.a.sharp@linux.intel.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Tom Zanussi <tzanussi@gmail.com>
    LKML-Reference: <new-submission>
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    c1a3a4b9
builtin-record.c 22.1 KB