selftests/bpf: Rename progs/tag.c to progs/btf_decl_tag.c
authorYonghong Song <yhs@fb.com>
Fri, 12 Nov 2021 01:26:41 +0000 (17:26 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 12 Nov 2021 01:41:11 +0000 (17:41 -0800)
Rename progs/tag.c to progs/btf_decl_tag.c so we can introduce
progs/btf_type_tag.c in the next patch.

Also create a subtest for btf_decl_tag in prog_tests/btf_tag.c
so we can introduce btf_type_tag subtest in the next patch.

I also took opportunity to remove the check whether __has_attribute
is defined or not in progs/btf_decl_tag.c since all recent
clangs should already support this macro.

Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20211112012641.1507144-1-yhs@fb.com
tools/testing/selftests/bpf/prog_tests/btf_tag.c
tools/testing/selftests/bpf/progs/btf_decl_tag.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/tag.c [deleted file]

index 91821f42714dadce67a38406c006589b00e92271..d15cc7a88182fe667b257f1047f4954236441ba6 100644 (file)
@@ -1,20 +1,26 @@
 // SPDX-License-Identifier: GPL-2.0
 /* Copyright (c) 2021 Facebook */
 #include <test_progs.h>
-#include "tag.skel.h"
+#include "btf_decl_tag.skel.h"
 
-void test_btf_tag(void)
+static void test_btf_decl_tag(void)
 {
-       struct tag *skel;
+       struct btf_decl_tag *skel;
 
-       skel = tag__open_and_load();
-       if (!ASSERT_OK_PTR(skel, "btf_tag"))
+       skel = btf_decl_tag__open_and_load();
+       if (!ASSERT_OK_PTR(skel, "btf_decl_tag"))
                return;
 
        if (skel->rodata->skip_tests) {
-               printf("%s:SKIP: btf_tag attribute not supported", __func__);
+               printf("%s:SKIP: btf_decl_tag attribute not supported", __func__);
                test__skip();
        }
 
-       tag__destroy(skel);
+       btf_decl_tag__destroy(skel);
+}
+
+void test_btf_tag(void)
+{
+       if (test__start_subtest("btf_decl_tag"))
+               test_btf_decl_tag();
 }
diff --git a/tools/testing/selftests/bpf/progs/btf_decl_tag.c b/tools/testing/selftests/bpf/progs/btf_decl_tag.c
new file mode 100644 (file)
index 0000000..c88ccc5
--- /dev/null
@@ -0,0 +1,50 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright (c) 2021 Facebook */
+#include "vmlinux.h"
+#include <bpf/bpf_helpers.h>
+#include <bpf/bpf_tracing.h>
+
+#if __has_attribute(btf_decl_tag)
+#define __tag1 __attribute__((btf_decl_tag("tag1")))
+#define __tag2 __attribute__((btf_decl_tag("tag2")))
+volatile const bool skip_tests __tag1 __tag2 = false;
+#else
+#define __tag1
+#define __tag2
+volatile const bool skip_tests = true;
+#endif
+
+struct key_t {
+       int a;
+       int b __tag1 __tag2;
+       int c;
+} __tag1 __tag2;
+
+typedef struct {
+       int a;
+       int b;
+} value_t __tag1 __tag2;
+
+struct {
+       __uint(type, BPF_MAP_TYPE_HASH);
+       __uint(max_entries, 3);
+       __type(key, struct key_t);
+       __type(value, value_t);
+} hashmap1 SEC(".maps");
+
+
+static __noinline int foo(int x __tag1 __tag2) __tag1 __tag2
+{
+       struct key_t key;
+       value_t val = {};
+
+       key.a = key.b = key.c = x;
+       bpf_map_update_elem(&hashmap1, &key, &val, 0);
+       return 0;
+}
+
+SEC("fentry/bpf_fentry_test1")
+int BPF_PROG(sub, int x)
+{
+       return foo(x);
+}
diff --git a/tools/testing/selftests/bpf/progs/tag.c b/tools/testing/selftests/bpf/progs/tag.c
deleted file mode 100644 (file)
index 1792f4e..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/* Copyright (c) 2021 Facebook */
-#include "vmlinux.h"
-#include <bpf/bpf_helpers.h>
-#include <bpf/bpf_tracing.h>
-
-#ifndef __has_attribute
-#define __has_attribute(x) 0
-#endif
-
-#if __has_attribute(btf_decl_tag)
-#define __tag1 __attribute__((btf_decl_tag("tag1")))
-#define __tag2 __attribute__((btf_decl_tag("tag2")))
-volatile const bool skip_tests __tag1 __tag2 = false;
-#else
-#define __tag1
-#define __tag2
-volatile const bool skip_tests = true;
-#endif
-
-struct key_t {
-       int a;
-       int b __tag1 __tag2;
-       int c;
-} __tag1 __tag2;
-
-typedef struct {
-       int a;
-       int b;
-} value_t __tag1 __tag2;
-
-struct {
-       __uint(type, BPF_MAP_TYPE_HASH);
-       __uint(max_entries, 3);
-       __type(key, struct key_t);
-       __type(value, value_t);
-} hashmap1 SEC(".maps");
-
-
-static __noinline int foo(int x __tag1 __tag2) __tag1 __tag2
-{
-       struct key_t key;
-       value_t val = {};
-
-       key.a = key.b = key.c = x;
-       bpf_map_update_elem(&hashmap1, &key, &val, 0);
-       return 0;
-}
-
-SEC("fentry/bpf_fentry_test1")
-int BPF_PROG(sub, int x)
-{
-       return foo(x);
-}