libbpf, selftests/bpf: Adjust libbpf, bpftool, selftests to match LLVM
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
This commit is contained in:
parent
ee498a38f3
commit
10ebe835c9
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue