d8f69fb6fa
We use perf_arch_reg_ip() and perf_arch_reg_sp() to substitute macros for obtaining the register numbers of SP and IP. This modification enables cross analysis in the unwinding, therefore, the unwinding is not restricted to the predefined values by the macros. Consequently, the macros LIBUNWIND__ARCH_REG_{IP|SP} are removed since they are no longer used. Committer notes: Add missing "util/env.h" header to make sure we have the definition for perf_env__arch(), that when built with NO_LIBUNWIND=1 isn't available, i.e. it was being included by sheer luck. Signed-off-by: Leo Yan <leo.yan@linaro.org> Acked-by: Ian Rogers <irogers@google.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Albert Ou <aou@eecs.berkeley.edu> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Eric Lin <eric.lin@sifive.com> Cc: Fangrui Song <maskray@google.com> Cc: Guo Ren <guoren@kernel.org> Cc: Huacai Chen <chenhuacai@kernel.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: Ivan Babrou <ivan@cloudflare.com> Cc: James Clark <james.clark@arm.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: John Garry <john.g.garry@oracle.com> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Mike Leach <mike.leach@linaro.org> Cc: Ming Wang <wangming01@loongson.cn> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Paul Walmsley <paul.walmsley@sifive.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Sandipan Das <sandipan.das@amd.com> Cc: Will Deacon <will@kernel.org> Cc: linux-arm-kernel@lists.infradead.org Cc: linux-csky@vger.kernel.org Cc: linux-riscv@lists.infradead.org Link: https://lore.kernel.org/r/20230606014559.21783-4-leo.yan@linaro.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
41 lines
1.3 KiB
C
41 lines
1.3 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* This file setups defines to compile arch specific binary from the
|
|
* generic one.
|
|
*
|
|
* The function 'LIBUNWIND__ARCH_REG_ID' name is set according to arch
|
|
* name and the definition of this function is included directly from
|
|
* 'arch/arm64/util/unwind-libunwind.c', to make sure that this function
|
|
* is defined no matter what arch the host is.
|
|
*
|
|
* Finally, the arch specific unwind methods are exported which will
|
|
* be assigned to each arm64 thread.
|
|
*/
|
|
|
|
#define REMOTE_UNWIND_LIBUNWIND
|
|
|
|
/* Define arch specific functions & regs for libunwind, should be
|
|
* defined before including "unwind.h"
|
|
*/
|
|
#define LIBUNWIND__ARCH_REG_ID(regnum) libunwind__arm64_reg_id(regnum)
|
|
|
|
#include "unwind.h"
|
|
#include "libunwind-aarch64.h"
|
|
#define perf_event_arm_regs perf_event_arm64_regs
|
|
#include <../../../arch/arm64/include/uapi/asm/perf_regs.h>
|
|
#undef perf_event_arm_regs
|
|
#include "../../arch/arm64/util/unwind-libunwind.c"
|
|
|
|
/* NO_LIBUNWIND_DEBUG_FRAME is a feature flag for local libunwind,
|
|
* assign NO_LIBUNWIND_DEBUG_FRAME_AARCH64 to it for compiling arm64
|
|
* unwind methods.
|
|
*/
|
|
#undef NO_LIBUNWIND_DEBUG_FRAME
|
|
#ifdef NO_LIBUNWIND_DEBUG_FRAME_AARCH64
|
|
#define NO_LIBUNWIND_DEBUG_FRAME
|
|
#endif
|
|
#include "util/unwind-libunwind-local.c"
|
|
|
|
struct unwind_libunwind_ops *
|
|
arm64_unwind_libunwind_ops = &_unwind_libunwind_ops;
|