[PATCH v1 0/7] perf: Support multiple system call tables in the build

Ian Rogers
2025-02-01T07:15:09Z

This work builds on the clean up of system call tables and removal of
libaudit by Charlie Jenkins <charlie@rivosinc.com>.

The system call table in perf trace is used to map system call numbers
to names and vice versa. Prior to these changes, a single table
matching the perf binary's build was present. The table would be
incorrect if tracing say a 32-bit binary from a 64-bit version of
perf, the names and numbers wouldn't match.

Change the build so that a single system call file is built and the
potentially multiple tables are identifiable from the ELF machine type
of the process being examined. To determine the ELF machine type, the
executable's header is read from /proc/pid/exe with fallbacks to using
the perf's binary type when unknown.

Remove some runtime types used by the system call tables and make
equivalents generated at build time.

Ian Rogers (7):
perf syscalltble: Remove syscall_table.h
perf trace: Reorganize syscalls
perf syscalltbl: Remove struct syscalltbl
perf thread: Add support for reading the e_machine type for a thread
perf trace beauty: Add syscalltbl.sh generating all system call tables
perf syscalltbl: Use lookup table containing multiple architectures
perf build: Remove Makefile.syscalls

tools/perf/Makefile.perf | 10 +-
tools/perf/arch/alpha/entry/syscalls/Kbuild | 2 -
.../alpha/entry/syscalls/Makefile.syscalls | 5 -
tools/perf/arch/alpha/include/syscall_table.h | 2 -
tools/perf/arch/arc/entry/syscalls/Kbuild | 2 -
.../arch/arc/entry/syscalls/Makefile.syscalls | 3 -
tools/perf/arch/arc/include/syscall_table.h | 2 -
tools/perf/arch/arm/entry/syscalls/Kbuild | 4 -
.../arch/arm/entry/syscalls/Makefile.syscalls | 2 -
tools/perf/arch/arm/include/syscall_table.h | 2 -
tools/perf/arch/arm64/entry/syscalls/Kbuild | 3 -
.../arm64/entry/syscalls/Makefile.syscalls | 6 -
tools/perf/arch/arm64/include/syscall_table.h | 8 -
tools/perf/arch/csky/entry/syscalls/Kbuild | 2 -
.../csky/entry/syscalls/Makefile.syscalls | 3 -
tools/perf/arch/csky/include/syscall_table.h | 2 -
.../perf/arch/loongarch/entry/syscalls/Kbuild | 2 -
.../entry/syscalls/Makefile.syscalls | 3 -
.../arch/loongarch/include/syscall_table.h | 2 -
tools/perf/arch/mips/entry/syscalls/Kbuild | 2 -
.../mips/entry/syscalls/Makefile.syscalls | 5 -
tools/perf/arch/mips/include/syscall_table.h | 2 -
tools/perf/arch/parisc/entry/syscalls/Kbuild | 3 -
.../parisc/entry/syscalls/Makefile.syscalls | 6 -
.../perf/arch/parisc/include/syscall_table.h | 8 -
tools/perf/arch/powerpc/entry/syscalls/Kbuild | 3 -
.../powerpc/entry/syscalls/Makefile.syscalls | 6 -
.../perf/arch/powerpc/include/syscall_table.h | 8 -
tools/perf/arch/riscv/entry/syscalls/Kbuild | 2 -
.../riscv/entry/syscalls/Makefile.syscalls | 4 -
tools/perf/arch/riscv/include/syscall_table.h | 8 -
tools/perf/arch/s390/entry/syscalls/Kbuild | 2 -
.../s390/entry/syscalls/Makefile.syscalls | 5 -
tools/perf/arch/s390/include/syscall_table.h | 2 -
tools/perf/arch/sh/entry/syscalls/Kbuild | 2 -
.../arch/sh/entry/syscalls/Makefile.syscalls | 4 -
tools/perf/arch/sh/include/syscall_table.h | 2 -
tools/perf/arch/sparc/entry/syscalls/Kbuild | 3 -
.../sparc/entry/syscalls/Makefile.syscalls | 5 -
tools/perf/arch/sparc/include/syscall_table.h | 8 -
tools/perf/arch/x86/entry/syscalls/Kbuild | 3 -
.../arch/x86/entry/syscalls/Makefile.syscalls | 6 -
tools/perf/arch/x86/include/syscall_table.h | 8 -
tools/perf/arch/xtensa/entry/syscalls/Kbuild | 2 -
.../xtensa/entry/syscalls/Makefile.syscalls | 4 -
.../perf/arch/xtensa/include/syscall_table.h | 2 -
tools/perf/builtin-trace.c | 275 +++++++++++-------
tools/perf/scripts/Makefile.syscalls | 61 ----
tools/perf/scripts/syscalltbl.sh | 86 ------
tools/perf/trace/beauty/syscalltbl.sh | 274 +++++++++++++++++
tools/perf/util/syscalltbl.c | 142 ++++-----
tools/perf/util/syscalltbl.h | 22 +-
tools/perf/util/thread.c | 50 ++++
tools/perf/util/thread.h | 14 +-
54 files changed, 598 insertions(+), 506 deletions(-)
delete mode 100644 tools/perf/arch/alpha/entry/syscalls/Kbuild
delete mode 100644 tools/perf/arch/alpha/entry/syscalls/Makefile.syscalls
delete mode 100644 tools/perf/arch/alpha/include/syscall_table.h
delete mode 100644 tools/perf/arch/arc/entry/syscalls/Kbuild
delete mode 100644 tools/perf/arch/arc/entry/syscalls/Makefile.syscalls
delete mode 100644 tools/perf/arch/arc/include/syscall_table.h
delete mode 100644 tools/perf/arch/arm/entry/syscalls/Kbuild
delete mode 100644 tools/perf/arch/arm/entry/syscalls/Makefile.syscalls
delete mode 100644 tools/perf/arch/arm/include/syscall_table.h
delete mode 100644 tools/perf/arch/arm64/entry/syscalls/Kbuild
delete mode 100644 tools/perf/arch/arm64/entry/syscalls/Makefile.syscalls
delete mode 100644 tools/perf/arch/arm64/include/syscall_table.h
delete mode 100644 tools/perf/arch/csky/entry/syscalls/Kbuild
delete mode 100644 tools/perf/arch/csky/entry/syscalls/Makefile.syscalls
delete mode 100644 tools/perf/arch/csky/include/syscall_table.h
delete mode 100644 tools/perf/arch/loongarch/entry/syscalls/Kbuild
delete mode 100644 tools/perf/arch/loongarch/entry/syscalls/Makefile.syscalls
delete mode 100644 tools/perf/arch/loongarch/include/syscall_table.h
delete mode 100644 tools/perf/arch/mips/entry/syscalls/Kbuild
delete mode 100644 tools/perf/arch/mips/entry/syscalls/Makefile.syscalls
delete mode 100644 tools/perf/arch/mips/include/syscall_table.h
delete mode 100644 tools/perf/arch/parisc/entry/syscalls/Kbuild
delete mode 100644 tools/perf/arch/parisc/entry/syscalls/Makefile.syscalls
delete mode 100644 tools/perf/arch/parisc/include/syscall_table.h
delete mode 100644 tools/perf/arch/powerpc/entry/syscalls/Kbuild
delete mode 100644 tools/perf/arch/powerpc/entry/syscalls/Makefile.syscalls
delete mode 100644 tools/perf/arch/powerpc/include/syscall_table.h
delete mode 100644 tools/perf/arch/riscv/entry/syscalls/Kbuild
delete mode 100644 tools/perf/arch/riscv/entry/syscalls/Makefile.syscalls
delete mode 100644 tools/perf/arch/riscv/include/syscall_table.h
delete mode 100644 tools/perf/arch/s390/entry/syscalls/Kbuild
delete mode 100644 tools/perf/arch/s390/entry/syscalls/Makefile.syscalls
delete mode 100644 tools/perf/arch/s390/include/syscall_table.h
delete mode 100644 tools/perf/arch/sh/entry/syscalls/Kbuild
delete mode 100644 tools/perf/arch/sh/entry/syscalls/Makefile.syscalls
delete mode 100644 tools/perf/arch/sh/include/syscall_table.h
delete mode 100644 tools/perf/arch/sparc/entry/syscalls/Kbuild
delete mode 100644 tools/perf/arch/sparc/entry/syscalls/Makefile.syscalls
delete mode 100644 tools/perf/arch/sparc/include/syscall_table.h
delete mode 100644 tools/perf/arch/x86/entry/syscalls/Kbuild
delete mode 100644 tools/perf/arch/x86/entry/syscalls/Makefile.syscalls
delete mode 100644 tools/perf/arch/x86/include/syscall_table.h
delete mode 100644 tools/perf/arch/xtensa/entry/syscalls/Kbuild
delete mode 100644 tools/perf/arch/xtensa/entry/syscalls/Makefile.syscalls
delete mode 100644 tools/perf/arch/xtensa/include/syscall_table.h
delete mode 100644 tools/perf/scripts/Makefile.syscalls
delete mode 100755 tools/perf/scripts/syscalltbl.sh
create mode 100755 tools/perf/trace/beauty/syscalltbl.sh

--
2.48.1.362.g079036d154-goog