Commit bfb713ea authored by James Clark's avatar James Clark Committed by Namhyung Kim
Browse files

perf tools: Fix arm64 build by generating unistd_64.h



Since pulling in the kernel changes in commit 22f72088 ("tools
headers: Update the syscall table with the kernel sources"), arm64 is
no longer using a generic syscall header and generates one from the
syscall table. Therefore we must also generate the syscall header for
arm64 before building Perf.

Add it as a dependency to libperf which uses one syscall number. Perf
uses more, but as libperf is a dependency of Perf it will be generated
for both.

Future platforms that need this will have to add their own syscall-y
targets in libperf manually. Unfortunately the arch specific files that
do this (e.g. arch/arm64/include/asm/Kbuild) can't easily be imported
into the Perf build. But Perf only needs a subset of the generated files
anyway, so redefining them is probably the correct thing to do.

Fixes: 22f72088 ("tools headers: Update the syscall table with the kernel sources")
Signed-off-by: default avatarJames Clark <james.clark@linaro.org>
Tested-by: default avatarHarshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
Link: https://lore.kernel.org/r/20250417-james-perf-fix-gen-syscall-v1-1-1d268c923901@linaro.org


Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
parent 9c32cda4
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ libdir_relative_SQ = $(subst ','\'',$(libdir_relative))
TEST_ARGS := $(if $(V),-v)

INCLUDES = \
-I$(OUTPUT)/../arch/$(SRCARCH)/include/generated/uapi \
-I$(srctree)/tools/lib/perf/include \
-I$(srctree)/tools/lib/ \
-I$(srctree)/tools/include \
@@ -99,7 +100,16 @@ $(LIBAPI)-clean:
	$(call QUIET_CLEAN, libapi)
	$(Q)$(MAKE) -C $(LIB_DIR) O=$(OUTPUT) clean >/dev/null

$(LIBPERF_IN): FORCE
uapi-asm := $(OUTPUT)/../arch/$(SRCARCH)/include/generated/uapi/asm
ifeq ($(SRCARCH),arm64)
	syscall-y := $(uapi-asm)/unistd_64.h
endif
uapi-asm-generic:
	$(if $(syscall-y),\
		$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.asm-headers obj=$(uapi-asm) \
		generic=include/uapi/asm-generic $(syscall-y),)

$(LIBPERF_IN): uapi-asm-generic FORCE
	$(Q)$(MAKE) $(build)=libperf

$(LIBPERF_A): $(LIBPERF_IN)
+1 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ include $(srctree)/tools/scripts/Makefile.arch
$(call detected_var,SRCARCH)

CFLAGS += -I$(OUTPUT)arch/$(SRCARCH)/include/generated
CFLAGS += -I$(OUTPUT)arch/$(SRCARCH)/include/generated/uapi

# Additional ARCH settings for ppc
ifeq ($(SRCARCH),powerpc)