All of lore.kernel.org
 help / color / mirror / Atom feed
From: He Kuang <hekuang@huawei.com>
To: <peterz@infradead.org>, "mingo@redhat.com" <mingo@redhat.com>,
	"Arnaldo Carvalho de Melo" <acme@kernel.org>,
	Jiri Olsa <jolsa@redhat.com>, <rabin.vincent@axis.com>,
	<namhyung@kernel.org>, Wang Nan <wangnan0@huawei.com>
Cc: <linux-kernel@vger.kernel.org>
Subject: [bug] wrong result of android callchain
Date: Tue, 5 Jan 2016 17:14:37 +0800	[thread overview]
Message-ID: <568B897D.1000209@huawei.com> (raw)

I found a wrong result of aarch64 callchain when using perf script on
a android phone.

Here's the callchain record fragment from the output of perf script:

   init   369 [002]   339.970607: raw_syscalls:sys_enter: NR 22 (b, 7fd9e360a0, 10, ffffffff, 0, 8)
                      ...
                    230ac [unknown] (/system/lib64/libsurfaceflinger.so)
                     11a0 main (/system/bin/surfaceflinger)
                    1c3fc __libc_init (/system/lib64/libc.so)
                      fd0 _start (/system/bin/surfaceflinger)
                     29ec __dl__start (/system/bin/linker64)

The fault occured in the '[unknown]' line, from objdump result of
/system/bin/surfaceflinger, we can see the branch instruction before
0x11a0:

  # objdump /system/bin/surfaceflinger
     1198:       f9400fe0        ldr     x0, [sp,#24]
     119c:       97ffff05        bl      db0 <_ZN7android14SurfaceFlinger3runEv@plt>
     11a0:       f9400be8        ldr     x8, [sp,#16]
     11a4:       b40000c8        cbz     x8, 11bc <main+0x150>

The function '_ZN7android14SurfaceFlinger3runEv' is located at 0x3a094
~ 0x3a0ac in libsurfaceflinger.so, but perf misparsed that value to
0x230ac:

  # objdump libsurfaceflinger.so
   000000000003a094 <_ZN7android14SurfaceFlinger3runEv>:
     3a094:       a9be4ff4        stp     x20, x19, [sp,#-32]!
     3a098:       a9017bfd        stp     x29, x30, [sp,#16]
     3a09c:       910043fd        add     x29, sp, #0x10
     3a0a0:       910c0013        add     x19, x0, #0x300
     3a0a4:       aa1303e0        mov     x0, x19
     3a0a8:       97fff12f        bl      36564 <_ZN7android12MessageQueue11waitMessageEv>
     3a0ac:       17fffffe        b       3a0a4 <_ZN7android14SurfaceFlinger3runEv+0x10>

There's a difference of 0x17000 between those two offsets, it seems
that this value is the VirtAddr of this dynamic library.

  # readelf -a libsurfaceflinger.so
   Program Headers:
     Type           Offset             VirtAddr           PhysAddr
                    FileSiz            MemSiz              Flags  Align
     LOAD           0x0000000000000000 0x0000000000017000 0x0000000000017000
                    0x0000000000057258 0x0000000000057258  R E    1000


                                                    


             reply	other threads:[~2016-01-05  9:16 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-05  9:14 He Kuang [this message]
2016-01-05 10:20 ` [bug] wrong result of android callchain Peter Zijlstra
2016-01-05 11:13   ` Will Deacon
2016-01-06  8:26     ` [PATCH] perf symbols: Fix wrong symbol offset according to p_addr He Kuang
2016-01-11 11:25       ` Ingo Molnar
2016-01-12  2:58         ` [PATCH v2] " He Kuang

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=568B897D.1000209@huawei.com \
    --to=hekuang@huawei.com \
    --cc=acme@kernel.org \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rabin.vincent@axis.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.