Message ID | 20240507214254.2787305-2-edliaw@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Define _GNU_SOURCE for sources using | expand |
Thanks for patches On 5/8/24 2:38 AM, Edward Liaw wrote: > Add the -D_GNU_SOURCE flag to KHDR_INCLUDES so that it is defined in a > central location. > > 809216233555 ("selftests/harness: remove use of LINE_MAX") introduced > asprintf into kselftest_harness.h, which is a GNU extension and needs > _GNU_SOURCE to either be defined prior to including headers or with the > -D_GNU_SOURCE flag passed to the compiler. > > Fixes: 809216233555 ("selftests/harness: remove use of LINE_MAX") > Reported-by: kernel test robot <oliver.sang@intel.com> > Closes: https://lore.kernel.org/oe-lkp/202404301040.3bea5782-oliver.sang@intel.com > Signed-off-by: Edward Liaw <edliaw@google.com> Reviewed-by: Muhammad Usama Anjum <usama.anjum@collabora.com> > --- > tools/testing/selftests/Makefile | 4 ++-- > tools/testing/selftests/kselftest_harness.h | 2 +- > tools/testing/selftests/lib.mk | 2 +- > 3 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile > index e1504833654d..ed012a7f0786 100644 > --- a/tools/testing/selftests/Makefile > +++ b/tools/testing/selftests/Makefile > @@ -161,11 +161,11 @@ ifneq ($(KBUILD_OUTPUT),) > # $(realpath ...) resolves symlinks > abs_objtree := $(realpath $(abs_objtree)) > BUILD := $(abs_objtree)/kselftest > - KHDR_INCLUDES := -isystem ${abs_objtree}/usr/include > + KHDR_INCLUDES := -D_GNU_SOURCE -isystem ${abs_objtree}/usr/include > else > BUILD := $(CURDIR) > abs_srctree := $(shell cd $(top_srcdir) && pwd) > - KHDR_INCLUDES := -isystem ${abs_srctree}/usr/include > + KHDR_INCLUDES := -D_GNU_SOURCE -isystem ${abs_srctree}/usr/include > DEFAULT_INSTALL_HDR_PATH := 1 > endif > > diff --git a/tools/testing/selftests/kselftest_harness.h b/tools/testing/selftests/kselftest_harness.h > index d98702b6955d..b2a1b6343896 100644 > --- a/tools/testing/selftests/kselftest_harness.h > +++ b/tools/testing/selftests/kselftest_harness.h > @@ -51,7 +51,7 @@ > #define __KSELFTEST_HARNESS_H > > #ifndef _GNU_SOURCE > -#define _GNU_SOURCE > +static_assert(0, "kselftest harness requires _GNU_SOURCE to be defined"); > #endif > #include <asm/types.h> > #include <ctype.h> > diff --git a/tools/testing/selftests/lib.mk b/tools/testing/selftests/lib.mk > index da2cade3bab0..2503dc732b4d 100644 > --- a/tools/testing/selftests/lib.mk > +++ b/tools/testing/selftests/lib.mk > @@ -45,7 +45,7 @@ selfdir = $(realpath $(dir $(filter %/lib.mk,$(MAKEFILE_LIST)))) > top_srcdir = $(selfdir)/../../.. > > ifeq ($(KHDR_INCLUDES),) > -KHDR_INCLUDES := -isystem $(top_srcdir)/usr/include > +KHDR_INCLUDES := -D_GNU_SOURCE -isystem $(top_srcdir)/usr/include > endif > > # The following are built by lib.mk common compile rules.
On Tue, May 07, 2024 at 09:38:26PM +0000, Edward Liaw wrote: > Add the -D_GNU_SOURCE flag to KHDR_INCLUDES so that it is defined in a > central location. > > 809216233555 ("selftests/harness: remove use of LINE_MAX") introduced > asprintf into kselftest_harness.h, which is a GNU extension and needs > _GNU_SOURCE to either be defined prior to including headers or with the > -D_GNU_SOURCE flag passed to the compiler. Reviewed-by: Mark Brown <broonie@kernel.org> This does mean we define _GNU_SOURCE for nolibc (and I guess any other libc people use like bionic) but hopefully nobody's using the same define with a different meaning so should be fine.
On 5/7/24 2:38 PM, Edward Liaw wrote: > Add the -D_GNU_SOURCE flag to KHDR_INCLUDES so that it is defined in a > central location. > > 809216233555 ("selftests/harness: remove use of LINE_MAX") introduced > asprintf into kselftest_harness.h, which is a GNU extension and needs > _GNU_SOURCE to either be defined prior to including headers or with the > -D_GNU_SOURCE flag passed to the compiler. > > Fixes: 809216233555 ("selftests/harness: remove use of LINE_MAX") > Reported-by: kernel test robot <oliver.sang@intel.com> > Closes: https://lore.kernel.org/oe-lkp/202404301040.3bea5782-oliver.sang@intel.com > Signed-off-by: Edward Liaw <edliaw@google.com> > --- > tools/testing/selftests/Makefile | 4 ++-- > tools/testing/selftests/kselftest_harness.h | 2 +- > tools/testing/selftests/lib.mk | 2 +- > 3 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile > index e1504833654d..ed012a7f0786 100644 > --- a/tools/testing/selftests/Makefile > +++ b/tools/testing/selftests/Makefile > @@ -161,11 +161,11 @@ ifneq ($(KBUILD_OUTPUT),) > # $(realpath ...) resolves symlinks > abs_objtree := $(realpath $(abs_objtree)) > BUILD := $(abs_objtree)/kselftest > - KHDR_INCLUDES := -isystem ${abs_objtree}/usr/include > + KHDR_INCLUDES := -D_GNU_SOURCE -isystem ${abs_objtree}/usr/include > else > BUILD := $(CURDIR) > abs_srctree := $(shell cd $(top_srcdir) && pwd) > - KHDR_INCLUDES := -isystem ${abs_srctree}/usr/include > + KHDR_INCLUDES := -D_GNU_SOURCE -isystem ${abs_srctree}/usr/include > DEFAULT_INSTALL_HDR_PATH := 1 > endif Just a small copy-paste duplication request: can we maybe do it this way, instead, to remove the duplication? It's small *so far*, but still. :) diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile index e1504833654d..13a5b11db59a 100644 --- a/tools/testing/selftests/Makefile +++ b/tools/testing/selftests/Makefile @@ -152,6 +152,8 @@ ifeq ("$(origin O)", "command line") KBUILD_OUTPUT := $(O) endif +KHDR_INCLUDES := -D_GNU_SOURCE + ifneq ($(KBUILD_OUTPUT),) # Make's built-in functions such as $(abspath ...), $(realpath ...) cannot # expand a shell special character '~'. We use a somewhat tedious way here. @@ -161,11 +163,11 @@ ifneq ($(KBUILD_OUTPUT),) # $(realpath ...) resolves symlinks abs_objtree := $(realpath $(abs_objtree)) BUILD := $(abs_objtree)/kselftest - KHDR_INCLUDES := -isystem ${abs_objtree}/usr/include + KHDR_INCLUDES += -isystem ${abs_objtree}/usr/include else BUILD := $(CURDIR) abs_srctree := $(shell cd $(top_srcdir) && pwd) - KHDR_INCLUDES := -isystem ${abs_srctree}/usr/include + KHDR_INCLUDES += -isystem ${abs_srctree}/usr/include DEFAULT_INSTALL_HDR_PATH := 1 endif > > diff --git a/tools/testing/selftests/kselftest_harness.h b/tools/testing/selftests/kselftest_harness.h > index d98702b6955d..b2a1b6343896 100644 > --- a/tools/testing/selftests/kselftest_harness.h > +++ b/tools/testing/selftests/kselftest_harness.h > @@ -51,7 +51,7 @@ > #define __KSELFTEST_HARNESS_H > > #ifndef _GNU_SOURCE > -#define _GNU_SOURCE > +static_assert(0, "kselftest harness requires _GNU_SOURCE to be defined"); > #endif > #include <asm/types.h> > #include <ctype.h> > diff --git a/tools/testing/selftests/lib.mk b/tools/testing/selftests/lib.mk > index da2cade3bab0..2503dc732b4d 100644 > --- a/tools/testing/selftests/lib.mk > +++ b/tools/testing/selftests/lib.mk > @@ -45,7 +45,7 @@ selfdir = $(realpath $(dir $(filter %/lib.mk,$(MAKEFILE_LIST)))) > top_srcdir = $(selfdir)/../../.. > > ifeq ($(KHDR_INCLUDES),) > -KHDR_INCLUDES := -isystem $(top_srcdir)/usr/include > +KHDR_INCLUDES := -D_GNU_SOURCE -isystem $(top_srcdir)/usr/include > endif > > # The following are built by lib.mk common compile rules. The rest looks good. And whether you accept my recommendation above, or not, either way this patch looks good, so please feel free to add: Reviewed-by: John Hubbard <jhubbard@nvidia.com> thanks,
diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile index e1504833654d..ed012a7f0786 100644 --- a/tools/testing/selftests/Makefile +++ b/tools/testing/selftests/Makefile @@ -161,11 +161,11 @@ ifneq ($(KBUILD_OUTPUT),) # $(realpath ...) resolves symlinks abs_objtree := $(realpath $(abs_objtree)) BUILD := $(abs_objtree)/kselftest - KHDR_INCLUDES := -isystem ${abs_objtree}/usr/include + KHDR_INCLUDES := -D_GNU_SOURCE -isystem ${abs_objtree}/usr/include else BUILD := $(CURDIR) abs_srctree := $(shell cd $(top_srcdir) && pwd) - KHDR_INCLUDES := -isystem ${abs_srctree}/usr/include + KHDR_INCLUDES := -D_GNU_SOURCE -isystem ${abs_srctree}/usr/include DEFAULT_INSTALL_HDR_PATH := 1 endif diff --git a/tools/testing/selftests/kselftest_harness.h b/tools/testing/selftests/kselftest_harness.h index d98702b6955d..b2a1b6343896 100644 --- a/tools/testing/selftests/kselftest_harness.h +++ b/tools/testing/selftests/kselftest_harness.h @@ -51,7 +51,7 @@ #define __KSELFTEST_HARNESS_H #ifndef _GNU_SOURCE -#define _GNU_SOURCE +static_assert(0, "kselftest harness requires _GNU_SOURCE to be defined"); #endif #include <asm/types.h> #include <ctype.h> diff --git a/tools/testing/selftests/lib.mk b/tools/testing/selftests/lib.mk index da2cade3bab0..2503dc732b4d 100644 --- a/tools/testing/selftests/lib.mk +++ b/tools/testing/selftests/lib.mk @@ -45,7 +45,7 @@ selfdir = $(realpath $(dir $(filter %/lib.mk,$(MAKEFILE_LIST)))) top_srcdir = $(selfdir)/../../.. ifeq ($(KHDR_INCLUDES),) -KHDR_INCLUDES := -isystem $(top_srcdir)/usr/include +KHDR_INCLUDES := -D_GNU_SOURCE -isystem $(top_srcdir)/usr/include endif # The following are built by lib.mk common compile rules.
Add the -D_GNU_SOURCE flag to KHDR_INCLUDES so that it is defined in a central location. 809216233555 ("selftests/harness: remove use of LINE_MAX") introduced asprintf into kselftest_harness.h, which is a GNU extension and needs _GNU_SOURCE to either be defined prior to including headers or with the -D_GNU_SOURCE flag passed to the compiler. Fixes: 809216233555 ("selftests/harness: remove use of LINE_MAX") Reported-by: kernel test robot <oliver.sang@intel.com> Closes: https://lore.kernel.org/oe-lkp/202404301040.3bea5782-oliver.sang@intel.com Signed-off-by: Edward Liaw <edliaw@google.com> --- tools/testing/selftests/Makefile | 4 ++-- tools/testing/selftests/kselftest_harness.h | 2 +- tools/testing/selftests/lib.mk | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-)