On 10/9/20 9:27 AM, Daniel Borkmann wrote:
[ Cc +Yonghong ]
On 10/9/20 6:05 PM, Yaniv Agman wrote:
Pulling the latest changes of libbpf and compiling my application with
it,
I see the following error:
../libbpf/src//root/usr/include/bpf/bpf_helpers.h:99:10: error:
unknown register name 'r0' in asm
: "r0", "r1", "r2", "r3", "r4", "r5");
The commit which introduced this change is:
80c7838600d39891f274e2f7508b95a75e4227c1
I'm not sure if I'm doing something wrong (missing include?), or this
is a genuine error
Seems like your clang/llvm version might be too old.
Yonghong, do you happen to know from which version onwards there is
proper support
for bpf inline asm? We could potentially wrap this around like this:
llvm6 starts to support inline asm.
diff --git a/tools/lib/bpf/bpf_helpers.h b/tools/lib/bpf/bpf_helpers.h
index 2bdb7d6dbad2..0d6abc91bfc6 100644
--- a/tools/lib/bpf/bpf_helpers.h
+++ b/tools/lib/bpf/bpf_helpers.h
@@ -72,6 +72,7 @@
/*
* Helper function to perform a tail call with a constant/immediate
map slot.
*/
+#if __clang_major__ >= 10
Just change to __clang_major__ >= 6 should be okay, you may want to
double check though.
static __always_inline void
bpf_tail_call_static(void *ctx, const void *map, const __u32 slot)
{
@@ -98,6 +99,7 @@ bpf_tail_call_static(void *ctx, const void *map, const
__u32 slot)
:: [ctx]"r"(ctx), [map]"r"(map), [slot]"i"(slot)
: "r0", "r1", "r2", "r3", "r4", "r5");
}
+#endif /* __clang_major__ >= 10 */
/*
* Helper structure used by eBPF C program
Yaniv