From: Franck Bui-Huu <vagabon.xyz@gmail.com>
To: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>,
linux-perf-users@vger.kernel.org
Subject: Re: perf-probe: issue with latest fedora kernel
Date: Mon, 27 Dec 2010 21:50:41 +0100 [thread overview]
Message-ID: <m3y67bvt26.fsf@gmail.com> (raw)
In-Reply-To: <m37hf08u9h.fsf@gmail.com> (Franck Bui-Huu's message of "Thu, 23 Dec 2010 14:59:38 +0100")
Masami,
It seems you forget this one ....
Thanks
Franck Bui-Huu <vagabon.xyz@gmail.com> writes:
> Hello Masami,
>
> Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> writes:
>
>> (2010/12/13 23:21), Arnaldo Carvalho de Melo wrote:
>>
>>> There are two problems here:
>>>
>>> on the 'report' header, as we didn't collect "cycles", but
>>> "probe:icmp_rcv" events, that is another fix that needs to be backported to
>>> fedora, but a minor one.
>>>
>>> Also 'perf probe -L' should look use
>>> /usr/src/debug/kernel-2.6.35.fc14/linux-2.6.35.x86_64 as a prefix to look for
>>> sources.
>>>
>>> That can be found using:
>>>
>>> [root@felicio linux-2.6.35.x86_64]# readelf -wi /usr/lib/debug/lib/modules/2.6.35.9-64.fc14.x86_64/vmlinux | grep DW_AT_comp_dir | head -5
>>> <2e> DW_AT_comp_dir : /usr/src/debug////////kernel-2.6.35.fc14/linux-2.6.35.x86_64
>>> <95> DW_AT_comp_dir : (indirect string, offset: 0x24d0): /usr/src/debug/kernel-2.6.35.fc14/linux-2.6.35.x86_64
>>> <75e8> DW_AT_comp_dir : (indirect string, offset: 0x24d0): /usr/src/debug/kernel-2.6.35.fc14/linux-2.6.35.x86_64
>>> <900e> DW_AT_comp_dir : (indirect string, offset: 0x24d0): /usr/src/debug/kernel-2.6.35.fc14/linux-2.6.35.x86_64
>>> <16670> DW_AT_comp_dir : (indirect string, offset: 0x24d0): /usr/src/debug/kernel-2.6.35.fc14/linux-2.6.35.x86_64
>>> [root@felicio linux-2.6.35.x86_64]#
>>>
>>> <0><8b>: Abbrev Number: 1 (DW_TAG_compile_unit)
>>> <8c> DW_AT_producer : (indirect string, offset: 0x22f4): GNU C 4.5.1 20100924 (Red Hat 4.5.1-4)
>>> <90> DW_AT_language : 1 (ANSI C)
>>> <91> DW_AT_name : (indirect string, offset: 0x37a): arch/x86/kernel/head64.c
>>> <95> DW_AT_comp_dir : (indirect string, offset: 0x24d0): /usr/src/debug/kernel-2.6.35.fc14/linux-2.6.35.x86_64
>>> <99> DW_AT_low_pc : 0x0
>>> <a1> DW_AT_entry_pc : 0x0
>>> <a9> DW_AT_ranges : 0x340
>>> <ad> DW_AT_stmt_list : 0x114
>>>
>>> I.e. using the DW_AT_comp_dir attribute in the DW_TAG_compile_unit DWARF tags,
>>> Masami?
>>
>> It already supports DW_AT_comp_dir on upstream kernel,
>> see find_line_range() in utils/probe-finder.c ;-)
>>
>
> It looks like adding probe with lazy matching pattern does not:
>
> $ cd /dev
> $ perf probe -n -a "icmp.c;sk=*"
> Failed to open net/ipv4/icmp.c: Operation not permitted
> Error: Failed to add events. (-2)
> $ cd /usr/src/debug/kernel-2.6.35.fc14/linux-2.6.35.x86_64/
> $ perf probe -n -a "icmp.c;sk=*"
> Add new events:
> probe:icmp_push_reply (on @cmp.c)
> probe:icmp_reply (on @cmp.c)
> probe:icmp_reply_1 (on @cmp.c)
> probe:icmp_send (on @cmp.c)
> probe:icmp_send_1 (on @cmp.c)
> probe:icmp_error (on @cmp.c)
> probe:icmp_error_1 (on @cmp.c)
> probe:icmp_error_2 (on @cmp.c)
> probe:icmp_error_3 (on @cmp.c)
>
> You can now use it on all perf tools, such as:
>
> perf record -e probe:icmp_error_3 -aR sleep 1
>
> Below is a quick and dirty fix (sorry, I don't have any time to make it
> better for now), also note that the note of the file (icmp.c) reported
> is screwed...
>
> diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
> index 10ad1ad..53c2f97 100644
> --- a/tools/perf/util/probe-event.c
> +++ b/tools/perf/util/probe-event.c
> @@ -241,7 +241,7 @@ static int try_to_find_probe_trace_events(struct perf_probe_event *pev,
> * a newly allocated path on success.
> * Return 0 if file was found and readable, -errno otherwise.
> */
> -static int get_real_path(const char *raw_path, const char *comp_dir,
> +int get_real_path(const char *raw_path, const char *comp_dir,
> char **new_path)
> {
> const char *prefix = symbol_conf.source_prefix;
> diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
> index 3991d73..88829ef 100644
> --- a/tools/perf/util/probe-finder.c
> +++ b/tools/perf/util/probe-finder.c
> @@ -1126,9 +1126,17 @@ static int find_probe_point_lazy(Dwarf_Die *sp_die, struct probe_finder *pf)
> int ret = 0;
>
> if (list_empty(&pf->lcache)) {
> + const char *comp_dir = cu_get_comp_dir(&pf->cu_die);
> + char *fullpath;
> +
> + ret = get_real_path(pf->fname, comp_dir, &fullpath);
> + if (ret < 0)
> + return ret;
> +
> /* Matching lazy line pattern */
> - ret = find_lazy_match_lines(&pf->lcache, pf->fname,
> + ret = find_lazy_match_lines(&pf->lcache, fullpath,
> pf->pev->point.lazy_line);
> + free(fullpath);
> if (ret == 0) {
> pr_debug("No matched lines found in %s.\n", pf->fname);
> return 0;
> diff --git a/tools/perf/util/probe-finder.h b/tools/perf/util/probe-finder.h
> index bba69d4..665938a 100644
> --- a/tools/perf/util/probe-finder.h
> +++ b/tools/perf/util/probe-finder.h
> @@ -15,6 +15,9 @@ static inline int is_c_varname(const char *name)
> return isalpha(name[0]) || name[0] == '_';
> }
>
> +extern int get_real_path(const char *raw_path, const char *comp_dir,
> + char **new_path);
> +
> #ifdef DWARF_SUPPORT
> /* Find probe_trace_events specified by perf_probe_event from debuginfo */
> extern int find_probe_trace_events(int fd, struct perf_probe_event *pev,
--
Franck
prev parent reply other threads:[~2010-12-27 20:50 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-09 15:00 perf-probe: issue with latest fedora kernel Francis Moreau
2010-12-09 15:35 ` Arnaldo Carvalho de Melo
2010-12-09 16:34 ` Francis Moreau
2010-12-10 3:27 ` Masami Hiramatsu
2010-12-10 7:53 ` Franck Bui-Huu
2010-12-10 8:26 ` Masami Hiramatsu
2010-12-10 13:00 ` Franck Bui-Huu
2010-12-10 13:06 ` [PATCH 1/2] perf-probe: do use the kernel image path given by 'k' option Franck Bui-Huu
2010-12-10 13:07 ` [PATCH 2/2] perf-probe: fail if the kernel image contains no symbol Franck Bui-Huu
2010-12-10 7:30 ` perf-probe: issue with latest fedora kernel Franck Bui-Huu
2010-12-12 14:08 ` Arnaldo Carvalho de Melo
2010-12-12 22:15 ` Franck Bui-Huu
2010-12-13 16:40 ` Arnaldo Carvalho de Melo
2010-12-13 10:02 ` Francis Moreau
2010-12-13 12:58 ` Arnaldo Carvalho de Melo
2010-12-13 13:08 ` Francis Moreau
2010-12-13 14:04 ` Masami Hiramatsu
2010-12-13 14:16 ` Francis Moreau
2010-12-13 19:08 ` Francis Moreau
2010-12-13 14:25 ` Arnaldo Carvalho de Melo
2010-12-13 14:21 ` Arnaldo Carvalho de Melo
2010-12-13 15:11 ` Francis Moreau
2010-12-13 16:40 ` Arnaldo Carvalho de Melo
2010-12-13 19:08 ` Francis Moreau
2010-12-13 19:17 ` Arnaldo Carvalho de Melo
2010-12-13 19:32 ` Francis Moreau
2010-12-15 8:57 ` Masami Hiramatsu
2010-12-15 18:53 ` Arnaldo Carvalho de Melo
2010-12-23 13:59 ` Franck Bui-Huu
2010-12-27 20:50 ` Franck Bui-Huu [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m3y67bvt26.fsf@gmail.com \
--to=vagabon.xyz@gmail.com \
--cc=acme@ghostprotocols.net \
--cc=linux-perf-users@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).