tools/testing/selftests/bpf/bpf_legacy.h | 10 ++++++++++ 1 file changed, 10 insertions(+)
The bpf_legacy.h header uses llvm specific load functions, add
GCC compatible variants as well to fix tests using these functions
under GCC.
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
Cc: Jose E. Marchesi <jose.marchesi@oracle.com>
Cc: David Faust <david.faust@oracle.com>
---
tools/testing/selftests/bpf/bpf_legacy.h | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/tools/testing/selftests/bpf/bpf_legacy.h b/tools/testing/selftests/bpf/bpf_legacy.h
index 845209581440..256c2a90aa20 100644
--- a/tools/testing/selftests/bpf/bpf_legacy.h
+++ b/tools/testing/selftests/bpf/bpf_legacy.h
@@ -2,6 +2,15 @@
#ifndef __BPF_LEGACY__
#define __BPF_LEGACY__
+#if __GNUC__ && !__clang__
+/* Functions to emit BPF_LD_ABS and BPF_LD_IND instructions. We
+ * provide the "standard" names as synonyms of the corresponding GCC
+ * builtins. Note how the SKB argument is ignored.
+ */
+#define load_byte(skb,off) __builtin_bpf_load_byte((off))
+#define load_half(skb,off) __builtin_bpf_load_half((off))
+#define load_word(skb,off) __builtin_bpf_load_word((off))
+#else
/* llvm builtin functions that eBPF C program may use to
* emit BPF_LD_ABS and BPF_LD_IND instructions
*/
@@ -11,6 +20,7 @@ unsigned long long load_half(void *skb,
unsigned long long off) asm("llvm.bpf.load.half");
unsigned long long load_word(void *skb,
unsigned long long off) asm("llvm.bpf.load.word");
+#endif
#endif
--
2.34.1
Hello: This patch was applied to bpf/bpf-next.git (master) by Andrii Nakryiko <andrii@kernel.org>: On Thu, 1 Dec 2022 12:09:39 -0700 you wrote: > The bpf_legacy.h header uses llvm specific load functions, add > GCC compatible variants as well to fix tests using these functions > under GCC. > > Signed-off-by: James Hilliard <james.hilliard1@gmail.com> > Cc: Jose E. Marchesi <jose.marchesi@oracle.com> > Cc: David Faust <david.faust@oracle.com> > > [...] Here is the summary with links: - selftests/bpf: add GCC compatible builtins to bpf_legacy.h https://git.kernel.org/bpf/bpf-next/c/f16a7aa5c2be You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html
On Thu, Dec 1, 2022 at 11:10 AM James Hilliard <james.hilliard1@gmail.com> wrote: > > The bpf_legacy.h header uses llvm specific load functions, add > GCC compatible variants as well to fix tests using these functions > under GCC. > > Signed-off-by: James Hilliard <james.hilliard1@gmail.com> > Cc: Jose E. Marchesi <jose.marchesi@oracle.com> > Cc: David Faust <david.faust@oracle.com> > --- Please use [PATCH bpf-next] prefix to target patches for bpf-next tree. This helps some of our automation. > tools/testing/selftests/bpf/bpf_legacy.h | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/tools/testing/selftests/bpf/bpf_legacy.h b/tools/testing/selftests/bpf/bpf_legacy.h > index 845209581440..256c2a90aa20 100644 > --- a/tools/testing/selftests/bpf/bpf_legacy.h > +++ b/tools/testing/selftests/bpf/bpf_legacy.h > @@ -2,6 +2,15 @@ > #ifndef __BPF_LEGACY__ > #define __BPF_LEGACY__ > > +#if __GNUC__ && !__clang__ > +/* Functions to emit BPF_LD_ABS and BPF_LD_IND instructions. We > + * provide the "standard" names as synonyms of the corresponding GCC > + * builtins. Note how the SKB argument is ignored. > + */ > +#define load_byte(skb,off) __builtin_bpf_load_byte((off)) > +#define load_half(skb,off) __builtin_bpf_load_half((off)) > +#define load_word(skb,off) __builtin_bpf_load_word((off)) added space between skb, and off. And we don't need those extra () around off, right? I stripped them away, but let me know if that's wrong. > +#else > /* llvm builtin functions that eBPF C program may use to > * emit BPF_LD_ABS and BPF_LD_IND instructions > */ > @@ -11,6 +20,7 @@ unsigned long long load_half(void *skb, > unsigned long long off) asm("llvm.bpf.load.half"); > unsigned long long load_word(void *skb, > unsigned long long off) asm("llvm.bpf.load.word"); > +#endif > > #endif > > -- > 2.34.1 >
© 2016 - 2025 Red Hat, Inc.