linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

      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).