mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	selftests/bpf: Support cross-endian building
Update Makefile build rules to compile BPF programs with target endianness rather than host byte-order. With recent changes, this allows building the full selftests/bpf suite hosted on x86_64 and targeting s390x or mips64eb for example. Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Acked-by: Yonghong Song <yonghong.song@linux.dev> Link: https://lore.kernel.org/bpf/880ccc6342cfc4d3c48b44f581e87adfbce2876e.1726475448.git.tony.ambardar@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
		
							parent
							
								
									8ca3323dce
								
							
						
					
					
						commit
						5a63c33d6f
					
				
					 1 changed files with 4 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -445,6 +445,7 @@ endef
 | 
			
		|||
IS_LITTLE_ENDIAN = $(shell $(CC) -dM -E - </dev/null | \
 | 
			
		||||
			grep 'define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__')
 | 
			
		||||
MENDIAN=$(if $(IS_LITTLE_ENDIAN),-mlittle-endian,-mbig-endian)
 | 
			
		||||
BPF_TARGET_ENDIAN=$(if $(IS_LITTLE_ENDIAN),--target=bpfel,--target=bpfeb)
 | 
			
		||||
 | 
			
		||||
ifneq ($(CROSS_COMPILE),)
 | 
			
		||||
CLANG_TARGET_ARCH = --target=$(notdir $(CROSS_COMPILE:%-=%))
 | 
			
		||||
| 
						 | 
				
			
			@ -472,17 +473,17 @@ $(OUTPUT)/cgroup_getset_retval_hooks.o: cgroup_getset_retval_hooks.h
 | 
			
		|||
# $4 - binary name
 | 
			
		||||
define CLANG_BPF_BUILD_RULE
 | 
			
		||||
	$(call msg,CLNG-BPF,$4,$2)
 | 
			
		||||
	$(Q)$(CLANG) $3 -O2 --target=bpf -c $1 -mcpu=v3 -o $2
 | 
			
		||||
	$(Q)$(CLANG) $3 -O2 $(BPF_TARGET_ENDIAN) -c $1 -mcpu=v3 -o $2
 | 
			
		||||
endef
 | 
			
		||||
# Similar to CLANG_BPF_BUILD_RULE, but with disabled alu32
 | 
			
		||||
define CLANG_NOALU32_BPF_BUILD_RULE
 | 
			
		||||
	$(call msg,CLNG-BPF,$4,$2)
 | 
			
		||||
	$(Q)$(CLANG) $3 -O2 --target=bpf -c $1 -mcpu=v2 -o $2
 | 
			
		||||
	$(Q)$(CLANG) $3 -O2 $(BPF_TARGET_ENDIAN) -c $1 -mcpu=v2 -o $2
 | 
			
		||||
endef
 | 
			
		||||
# Similar to CLANG_BPF_BUILD_RULE, but with cpu-v4
 | 
			
		||||
define CLANG_CPUV4_BPF_BUILD_RULE
 | 
			
		||||
	$(call msg,CLNG-BPF,$4,$2)
 | 
			
		||||
	$(Q)$(CLANG) $3 -O2 --target=bpf -c $1 -mcpu=v4 -o $2
 | 
			
		||||
	$(Q)$(CLANG) $3 -O2 $(BPF_TARGET_ENDIAN) -c $1 -mcpu=v4 -o $2
 | 
			
		||||
endef
 | 
			
		||||
# Build BPF object using GCC
 | 
			
		||||
define GCC_BPF_BUILD_RULE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue