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

Reply via email to