Em Thu, Jun 03, 2010 at 09:20:39PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Thu, Jun 03, 2010 at 08:18:04PM +0200, Stephane Eranian escreveu:
> > perf annotate __lock_acquire -k
> > /home/eranian/perfmon/official/tip/build/vmlinux
> > build id event received for [kernel.kallsyms]:
> > 5c110a704293a259fbe11158dc1b25107ad7a23e
> > build id event received for
> > /lib/modules/2.6.35-rc1-tip/kernel/arch/x86/kernel/cpu/cpufreq/mperf.ko:
> > cb5
> > build id event received for
> > /lib/modules/2.6.35-rc1-tip/kernel/drivers/cpufreq/cpufreq_ondemand.ko:
> > cdb5
> > Using /home/eranian/perfmon/official/tip/build/vmlinux for symbols
> > hist_entry__inc_addr_samples: ip=0xffffffff81073b36
> > 0xffffffff81073b30 __lock_acquire: period++ [ip: 0xffffffff81073b36, 0x6]
> > => 1
> > hist_entry__inc_addr_samples: ip=0xffffffff81073c94
> >
> > But in the end I get:
> > objdump: '[kernel.kallsyms]': No such file
>
> Reproduced, working on it now. I've been testing only with vmlinux in
> the path it searches for, not by directly specifying it, will get that
> fixed, thanks,
Should be fixed by this patch:
[r...@emilia ~]# perf annotate -k /lib/modules/2.6.35-rc1/build/vmlinux.OFF
n_tty_write | head -50
------------------------------------------------
Percent | Source code & Disassembly of vmlinux.OFF
------------------------------------------------
:
:
:
: Disassembly of section .text:
:
: ffffffff81288820 <n_tty_write>:
: * lock themselves)
: */
:
: static ssize_t n_tty_write(struct tty_struct *tty, struct file
*file,
: const unsigned char *buf, size_t nr)
: {
0.00 : ffffffff81288820: 41 57 push %r15
:
: DECLARE_PER_CPU(struct task_struct *, current_task);
:
: static __always_inline struct task_struct *get_current(void)
: {
: return percpu_read_stable(current_task);
0.00 : ffffffff81288822: 65 48 8b 04 25 40 cc mov
%gs:0xcc40,%rax
0.00 : ffffffff81288829: 00 00
0.00 : ffffffff8128882b: 41 56 push %r14
0.00 : ffffffff8128882d: 41 55 push %r13
0.00 : ffffffff8128882f: 49 89 cd mov %rcx,%r13
0.00 : ffffffff81288832: 41 54 push %r12
0.00 : ffffffff81288834: 49 89 d4 mov %rdx,%r12
0.00 : ffffffff81288837: 55 push %rbp
0.00 : ffffffff81288838: 48 89 f5 mov %rsi,%rbp
0.00 : ffffffff8128883b: 53 push %rbx
0.00 : ffffffff8128883c: 48 89 fb mov %rdi,%rbx
0.00 : ffffffff8128883f: 48 83 ec 58 sub
$0x58,%rsp
: const unsigned char *b = buf;
: DECLARE_WAITQUEUE(wait, current);
0.00 : ffffffff81288843: 48 c7 44 24 20 00 00 movq
$0x0,0x20(%rsp)
0.00 : ffffffff8128884a: 00 00
7.14 : ffffffff8128884c: 48 c7 44 24 38 00 00 movq
$0x0,0x38(%rsp)
0.00 : ffffffff81288853: 00 00
0.00 : ffffffff81288855: 48 c7 44 24 40 00 00 movq
$0x0,0x40(%rsp)
0.00 : ffffffff8128885c: 00 00
7.14 : ffffffff8128885e: 48 89 44 24 28 mov
%rax,0x28(%rsp)
0.00 : ffffffff81288863: 48 c7 44 24 30 30 49 movq
$0xffffffff81044930,0x30(%rsp)
0.00 : ffffffff8128886a: 04 81
: int c;
: ssize_t retval = 0;
:
[r...@emilia ~]#
>From 842b66de6807e72bddfd24a63742bacd0f853872 Mon Sep 17 00:00:00 2001
From: Arnaldo Carvalho de Melo <[email protected]>
Date: Thu, 3 Jun 2010 18:35:55 -0300
Subject: [PATCH 1/1] perf symbols: Set the DSO long name when using
symbol_conf.vmlinux_name
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
We need to set the long name to the name specified via, for instance,
'perf annotate --vmlinux /path/to/vmlinux', if not it will remain as
'[kernel.kallsyms]' and that will make annotate fail when passing this
as the vmlinux name in the call to objdump.
The way this is setup grew unwieldly and dso__load_vmlinux is the
function that should allocate space for the long name, with callers not
assuming that filenames should be allocated somehow by then (strdup,
dso__build_id_filename, etc).
For now this is the minimalistic patch, a proper fix for .36 will be
made.
Reported-by: Stephane Eranian <[email protected]>
Cc: David S. Miller <[email protected]>
Cc: Frédéric Weisbecker <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Cc: Tom Zanussi <[email protected]>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/util/symbol.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index 7fd6b15..b63e571 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -1745,7 +1745,12 @@ static int dso__load_kernel_sym(struct dso *self, struct
map *map,
if (symbol_conf.vmlinux_name != NULL) {
err = dso__load_vmlinux(self, map,
symbol_conf.vmlinux_name, filter);
- goto out_try_fixup;
+ if (err > 0) {
+ dso__set_long_name(self,
+ strdup(symbol_conf.vmlinux_name));
+ goto out_fixup;
+ }
+ return err;
}
if (vmlinux_path != NULL) {
@@ -1806,7 +1811,6 @@ do_kallsyms:
pr_debug("Using %s for symbols\n", kallsyms_filename);
free(kallsyms_allocated_filename);
-out_try_fixup:
if (err > 0) {
out_fixup:
if (kallsyms_filename != NULL)
--
1.6.5.2
------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
perfmon2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/perfmon2-devel