Re: perf: arm64: libunwind patch

From: ferar achkar
Date: Wed Mar 18 2020 - 19:47:57 EST


This is a multi-part message in MIME format. Hi Leo,

you are doing a native build, while the compile error I am having shows when cross compiling on x86_64 Linux Host:

ferar@barbarian:~/renegade_rk3328/perf_core$ make -j4 ARCH=arm64 CROSS_COMPILE=/home/ferar/vim3/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- -C tools/perf

ferar@barbarian:~/renegade_rk3328/perf_core$ head Makefile
# SPDX-License-Identifier: GPL-2.0
VERSION = 5
PATCHLEVEL = 6
SUBLEVEL = 0
EXTRAVERSION = -rc6
NAME = Kleptomaniac Octopus

...

ferar@barbarian:~/renegade_rk3328/perf_core$

regard,

ferar

On 2020-03-17 11:19 p.m., Leo Yan wrote:
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