mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 22:02:02 +00:00
selftests/bpf: Add SAN_CFLAGS param to selftests build to allow sanitizers
Add ability to specify extra compiler flags with SAN_CFLAGS for compilation of all user-space C files. This allows to build all of selftest programs with, e.g., custom sanitizer flags, without requiring support for such sanitizers from anyone compiling selftest/bpf. As an example, to compile everything with AddressSanitizer, one would do: $ make clean && make SAN_CFLAGS="-fsanitize=address" For AddressSanitizer to work, one needs appropriate libasan shared library installed in the system, with version of libasan matching what GCC links against. E.g., GCC8 needs libasan5, while GCC7 uses libasan4. For CentOS 7, to build everything successfully one would need to: $ sudo yum install devtoolset-8-gcc devtoolset-libasan-devel $ scl enable devtoolset-8 bash # set up environment For Arch Linux to run selftests, one would need to install gcc-libs package to get libasan.so.5: $ sudo pacman -S gcc-libs N.B. EXTRA_CFLAGS name wasn't used, because it's also used by libbpf's Makefile and this causes few issues: 1. default "-g -Wall" flags are overriden; 2. compiling shared library with AddressSanitizer generates a bunch of symbols like: "_GLOBAL__sub_D_00099_0_btf_dump.c", "_GLOBAL__sub_D_00099_0_bpf.c", etc, which screws up versioned symbols check. Signed-off-by: Andrii Nakryiko <andriin@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Cc: Julia Kartseva <hex@fb.com> Link: https://lore.kernel.org/bpf/20200429012111.277390-3-andriin@fb.com
This commit is contained in:
parent
76148faa16
commit
02995dd4bb
1 changed files with 4 additions and 3 deletions
|
@ -20,9 +20,10 @@ CLANG ?= clang
|
||||||
LLC ?= llc
|
LLC ?= llc
|
||||||
LLVM_OBJCOPY ?= llvm-objcopy
|
LLVM_OBJCOPY ?= llvm-objcopy
|
||||||
BPF_GCC ?= $(shell command -v bpf-gcc;)
|
BPF_GCC ?= $(shell command -v bpf-gcc;)
|
||||||
CFLAGS += -g -rdynamic -Wall -O2 $(GENFLAGS) -I$(CURDIR) \
|
SAN_CFLAGS ?=
|
||||||
-I$(INCLUDE_DIR) -I$(GENDIR) -I$(LIBDIR) -I$(TOOLSINCDIR) \
|
CFLAGS += -g -rdynamic -Wall -O2 $(GENFLAGS) $(SAN_CFLAGS) \
|
||||||
-I$(APIDIR) \
|
-I$(CURDIR) -I$(INCLUDE_DIR) -I$(GENDIR) -I$(LIBDIR) \
|
||||||
|
-I$(TOOLSINCDIR) -I$(APIDIR) \
|
||||||
-Dbpf_prog_load=bpf_prog_test_load \
|
-Dbpf_prog_load=bpf_prog_test_load \
|
||||||
-Dbpf_load_program=bpf_test_load_program
|
-Dbpf_load_program=bpf_test_load_program
|
||||||
LDLIBS += -lcap -lelf -lz -lrt -lpthread
|
LDLIBS += -lcap -lelf -lz -lrt -lpthread
|
||||||
|
|
Loading…
Reference in a new issue