Messages in this thread | | | Date | Mon, 27 Mar 2017 12:39:54 +0900 | From | Masami Hiramatsu <> | Subject | [BUG?] perf: dwarf unwind doesn't work correctly with -static |
| |
Hello,
On Fri, 24 Mar 2017 22:00:30 +0900 Masami Hiramatsu <mhiramat@kernel.org> wrote:
> On Thu, 23 Mar 2017 22:24:01 -0500 > Kim Phillips <kim.phillips@arm.com> wrote: > > > On Thu, 23 Feb 2017 16:50:18 +0900 > > Masami Hiramatsu <mhiramat@kernel.org> wrote: > > > > [sorry for the delay, I just saw this] > > > > > perf record -g dwarf (and perf report) doesn't show correct callchain > > > on aarch64. Here is how to reproduce it. > > ... > > > # Samples: 6K of event 'cpu-clock:u' > > > # Event count (approx.): 1623750000 > > > # > > > # Children Self Command Shared Object Symbol > > > # ........ ........ ....... ............. .......................... > > > # > > > 17.21% 17.21% main main [.] func2 > > > | > > > ---func2 > > > > > > 17.09% 17.09% main main [.] func1 > > > | > > > ---func1 > > > > > > 16.67% 16.67% main main [.] main > > > | > > > ---main > > > ..... > > > > > > So, as you can see, the call graph reported each function has been > > > called from itself. If I report it with fp as below, perf reported > > > correct callgraph. > > ... > > > I guess there is a bug in libunwind on aarch64 or we missed to pass > > > the stack data to libunwind. (BTW, it works correctly on arm32) > > > > Trying to replicate this on a debian 9 ("stretch") arm64 box: > > I'm using debian 8 ("jessie"), but I can try debian 9 too.
I've tried debian 9 and found this issue is another reason.
> 2) Build attached program as below > # gcc -O0 -ggdb3 -funwind-tables -o main main.c
Originally, I reported above, but that is not correct, when I cleaned up the command line, I missed important piece -- -static.
I've tested several binaries with different gcc, and found that - Even with linaro-gcc 6.3.1, this issue happened. - But natively build binary with gcc-6.3 (stretch) I didn't see it. - Building binary with -static, it happened even with native binary 6.3. - And I saw this happened even on x86-64 with -static.
So, I think the correct subject is
"perf: dwarf unwind doesn't work correctly with -static"
Thank you,
-- Masami Hiramatsu <mhiramat@kernel.org>
| |