]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
libbpf, selftests/bpf: Adjust libbpf, bpftool, selftests to match LLVM
authorAlexei Starovoitov <ast@kernel.org>
Fri, 15 Mar 2024 02:18:32 +0000 (19:18 -0700)
committerAndrii Nakryiko <andrii@kernel.org>
Fri, 15 Mar 2024 21:24:00 +0000 (14:24 -0700)
The selftests use
to tell LLVM about special pointers. For LLVM there is nothing "arena"
about them. They are simply pointers in a different address space.
Hence LLVM diff https://github.com/llvm/llvm-project/pull/85161 renamed:
. macro __BPF_FEATURE_ARENA_CAST -> __BPF_FEATURE_ADDR_SPACE_CAST
. global variables in __attribute__((address_space(N))) are now
  placed in section named ".addr_space.N" instead of ".arena.N".

Adjust libbpf, bpftool, and selftests to match LLVM.

Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Stanislav Fomichev <sdf@google.com>
Link: https://lore.kernel.org/bpf/20240315021834.62988-3-alexei.starovoitov@gmail.com
tools/bpf/bpftool/gen.c
tools/lib/bpf/libbpf.c
tools/testing/selftests/bpf/bpf_arena_common.h
tools/testing/selftests/bpf/progs/arena_htab.c
tools/testing/selftests/bpf/progs/arena_list.c
tools/testing/selftests/bpf/progs/verifier_arena.c

index 4fa4ade1ce7445eadac1cc92437218db97697e33..540c0f2c4fda07cef798769e4795cfb0fb574d3e 100644 (file)
@@ -121,7 +121,7 @@ static bool get_datasec_ident(const char *sec_name, char *buf, size_t buf_sz)
        int i, n;
 
        /* recognize hard coded LLVM section name */
-       if (strcmp(sec_name, ".arena.1") == 0) {
+       if (strcmp(sec_name, ".addr_space.1") == 0) {
                /* this is the name to use in skeleton */
                snprintf(buf, buf_sz, "arena");
                return true;
index efab29b8935bd9f7027859efee6a1383046105f4..36e26f4f5997d1c0e705d5450c1059edc4d67687 100644 (file)
@@ -498,7 +498,7 @@ struct bpf_struct_ops {
 #define KSYMS_SEC ".ksyms"
 #define STRUCT_OPS_SEC ".struct_ops"
 #define STRUCT_OPS_LINK_SEC ".struct_ops.link"
-#define ARENA_SEC ".arena.1"
+#define ARENA_SEC ".addr_space.1"
 
 enum libbpf_map_type {
        LIBBPF_MAP_UNSPEC,
index bcf195c64a45c186112c6aa381b62c91a9938050..567491f3e1b51b313439f7b3966da01c2faf1689 100644 (file)
@@ -32,7 +32,7 @@
  */
 #endif
 
-#if defined(__BPF_FEATURE_ARENA_CAST) && !defined(BPF_ARENA_FORCE_ASM)
+#if defined(__BPF_FEATURE_ADDR_SPACE_CAST) && !defined(BPF_ARENA_FORCE_ASM)
 #define __arena __attribute__((address_space(1)))
 #define cast_kern(ptr) /* nop for bpf prog. emitted by LLVM */
 #define cast_user(ptr) /* nop for bpf prog. emitted by LLVM */
index b7bb712cacfdccb0747286634057a641b6b3f70a..1e6ac187a6a0ced2da5294ac6805a38f81047093 100644 (file)
@@ -22,7 +22,7 @@ int zero = 0;
 SEC("syscall")
 int arena_htab_llvm(void *ctx)
 {
-#if defined(__BPF_FEATURE_ARENA_CAST) || defined(BPF_ARENA_FORCE_ASM)
+#if defined(__BPF_FEATURE_ADDR_SPACE_CAST) || defined(BPF_ARENA_FORCE_ASM)
        struct htab __arena *htab;
        __u64 i;
 
index cd35b844843560db676c19618999a38a50979038..c0422c58cee2c56156bf886dbc50fcfd089c449e 100644 (file)
@@ -30,13 +30,13 @@ int list_sum;
 int cnt;
 bool skip = false;
 
-#ifdef __BPF_FEATURE_ARENA_CAST
+#ifdef __BPF_FEATURE_ADDR_SPACE_CAST
 long __arena arena_sum;
 int __arena test_val = 1;
 struct arena_list_head __arena global_head;
 #else
-long arena_sum SEC(".arena.1");
-int test_val SEC(".arena.1");
+long arena_sum SEC(".addr_space.1");
+int test_val SEC(".addr_space.1");
 #endif
 
 int zero;
@@ -44,7 +44,7 @@ int zero;
 SEC("syscall")
 int arena_list_add(void *ctx)
 {
-#ifdef __BPF_FEATURE_ARENA_CAST
+#ifdef __BPF_FEATURE_ADDR_SPACE_CAST
        __u64 i;
 
        list_head = &global_head;
@@ -66,7 +66,7 @@ int arena_list_add(void *ctx)
 SEC("syscall")
 int arena_list_del(void *ctx)
 {
-#ifdef __BPF_FEATURE_ARENA_CAST
+#ifdef __BPF_FEATURE_ADDR_SPACE_CAST
        struct elem __arena *n;
        int sum = 0;
 
index 5540b05ff9ee13589af00305f4427c8ebac1ced6..969bc091060bf52536ab3410ba50c2fdb98a4546 100644 (file)
@@ -19,7 +19,7 @@ SEC("syscall")
 __success __retval(0)
 int basic_alloc1(void *ctx)
 {
-#if defined(__BPF_FEATURE_ARENA_CAST)
+#if defined(__BPF_FEATURE_ADDR_SPACE_CAST)
        volatile int __arena *page1, *page2, *no_page, *page3;
 
        page1 = bpf_arena_alloc_pages(&arena, NULL, 1, NUMA_NO_NODE, 0);
@@ -58,7 +58,7 @@ SEC("syscall")
 __success __retval(0)
 int basic_alloc2(void *ctx)
 {
-#if defined(__BPF_FEATURE_ARENA_CAST)
+#if defined(__BPF_FEATURE_ADDR_SPACE_CAST)
        volatile char __arena *page1, *page2, *page3, *page4;
 
        page1 = bpf_arena_alloc_pages(&arena, NULL, 2, NUMA_NO_NODE, 0);