perf unwind: Odd message about x86 unwind

From: Arnaldo Carvalho de Melo
Date: Thu Jun 30 2016 - 08:06:12 EST


Hi He,

While testing a patch by Peter Zijlstra to the --stdio
annotation code I came accross these messages:

[acme@jouet linux]$ perf annotate __vdso_gettimeofday 2>&1 | head -20
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
Percent | Source code & Disassembly of perf-vdso.so-E5tFUx for cycles:u
-----------------------------------------------------------------------------
:
:
:
: Disassembly of section .text:
:
: 0000000000000cd0 <__vdso_gettimeofday@@LINUX_2.6>:
0.00 : cd0: push %rbp
0.00 : cd1: mov %rsp,%rbp
0.00 : cd4: push %r15
0.00 : cd6: push %r14
0.00 : cd8: push %r13
0.00 : cda: push %r12
0.00 : cdc: push %rbx
0.00 : cdd: sub $0x10,%rsp
[acme@jouet linux]$

And bisected it down to:

commit 52ffe0ff02fc053a025c381d5808e9ecd3206dfe
Author: He Kuang <hekuang@xxxxxxxxxx>
Date: Fri Jun 3 03:33:22 2016 +0000

perf callchain: Support x86 target platform

Support x86(32-bit) cross platform callchain unwind.

Signed-off-by: He Kuang <hekuang@xxxxxxxxxx>
Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx>

--------------------------------------------------

The source code where this message is emitted is:

struct unwind_libunwind_ops __weak *local_unwind_libunwind_ops;
<SNIP>
unwind__prepare_access()
{
struct unwind_libunwind_ops *ops = local_unwind_libunwind_ops;
<SNIP>
if (!strcmp(arch, "x86")) {
if (dso_type != DSO__TYPE_64BIT)
ops = x86_32_unwind_libunwind_ops;
}
<SNIP>
if (!ops) {
pr_err("unwind: target platform=%s is not supported\n", arch);
return -1;
}

So, this should fallback to local_unwind_libunwind_ops, why is this not being
set properly?

Feature detection says:

... libunwind: [ on ]
... libdw-dwarf-unwind: [ on ]

This is:

[acme@jouet linux]$ uname -a
Linux jouet 4.5.7-300.fc24.x86_64 #1 SMP Wed Jun 8 18:12:45 UTC 2016 x86_64 x86_64 x86_64 GNU/Linuxo

Can you please check this?

- Arnaldo