OSDN Git Service

tools build: Add a feature test for scandirat(), that is not implemented so far in...
authorArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 4 Apr 2023 14:05:57 +0000 (11:05 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 4 Apr 2023 16:18:17 +0000 (13:18 -0300)
We use it just when listing tracepoint events, and for root, so just
emit a warning about it to get users to ask the library maintainers to
implement it, as suggested in this systemd ticket:

 https://github.com/systemd/casync/issues/129

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/lkml/ZCwv4z5Dh%2FdHUMG6@kernel.org/
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/build/Makefile.feature
tools/build/feature/Makefile
tools/build/feature/test-all.c
tools/build/feature/test-scandirat.c [new file with mode: 0644]
tools/perf/Makefile.config

index 214622d..934e277 100644 (file)
@@ -64,6 +64,7 @@ FEATURE_TESTS_BASIC :=                  \
         lzma                            \
         get_cpuid                       \
         bpf                             \
+        scandirat                      \
         sched_getcpu                   \
         sdt                            \
         setns                          \
index 0a3b928..0f0aa9b 100644 (file)
@@ -65,6 +65,7 @@ FILES=                                          \
          test-gettid.bin                       \
          test-jvmti.bin                                \
          test-jvmti-cmlr.bin                   \
+         test-scandirat.bin                    \
          test-sched_getcpu.bin                 \
          test-setns.bin                                \
          test-libopencsd.bin                   \
@@ -129,6 +130,9 @@ $(OUTPUT)test-get_current_dir_name.bin:
 $(OUTPUT)test-glibc.bin:
        $(BUILD)
 
+$(OUTPUT)test-scandirat.bin:
+       $(BUILD)
+
 $(OUTPUT)test-sched_getcpu.bin:
        $(BUILD)
 
index 957c02c..6f4bf38 100644 (file)
 # include "test-pthread-barrier.c"
 #undef main
 
+#define main main_test_scandirat
+# include "test-scandirat.c"
+#undef main
+
 #define main main_test_sched_getcpu
 # include "test-sched_getcpu.c"
 #undef main
@@ -206,6 +210,7 @@ int main(int argc, char *argv[])
        main_test_get_cpuid();
        main_test_bpf();
        main_test_libcrypto();
+       main_test_scandirat();
        main_test_sched_getcpu();
        main_test_sdt();
        main_test_setns();
diff --git a/tools/build/feature/test-scandirat.c b/tools/build/feature/test-scandirat.c
new file mode 100644 (file)
index 0000000..d7e19e1
--- /dev/null
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+#include <dirent.h>
+
+int main(void)
+{
+       // expects non-NULL, arg3 is 'restrict' so "pointers" have to be different
+       return scandirat(/*dirfd=*/ 0, /*dirp=*/ (void *)1, /*namelist=*/ (void *)2, /*filter=*/ (void *)3, /*compar=*/ (void *)4);
+}
+
+#undef _GNU_SOURCE
index 236d763..fd1be95 100644 (file)
@@ -479,6 +479,10 @@ ifdef NO_DWARF
   NO_LIBDW_DWARF_UNWIND := 1
 endif
 
+ifeq ($(feature-scandirat), 1)
+  CFLAGS += -DHAVE_SCANDIRAT_SUPPORT
+endif
+
 ifeq ($(feature-sched_getcpu), 1)
   CFLAGS += -DHAVE_SCHED_GETCPU_SUPPORT
 endif