lkml.org 
[lkml]   [2017]   [Jun]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subjectperf: unwind: target platform=x86 not supported was: Re: [PATCH 1/2] perf evsel: Fix probing of precise_ip level for default cycles event
Em Wed, Jun 14, 2017 at 10:29:47AM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Wed, Jun 14, 2017 at 07:45:01AM +0200, Ingo Molnar escreveu:
> > triton:~/tip> perf report --stdio
> > unwind: target platform=x86 is not supported
> > unwind: target platform=x86 is not supported
> > unwind: target platform=x86 is not supported
> > unwind: target platform=x86 is not supported
> > unwind: target platform=x86 is not supported
> > unwind: target platform=x86 is not supported
> > unwind: target platform=x86 is not supported
> > unwind: target platform=x86 is not supported
>
> > # ========
> > # captured on: Wed Jun 14 07:34:42 2017
> > # hostname : triton
> > # os release : 4.10.0-23-generic
> > # perf version : 4.12.rc5.g9688eb
> > # arch : x86_64
> > # nrcpus online : 12
> > # nrcpus avail : 12
> > # cpudesc : Intel(R) Core(TM) i7-4960X CPU @ 3.60GHz
> > # cpuid : GenuineIntel,6,62,4
> > # total memory : 65917012 kB
> > # cmdline : /home/mingo/bin/perf record /home/mingo/hackbench 10
>
> > let me know if you need more info.
> >
> > Btw., note that there's also this warning:
> >
> > unwind: target platform=x86 is not supported
> >
> > (but that's unrelated to this commit.)
>
> Ok, what distro? Do you have libunwind-devel installed? I couldn't
> reproduce this one here with/without it installed, to test I build it
> with:
>
> make ARCH=x86_64 O=/tmp/build/perf -C tools/perf install-bin
>
> and without that ARCH= setting, then I record with:
>
> perf record --call-graph dwarf -a sleep 2
>
> and try what you said emitted that warning:
>
> perf report --stdio

So, the "unwind: target platform=x86 is not supported" comes only from:

a tools/perf/util/unwind-libunwind.c

That is linked by:

$ grep libunwind-local tools/perf/util/Build
libperf-$(CONFIG_LOCAL_LIBUNWIND) += unwind-libunwind-local.o
$

And here CONFIG_LOCAL_LIBUNWIND is detected:

[acme@jouet linux]$ grep CONFIG_LOCAL_LIBUNWIND /tmp/build/perf/.config-detected
CONFIG_LOCAL_LIBUNWIND=y
[acme@jouet linux]$

And that message is there:

[acme@jouet linux]$ strings ~/bin/perf | grep "unwind: target platform="
unwind: target platform=%s is not supported
[acme@jouet linux]$

So the only way for get to that point would be for
local_unwind_libunwind_ops to be NULL, which it will be if its __weak
definition seting it to zero isn't overriden by...

tools/perf/util/unwind-libunwind-local.c

#ifndef REMOTE_UNWIND_LIBUNWIND
struct unwind_libunwind_ops *
local_unwind_libunwind_ops = &_unwind_libunwind_ops;
#endif

And what defines it is...

tools/perf/util/libunwind/x86_32.c:#define REMOTE_UNWIND_LIBUNWIND

(and a arm64 file, but lets leave that aside, seems unrelated to this
case)

That will get built by...

tools/perf/util/Build:libperf-$(CONFIG_LIBUNWIND_X86) += libunwind/x86_32.o

[acme@jouet linux]$ grep CONFIG_LIBUNWIND_X86 /tmp/build/perf/.config-detected
[acme@jouet linux]$

Ingo, are you doing something unusual as building a 32-bit perf to read a
62-bit perf.data file?

Jiri, can you help here? Do you need more info?

- Arnaldo

\
 
 \ /
  Last update: 2017-06-14 15:53    [W:0.144 / U:0.164 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site