|
| 1 | +From f44275e7155dc310d36516fc25be503da099781c Mon Sep 17 00:00:00 2001 |
| 2 | +From: Ihor Solodrai <ihor.solodrai@pm.me> |
| 3 | +Date: Mon, 6 Jan 2025 20:17:31 +0000 |
| 4 | +Subject: [PATCH] selftests/bpf: add -fno-strict-aliasing to BPF_CFLAGS |
| 5 | + |
| 6 | +Following the discussion at [1], set -fno-strict-aliasing flag for all |
| 7 | +BPF object build rules. Remove now unnecessary <test>-CFLAGS variables. |
| 8 | + |
| 9 | +[1] https://lore.kernel.org/bpf/20250106185447.951609-1-ihor.solodrai@pm.me/ |
| 10 | + |
| 11 | +CC: Jose E. Marchesi <jose.marchesi@oracle.com> |
| 12 | +Signed-off-by: Ihor Solodrai <ihor.solodrai@pm.me> |
| 13 | +Acked-by: Eduard Zingerman <eddyz87@gmail.com> |
| 14 | +Link: https://lore.kernel.org/r/20250106201728.1219791-1-ihor.solodrai@pm.me |
| 15 | +Signed-off-by: Alexei Starovoitov <ast@kernel.org> |
| 16 | +--- |
| 17 | + tools/testing/selftests/bpf/Makefile | 28 +--------------------------- |
| 18 | + 1 file changed, 1 insertion(+), 27 deletions(-) |
| 19 | + |
| 20 | +diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile |
| 21 | +index eb4d21651aa7..d5be2f94deef 100644 |
| 22 | +--- a/tools/testing/selftests/bpf/Makefile |
| 23 | ++++ b/tools/testing/selftests/bpf/Makefile |
| 24 | +@@ -54,21 +54,6 @@ PCAP_LIBS := $(shell $(PKG_CONFIG) --libs libpcap 2>/dev/null) |
| 25 | + LDLIBS += $(PCAP_LIBS) |
| 26 | + CFLAGS += $(PCAP_CFLAGS) |
| 27 | + |
| 28 | +-# The following tests perform type punning and they may break strict |
| 29 | +-# aliasing rules, which are exploited by both GCC and clang by default |
| 30 | +-# while optimizing. This can lead to broken programs. |
| 31 | +-progs/bind4_prog.c-CFLAGS := -fno-strict-aliasing |
| 32 | +-progs/bind6_prog.c-CFLAGS := -fno-strict-aliasing |
| 33 | +-progs/dynptr_fail.c-CFLAGS := -fno-strict-aliasing |
| 34 | +-progs/linked_list_fail.c-CFLAGS := -fno-strict-aliasing |
| 35 | +-progs/map_kptr_fail.c-CFLAGS := -fno-strict-aliasing |
| 36 | +-progs/syscall.c-CFLAGS := -fno-strict-aliasing |
| 37 | +-progs/test_pkt_md_access.c-CFLAGS := -fno-strict-aliasing |
| 38 | +-progs/test_sk_lookup.c-CFLAGS := -fno-strict-aliasing |
| 39 | +-progs/timer_crash.c-CFLAGS := -fno-strict-aliasing |
| 40 | +-progs/test_global_func9.c-CFLAGS := -fno-strict-aliasing |
| 41 | +-progs/verifier_nocsr.c-CFLAGS := -fno-strict-aliasing |
| 42 | +- |
| 43 | + # Some utility functions use LLVM libraries |
| 44 | + jit_disasm_helpers.c-CFLAGS = $(LLVM_CFLAGS) |
| 45 | + |
| 46 | +@@ -103,18 +88,6 @@ progs/btf_dump_test_case_packing.c-bpf_gcc-CFLAGS := -Wno-error |
| 47 | + progs/btf_dump_test_case_padding.c-bpf_gcc-CFLAGS := -Wno-error |
| 48 | + progs/btf_dump_test_case_syntax.c-bpf_gcc-CFLAGS := -Wno-error |
| 49 | + |
| 50 | +-# The following tests do type-punning, via the __imm_insn macro, from |
| 51 | +-# `struct bpf_insn' to long and then uses the value. This triggers an |
| 52 | +-# "is used uninitialized" warning in GCC due to strict-aliasing |
| 53 | +-# rules. |
| 54 | +-progs/verifier_ref_tracking.c-bpf_gcc-CFLAGS := -fno-strict-aliasing |
| 55 | +-progs/verifier_unpriv.c-bpf_gcc-CFLAGS := -fno-strict-aliasing |
| 56 | +-progs/verifier_cgroup_storage.c-bpf_gcc-CFLAGS := -fno-strict-aliasing |
| 57 | +-progs/verifier_ld_ind.c-bpf_gcc-CFLAGS := -fno-strict-aliasing |
| 58 | +-progs/verifier_map_ret_val.c-bpf_gcc-CFLAGS := -fno-strict-aliasing |
| 59 | +-progs/verifier_spill_fill.c-bpf_gcc-CFLAGS := -fno-strict-aliasing |
| 60 | +-progs/verifier_subprog_precision.c-bpf_gcc-CFLAGS := -fno-strict-aliasing |
| 61 | +-progs/verifier_uninit.c-bpf_gcc-CFLAGS := -fno-strict-aliasing |
| 62 | + endif |
| 63 | + |
| 64 | + ifneq ($(CLANG_CPUV4),) |
| 65 | +@@ -474,6 +447,7 @@ CLANG_SYS_INCLUDES = $(call get_sys_includes,$(CLANG),$(CLANG_TARGET_ARCH)) |
| 66 | + BPF_CFLAGS = -g -Wall -Werror -D__TARGET_ARCH_$(SRCARCH) $(MENDIAN) \ |
| 67 | + -I$(INCLUDE_DIR) -I$(CURDIR) -I$(APIDIR) \ |
| 68 | + -I$(abspath $(OUTPUT)/../usr/include) \ |
| 69 | ++ -fno-strict-aliasing \ |
| 70 | + -Wno-compare-distinct-pointer-types |
| 71 | + # TODO: enable me -Wsign-compare |
| 72 | + |
| 73 | +-- |
| 74 | +2.47.1 |
| 75 | + |
0 commit comments