Re: perf: arm64: libunwind patch

From: Leo Yan
Date: Tue Mar 17 2020 - 23:19:42 EST


Hi,

On Tue, Mar 17, 2020 at 06:29:05PM -0400, ferar achkar wrote:
> hi,
> please find attached a compile error fix.
> regards,

I checked this with the kernel 5.6.0-rc4, but cannot reproduce this
issue on my Arm64 board (DB410c) with Debian Buster.

Below is the GCC version I am using on the Arm64 board:

# gcc --version
gcc (Debian 8.3.0-6) 8.3.0

Thanks,
Leo

> ferar
>
> ------------------
>
> ferar@barbarian:~/renegade_rk3328/perf_core$ make -j4 ARCH=arm64 ....
>
> ....
>
> Warning: Kernel ABI header at 'tools/arch/arm64/include/uapi/asm/kvm.h'
> differs from latest version at 'arch/arm64/include/uapi/asm/kvm.h'
> diff -u tools/arch/arm64/include/uapi/asm/kvm.h
> arch/arm64/include/uapi/asm/kvm.h
> Warning: Kernel ABI header at 'tools/include/uapi/asm-generic/mman-common.h'
> differs from latest version at 'include/uapi/asm-generic/mman-common.h'
> diff -u tools/include/uapi/asm-generic/mman-common.h
> include/uapi/asm-generic/mman-common.h
>
> Auto-detecting system features:
> ... dwarf: [ on ]
> ... dwarf_getlocations: [ on ]
> ... glibc: [ on ]
> ...ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ gtk2: [ OFF ]
> ... libaudit: [ on ]
> ... libbfd: [ on ]
> ... libcap: [ on ]
> ... libelf: [ on ]
> ...ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ libnuma: [ OFF ]
> ...ÂÂÂÂÂÂÂ numa_num_possible_cpus: [ OFF ]
> ...ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ libperl: [ OFF ]
> ...ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ libpython: [ OFF ]
> ... libcrypto: [ on ]
> ... libunwind: [ on ]
> ... libdw-dwarf-unwind: [ on ]
> ... zlib: [ on ]
> ... lzma: [ on ]
> ...ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ get_cpuid: [ OFF ]
> ... bpf: [ on ]
> ... libaio: [ on ]
> ...ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ libzstd: [ OFF ]
> ... disassembler-four-args: [ on ]
>
> Makefile.config:497: No sys/sdt.h found, no SDT events are defined, please
> install systemtap-sdt-devel or systemtap-sdt-dev
>
> ....
>
> Â CCÂÂÂÂÂÂ util/dwarf-regs.o
> Â CCÂÂÂÂÂÂ util/unwind-libunwind-local.o
> Â CCÂÂÂÂÂÂ util/unwind-libunwind.o
> Â CCÂÂÂÂÂÂ util/libunwind/arm64.o
> util/libunwind/arm64.c:20:40: error: no previous prototype for
> âlibunwind__arm64_reg_idâ [-Werror=missing-prototypes]
> Â#define LIBUNWIND__ARCH_REG_ID(regnum) libunwind__arm64_reg_id(regnum)
> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ ^
> util/libunwind/../../arch/arm64/util/unwind-libunwind.c:11:5: note: in
> expansion of macro âLIBUNWIND__ARCH_REG_IDâ
> Âint LIBUNWIND__ARCH_REG_ID(int regnum)
> ÂÂÂÂ ^~~~~~~~~~~~~~~~~~~~~~
> Â CCÂÂÂÂÂÂ util/zlib.o
> Â CCÂÂÂÂÂÂ util/lzma.o
> util/libunwind/arm64.c:20:40: error: redundant redeclaration of
> âlibunwind__arm64_reg_idâ [-Werror=redundant-decls]
> Â#define LIBUNWIND__ARCH_REG_ID(regnum) libunwind__arm64_reg_id(regnum)
> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ ^
> /home/ferar/renegade_rk3328/linux-5.4.0-rc1/tools/perf/util/unwind.h:49:5:
> note: in expansion of macro âLIBUNWIND__ARCH_REG_IDâ
> Âint LIBUNWIND__ARCH_REG_ID(int regnum);
> ÂÂÂÂ ^~~~~~~~~~~~~~~~~~~~~~
> util/libunwind/arm64.c:20:40: note: previous definition of
> âlibunwind__arm64_reg_idâ was here
> Â#define LIBUNWIND__ARCH_REG_ID(regnum) libunwind__arm64_reg_id(regnum)
> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ ^
> util/libunwind/../../arch/arm64/util/unwind-libunwind.c:11:5: note: in
> expansion of macro âLIBUNWIND__ARCH_REG_IDâ
> Âint LIBUNWIND__ARCH_REG_ID(int regnum)
> ÂÂÂÂ ^~~~~~~~~~~~~~~~~~~~~~
> Â CCÂÂÂÂÂÂ util/cap.o
> Â CCÂÂÂÂÂÂ util/demangle-java.o
> Â CCÂÂÂÂÂÂ util/demangle-rust.o
> ....
>
> ----------------------------------------------------------------------
>

> From 0c6bf617d5696dda28ecac776c09b3f5b3921526 Mon Sep 17 00:00:00 2001
> From: ferar achkar <ferarachkar@xxxxxxxxx>
> Date: Tue, 17 Mar 2020 18:15:37 -0400
> Subject: [PATCH] Fix Arm64 libunwind trivial compile error
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> fix trivial compile error 'no previous prototype for
> âlibunwind__arm64_reg_idâ' [-Werror=missing-prototypes], this error
> related to including userspace bundled 'unwind.h' instead of using
> perf's local version.
> ---
> tools/perf/util/libunwind/arm64.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/libunwind/arm64.c b/tools/perf/util/libunwind/arm64.c
> index 6b4e5a089..fd26e612d 100644
> --- a/tools/perf/util/libunwind/arm64.c
> +++ b/tools/perf/util/libunwind/arm64.c
> @@ -21,7 +21,7 @@
> #define LIBUNWIND__ARCH_REG_IP PERF_REG_ARM64_PC
> #define LIBUNWIND__ARCH_REG_SP PERF_REG_ARM64_SP
>
> -#include "unwind.h"
> +#include "../../util/unwind.h"
> #include "libunwind-aarch64.h"
> #include <../../../../arch/arm64/include/uapi/asm/perf_regs.h>
> #include "../../arch/arm64/util/unwind-libunwind.c"
> --
> 2.17.1
>