perf tools: Build x86 32-bit syscall table from arch/x86/entry/syscalls/syscall_32.tbl

To remove one more use of the audit libs and address a problem reported
with a recent change where a function isn't available when using the
audit libs method, that should really go away, this being one step in
that direction.

The script used to generate the 64-bit syscall table was already
parametrized to generate for both 64-bit and 32-bit, so just use it and
wire the generated table to the syscalltbl.c routines.
Reported-by: default avatarJiri Slaby <jirislaby@kernel.org>
Suggested-by: default avatarIan Rogers <irogers@google.com>
Reviewed-by: default avatarIan Rogers <irogers@google.com>
Tested-by: default avatarJiri Slaby <jirislaby@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Howard Chu <howardchu95@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/lkml/6fe63fa3-6c63-4b75-ac09-884d26f6fb95@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 39c24341
...@@ -31,15 +31,9 @@ $(call detected_var,SRCARCH) ...@@ -31,15 +31,9 @@ $(call detected_var,SRCARCH)
ifneq ($(NO_SYSCALL_TABLE),1) ifneq ($(NO_SYSCALL_TABLE),1)
NO_SYSCALL_TABLE := 1 NO_SYSCALL_TABLE := 1
ifeq ($(SRCARCH),x86) ifeq ($(SRCARCH),$(filter $(SRCARCH),x86 powerpc arm64 s390 mips loongarch))
ifeq (${IS_64_BIT}, 1)
NO_SYSCALL_TABLE := 0
endif
else
ifeq ($(SRCARCH),$(filter $(SRCARCH),powerpc arm64 s390 mips loongarch))
NO_SYSCALL_TABLE := 0 NO_SYSCALL_TABLE := 0
endif endif
endif
ifneq ($(NO_SYSCALL_TABLE),1) ifneq ($(NO_SYSCALL_TABLE),1)
CFLAGS += -DHAVE_SYSCALL_TABLE_SUPPORT CFLAGS += -DHAVE_SYSCALL_TABLE_SUPPORT
...@@ -55,8 +49,9 @@ endif ...@@ -55,8 +49,9 @@ endif
# Additional ARCH settings for x86 # Additional ARCH settings for x86
ifeq ($(SRCARCH),x86) ifeq ($(SRCARCH),x86)
$(call detected,CONFIG_X86) $(call detected,CONFIG_X86)
CFLAGS += -I$(OUTPUT)arch/x86/include/generated
ifeq (${IS_64_BIT}, 1) ifeq (${IS_64_BIT}, 1)
CFLAGS += -DHAVE_ARCH_X86_64_SUPPORT -I$(OUTPUT)arch/x86/include/generated CFLAGS += -DHAVE_ARCH_X86_64_SUPPORT
ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S
LIBUNWIND_LIBS = -lunwind-x86_64 -lunwind -llzma LIBUNWIND_LIBS = -lunwind-x86_64 -lunwind -llzma
$(call detected,CONFIG_X86_64) $(call detected,CONFIG_X86_64)
......
...@@ -13,6 +13,7 @@ PERF_HAVE_JITDUMP := 1 ...@@ -13,6 +13,7 @@ PERF_HAVE_JITDUMP := 1
generated := $(OUTPUT)arch/x86/include/generated generated := $(OUTPUT)arch/x86/include/generated
out := $(generated)/asm out := $(generated)/asm
header := $(out)/syscalls_64.c header := $(out)/syscalls_64.c
header_32 := $(out)/syscalls_32.c
sys := $(srctree)/tools/perf/arch/x86/entry/syscalls sys := $(srctree)/tools/perf/arch/x86/entry/syscalls
systbl := $(sys)/syscalltbl.sh systbl := $(sys)/syscalltbl.sh
...@@ -22,7 +23,10 @@ $(shell [ -d '$(out)' ] || mkdir -p '$(out)') ...@@ -22,7 +23,10 @@ $(shell [ -d '$(out)' ] || mkdir -p '$(out)')
$(header): $(sys)/syscall_64.tbl $(systbl) $(header): $(sys)/syscall_64.tbl $(systbl)
$(Q)$(SHELL) '$(systbl)' $(sys)/syscall_64.tbl 'x86_64' > $@ $(Q)$(SHELL) '$(systbl)' $(sys)/syscall_64.tbl 'x86_64' > $@
$(header_32): $(sys)/syscall_32.tbl $(systbl)
$(Q)$(SHELL) '$(systbl)' $(sys)/syscall_32.tbl 'x86' > $@
clean:: clean::
$(call QUIET_CLEAN, x86) $(RM) -r $(header) $(generated) $(call QUIET_CLEAN, x86) $(RM) -r $(header) $(generated)
archheaders: $(header) archheaders: $(header) $(header_32)
This diff is collapsed.
...@@ -172,6 +172,7 @@ check lib/ctype.c '-I "^EXPORT_SYMBOL" -I "^#include <linux/export.h>" -B ...@@ -172,6 +172,7 @@ check lib/ctype.c '-I "^EXPORT_SYMBOL" -I "^#include <linux/export.h>" -B
check lib/list_sort.c '-I "^#include <linux/bug.h>"' check lib/list_sort.c '-I "^#include <linux/bug.h>"'
# diff non-symmetric files # diff non-symmetric files
check_2 tools/perf/arch/x86/entry/syscalls/syscall_32.tbl arch/x86/entry/syscalls/syscall_32.tbl
check_2 tools/perf/arch/x86/entry/syscalls/syscall_64.tbl arch/x86/entry/syscalls/syscall_64.tbl check_2 tools/perf/arch/x86/entry/syscalls/syscall_64.tbl arch/x86/entry/syscalls/syscall_64.tbl
check_2 tools/perf/arch/powerpc/entry/syscalls/syscall.tbl arch/powerpc/kernel/syscalls/syscall.tbl check_2 tools/perf/arch/powerpc/entry/syscalls/syscall.tbl arch/powerpc/kernel/syscalls/syscall.tbl
check_2 tools/perf/arch/s390/entry/syscalls/syscall.tbl arch/s390/kernel/syscalls/syscall.tbl check_2 tools/perf/arch/s390/entry/syscalls/syscall.tbl arch/s390/kernel/syscalls/syscall.tbl
......
...@@ -18,6 +18,10 @@ ...@@ -18,6 +18,10 @@
#include <asm/syscalls_64.c> #include <asm/syscalls_64.c>
const int syscalltbl_native_max_id = SYSCALLTBL_x86_64_MAX_ID; const int syscalltbl_native_max_id = SYSCALLTBL_x86_64_MAX_ID;
static const char *const *syscalltbl_native = syscalltbl_x86_64; static const char *const *syscalltbl_native = syscalltbl_x86_64;
#elif defined(__i386__)
#include <asm/syscalls_32.c>
const int syscalltbl_native_max_id = SYSCALLTBL_x86_MAX_ID;
static const char *const *syscalltbl_native = syscalltbl_x86;
#elif defined(__s390x__) #elif defined(__s390x__)
#include <asm/syscalls_64.c> #include <asm/syscalls_64.c>
const int syscalltbl_native_max_id = SYSCALLTBL_S390_64_MAX_ID; const int syscalltbl_native_max_id = SYSCALLTBL_S390_64_MAX_ID;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment