mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 14:19:16 +00:00
selftests/bpf: Add GCC compatible builtins to bpf_legacy.h
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> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20221201190939.3230513-1-james.hilliard1@gmail.com
This commit is contained in:
parent
bc067cacb6
commit
f16a7aa5c2
1 changed files with 13 additions and 6 deletions
|
@ -2,15 +2,22 @@
|
|||
#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
|
||||
*/
|
||||
unsigned long long load_byte(void *skb,
|
||||
unsigned long long off) asm("llvm.bpf.load.byte");
|
||||
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");
|
||||
unsigned long long load_byte(void *skb, unsigned long long off) asm("llvm.bpf.load.byte");
|
||||
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
|
||||
|
||||
|
|
Loading…
Reference in a new issue