mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +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 | \
 | 
					IS_LITTLE_ENDIAN = $(shell $(CC) -dM -E - </dev/null | \
 | 
				
			||||||
			grep 'define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__')
 | 
								grep 'define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__')
 | 
				
			||||||
MENDIAN=$(if $(IS_LITTLE_ENDIAN),-mlittle-endian,-mbig-endian)
 | 
					MENDIAN=$(if $(IS_LITTLE_ENDIAN),-mlittle-endian,-mbig-endian)
 | 
				
			||||||
 | 
					BPF_TARGET_ENDIAN=$(if $(IS_LITTLE_ENDIAN),--target=bpfel,--target=bpfeb)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ifneq ($(CROSS_COMPILE),)
 | 
					ifneq ($(CROSS_COMPILE),)
 | 
				
			||||||
CLANG_TARGET_ARCH = --target=$(notdir $(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
 | 
					# $4 - binary name
 | 
				
			||||||
define CLANG_BPF_BUILD_RULE
 | 
					define CLANG_BPF_BUILD_RULE
 | 
				
			||||||
	$(call msg,CLNG-BPF,$4,$2)
 | 
						$(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
 | 
					endef
 | 
				
			||||||
# Similar to CLANG_BPF_BUILD_RULE, but with disabled alu32
 | 
					# Similar to CLANG_BPF_BUILD_RULE, but with disabled alu32
 | 
				
			||||||
define CLANG_NOALU32_BPF_BUILD_RULE
 | 
					define CLANG_NOALU32_BPF_BUILD_RULE
 | 
				
			||||||
	$(call msg,CLNG-BPF,$4,$2)
 | 
						$(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
 | 
					endef
 | 
				
			||||||
# Similar to CLANG_BPF_BUILD_RULE, but with cpu-v4
 | 
					# Similar to CLANG_BPF_BUILD_RULE, but with cpu-v4
 | 
				
			||||||
define CLANG_CPUV4_BPF_BUILD_RULE
 | 
					define CLANG_CPUV4_BPF_BUILD_RULE
 | 
				
			||||||
	$(call msg,CLNG-BPF,$4,$2)
 | 
						$(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
 | 
					endef
 | 
				
			||||||
# Build BPF object using GCC
 | 
					# Build BPF object using GCC
 | 
				
			||||||
define GCC_BPF_BUILD_RULE
 | 
					define GCC_BPF_BUILD_RULE
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue