Centralizes the definition of _GNU_SOURCE into lib.mk and addresses all resulting macro redefinition warnings.
These patches will need to be merged in one shot to avoid redefinition warnings.
The initial attempt at this patch was abandoned because it affected lines in many source files and caused a large amount of churn. However, from earlier discussions, centralizing _GNU_SOURCE is still desireable. This attempt limits the changes to 1 source file and 12 Makefiles.
v1: https://lore.kernel.org/linux-kselftest/20240430235057.1351993-1-edliaw@goog... v2: https://lore.kernel.org/linux-kselftest/20240507214254.2787305-1-edliaw@goog... - Add -D_GNU_SOURCE to KHDR_INCLUDES so that it is in a single location. - Remove #define _GNU_SOURCE from source code to resolve redefinition warnings. v3: https://lore.kernel.org/linux-kselftest/20240509200022.253089-1-edliaw@googl... - Rebase onto linux-next 20240508. - Split patches by directory. - Add -D_GNU_SOURCE directly to CFLAGS in lib.mk. - Delete additional _GNU_SOURCE definitions from source code in linux-next. - Delete additional -D_GNU_SOURCE flags from Makefiles. v4: https://lore.kernel.org/linux-kselftest/20240510000842.410729-1-edliaw@googl... - Rebase onto linux-next 20240509. - Remove Fixes tag from patches that drop _GNU_SOURCE definition. - Restore space between comment and includes for selftests/damon. v5: https://lore.kernel.org/linux-kselftest/20240522005913.3540131-1-edliaw@goog... - Rebase onto linux-next 20240521 - Drop initial patches that modify KHDR_INCLUDES. - Incorporate Mark Brown's patch to replace static_assert with warning. - Don't drop #define _GNU_SOURCE from nolibc and wireguard. - Change Makefiles for x86 and vDSO to append to CFLAGS. v6: - Rewrite patch to use -D_GNU_SOURCE= form in lib.mk. - Reduce the amount of churn significantly by allowing definition to coexist with source code macro defines.
Edward Liaw (13): selftests/mm: Define _GNU_SOURCE to an empty string selftests: Add -D_GNU_SOURCE= to CFLAGS in lib.mk selftests/net: Append to lib.mk CFLAGS in Makefile selftests/exec: Drop redundant -D_GNU_SOURCE CFLAGS in Makefile selftests/futex: Drop redundant -D_GNU_SOURCE CFLAGS in Makefile selftests/intel_pstate: Drop redundant -D_GNU_SOURCE CFLAGS in Makefile selftests/iommu: Drop redundant -D_GNU_SOURCE CFLAGS in Makefile selftests/kvm: Drop redundant -D_GNU_SOURCE CFLAGS in Makefile selftests/proc: Drop redundant -D_GNU_SOURCE CFLAGS in Makefile selftests/resctrl: Drop redundant -D_GNU_SOURCE CFLAGS in Makefile selftests/ring-buffer: Drop redundant -D_GNU_SOURCE CFLAGS in Makefile selftests/riscv: Drop redundant -D_GNU_SOURCE CFLAGS in Makefile selftests/sgx: Append CFLAGS from lib.mk to HOST_CFLAGS
tools/testing/selftests/exec/Makefile | 1 - tools/testing/selftests/futex/functional/Makefile | 2 +- tools/testing/selftests/intel_pstate/Makefile | 2 +- tools/testing/selftests/iommu/Makefile | 2 -- tools/testing/selftests/kvm/Makefile | 2 +- tools/testing/selftests/lib.mk | 3 +++ tools/testing/selftests/mm/thuge-gen.c | 2 +- tools/testing/selftests/net/Makefile | 2 +- tools/testing/selftests/net/tcp_ao/Makefile | 2 +- tools/testing/selftests/proc/Makefile | 1 - tools/testing/selftests/resctrl/Makefile | 2 +- tools/testing/selftests/ring-buffer/Makefile | 1 - tools/testing/selftests/riscv/mm/Makefile | 2 +- tools/testing/selftests/sgx/Makefile | 2 +- 14 files changed, 12 insertions(+), 14 deletions(-)
-- 2.45.2.741.gdbec12cfda-goog
Use the more common "#define _GNU_SOURCE" instead of defining it to 1. This will prevent redefinition warnings when -D_GNU_SOURCE= is set.
Signed-off-by: Edward Liaw edliaw@google.com --- tools/testing/selftests/mm/thuge-gen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/mm/thuge-gen.c b/tools/testing/selftests/mm/thuge-gen.c index d50dc71cac32..e4370b79b62f 100644 --- a/tools/testing/selftests/mm/thuge-gen.c +++ b/tools/testing/selftests/mm/thuge-gen.c @@ -13,7 +13,7 @@ sudo ipcs | awk '$1 == "0x00000000" {print $2}' | xargs -n1 sudo ipcrm -m (warning this will remove all if someone else uses them) */
-#define _GNU_SOURCE 1 +#define _GNU_SOURCE #include <sys/mman.h> #include <linux/mman.h> #include <stdlib.h>
Centralizes the _GNU_SOURCE definition to CFLAGS in lib.mk.
This uses the form "-D_GNU_SOURCE=", which is equivalent to "#define _GNU_SOURCE".
Otherwise using "-D_GNU_SOURCE" is equivalent to "-D_GNU_SOURCE=1" and "#define _GNU_SOURCE 1", which is less commonly seen in source code and would require many changes in selftests to avoid redefinition warnings.
Suggested-by: John Hubbard jhubbard@nvidia.com Signed-off-by: Edward Liaw edliaw@google.com --- tools/testing/selftests/lib.mk | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/tools/testing/selftests/lib.mk b/tools/testing/selftests/lib.mk index 7b299ed5ff45..d6edcfcb5be8 100644 --- a/tools/testing/selftests/lib.mk +++ b/tools/testing/selftests/lib.mk @@ -196,6 +196,9 @@ endef clean: $(if $(TEST_GEN_MODS_DIR),clean_mods_dir) $(CLEAN)
+# Build with _GNU_SOURCE by default +CFLAGS += -D_GNU_SOURCE= + # Enables to extend CFLAGS and LDFLAGS from command line, e.g. # make USERCFLAGS=-Werror USERLDFLAGS=-static CFLAGS += $(USERCFLAGS)
Instead of overwriting the CFLAGS imported from lib.mk, append instead instead. Also drop -D_GNU_SOURCE from CFLAGS to prevent redefinition warning.
Signed-off-by: Edward Liaw edliaw@google.com --- tools/testing/selftests/net/Makefile | 2 +- tools/testing/selftests/net/tcp_ao/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile index bc3925200637..8eaffd7a641c 100644 --- a/tools/testing/selftests/net/Makefile +++ b/tools/testing/selftests/net/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 # Makefile for net selftests
-CFLAGS = -Wall -Wl,--no-as-needed -O2 -g +CFLAGS += -Wall -Wl,--no-as-needed -O2 -g CFLAGS += -I../../../../usr/include/ $(KHDR_INCLUDES) # Additional include paths needed by kselftest.h CFLAGS += -I../ diff --git a/tools/testing/selftests/net/tcp_ao/Makefile b/tools/testing/selftests/net/tcp_ao/Makefile index 522d991e310e..bd88b90b902b 100644 --- a/tools/testing/selftests/net/tcp_ao/Makefile +++ b/tools/testing/selftests/net/tcp_ao/Makefile @@ -26,7 +26,7 @@ LIB := $(LIBDIR)/libaotst.a LDLIBS += $(LIB) -pthread LIBDEPS := lib/aolib.h Makefile
-CFLAGS := -Wall -O2 -g -D_GNU_SOURCE -fno-strict-aliasing +CFLAGS += -Wall -O2 -g -fno-strict-aliasing CFLAGS += $(KHDR_INCLUDES) CFLAGS += -iquote ./lib/ -I ../../../../include/
-D_GNU_SOURCE= will be provided by lib.mk CFLAGS, so -D_GNU_SOURCE should be dropped to prevent redefinition warnings.
Signed-off-by: Edward Liaw edliaw@google.com --- tools/testing/selftests/exec/Makefile | 1 - 1 file changed, 1 deletion(-)
diff --git a/tools/testing/selftests/exec/Makefile b/tools/testing/selftests/exec/Makefile index ab67d58cfab7..ba012bc5aab9 100644 --- a/tools/testing/selftests/exec/Makefile +++ b/tools/testing/selftests/exec/Makefile @@ -1,7 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 CFLAGS = -Wall CFLAGS += -Wno-nonnull -CFLAGS += -D_GNU_SOURCE
ALIGNS := 0x1000 0x200000 0x1000000 ALIGN_PIES := $(patsubst %,load_address.%,$(ALIGNS))
-D_GNU_SOURCE= will be provided by lib.mk CFLAGS, so -D_GNU_SOURCE should be dropped to prevent redefinition warnings.
Signed-off-by: Edward Liaw edliaw@google.com --- tools/testing/selftests/futex/functional/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/futex/functional/Makefile b/tools/testing/selftests/futex/functional/Makefile index 994fa3468f17..f79f9bac7918 100644 --- a/tools/testing/selftests/futex/functional/Makefile +++ b/tools/testing/selftests/futex/functional/Makefile @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 INCLUDES := -I../include -I../../ $(KHDR_INCLUDES) -CFLAGS := $(CFLAGS) -g -O2 -Wall -D_GNU_SOURCE= -pthread $(INCLUDES) $(KHDR_INCLUDES) +CFLAGS := $(CFLAGS) -g -O2 -Wall -pthread $(INCLUDES) $(KHDR_INCLUDES) LDLIBS := -lpthread -lrt
LOCAL_HDRS := \
-D_GNU_SOURCE= will be provided by lib.mk CFLAGS, so -D_GNU_SOURCE should be dropped to prevent redefinition warnings.
Signed-off-by: Edward Liaw edliaw@google.com --- tools/testing/selftests/intel_pstate/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/intel_pstate/Makefile b/tools/testing/selftests/intel_pstate/Makefile index 05d66ef50c97..f45372cb00fe 100644 --- a/tools/testing/selftests/intel_pstate/Makefile +++ b/tools/testing/selftests/intel_pstate/Makefile @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 -CFLAGS := $(CFLAGS) -Wall -D_GNU_SOURCE +CFLAGS := $(CFLAGS) -Wall LDLIBS += -lm
ARCH ?= $(shell uname -m 2>/dev/null || echo not)
-D_GNU_SOURCE= will be provided by lib.mk CFLAGS, so -D_GNU_SOURCE should be dropped to prevent redefinition warnings.
Signed-off-by: Edward Liaw edliaw@google.com --- tools/testing/selftests/iommu/Makefile | 2 -- 1 file changed, 2 deletions(-)
diff --git a/tools/testing/selftests/iommu/Makefile b/tools/testing/selftests/iommu/Makefile index 32c5fdfd0eef..fd6477911f24 100644 --- a/tools/testing/selftests/iommu/Makefile +++ b/tools/testing/selftests/iommu/Makefile @@ -2,8 +2,6 @@ CFLAGS += -Wall -O2 -Wno-unused-function CFLAGS += $(KHDR_INCLUDES)
-CFLAGS += -D_GNU_SOURCE - TEST_GEN_PROGS := TEST_GEN_PROGS += iommufd TEST_GEN_PROGS += iommufd_fail_nth
-D_GNU_SOURCE= will be provided by lib.mk CFLAGS, so -D_GNU_SOURCE should be dropped to prevent redefinition warnings.
Signed-off-by: Edward Liaw edliaw@google.com --- tools/testing/selftests/kvm/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile index ac280dcba996..4ee37abf70ff 100644 --- a/tools/testing/selftests/kvm/Makefile +++ b/tools/testing/selftests/kvm/Makefile @@ -231,7 +231,7 @@ LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/$(ARCH)/include endif CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \ -Wno-gnu-variable-sized-type-not-at-end -MD -MP -DCONFIG_64BIT \ - -D_GNU_SOURCE -fno-builtin-memcmp -fno-builtin-memcpy \ + -fno-builtin-memcmp -fno-builtin-memcpy \ -fno-builtin-memset -fno-builtin-strnlen \ -fno-stack-protector -fno-PIE -I$(LINUX_TOOL_INCLUDE) \ -I$(LINUX_TOOL_ARCH_INCLUDE) -I$(LINUX_HDR_PATH) -Iinclude \
-D_GNU_SOURCE= will be provided by lib.mk CFLAGS, so -D_GNU_SOURCE should be dropped to prevent redefinition warnings.
Signed-off-by: Edward Liaw edliaw@google.com --- tools/testing/selftests/proc/Makefile | 1 - 1 file changed, 1 deletion(-)
diff --git a/tools/testing/selftests/proc/Makefile b/tools/testing/selftests/proc/Makefile index 6066f607f758..ee424a9f075f 100644 --- a/tools/testing/selftests/proc/Makefile +++ b/tools/testing/selftests/proc/Makefile @@ -1,6 +1,5 @@ # SPDX-License-Identifier: GPL-2.0-only CFLAGS += -Wall -O2 -Wno-unused-function -CFLAGS += -D_GNU_SOURCE LDFLAGS += -pthread
TEST_GEN_PROGS :=
-D_GNU_SOURCE= will be provided by lib.mk CFLAGS, so -D_GNU_SOURCE should be dropped to prevent redefinition warnings.
Signed-off-by: Edward Liaw edliaw@google.com --- tools/testing/selftests/resctrl/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/resctrl/Makefile b/tools/testing/selftests/resctrl/Makefile index 021863f86053..f408bd6bfc3d 100644 --- a/tools/testing/selftests/resctrl/Makefile +++ b/tools/testing/selftests/resctrl/Makefile @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0
-CFLAGS = -g -Wall -O2 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE +CFLAGS = -g -Wall -O2 -D_FORTIFY_SOURCE=2 CFLAGS += $(KHDR_INCLUDES)
TEST_GEN_PROGS := resctrl_tests
-D_GNU_SOURCE= will be provided by lib.mk CFLAGS, so -D_GNU_SOURCE should be dropped to prevent redefinition warnings.
Signed-off-by: Edward Liaw edliaw@google.com --- tools/testing/selftests/ring-buffer/Makefile | 1 - 1 file changed, 1 deletion(-)
diff --git a/tools/testing/selftests/ring-buffer/Makefile b/tools/testing/selftests/ring-buffer/Makefile index 627c5fa6d1ab..23605782639e 100644 --- a/tools/testing/selftests/ring-buffer/Makefile +++ b/tools/testing/selftests/ring-buffer/Makefile @@ -1,7 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 CFLAGS += -Wl,-no-as-needed -Wall CFLAGS += $(KHDR_INCLUDES) -CFLAGS += -D_GNU_SOURCE
TEST_GEN_PROGS = map_test
-D_GNU_SOURCE= will be provided by lib.mk CFLAGS, so -D_GNU_SOURCE should be dropped to prevent redefinition warnings.
Signed-off-by: Edward Liaw edliaw@google.com --- tools/testing/selftests/riscv/mm/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/riscv/mm/Makefile b/tools/testing/selftests/riscv/mm/Makefile index c333263f2b27..4664ed79e20b 100644 --- a/tools/testing/selftests/riscv/mm/Makefile +++ b/tools/testing/selftests/riscv/mm/Makefile @@ -3,7 +3,7 @@ # Originally tools/testing/arm64/abi/Makefile
# Additional include paths needed by kselftest.h and local headers -CFLAGS += -D_GNU_SOURCE -std=gnu99 -I. +CFLAGS += -std=gnu99 -I.
TEST_GEN_FILES := mmap_default mmap_bottomup
lib.mk CFLAGS provides -D_GNU_SOURCE= which is needed to compile the host files.
Signed-off-by: Edward Liaw edliaw@google.com --- tools/testing/selftests/sgx/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/sgx/Makefile b/tools/testing/selftests/sgx/Makefile index 867f88ce2570..03b5e13b872b 100644 --- a/tools/testing/selftests/sgx/Makefile +++ b/tools/testing/selftests/sgx/Makefile @@ -12,7 +12,7 @@ OBJCOPY := $(CROSS_COMPILE)objcopy endif
INCLUDES := -I$(top_srcdir)/tools/include -HOST_CFLAGS := -Wall -Werror -g $(INCLUDES) -fPIC +HOST_CFLAGS := -Wall -Werror -g $(INCLUDES) -fPIC $(CFLAGS) HOST_LDFLAGS := -z noexecstack -lcrypto ENCL_CFLAGS += -Wall -Werror -static-pie -nostdlib -ffreestanding -fPIE \ -fno-stack-protector -mrdrnd $(INCLUDES)
On Mon, 24 Jun 2024 23:26:09 +0000 Edward Liaw edliaw@google.com wrote:
Centralizes the definition of _GNU_SOURCE into lib.mk and addresses all resulting macro redefinition warnings.
These patches will need to be merged in one shot to avoid redefinition warnings.
Yes, please do this as a single patch and resend?
On 6/25/24 14:52, Andrew Morton wrote:
On Mon, 24 Jun 2024 23:26:09 +0000 Edward Liaw edliaw@google.com wrote:
Centralizes the definition of _GNU_SOURCE into lib.mk and addresses all resulting macro redefinition warnings.
These patches will need to be merged in one shot to avoid redefinition warnings.
Yes, please do this as a single patch and resend?
Since the change is limited to makefiles and one source file we can manage it with one patch.
Please send single patch and I will apply to next and we can resolve conflicts if any before the merge window rolls around.
thanks, -- Shuah
On Tue, Jun 25, 2024 at 4:34 PM Shuah Khan skhan@linuxfoundation.org wrote:
On 6/25/24 14:52, Andrew Morton wrote:
On Mon, 24 Jun 2024 23:26:09 +0000 Edward Liaw edliaw@google.com wrote:
Centralizes the definition of _GNU_SOURCE into lib.mk and addresses all resulting macro redefinition warnings.
These patches will need to be merged in one shot to avoid redefinition warnings.
Yes, please do this as a single patch and resend?
Since the change is limited to makefiles and one source file we can manage it with one patch.
Please send single patch and I will apply to next and we can resolve conflicts if any before the merge window rolls around.
Sounds good, I sent: https://lore.kernel.org/linux-kselftest/20240625223454.1586259-1-edliaw@goog...
thanks, -- Shuah
On Tue, Jun 25, 2024 at 5:41 PM Edward Liaw edliaw@google.com wrote:
On Tue, Jun 25, 2024 at 4:34 PM Shuah Khan skhan@linuxfoundation.org wrote:
On 6/25/24 14:52, Andrew Morton wrote:
On Mon, 24 Jun 2024 23:26:09 +0000 Edward Liaw edliaw@google.com wrote:
Centralizes the definition of _GNU_SOURCE into lib.mk and addresses all resulting macro redefinition warnings.
These patches will need to be merged in one shot to avoid redefinition warnings.
Yes, please do this as a single patch and resend?
Since the change is limited to makefiles and one source file we can manage it with one patch.
Please send single patch and I will apply to next and we can resolve conflicts if any before the merge window rolls around.
Sounds good, I sent: https://lore.kernel.org/linux-kselftest/20240625223454.1586259-1-edliaw@goog...
I realized that in this v6 patch, I had accidentally sent it in the middle of a rebase, so it's missing the last change to selftests/tmpfs. I've fixed it in v7.
thanks, -- Shuah
linux-kselftest-mirror@lists.linaro.org