-
Notifications
You must be signed in to change notification settings - Fork 33
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
138 additions
and
0 deletions.
There are no files selected for viewing
75 changes: 75 additions & 0 deletions
75
ci/diffs/2001-selftests-bpf-add-fno-strict-aliasing-to-BPF_CFLAGS.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
From f44275e7155dc310d36516fc25be503da099781c Mon Sep 17 00:00:00 2001 | ||
From: Ihor Solodrai <ihor.solodrai@pm.me> | ||
Date: Mon, 6 Jan 2025 20:17:31 +0000 | ||
Subject: [PATCH] selftests/bpf: add -fno-strict-aliasing to BPF_CFLAGS | ||
|
||
Following the discussion at [1], set -fno-strict-aliasing flag for all | ||
BPF object build rules. Remove now unnecessary <test>-CFLAGS variables. | ||
|
||
[1] https://lore.kernel.org/bpf/20250106185447.951609-1-ihor.solodrai@pm.me/ | ||
|
||
CC: Jose E. Marchesi <jose.marchesi@oracle.com> | ||
Signed-off-by: Ihor Solodrai <ihor.solodrai@pm.me> | ||
Acked-by: Eduard Zingerman <eddyz87@gmail.com> | ||
Link: https://lore.kernel.org/r/20250106201728.1219791-1-ihor.solodrai@pm.me | ||
Signed-off-by: Alexei Starovoitov <ast@kernel.org> | ||
--- | ||
tools/testing/selftests/bpf/Makefile | 28 +--------------------------- | ||
1 file changed, 1 insertion(+), 27 deletions(-) | ||
|
||
diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile | ||
index eb4d21651aa7..d5be2f94deef 100644 | ||
--- a/tools/testing/selftests/bpf/Makefile | ||
+++ b/tools/testing/selftests/bpf/Makefile | ||
@@ -54,21 +54,6 @@ PCAP_LIBS := $(shell $(PKG_CONFIG) --libs libpcap 2>/dev/null) | ||
LDLIBS += $(PCAP_LIBS) | ||
CFLAGS += $(PCAP_CFLAGS) | ||
|
||
-# The following tests perform type punning and they may break strict | ||
-# aliasing rules, which are exploited by both GCC and clang by default | ||
-# while optimizing. This can lead to broken programs. | ||
-progs/bind4_prog.c-CFLAGS := -fno-strict-aliasing | ||
-progs/bind6_prog.c-CFLAGS := -fno-strict-aliasing | ||
-progs/dynptr_fail.c-CFLAGS := -fno-strict-aliasing | ||
-progs/linked_list_fail.c-CFLAGS := -fno-strict-aliasing | ||
-progs/map_kptr_fail.c-CFLAGS := -fno-strict-aliasing | ||
-progs/syscall.c-CFLAGS := -fno-strict-aliasing | ||
-progs/test_pkt_md_access.c-CFLAGS := -fno-strict-aliasing | ||
-progs/test_sk_lookup.c-CFLAGS := -fno-strict-aliasing | ||
-progs/timer_crash.c-CFLAGS := -fno-strict-aliasing | ||
-progs/test_global_func9.c-CFLAGS := -fno-strict-aliasing | ||
-progs/verifier_nocsr.c-CFLAGS := -fno-strict-aliasing | ||
- | ||
# Some utility functions use LLVM libraries | ||
jit_disasm_helpers.c-CFLAGS = $(LLVM_CFLAGS) | ||
|
||
@@ -103,18 +88,6 @@ progs/btf_dump_test_case_packing.c-bpf_gcc-CFLAGS := -Wno-error | ||
progs/btf_dump_test_case_padding.c-bpf_gcc-CFLAGS := -Wno-error | ||
progs/btf_dump_test_case_syntax.c-bpf_gcc-CFLAGS := -Wno-error | ||
|
||
-# The following tests do type-punning, via the __imm_insn macro, from | ||
-# `struct bpf_insn' to long and then uses the value. This triggers an | ||
-# "is used uninitialized" warning in GCC due to strict-aliasing | ||
-# rules. | ||
-progs/verifier_ref_tracking.c-bpf_gcc-CFLAGS := -fno-strict-aliasing | ||
-progs/verifier_unpriv.c-bpf_gcc-CFLAGS := -fno-strict-aliasing | ||
-progs/verifier_cgroup_storage.c-bpf_gcc-CFLAGS := -fno-strict-aliasing | ||
-progs/verifier_ld_ind.c-bpf_gcc-CFLAGS := -fno-strict-aliasing | ||
-progs/verifier_map_ret_val.c-bpf_gcc-CFLAGS := -fno-strict-aliasing | ||
-progs/verifier_spill_fill.c-bpf_gcc-CFLAGS := -fno-strict-aliasing | ||
-progs/verifier_subprog_precision.c-bpf_gcc-CFLAGS := -fno-strict-aliasing | ||
-progs/verifier_uninit.c-bpf_gcc-CFLAGS := -fno-strict-aliasing | ||
endif | ||
|
||
ifneq ($(CLANG_CPUV4),) | ||
@@ -474,6 +447,7 @@ CLANG_SYS_INCLUDES = $(call get_sys_includes,$(CLANG),$(CLANG_TARGET_ARCH)) | ||
BPF_CFLAGS = -g -Wall -Werror -D__TARGET_ARCH_$(SRCARCH) $(MENDIAN) \ | ||
-I$(INCLUDE_DIR) -I$(CURDIR) -I$(APIDIR) \ | ||
-I$(abspath $(OUTPUT)/../usr/include) \ | ||
+ -fno-strict-aliasing \ | ||
-Wno-compare-distinct-pointer-types | ||
# TODO: enable me -Wsign-compare | ||
|
||
-- | ||
2.47.1 | ||
|
63 changes: 63 additions & 0 deletions
63
ci/diffs/2002-selftests-bpf-add-std-gnu11-to-BPF_CFLAGS-and-CFLAGS.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
From bab18c7db44d3aa6c84450095451580922359c7a Mon Sep 17 00:00:00 2001 | ||
From: Ihor Solodrai <ihor.solodrai@pm.me> | ||
Date: Tue, 7 Jan 2025 23:58:18 +0000 | ||
Subject: [PATCH] selftests/bpf: add -std=gnu11 to BPF_CFLAGS and CFLAGS | ||
|
||
Latest versions of GCC BPF use C23 standard by default. This causes | ||
compilation errors in vmlinux.h due to bool types declarations. | ||
|
||
Add -std=gnu11 to BPF_CFLAGS and CFLAGS. This aligns with the version | ||
of the standard used when building the kernel currently [1]. | ||
|
||
For more details see the discussions at [2] and [3]. | ||
|
||
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Makefile#n465 | ||
[2] https://lore.kernel.org/bpf/EYcXjcKDCJY7Yb0GGtAAb7nLKPEvrgWdvWpuNzXm2qi6rYMZDixKv5KwfVVMBq17V55xyC-A1wIjrqG3aw-Imqudo9q9X7D7nLU2gWgbN0w=@pm.me/ | ||
[3] https://lore.kernel.org/bpf/20250106202715.1232864-1-ihor.solodrai@pm.me/ | ||
|
||
CC: Jose E. Marchesi <jose.marchesi@oracle.com> | ||
Signed-off-by: Ihor Solodrai <ihor.solodrai@pm.me> | ||
Link: https://lore.kernel.org/r/20250107235813.2964472-1-ihor.solodrai@pm.me | ||
Signed-off-by: Alexei Starovoitov <ast@kernel.org> | ||
--- | ||
tools/testing/selftests/bpf/Makefile | 8 ++++++-- | ||
1 file changed, 6 insertions(+), 2 deletions(-) | ||
|
||
diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile | ||
index d5be2f94deef..ea9cee5de0f8 100644 | ||
--- a/tools/testing/selftests/bpf/Makefile | ||
+++ b/tools/testing/selftests/bpf/Makefile | ||
@@ -41,7 +41,7 @@ srctree := $(patsubst %/,%,$(dir $(srctree))) | ||
srctree := $(patsubst %/,%,$(dir $(srctree))) | ||
endif | ||
|
||
-CFLAGS += -g $(OPT_FLAGS) -rdynamic \ | ||
+CFLAGS += -g $(OPT_FLAGS) -rdynamic -std=gnu11 \ | ||
-Wall -Werror -fno-omit-frame-pointer \ | ||
$(GENFLAGS) $(SAN_CFLAGS) $(LIBELF_CFLAGS) \ | ||
-I$(CURDIR) -I$(INCLUDE_DIR) -I$(GENDIR) -I$(LIBDIR) \ | ||
@@ -447,6 +447,7 @@ CLANG_SYS_INCLUDES = $(call get_sys_includes,$(CLANG),$(CLANG_TARGET_ARCH)) | ||
BPF_CFLAGS = -g -Wall -Werror -D__TARGET_ARCH_$(SRCARCH) $(MENDIAN) \ | ||
-I$(INCLUDE_DIR) -I$(CURDIR) -I$(APIDIR) \ | ||
-I$(abspath $(OUTPUT)/../usr/include) \ | ||
+ -std=gnu11 \ | ||
-fno-strict-aliasing \ | ||
-Wno-compare-distinct-pointer-types | ||
# TODO: enable me -Wsign-compare | ||
@@ -787,9 +788,12 @@ $(OUTPUT)/xdp_features: xdp_features.c $(OUTPUT)/network_helpers.o $(OUTPUT)/xdp | ||
$(Q)$(CC) $(CFLAGS) $(filter %.a %.o %.c,$^) $(LDLIBS) -o $@ | ||
|
||
# Make sure we are able to include and link libbpf against c++. | ||
+CXXFLAGS += $(CFLAGS) | ||
+CXXFLAGS := $(subst -D_GNU_SOURCE=,,$(CXXFLAGS)) | ||
+CXXFLAGS := $(subst -std=gnu11,-std=gnu++11,$(CXXFLAGS)) | ||
$(OUTPUT)/test_cpp: test_cpp.cpp $(OUTPUT)/test_core_extern.skel.h $(BPFOBJ) | ||
$(call msg,CXX,,$@) | ||
- $(Q)$(CXX) $(subst -D_GNU_SOURCE=,,$(CFLAGS)) $(filter %.a %.o %.cpp,$^) $(LDLIBS) -o $@ | ||
+ $(Q)$(CXX) $(CXXFLAGS) $(filter %.a %.o %.cpp,$^) $(LDLIBS) -o $@ | ||
|
||
# Benchmark runner | ||
$(OUTPUT)/bench_%.o: benchs/bench_%.c bench.h $(BPFOBJ) | ||
-- | ||
2.47.1 | ||
|