diff mbox series

perf syscalltbl: Add syscalltbl__id_at_idx() with no syscall table support

Message ID 20240830-perf_syscalltbl_fix-v1-1-e2ff61ee5e8e@rivosinc.com (mailing list archive)
State New
Headers show
Series perf syscalltbl: Add syscalltbl__id_at_idx() with no syscall table support | expand

Checks

Context Check Description
conchuod/vmtest-for-next-PR success PR summary
conchuod/patch-1-test-1 success .github/scripts/patches/tests/build_rv32_defconfig.sh
conchuod/patch-1-test-2 success .github/scripts/patches/tests/build_rv64_clang_allmodconfig.sh
conchuod/patch-1-test-3 success .github/scripts/patches/tests/build_rv64_gcc_allmodconfig.sh
conchuod/patch-1-test-4 success .github/scripts/patches/tests/build_rv64_nommu_k210_defconfig.sh
conchuod/patch-1-test-5 success .github/scripts/patches/tests/build_rv64_nommu_virt_defconfig.sh
conchuod/patch-1-test-6 warning .github/scripts/patches/tests/checkpatch.sh
conchuod/patch-1-test-7 success .github/scripts/patches/tests/dtb_warn_rv64.sh
conchuod/patch-1-test-8 success .github/scripts/patches/tests/header_inline.sh
conchuod/patch-1-test-9 success .github/scripts/patches/tests/kdoc.sh
conchuod/patch-1-test-10 success .github/scripts/patches/tests/module_param.sh
conchuod/patch-1-test-11 success .github/scripts/patches/tests/verify_fixes.sh
conchuod/patch-1-test-12 success .github/scripts/patches/tests/verify_signedoff.sh

Commit Message

Charlie Jenkins Aug. 31, 2024, 4:30 a.m. UTC
When HAVE_SYSCALL_TABLE_SUPPORT is not defined, neither is
syscalltbl__id_at_idx(). However, this function is expected to be
defined when HAVE_BPF_SKEL is defined.

Return -1 from syscalltbl__id_at_idx() to match the other functions when
HAVE_SYSCALL_TABLE_SUPPORT is not defined.

Without this, compiling perf on riscv when libtraceevents, libelf, and
clang are available will cause the functions trying to call
syscalltbl__id_at_idx() to be compiled. This results in the following
error:

/usr/bin/ld: perf-in.o: in function `.L0 ':
builtin-trace.c:(.text+0x60b14): undefined reference to `syscalltbl__id_at_idx'
/usr/bin/ld: builtin-trace.c:(.text+0x60c6c): undefined reference to `syscalltbl__id_at_idx'
/usr/bin/ld: perf-in.o: in function `.L2564':
builtin-trace.c:(.text+0x60cb6): undefined reference to `syscalltbl__id_at_idx'
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile.perf:793: perf] Error 1
make[1]: *** [Makefile.perf:290: sub-make] Error 2
make: *** [Makefile:70: all] Error 2
make: Leaving directory '/src/linux-6.11-rc5/tools/perf'

This patch resolves this issue for all architectures which do not define
HAVE_SYSCALL_TABLE_SUPPORT.

$ ./perf trace -e syscalls:sys_enter_mmap --max-events=1 ls
0.000 ls/287 syscalls:sys_enter_mmap(__syscall_nr: 222, len: 9939, prot: READ, flags: PRIVATE, fd: 3)

Signed-off-by: Charlie Jenkins <charlie@rivosinc.com>
Reported-by: David Abdurachmanov <davidlt@rivosinc.com>
Suggested-by: David Abdurachmanov <davidlt@rivosinc.com>
Fixes: 7a2fb5619cc1 ("perf trace: Fix iteration of syscall ids in syscalltbl->entries")
---
 tools/perf/util/syscalltbl.c | 5 +++++
 1 file changed, 5 insertions(+)


---
base-commit: 985bf40edf4343dcb04c33f58b40b4a85c1776d4
change-id: 20240830-perf_syscalltbl_fix-4f586221795e
diff mbox series

Patch

diff --git a/tools/perf/util/syscalltbl.c b/tools/perf/util/syscalltbl.c
index 0dd26b991b3f..12654460428f 100644
--- a/tools/perf/util/syscalltbl.c
+++ b/tools/perf/util/syscalltbl.c
@@ -188,4 +188,9 @@  int syscalltbl__strglobmatch_first(struct syscalltbl *tbl, const char *syscall_g
 {
 	return syscalltbl__strglobmatch_next(tbl, syscall_glob, idx);
 }
+
+int syscalltbl__id_at_idx(struct syscalltbl *tbl __always_unused, int idx __always_unused)
+{
+	return -1;
+}
 #endif /* HAVE_SYSCALL_TABLE_SUPPORT */