[PATCH v3 16/16] perf tools: Remove dependency on libaudit
Charlie Jenkins
charlie at rivosinc.com
Tue Dec 17 16:02:54 PST 2024
On Tue, Dec 17, 2024 at 03:36:27PM -0800, Ian Rogers wrote:
> On Mon, Dec 16, 2024 at 10:40 PM Charlie Jenkins <charlie at rivosinc.com> wrote:
> >
> > All architectures now support HAVE_SYSCALL_TABLE_SUPPORT, so the flag is
> > no longer needed. With the removal of the flag, the related
> > GENERIC_SYSCALL_TABLE can also be removed. libaudit was only used as a
> > fallback for when HAVE_SYSCALL_TABLE_SUPPORT was not defined, so
> > libaudit is also no longer needed for any architecture.
> >
> > Signed-off-by: Charlie Jenkins <charlie at rivosinc.com>
> > ---
> > Documentation/admin-guide/workload-tracing.rst | 2 +-
> > tools/build/feature/Makefile | 4 --
> > tools/build/feature/test-libaudit.c | 11 ------
> > tools/perf/Documentation/perf-check.txt | 1 -
> > tools/perf/Makefile.config | 31 +--------------
> > tools/perf/Makefile.perf | 15 --------
> > tools/perf/builtin-check.c | 1 -
> > tools/perf/builtin-help.c | 2 -
> > tools/perf/builtin-trace.c | 30 ---------------
> > tools/perf/perf.c | 6 +--
> > tools/perf/tests/make | 7 +---
> > tools/perf/util/env.c | 4 +-
> > tools/perf/util/generate-cmdlist.sh | 4 +-
> > tools/perf/util/syscalltbl.c | 52 --------------------------
> > 14 files changed, 10 insertions(+), 160 deletions(-)
> >
> > diff --git a/Documentation/admin-guide/workload-tracing.rst b/Documentation/admin-guide/workload-tracing.rst
> > index b2e254ec8ee846afe78eede74a825b51c6ab119b..6be38c1b9c5bb4be899fd261c6d2911abcf959dc 100644
> > --- a/Documentation/admin-guide/workload-tracing.rst
> > +++ b/Documentation/admin-guide/workload-tracing.rst
> > @@ -83,7 +83,7 @@ scripts/ver_linux is a good way to check if your system already has
> > the necessary tools::
> >
> > sudo apt-get build-essentials flex bison yacc
> > - sudo apt install libelf-dev systemtap-sdt-dev libaudit-dev libslang2-dev libperl-dev libdw-dev
> > + sudo apt install libelf-dev systemtap-sdt-dev libslang2-dev libperl-dev libdw-dev
> >
> > cscope is a good tool to browse kernel sources. Let's install it now::
> >
> > diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
> > index 043dfd00fce72d8f651ccd9b3265a0183f500e5c..e0b63e9d0251abe6d5eafc6d2f26b940918b16ee 100644
> > --- a/tools/build/feature/Makefile
> > +++ b/tools/build/feature/Makefile
> > @@ -13,7 +13,6 @@ FILES= \
> > test-gtk2.bin \
> > test-gtk2-infobar.bin \
> > test-hello.bin \
> > - test-libaudit.bin \
> > test-libbfd.bin \
> > test-libbfd-buildid.bin \
> > test-disassembler-four-args.bin \
> > @@ -228,9 +227,6 @@ $(OUTPUT)test-libunwind-debug-frame-arm.bin:
> > $(OUTPUT)test-libunwind-debug-frame-aarch64.bin:
> > $(BUILD) -lelf -llzma -lunwind-aarch64
> >
> > -$(OUTPUT)test-libaudit.bin:
> > - $(BUILD) -laudit
> > -
> > $(OUTPUT)test-libslang.bin:
> > $(BUILD) -lslang
> >
> > diff --git a/tools/build/feature/test-libaudit.c b/tools/build/feature/test-libaudit.c
> > deleted file mode 100644
> > index f5b0863fa1ec240795339428d8deed98a946d405..0000000000000000000000000000000000000000
> > --- a/tools/build/feature/test-libaudit.c
> > +++ /dev/null
> > @@ -1,11 +0,0 @@
> > -// SPDX-License-Identifier: GPL-2.0
> > -#include <libaudit.h>
> > -
> > -extern int printf(const char *format, ...);
> > -
> > -int main(void)
> > -{
> > - printf("error message: %s\n", audit_errno_to_name(0));
> > -
> > - return audit_open();
> > -}
> > diff --git a/tools/perf/Documentation/perf-check.txt b/tools/perf/Documentation/perf-check.txt
> > index 31741499e7867c9b712227f31a2958fd641d474a..e6d2ceeb2ca7de850f41b1baa0375b6f984bb08f 100644
> > --- a/tools/perf/Documentation/perf-check.txt
> > +++ b/tools/perf/Documentation/perf-check.txt
> > @@ -51,7 +51,6 @@ feature::
> > dwarf_getlocations / HAVE_LIBDW_SUPPORT
> > dwarf-unwind / HAVE_DWARF_UNWIND_SUPPORT
> > auxtrace / HAVE_AUXTRACE_SUPPORT
> > - libaudit / HAVE_LIBAUDIT_SUPPORT
> > libbfd / HAVE_LIBBFD_SUPPORT
> > libcapstone / HAVE_LIBCAPSTONE_SUPPORT
> > libcrypto / HAVE_LIBCRYPTO_SUPPORT
> > diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
> > index 3f82ba907381049213c055ab10c3fe14d9572073..a57b2364578f57e31476f5041a06a0cd22d8b27e 100644
> > --- a/tools/perf/Makefile.config
> > +++ b/tools/perf/Makefile.config
> > @@ -28,20 +28,7 @@ include $(srctree)/tools/scripts/Makefile.arch
> >
> > $(call detected_var,SRCARCH)
> >
> > -ifneq ($(NO_SYSCALL_TABLE),1)
> > - NO_SYSCALL_TABLE := 1
> > -
> > - # architectures that use the generic syscall table scripts
> > - ifneq ($(filter $(SRCARCH), $(generic_syscall_table_archs)),)
> > - NO_SYSCALL_TABLE := 0
> > - CFLAGS += -DGENERIC_SYSCALL_TABLE
> > - CFLAGS += -I$(OUTPUT)tools/perf/arch/$(SRCARCH)/include/generated
> > - endif
> > -
> > - ifneq ($(NO_SYSCALL_TABLE),1)
> > - CFLAGS += -DHAVE_SYSCALL_TABLE_SUPPORT
> > - endif
> > -endif
> > +CFLAGS += -I$(OUTPUT)tools/perf/arch/$(SRCARCH)/include/generated
> >
> > # Additional ARCH settings for ppc
> > ifeq ($(SRCARCH),powerpc)
> > @@ -755,21 +742,7 @@ ifndef NO_LIBUNWIND
> > endif
> >
> > ifneq ($(NO_LIBTRACEEVENT),1)
> > - ifeq ($(NO_SYSCALL_TABLE),0)
> > - $(call detected,CONFIG_TRACE)
> > - else
> > - ifndef NO_LIBAUDIT
> > - $(call feature_check,libaudit)
> > - ifneq ($(feature-libaudit), 1)
> > - $(warning No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev)
> > - NO_LIBAUDIT := 1
> > - else
> > - CFLAGS += -DHAVE_LIBAUDIT_SUPPORT
> > - EXTLIBS += -laudit
> > - $(call detected,CONFIG_TRACE)
> > - endif
> > - endif
> > - endif
> > + $(call detected,CONFIG_TRACE)
> > endif
> >
> > ifndef NO_LIBCRYPTO
> > diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
> > index 2c6a509c800d3037933c9b49e5a7dafbf78fda0c..ab2d075ff3a23350a5eea12508cf0376f1d9f4e8 100644
> > --- a/tools/perf/Makefile.perf
> > +++ b/tools/perf/Makefile.perf
> > @@ -59,8 +59,6 @@ include ../scripts/utilities.mak
> > #
> > # Define NO_LIBNUMA if you do not want numa perf benchmark
> > #
> > -# Define NO_LIBAUDIT if you do not want libaudit support
> > -#
> > # Define NO_LIBBIONIC if you do not want bionic support
> > #
> > # Define NO_LIBCRYPTO if you do not want libcrypto (openssl) support
> > @@ -119,10 +117,6 @@ include ../scripts/utilities.mak
> > #
> > # Define LIBBPF_DYNAMIC to enable libbpf dynamic linking.
> > #
> > -# Define NO_SYSCALL_TABLE=1 to disable the use of syscall id to/from name tables
> > -# generated from the kernel .tbl or unistd.h files and use, if available, libaudit
> > -# for doing the conversions to/from strings/id.
> > -#
> > # Define NO_LIBPFM4 to disable libpfm4 events extension.
> > #
> > # Define NO_LIBDEBUGINFOD if you do not want support debuginfod
> > @@ -310,11 +304,7 @@ ifeq ($(filter feature-dump,$(MAKECMDGOALS)),feature-dump)
> > FEATURE_TESTS := all
> > endif
> > endif
> > -# architectures that use the generic syscall table
> > -generic_syscall_table_archs := riscv arc csky arm sh sparc xtensa x86 alpha parisc arm64 loongarch mips powerpc s390
> > -ifneq ($(filter $(SRCARCH), $(generic_syscall_table_archs)),)
> > include $(srctree)/tools/perf/scripts/Makefile.syscalls
> > -endif
> > include Makefile.config
> > endif
> >
> > @@ -1099,11 +1089,6 @@ endif
> > $(INSTALL) $(OUTPUT)perf-archive -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'
> > $(call QUIET_INSTALL, perf-iostat) \
> > $(INSTALL) $(OUTPUT)perf-iostat -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'
> > -ifndef NO_LIBAUDIT
> > - $(call QUIET_INSTALL, strace/groups) \
> > - $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(STRACE_GROUPS_INSTDIR_SQ)'; \
> > - $(INSTALL) trace/strace/groups/* -m 644 -t '$(DESTDIR_SQ)$(STRACE_GROUPS_INSTDIR_SQ)'
> > -endif
> > ifndef NO_LIBPERL
> > $(call QUIET_INSTALL, perl-scripts) \
> > $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'; \
> > diff --git a/tools/perf/builtin-check.c b/tools/perf/builtin-check.c
> > index 2346536a5ee14f91ecd10bd130a64676e871e1b2..7aed7b9f4f5270527ee1d36327eb6a01f196a46a 100644
> > --- a/tools/perf/builtin-check.c
> > +++ b/tools/perf/builtin-check.c
> > @@ -31,7 +31,6 @@ struct feature_status supported_features[] = {
> > FEATURE_STATUS("dwarf_getlocations", HAVE_LIBDW_SUPPORT),
> > FEATURE_STATUS("dwarf-unwind", HAVE_DWARF_UNWIND_SUPPORT),
> > FEATURE_STATUS("auxtrace", HAVE_AUXTRACE_SUPPORT),
> > - FEATURE_STATUS("libaudit", HAVE_LIBAUDIT_SUPPORT),
> > FEATURE_STATUS("libbfd", HAVE_LIBBFD_SUPPORT),
> > FEATURE_STATUS("libcapstone", HAVE_LIBCAPSTONE_SUPPORT),
> > FEATURE_STATUS("libcrypto", HAVE_LIBCRYPTO_SUPPORT),
> > diff --git a/tools/perf/builtin-help.c b/tools/perf/builtin-help.c
> > index 0854d3cd9f6a304cd9cb50ad430d5706d91df0e9..7be6fb6df595923c15ae51747d5bf17d867ae785 100644
> > --- a/tools/perf/builtin-help.c
> > +++ b/tools/perf/builtin-help.c
> > @@ -447,9 +447,7 @@ int cmd_help(int argc, const char **argv)
> > #ifdef HAVE_LIBELF_SUPPORT
> > "probe",
> > #endif
> > -#if defined(HAVE_LIBAUDIT_SUPPORT) || defined(HAVE_SYSCALL_TABLE_SUPPORT)
> > "trace",
> > -#endif
> > NULL };
> > const char *builtin_help_usage[] = {
> > "perf help [--all] [--man|--web|--info] [command]",
> > diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
> > index 6a1a128fe645014d0347ad4ec3e0c9e77ec59aee..0fddf34458db4fe4896d25f427f2ae29cb3aa15f 100644
> > --- a/tools/perf/builtin-trace.c
> > +++ b/tools/perf/builtin-trace.c
> > @@ -2069,30 +2069,11 @@ static int trace__read_syscall_info(struct trace *trace, int id)
> > const char *name = syscalltbl__name(trace->sctbl, id);
> > int err;
> >
> > -#ifdef HAVE_SYSCALL_TABLE_SUPPORT
> > if (trace->syscalls.table == NULL) {
> > trace->syscalls.table = calloc(trace->sctbl->syscalls.max_id + 1, sizeof(*sc));
> > if (trace->syscalls.table == NULL)
> > return -ENOMEM;
> > }
> > -#else
> > - if (id > trace->sctbl->syscalls.max_id || (id == 0 && trace->syscalls.table == NULL)) {
> > - // When using libaudit we don't know beforehand what is the max syscall id
> > - struct syscall *table = realloc(trace->syscalls.table, (id + 1) * sizeof(*sc));
> > -
> > - if (table == NULL)
> > - return -ENOMEM;
> > -
> > - // Need to memset from offset 0 and +1 members if brand new
> > - if (trace->syscalls.table == NULL)
> > - memset(table, 0, (id + 1) * sizeof(*sc));
> > - else
> > - memset(table + trace->sctbl->syscalls.max_id + 1, 0, (id - trace->sctbl->syscalls.max_id) * sizeof(*sc));
> > -
> > - trace->syscalls.table = table;
> > - trace->sctbl->syscalls.max_id = id;
> > - }
> > -#endif
> > sc = trace->syscalls.table + id;
> > if (sc->nonexistent)
> > return -EEXIST;
> > @@ -2439,18 +2420,7 @@ static struct syscall *trace__syscall_info(struct trace *trace,
> >
> > err = -EINVAL;
> >
> > -#ifdef HAVE_SYSCALL_TABLE_SUPPORT
> > if (id > trace->sctbl->syscalls.max_id) {
> > -#else
> > - if (id >= trace->sctbl->syscalls.max_id) {
> > - /*
> > - * With libaudit we don't know beforehand what is the max_id,
> > - * so we let trace__read_syscall_info() figure that out as we
> > - * go on reading syscalls.
> > - */
> > - err = trace__read_syscall_info(trace, id);
> > - if (err)
> > -#endif
> > goto out_cant_read;
> > }
> >
> > diff --git a/tools/perf/perf.c b/tools/perf/perf.c
> > index a2987f2cfe1a3958f53239ed1a4eec3f87d7466a..f0617cc41f5fe638986e5d8316a6b3056c2c4bc5 100644
> > --- a/tools/perf/perf.c
> > +++ b/tools/perf/perf.c
> > @@ -84,7 +84,7 @@ static struct cmd_struct commands[] = {
> > #endif
> > { "kvm", cmd_kvm, 0 },
> > { "test", cmd_test, 0 },
> > -#if defined(HAVE_LIBTRACEEVENT) && (defined(HAVE_LIBAUDIT_SUPPORT) || defined(HAVE_SYSCALL_TABLE_SUPPORT))
> > +#if defined(HAVE_LIBTRACEEVENT)
> > { "trace", cmd_trace, 0 },
> > #endif
> > { "inject", cmd_inject, 0 },
> > @@ -514,10 +514,6 @@ int main(int argc, const char **argv)
> > fprintf(stderr,
> > "trace command not available: missing libtraceevent devel package at build time.\n");
> > goto out;
> > -#elif !defined(HAVE_LIBAUDIT_SUPPORT) && !defined(HAVE_SYSCALL_TABLE_SUPPORT)
> > - fprintf(stderr,
> > - "trace command not available: missing audit-libs devel package at build time.\n");
> > - goto out;
> > #else
> > setup_path();
> > argv[0] = "trace";
> > diff --git a/tools/perf/tests/make b/tools/perf/tests/make
> > index a7fcbd589752a90459815bd21075528c6dfa4d94..0ee94caf9ec19820a94a87dd46a7ccf1cefb844a 100644
> > --- a/tools/perf/tests/make
> > +++ b/tools/perf/tests/make
> > @@ -86,7 +86,6 @@ make_no_libdw_dwarf_unwind := NO_LIBDW_DWARF_UNWIND=1
> > make_no_backtrace := NO_BACKTRACE=1
> > make_no_libcapstone := NO_CAPSTONE=1
> > make_no_libnuma := NO_LIBNUMA=1
> > -make_no_libaudit := NO_LIBAUDIT=1
> > make_no_libbionic := NO_LIBBIONIC=1
> > make_no_auxtrace := NO_AUXTRACE=1
> > make_no_libbpf := NO_LIBBPF=1
> > @@ -97,7 +96,6 @@ make_no_libllvm := NO_LIBLLVM=1
> > make_with_babeltrace:= LIBBABELTRACE=1
> > make_with_coresight := CORESIGHT=1
> > make_no_sdt := NO_SDT=1
> > -make_no_syscall_tbl := NO_SYSCALL_TABLE=1
> > make_no_libpfm4 := NO_LIBPFM4=1
> > make_with_gtk2 := GTK2=1
> > make_refcnt_check := EXTRA_CFLAGS="-DREFCNT_CHECKING=1"
> > @@ -122,10 +120,10 @@ make_static := LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX3
> > # all the NO_* variable combined
> > make_minimal := NO_LIBPERL=1 NO_LIBPYTHON=1 NO_GTK2=1
> > make_minimal += NO_DEMANGLE=1 NO_LIBELF=1 NO_BACKTRACE=1
> > -make_minimal += NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1
> > +make_minimal += NO_LIBNUMA=1 NO_LIBBIONIC=1
> > make_minimal += NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1
> > make_minimal += NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1 NO_LIBZSTD=1
> > -make_minimal += NO_LIBCAP=1 NO_SYSCALL_TABLE=1 NO_CAPSTONE=1
> > +make_minimal += NO_LIBCAP=1 NO_CAPSTONE=1
> >
> > # $(run) contains all available tests
> > run := make_pure
> > @@ -158,7 +156,6 @@ run += make_no_libdw_dwarf_unwind
> > run += make_no_backtrace
> > run += make_no_libcapstone
> > run += make_no_libnuma
> > -run += make_no_libaudit
> > run += make_no_libbionic
> > run += make_no_auxtrace
> > run += make_no_libbpf
> > diff --git a/tools/perf/util/env.c b/tools/perf/util/env.c
> > index e2843ca2edd92ea5fa1c020ae92b183c496e975e..e9a694350671910d537de599071dbe7fcc18ced4 100644
> > --- a/tools/perf/util/env.c
> > +++ b/tools/perf/util/env.c
> > @@ -474,13 +474,13 @@ const char *perf_env__arch(struct perf_env *env)
> >
> > const char *perf_env__arch_strerrno(struct perf_env *env __maybe_unused, int err __maybe_unused)
> > {
> > -#if defined(HAVE_SYSCALL_TABLE_SUPPORT) && defined(HAVE_LIBTRACEEVENT)
> > +#if defined(HAVE_LIBTRACEEVENT)
> > if (env->arch_strerrno == NULL)
> > env->arch_strerrno = arch_syscalls__strerrno_function(perf_env__arch(env));
> >
> > return env->arch_strerrno ? env->arch_strerrno(err) : "no arch specific strerrno function";
> > #else
> > - return "!(HAVE_SYSCALL_TABLE_SUPPORT && HAVE_LIBTRACEEVENT)";
> > + return "!HAVE_LIBTRACEEVENT";
> > #endif
> > }
> >
> > diff --git a/tools/perf/util/generate-cmdlist.sh b/tools/perf/util/generate-cmdlist.sh
> > index 1b5140e5ce9975fac87b2674dc694f9d4e439a5f..6a73c903d69050df69267a8aeaeeac1ed170efe1 100755
> > --- a/tools/perf/util/generate-cmdlist.sh
> > +++ b/tools/perf/util/generate-cmdlist.sh
> > @@ -38,7 +38,7 @@ do
> > done
> > echo "#endif /* HAVE_LIBELF_SUPPORT */"
> >
> > -echo "#if defined(HAVE_LIBTRACEEVENT) && (defined(HAVE_LIBAUDIT_SUPPORT) || defined(HAVE_SYSCALL_TABLE_SUPPORT))"
> > +echo "#if defined(HAVE_LIBTRACEEVENT)"
> > sed -n -e 's/^perf-\([^ ]*\)[ ].* audit*/\1/p' command-list.txt |
> > sort |
> > while read cmd
> > @@ -51,7 +51,7 @@ do
> > p
> > }' "Documentation/perf-$cmd.txt"
> > done
> > -echo "#endif /* HAVE_LIBTRACEEVENT && (HAVE_LIBAUDIT_SUPPORT || HAVE_SYSCALL_TABLE_SUPPORT) */"
> > +echo "#endif /* HAVE_LIBTRACEEVENT */"
> >
> > echo "#ifdef HAVE_LIBTRACEEVENT"
> > sed -n -e 's/^perf-\([^ ]*\)[ ].* traceevent.*/\1/p' command-list.txt |
> > diff --git a/tools/perf/util/syscalltbl.c b/tools/perf/util/syscalltbl.c
> > index 210f61b0a7a264a427ebb602185d3a9da2f426f4..928aca4cd6e9f2f26c5c4fd825b4538c064a4cc3 100644
> > --- a/tools/perf/util/syscalltbl.c
> > +++ b/tools/perf/util/syscalltbl.c
> > @@ -10,20 +10,12 @@
> > #include <linux/compiler.h>
> > #include <linux/zalloc.h>
> >
> > -#ifdef HAVE_SYSCALL_TABLE_SUPPORT
> > #include <string.h>
> > #include "string2.h"
> >
> > -#if defined(GENERIC_SYSCALL_TABLE)
> > #include <syscall_table.h>
> > const int syscalltbl_native_max_id = SYSCALLTBL_MAX_ID;
> > static const char *const *syscalltbl_native = syscalltbl;
> > -#else
> > -const int syscalltbl_native_max_id = 0;
> > -static const char *const syscalltbl_native[] = {
> > - [0] = "unknown",
> > -};
> > -#endif
> >
> > struct syscall {
> > int id;
> > @@ -131,47 +123,3 @@ int syscalltbl__strglobmatch_first(struct syscalltbl *tbl, const char *syscall_g
> > *idx = -1;
> > return syscalltbl__strglobmatch_next(tbl, syscall_glob, idx);
> > }
> > -
> > -#else /* HAVE_SYSCALL_TABLE_SUPPORT */
> > -
> > -#include <libaudit.h>
> > -
> > -struct syscalltbl *syscalltbl__new(void)
> > -{
> > - struct syscalltbl *tbl = zalloc(sizeof(*tbl));
> > - if (tbl)
> > - tbl->audit_machine = audit_detect_machine();
>
> struct syscalltbl's audit_machine is now unused, remove?
Good point, thank you! Will remove in next version.
- Charlie
>
> Thanks,
> Ian
>
> > - return tbl;
> > -}
> > -
> > -void syscalltbl__delete(struct syscalltbl *tbl)
> > -{
> > - free(tbl);
> > -}
> > -
> > -const char *syscalltbl__name(const struct syscalltbl *tbl, int id)
> > -{
> > - return audit_syscall_to_name(id, tbl->audit_machine);
> > -}
> > -
> > -int syscalltbl__id(struct syscalltbl *tbl, const char *name)
> > -{
> > - return audit_name_to_syscall(name, tbl->audit_machine);
> > -}
> > -
> > -int syscalltbl__id_at_idx(struct syscalltbl *tbl __maybe_unused, int idx)
> > -{
> > - return idx;
> > -}
> > -
> > -int syscalltbl__strglobmatch_next(struct syscalltbl *tbl __maybe_unused,
> > - const char *syscall_glob __maybe_unused, int *idx __maybe_unused)
> > -{
> > - return -1;
> > -}
> > -
> > -int syscalltbl__strglobmatch_first(struct syscalltbl *tbl, const char *syscall_glob, int *idx)
> > -{
> > - return syscalltbl__strglobmatch_next(tbl, syscall_glob, idx);
> > -}
> > -#endif /* HAVE_SYSCALL_TABLE_SUPPORT */
> >
> > --
> > 2.34.1
> >
More information about the linux-arm-kernel
mailing list