From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Taeung Song <treeze.taeung@gmail.com>
Cc: linux-kernel@vger.kernel.org, Jiri Olsa <jolsa@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Ingo Molnar <mingo@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Wang Nan <wangnan0@huawei.com>,
Masami Hiramatsu <mhiramat@kernel.org>,
Jiri Olsa <jolsa@redhat.com>
Subject: Re: [PATCH 4/4] perf annotate: More exactly grep -v of the objdump command
Date: Tue, 21 Mar 2017 11:37:28 -0300 [thread overview]
Message-ID: <20170321143728.GD3641@kernel.org> (raw)
In-Reply-To: <1489978617-31396-5-git-send-email-treeze.taeung@gmail.com>
Em Mon, Mar 20, 2017 at 11:56:57AM +0900, Taeung Song escreveu:
> grep -v "file name" in the objdump command
> cause a side effect eliminating filename:linenr of
> output of 'objdump -l' if the object file name and
> source file name are about the same so fix it.
>
> The objdump command in symbol__disassemble() can be as below
>
> $ objdump -l -d -S -C /home/taeung/hello --start-address=...
>
> /home/taeung/hello: file format elf64-x86-64
>
> Disassembly of section .text:
>
> 0000000000400526 <main>:
> main():
> /home/taeung/hello.c:4
>
> void main()
> {
> 400526: 55 push %rbp
> 400527: 48 89 e5 mov %rsp,%rbp
> /home/taeung/hello.c:5
> ...
>
> But currently it use grep -v "file name" e.g. "/home/taeung/hello"
> in the objdump command to remove the first line containing file name
> and file format such as,
>
> Before:
> $ objdump -l -d -S -C /home/taeung/hello | grep /home/taeung/hello
>
> But it cause a side effect removing filename:linenr
> because the object file and source file has same name
> e.g. "/home/taueng/hello", "/home/taeung/hello.c"
>
> So more exactly grep -v as below
> to correctly remove the one line
> e.g. "/home/taeung/hello: file format elf64-x86-64"
>
> After:
> $ objdump -l -d -S -C /home/taeung/hello | grep /home/taeung/hello:
What environment is this? I tried to reproduce this here but got
different results, and I had to figure out the 'perf record' you used,
you forgot to mention it, i.e. 'perf record ./hello' doesn't work, one
has to use 'perf record /full/path/to/hello', anyway, with my
environemnt, which is:
[root@jouet ~]# objdump -v
GNU objdump version 2.26.1-1.fc25
I end up getting:
Sorted summary for file /home/acme/c/hello
----------------------------------------------
52.67 hello.c:7
47.32 hello.c:8
Percent | Source code & Disassembly of hello for cycles:u (83555 samples)
-------------------------------------------------------------------------------
: 00000000004004f6 <main>:
: main():
: #include <stdio.h>
:
: int main(void)
: {
0.00 : 4004f6: push %rbp
0.00 : 4004f7: mov %rsp,%rbp
0.00 : 4004fa: sub $0x10,%rsp
: unsigned long long i;
: printf("hello, world\n");
0.00 : 4004fe: mov $0x4005d0,%edi
0.00 : 400503: callq 4003f0 <puts@plt>
: while (i < (unsigned long long)-1) {
0.00 : 400508: jmp 40052d <main+0x37>
: i *= 171;
hello.c:8 8.66 : 40050a: mov -0x8(%rbp),%rdx
0.01 : 40050e: mov %rdx,%rax
0.00 : 400511: shl $0x3,%rax
hello.c:8 0.84 : 400515: add %rdx,%rax
hello.c:8 8.60 : 400518: add %rax,%rax
hello.c:8 3.46 : 40051b: add %rdx,%rax
hello.c:8 8.57 : 40051e: lea 0x0(,%rax,8),%rdx
8.65 : 400526: add %rdx,%rax
8.56 : 400529: mov %rax,-0x8(%rbp)
<SNIP>
Which looks ok, i.e. since this version of objdump puts just the basename (hello.c),
that grep doesn't nuke it.
But yeah, your patch is more robust, just fix what I described below, i.e. use
quotes in the grep -v bit, probably.
- Arnaldo
> Cc: Namhyung Kim <namhyung@kernel.org>
> Cc: Jiri Olsa <jolsa@redhat.com>
> Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
> ---
> tools/perf/util/annotate.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
> index 63130ec..e49eb7e 100644
> --- a/tools/perf/util/annotate.c
> +++ b/tools/perf/util/annotate.c
> @@ -1443,7 +1443,7 @@ int symbol__disassemble(struct symbol *sym, struct map *map, const char *arch_na
> snprintf(command, sizeof(command),
> "%s %s%s --start-address=0x%016" PRIx64
> " --stop-address=0x%016" PRIx64
> - " -l -d %s %s -C %s 2>/dev/null|grep -v %s|expand",
> + " -l -d %s %s -C %s 2>/dev/null|grep -v %s: |expand",
Are you sure this works as you expect? I.e. both lines will have '%s:'
that space just before the '|' will not be considered by grep
> objdump_path ? objdump_path : "objdump",
> disassembler_style ? "-M " : "",
> disassembler_style ? disassembler_style : "",
> --
> 2.7.4
next prev parent reply other threads:[~2017-03-21 14:46 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-20 2:56 [PATCH 0/4] perf annotate: Bugfixes Taeung Song
2017-03-20 2:56 ` [PATCH 1/4] perf annotate: Use build-id dir when reading link name Taeung Song
2017-03-20 2:56 ` [PATCH 2/4] perf annotate: Avoid division by zero when calculating percent Taeung Song
2017-03-20 18:15 ` Arnaldo Carvalho de Melo
2017-03-20 22:11 ` Taeung Song
2017-03-20 22:20 ` Taeung Song
2017-03-21 14:14 ` Arnaldo Carvalho de Melo
2017-03-21 14:21 ` Arnaldo Carvalho de Melo
2017-03-21 14:36 ` Taeung Song
2017-03-22 12:00 ` Taeung Song
2017-03-20 2:56 ` [PATCH 3/4] perf annotate: Fix missing setting nr samples on source_line Taeung Song
2017-03-20 2:56 ` [PATCH 4/4] perf annotate: More exactly grep -v of the objdump command Taeung Song
2017-03-21 14:37 ` Arnaldo Carvalho de Melo [this message]
2017-03-21 16:19 ` Taeung Song
2017-03-21 16:19 ` Taeung Song
2017-03-21 18:29 ` Arnaldo Carvalho de Melo
2017-03-21 18:32 ` Arnaldo Carvalho de Melo
2017-03-22 7:32 ` Taeung Song
2017-03-24 18:45 ` [tip:perf/core] " tip-bot for Taeung Song
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=20170321143728.GD3641@kernel.org \
--to=acme@kernel.org \
--cc=jolsa@kernel.org \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=treeze.taeung@gmail.com \
--cc=wangnan0@huawei.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).