public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/3] selftests/vDSO: fix clang build errors, and Makefile cleanup
@ 2024-07-04  2:33 John Hubbard
  2024-07-04  2:33 ` [PATCH v4 1/3] selftests/vDSO: fix clang build errors and warnings John Hubbard
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: John Hubbard @ 2024-07-04  2:33 UTC (permalink / raw)
  To: Shuah Khan
  Cc: Jason A . Donenfeld, Thomas Gleixner, Andy Lutomirski, Mark Brown,
	Vincenzo Frascino, Colin Ian King, Valentin Obst, linux-kselftest,
	LKML, llvm, John Hubbard

Hi,

This is basically a resend, with a rebase onto today's latest Linux
main, in order to show that the patches are still relevant and correct.

Changes since v3:

1. Rebased onto Linux 6.10-rc6+.

Cover letter for v3:

Jason A. Donenfeld, I've added you because I ended up looking through
your latest "implement getrandom() in vDSO" series [1], which also
touches this Makefile, so just a heads up about upcoming (minor) merge
conflicts.

Changes since v2:

1. Added two patches, both of which apply solely to the Makefile.
These provide a smaller, cleaner, and more accurate Makefile.

2. Added Reviewed-by and Tested-by tags for the original patch, which
fixes all of the clang errors and warnings for this selftest.

3. Removed an obsolete blurb from the commit description of the original
patch, now that Valentin Obst LLVM build fix has been merged.

John Hubbard (3):
  selftests/vDSO: fix clang build errors and warnings
  selftests/mm: remove partially duplicated "all:" target in Makefile
  selftests/vDSO: remove duplicate compiler invocations from Makefile

 tools/testing/selftests/vDSO/Makefile         | 29 ++++++++-----------
 tools/testing/selftests/vDSO/parse_vdso.c     | 16 ++++++----
 .../selftests/vDSO/vdso_standalone_test_x86.c | 18 ++++++++++--
 3 files changed, 39 insertions(+), 24 deletions(-)


base-commit: 8a9c6c40432e265600232b864f97d7c675e8be52
-- 
2.45.2


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v4 1/3] selftests/vDSO: fix clang build errors and warnings
  2024-07-04  2:33 [PATCH v4 0/3] selftests/vDSO: fix clang build errors, and Makefile cleanup John Hubbard
@ 2024-07-04  2:33 ` John Hubbard
  2024-07-04  2:33 ` [PATCH v4 2/3] selftests/mm: remove partially duplicated "all:" target in Makefile John Hubbard
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: John Hubbard @ 2024-07-04  2:33 UTC (permalink / raw)
  To: Shuah Khan
  Cc: Jason A . Donenfeld, Thomas Gleixner, Andy Lutomirski, Mark Brown,
	Vincenzo Frascino, Colin Ian King, Valentin Obst, linux-kselftest,
	LKML, llvm, John Hubbard, Carlos Llamas, Edward Liaw,
	Muhammad Usama Anjum

When building with clang, via:

    make LLVM=1 -C tools/testing/selftests

...there are several warnings, and an error. This fixes all of those and
allows these tests to run and pass.

1. Fix linker error (undefined reference to memcpy) by providing a local
   version of memcpy.

2. clang complains about using this form:

    if (g = h & 0xf0000000)

...so factor out the assignment into a separate step.

3. The code is passing a signed const char* to elf_hash(), which expects
   a const unsigned char *. There are several callers, so fix this at
   the source by allowing the function to accept a signed argument, and
   then converting to unsigned operations, once inside the function.

4. clang doesn't have __attribute__((externally_visible)) and generates
   a warning to that effect. Fortunately, gcc 12 and gcc 13 do not seem
   to require that attribute in order to build, run and pass tests here,
   so remove it.

Reviewed-by: Carlos Llamas <cmllamas@google.com>
Reviewed-by: Edward Liaw <edliaw@google.com>
Reviewed-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
Tested-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
Signed-off-by: John Hubbard <jhubbard@nvidia.com>
---
 tools/testing/selftests/vDSO/parse_vdso.c      | 16 +++++++++++-----
 .../selftests/vDSO/vdso_standalone_test_x86.c  | 18 ++++++++++++++++--
 2 files changed, 27 insertions(+), 7 deletions(-)

diff --git a/tools/testing/selftests/vDSO/parse_vdso.c b/tools/testing/selftests/vDSO/parse_vdso.c
index 413f75620a35..4ae417372e9e 100644
--- a/tools/testing/selftests/vDSO/parse_vdso.c
+++ b/tools/testing/selftests/vDSO/parse_vdso.c
@@ -55,14 +55,20 @@ static struct vdso_info
 	ELF(Verdef) *verdef;
 } vdso_info;
 
-/* Straight from the ELF specification. */
-static unsigned long elf_hash(const unsigned char *name)
+/*
+ * Straight from the ELF specification...and then tweaked slightly, in order to
+ * avoid a few clang warnings.
+ */
+static unsigned long elf_hash(const char *name)
 {
 	unsigned long h = 0, g;
-	while (*name)
+	const unsigned char *uch_name = (const unsigned char *)name;
+
+	while (*uch_name)
 	{
-		h = (h << 4) + *name++;
-		if (g = h & 0xf0000000)
+		h = (h << 4) + *uch_name++;
+		g = h & 0xf0000000;
+		if (g)
 			h ^= g >> 24;
 		h &= ~g;
 	}
diff --git a/tools/testing/selftests/vDSO/vdso_standalone_test_x86.c b/tools/testing/selftests/vDSO/vdso_standalone_test_x86.c
index 8a44ff973ee1..27f6fdf11969 100644
--- a/tools/testing/selftests/vDSO/vdso_standalone_test_x86.c
+++ b/tools/testing/selftests/vDSO/vdso_standalone_test_x86.c
@@ -18,7 +18,7 @@
 
 #include "parse_vdso.h"
 
-/* We need a libc functions... */
+/* We need some libc functions... */
 int strcmp(const char *a, const char *b)
 {
 	/* This implementation is buggy: it never returns -1. */
@@ -34,6 +34,20 @@ int strcmp(const char *a, const char *b)
 	return 0;
 }
 
+/*
+ * The clang build needs this, although gcc does not.
+ * Stolen from lib/string.c.
+ */
+void *memcpy(void *dest, const void *src, size_t count)
+{
+	char *tmp = dest;
+	const char *s = src;
+
+	while (count--)
+		*tmp++ = *s++;
+	return dest;
+}
+
 /* ...and two syscalls.  This is x86-specific. */
 static inline long x86_syscall3(long nr, long a0, long a1, long a2)
 {
@@ -70,7 +84,7 @@ void to_base10(char *lastdig, time_t n)
 	}
 }
 
-__attribute__((externally_visible)) void c_main(void **stack)
+void c_main(void **stack)
 {
 	/* Parse the stack */
 	long argc = (long)*stack;
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v4 2/3] selftests/mm: remove partially duplicated "all:" target in Makefile
  2024-07-04  2:33 [PATCH v4 0/3] selftests/vDSO: fix clang build errors, and Makefile cleanup John Hubbard
  2024-07-04  2:33 ` [PATCH v4 1/3] selftests/vDSO: fix clang build errors and warnings John Hubbard
@ 2024-07-04  2:33 ` John Hubbard
  2024-07-05  8:13   ` Muhammad Usama Anjum
  2024-07-05 17:53   ` Shuah Khan
  2024-07-04  2:33 ` [PATCH v4 3/3] selftests/vDSO: remove duplicate compiler invocations from Makefile John Hubbard
  2024-07-05 16:54 ` [PATCH v4 0/3] selftests/vDSO: fix clang build errors, and Makefile cleanup Shuah Khan
  3 siblings, 2 replies; 9+ messages in thread
From: John Hubbard @ 2024-07-04  2:33 UTC (permalink / raw)
  To: Shuah Khan
  Cc: Jason A . Donenfeld, Thomas Gleixner, Andy Lutomirski, Mark Brown,
	Vincenzo Frascino, Colin Ian King, Valentin Obst, linux-kselftest,
	LKML, llvm, John Hubbard

There were a couple of errors here:

1. TEST_GEN_PROGS was incorrectly prepending $(OUTPUT) to each program
to be built. However, lib.mk already does that because it assumes "bare"
program names are passed in, so this ended up creating
$(OUTPUT)/$(OUTPUT)/file.c, which of course won't work as intended.

2. lib.mk was included before TEST_GEN_PROGS was set, which led to
lib.mk's "all:" target not seeing anything to rebuild.

So nothing worked, which caused the author to force things by creating
an "all:" target locally--while still including ../lib.mk.

Fix all of this by including ../lib.mk at the right place, and removing
the $(OUTPUT) prefix to the programs to be built, and removing the
duplicate "all:" target.

Signed-off-by: John Hubbard <jhubbard@nvidia.com>
---
 tools/testing/selftests/vDSO/Makefile | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/tools/testing/selftests/vDSO/Makefile b/tools/testing/selftests/vDSO/Makefile
index d53a4d8008f9..209ede5de208 100644
--- a/tools/testing/selftests/vDSO/Makefile
+++ b/tools/testing/selftests/vDSO/Makefile
@@ -1,16 +1,15 @@
 # SPDX-License-Identifier: GPL-2.0
-include ../lib.mk
-
 uname_M := $(shell uname -m 2>/dev/null || echo not)
 ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/x86/ -e s/x86_64/x86/)
 
-TEST_GEN_PROGS := $(OUTPUT)/vdso_test_gettimeofday $(OUTPUT)/vdso_test_getcpu
-TEST_GEN_PROGS += $(OUTPUT)/vdso_test_abi
-TEST_GEN_PROGS += $(OUTPUT)/vdso_test_clock_getres
+TEST_GEN_PROGS := vdso_test_gettimeofday
+TEST_GEN_PROGS += vdso_test_getcpu
+TEST_GEN_PROGS += vdso_test_abi
+TEST_GEN_PROGS += vdso_test_clock_getres
 ifeq ($(ARCH),$(filter $(ARCH),x86 x86_64))
-TEST_GEN_PROGS += $(OUTPUT)/vdso_standalone_test_x86
+TEST_GEN_PROGS += vdso_standalone_test_x86
 endif
-TEST_GEN_PROGS += $(OUTPUT)/vdso_test_correctness
+TEST_GEN_PROGS += vdso_test_correctness
 
 CFLAGS := -std=gnu99
 CFLAGS_vdso_standalone_test_x86 := -nostdlib -fno-asynchronous-unwind-tables -fno-stack-protector
@@ -19,7 +18,7 @@ ifeq ($(CONFIG_X86_32),y)
 LDLIBS += -lgcc_s
 endif
 
-all: $(TEST_GEN_PROGS)
+include ../lib.mk
 $(OUTPUT)/vdso_test_gettimeofday: parse_vdso.c vdso_test_gettimeofday.c
 $(OUTPUT)/vdso_test_getcpu: parse_vdso.c vdso_test_getcpu.c
 $(OUTPUT)/vdso_test_abi: parse_vdso.c vdso_test_abi.c
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v4 3/3] selftests/vDSO: remove duplicate compiler invocations from Makefile
  2024-07-04  2:33 [PATCH v4 0/3] selftests/vDSO: fix clang build errors, and Makefile cleanup John Hubbard
  2024-07-04  2:33 ` [PATCH v4 1/3] selftests/vDSO: fix clang build errors and warnings John Hubbard
  2024-07-04  2:33 ` [PATCH v4 2/3] selftests/mm: remove partially duplicated "all:" target in Makefile John Hubbard
@ 2024-07-04  2:33 ` John Hubbard
  2024-07-05 16:54 ` [PATCH v4 0/3] selftests/vDSO: fix clang build errors, and Makefile cleanup Shuah Khan
  3 siblings, 0 replies; 9+ messages in thread
From: John Hubbard @ 2024-07-04  2:33 UTC (permalink / raw)
  To: Shuah Khan
  Cc: Jason A . Donenfeld, Thomas Gleixner, Andy Lutomirski, Mark Brown,
	Vincenzo Frascino, Colin Ian King, Valentin Obst, linux-kselftest,
	LKML, llvm, John Hubbard

The Makefile open-codes compiler invocations that ../lib.mk already
provides.

Avoid this by using a Make feature that allows setting per-target
variables, which in this case are: CFLAGS and LDFLAGS. This approach
generates the exact same compiler invocations as before, but removes all
of the code duplication, along with the quirky mangled variable names.
So now the Makefile is smaller, less unusual, and easier to read.

The new dependencies are listed after including lib.mk, in order to
let lib.mk provide the first target ("all:"), and are grouped together
with their respective source file dependencies, for visual clarity.

Signed-off-by: John Hubbard <jhubbard@nvidia.com>
---
 tools/testing/selftests/vDSO/Makefile | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/tools/testing/selftests/vDSO/Makefile b/tools/testing/selftests/vDSO/Makefile
index 209ede5de208..98d8ba2afa00 100644
--- a/tools/testing/selftests/vDSO/Makefile
+++ b/tools/testing/selftests/vDSO/Makefile
@@ -12,8 +12,7 @@ endif
 TEST_GEN_PROGS += vdso_test_correctness
 
 CFLAGS := -std=gnu99
-CFLAGS_vdso_standalone_test_x86 := -nostdlib -fno-asynchronous-unwind-tables -fno-stack-protector
-LDFLAGS_vdso_test_correctness := -ldl
+
 ifeq ($(CONFIG_X86_32),y)
 LDLIBS += -lgcc_s
 endif
@@ -23,12 +22,9 @@ $(OUTPUT)/vdso_test_gettimeofday: parse_vdso.c vdso_test_gettimeofday.c
 $(OUTPUT)/vdso_test_getcpu: parse_vdso.c vdso_test_getcpu.c
 $(OUTPUT)/vdso_test_abi: parse_vdso.c vdso_test_abi.c
 $(OUTPUT)/vdso_test_clock_getres: vdso_test_clock_getres.c
+
 $(OUTPUT)/vdso_standalone_test_x86: vdso_standalone_test_x86.c parse_vdso.c
-	$(CC) $(CFLAGS) $(CFLAGS_vdso_standalone_test_x86) \
-		vdso_standalone_test_x86.c parse_vdso.c \
-		-o $@
+$(OUTPUT)/vdso_standalone_test_x86: CFLAGS +=-nostdlib -fno-asynchronous-unwind-tables -fno-stack-protector
+
 $(OUTPUT)/vdso_test_correctness: vdso_test_correctness.c
-	$(CC) $(CFLAGS) \
-		vdso_test_correctness.c \
-		-o $@ \
-		$(LDFLAGS_vdso_test_correctness)
+$(OUTPUT)/vdso_test_correctness: LDFLAGS += -ldl
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v4 2/3] selftests/mm: remove partially duplicated "all:" target in Makefile
  2024-07-04  2:33 ` [PATCH v4 2/3] selftests/mm: remove partially duplicated "all:" target in Makefile John Hubbard
@ 2024-07-05  8:13   ` Muhammad Usama Anjum
  2024-07-05 17:53   ` Shuah Khan
  1 sibling, 0 replies; 9+ messages in thread
From: Muhammad Usama Anjum @ 2024-07-05  8:13 UTC (permalink / raw)
  To: John Hubbard, Shuah Khan
  Cc: Muhammad Usama Anjum, Jason A . Donenfeld, Thomas Gleixner,
	Andy Lutomirski, Mark Brown, Vincenzo Frascino, Colin Ian King,
	Valentin Obst, linux-kselftest, LKML, llvm

On 7/4/24 7:33 AM, John Hubbard wrote:
> There were a couple of errors here:
> 
> 1. TEST_GEN_PROGS was incorrectly prepending $(OUTPUT) to each program
> to be built. However, lib.mk already does that because it assumes "bare"
> program names are passed in, so this ended up creating
> $(OUTPUT)/$(OUTPUT)/file.c, which of course won't work as intended.
> 
> 2. lib.mk was included before TEST_GEN_PROGS was set, which led to
> lib.mk's "all:" target not seeing anything to rebuild.
> 
> So nothing worked, which caused the author to force things by creating
> an "all:" target locally--while still including ../lib.mk.
> 
> Fix all of this by including ../lib.mk at the right place, and removing
> the $(OUTPUT) prefix to the programs to be built, and removing the
> duplicate "all:" target.
> 
> Signed-off-by: John Hubbard <jhubbard@nvidia.com>
Reviewed-by: Muhammad Usama Anjum <usama.anjum@collabora.com>

> ---
>  tools/testing/selftests/vDSO/Makefile | 15 +++++++--------
>  1 file changed, 7 insertions(+), 8 deletions(-)
> 
> diff --git a/tools/testing/selftests/vDSO/Makefile b/tools/testing/selftests/vDSO/Makefile
> index d53a4d8008f9..209ede5de208 100644
> --- a/tools/testing/selftests/vDSO/Makefile
> +++ b/tools/testing/selftests/vDSO/Makefile
> @@ -1,16 +1,15 @@
>  # SPDX-License-Identifier: GPL-2.0
> -include ../lib.mk
> -
>  uname_M := $(shell uname -m 2>/dev/null || echo not)
>  ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/x86/ -e s/x86_64/x86/)
>  
> -TEST_GEN_PROGS := $(OUTPUT)/vdso_test_gettimeofday $(OUTPUT)/vdso_test_getcpu
> -TEST_GEN_PROGS += $(OUTPUT)/vdso_test_abi
> -TEST_GEN_PROGS += $(OUTPUT)/vdso_test_clock_getres
> +TEST_GEN_PROGS := vdso_test_gettimeofday
> +TEST_GEN_PROGS += vdso_test_getcpu
> +TEST_GEN_PROGS += vdso_test_abi
> +TEST_GEN_PROGS += vdso_test_clock_getres
>  ifeq ($(ARCH),$(filter $(ARCH),x86 x86_64))
> -TEST_GEN_PROGS += $(OUTPUT)/vdso_standalone_test_x86
> +TEST_GEN_PROGS += vdso_standalone_test_x86
>  endif
> -TEST_GEN_PROGS += $(OUTPUT)/vdso_test_correctness
> +TEST_GEN_PROGS += vdso_test_correctness
>  
>  CFLAGS := -std=gnu99
>  CFLAGS_vdso_standalone_test_x86 := -nostdlib -fno-asynchronous-unwind-tables -fno-stack-protector
> @@ -19,7 +18,7 @@ ifeq ($(CONFIG_X86_32),y)
>  LDLIBS += -lgcc_s
>  endif
>  
> -all: $(TEST_GEN_PROGS)
> +include ../lib.mk
>  $(OUTPUT)/vdso_test_gettimeofday: parse_vdso.c vdso_test_gettimeofday.c
>  $(OUTPUT)/vdso_test_getcpu: parse_vdso.c vdso_test_getcpu.c
>  $(OUTPUT)/vdso_test_abi: parse_vdso.c vdso_test_abi.c

-- 
BR,
Muhammad Usama Anjum

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v4 0/3] selftests/vDSO: fix clang build errors, and Makefile cleanup
  2024-07-04  2:33 [PATCH v4 0/3] selftests/vDSO: fix clang build errors, and Makefile cleanup John Hubbard
                   ` (2 preceding siblings ...)
  2024-07-04  2:33 ` [PATCH v4 3/3] selftests/vDSO: remove duplicate compiler invocations from Makefile John Hubbard
@ 2024-07-05 16:54 ` Shuah Khan
  3 siblings, 0 replies; 9+ messages in thread
From: Shuah Khan @ 2024-07-05 16:54 UTC (permalink / raw)
  To: John Hubbard, Shuah Khan
  Cc: Jason A . Donenfeld, Thomas Gleixner, Andy Lutomirski, Mark Brown,
	Vincenzo Frascino, Colin Ian King, Valentin Obst, linux-kselftest,
	LKML, llvm, Shuah Khan

On 7/3/24 20:33, John Hubbard wrote:
> Hi,
> 
> This is basically a resend, with a rebase onto today's latest Linux
> main, in order to show that the patches are still relevant and correct.
> 
> Changes since v3:
> 
> 1. Rebased onto Linux 6.10-rc6+.
> 
> Cover letter for v3:
> 
> Jason A. Donenfeld, I've added you because I ended up looking through
> your latest "implement getrandom() in vDSO" series [1], which also
> touches this Makefile, so just a heads up about upcoming (minor) merge
> conflicts.
> 
> Changes since v2:
> 
> 1. Added two patches, both of which apply solely to the Makefile.
> These provide a smaller, cleaner, and more accurate Makefile.
> 
> 2. Added Reviewed-by and Tested-by tags for the original patch, which
> fixes all of the clang errors and warnings for this selftest.
> 
> 3. Removed an obsolete blurb from the commit description of the original
> patch, now that Valentin Obst LLVM build fix has been merged.
> 
> John Hubbard (3):
>    selftests/vDSO: fix clang build errors and warnings
>    selftests/mm: remove partially duplicated "all:" target in Makefile
>    selftests/vDSO: remove duplicate compiler invocations from Makefile
> 
>   tools/testing/selftests/vDSO/Makefile         | 29 ++++++++-----------
>   tools/testing/selftests/vDSO/parse_vdso.c     | 16 ++++++----
>   .../selftests/vDSO/vdso_standalone_test_x86.c | 18 ++++++++++--
>   3 files changed, 39 insertions(+), 24 deletions(-)
> 
> 
> base-commit: 8a9c6c40432e265600232b864f97d7c675e8be52

Applied all 3 patches to linux_kselftest next for Linux 6.11-rc1.

thanks,
-- Shuah


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v4 2/3] selftests/mm: remove partially duplicated "all:" target in Makefile
  2024-07-04  2:33 ` [PATCH v4 2/3] selftests/mm: remove partially duplicated "all:" target in Makefile John Hubbard
  2024-07-05  8:13   ` Muhammad Usama Anjum
@ 2024-07-05 17:53   ` Shuah Khan
  2024-07-05 17:58     ` John Hubbard
  1 sibling, 1 reply; 9+ messages in thread
From: Shuah Khan @ 2024-07-05 17:53 UTC (permalink / raw)
  To: John Hubbard, Shuah Khan
  Cc: Jason A . Donenfeld, Thomas Gleixner, Andy Lutomirski, Mark Brown,
	Vincenzo Frascino, Colin Ian King, Valentin Obst, linux-kselftest,
	LKML, llvm, Shuah Khan

On 7/3/24 20:33, John Hubbard wrote:
> There were a couple of errors here:
> 
> 1. TEST_GEN_PROGS was incorrectly prepending $(OUTPUT) to each program
> to be built. However, lib.mk already does that because it assumes "bare"
> program names are passed in, so this ended up creating
> $(OUTPUT)/$(OUTPUT)/file.c, which of course won't work as intended.
> 
> 2. lib.mk was included before TEST_GEN_PROGS was set, which led to
> lib.mk's "all:" target not seeing anything to rebuild.
> 
> So nothing worked, which caused the author to force things by creating
> an "all:" target locally--while still including ../lib.mk.
> 
> Fix all of this by including ../lib.mk at the right place, and removing
> the $(OUTPUT) prefix to the programs to be built, and removing the
> duplicate "all:" target.
> 
> Signed-off-by: John Hubbard <jhubbard@nvidia.com>

Why does the summary say mm ?

  selftests/mm: remove partially duplicated "all:" target in Makefile

> ---
>   tools/testing/selftests/vDSO/Makefile | 15 +++++++--------
>   1 file changed, 7 insertions(+), 8 deletions(-)
> 
> diff --git a/tools/testing/selftests/vDSO/Makefile b/tools/testing/selftests/vDSO/Makefile
> index d53a4d8008f9..209ede5de208 100644
> --- a/tools/testing/selftests/vDSO/Makefile
> +++ b/tools/testing/selftests/vDSO/Makefile
> @@ -1,16 +1,15 @@
>   # SPDX-License-Identifier: GPL-2.0
> -include ../lib.mk
> -
>   uname_M := $(shell uname -m 2>/dev/null || echo not)
>   ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/x86/ -e s/x86_64/x86/)
>   
> -TEST_GEN_PROGS := $(OUTPUT)/vdso_test_gettimeofday $(OUTPUT)/vdso_test_getcpu
> -TEST_GEN_PROGS += $(OUTPUT)/vdso_test_abi
> -TEST_GEN_PROGS += $(OUTPUT)/vdso_test_clock_getres
> +TEST_GEN_PROGS := vdso_test_gettimeofday
> +TEST_GEN_PROGS += vdso_test_getcpu
> +TEST_GEN_PROGS += vdso_test_abi
> +TEST_GEN_PROGS += vdso_test_clock_getres
>   ifeq ($(ARCH),$(filter $(ARCH),x86 x86_64))
> -TEST_GEN_PROGS += $(OUTPUT)/vdso_standalone_test_x86
> +TEST_GEN_PROGS += vdso_standalone_test_x86
>   endif
> -TEST_GEN_PROGS += $(OUTPUT)/vdso_test_correctness
> +TEST_GEN_PROGS += vdso_test_correctness
>   
>   CFLAGS := -std=gnu99
>   CFLAGS_vdso_standalone_test_x86 := -nostdlib -fno-asynchronous-unwind-tables -fno-stack-protector
> @@ -19,7 +18,7 @@ ifeq ($(CONFIG_X86_32),y)
>   LDLIBS += -lgcc_s
>   endif
>   
> -all: $(TEST_GEN_PROGS)
> +include ../lib.mk
>   $(OUTPUT)/vdso_test_gettimeofday: parse_vdso.c vdso_test_gettimeofday.c
>   $(OUTPUT)/vdso_test_getcpu: parse_vdso.c vdso_test_getcpu.c
>   $(OUTPUT)/vdso_test_abi: parse_vdso.c vdso_test_abi.c


thanks,
-- Shuah

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v4 2/3] selftests/mm: remove partially duplicated "all:" target in Makefile
  2024-07-05 17:53   ` Shuah Khan
@ 2024-07-05 17:58     ` John Hubbard
  2024-07-05 18:10       ` Shuah Khan
  0 siblings, 1 reply; 9+ messages in thread
From: John Hubbard @ 2024-07-05 17:58 UTC (permalink / raw)
  To: Shuah Khan, Shuah Khan
  Cc: Jason A . Donenfeld, Thomas Gleixner, Andy Lutomirski, Mark Brown,
	Vincenzo Frascino, Colin Ian King, Valentin Obst, linux-kselftest,
	LKML, llvm

On 7/5/24 10:53, Shuah Khan wrote:
> On 7/3/24 20:33, John Hubbard wrote:
>> There were a couple of errors here:
>>
>> 1. TEST_GEN_PROGS was incorrectly prepending $(OUTPUT) to each program
>> to be built. However, lib.mk already does that because it assumes "bare"
>> program names are passed in, so this ended up creating
>> $(OUTPUT)/$(OUTPUT)/file.c, which of course won't work as intended.
>>
>> 2. lib.mk was included before TEST_GEN_PROGS was set, which led to
>> lib.mk's "all:" target not seeing anything to rebuild.
>>
>> So nothing worked, which caused the author to force things by creating
>> an "all:" target locally--while still including ../lib.mk.
>>
>> Fix all of this by including ../lib.mk at the right place, and removing
>> the $(OUTPUT) prefix to the programs to be built, and removing the
>> duplicate "all:" target.
>>
>> Signed-off-by: John Hubbard <jhubbard@nvidia.com>
> 
> Why does the summary say mm ?

This is a mistake. I was also preparing some mm work at the time,
and typed the wrong thing.

Could you fix it up to s/mm/vDSO/ for me? Or if it's easier, I can send
an updated patch, let me know.


thanks,
John Hubbard
NVIDIA

> 
>   selftests/mm: remove partially duplicated "all:" target in Makefile
> 
>> ---
>>   tools/testing/selftests/vDSO/Makefile | 15 +++++++--------
>>   1 file changed, 7 insertions(+), 8 deletions(-)
>>
>> diff --git a/tools/testing/selftests/vDSO/Makefile 
>> b/tools/testing/selftests/vDSO/Makefile
>> index d53a4d8008f9..209ede5de208 100644
>> --- a/tools/testing/selftests/vDSO/Makefile
>> +++ b/tools/testing/selftests/vDSO/Makefile
>> @@ -1,16 +1,15 @@
>>   # SPDX-License-Identifier: GPL-2.0
>> -include ../lib.mk
>> -
>>   uname_M := $(shell uname -m 2>/dev/null || echo not)
>>   ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/x86/ -e s/x86_64/x86/)
>> -TEST_GEN_PROGS := $(OUTPUT)/vdso_test_gettimeofday 
>> $(OUTPUT)/vdso_test_getcpu
>> -TEST_GEN_PROGS += $(OUTPUT)/vdso_test_abi
>> -TEST_GEN_PROGS += $(OUTPUT)/vdso_test_clock_getres
>> +TEST_GEN_PROGS := vdso_test_gettimeofday
>> +TEST_GEN_PROGS += vdso_test_getcpu
>> +TEST_GEN_PROGS += vdso_test_abi
>> +TEST_GEN_PROGS += vdso_test_clock_getres
>>   ifeq ($(ARCH),$(filter $(ARCH),x86 x86_64))
>> -TEST_GEN_PROGS += $(OUTPUT)/vdso_standalone_test_x86
>> +TEST_GEN_PROGS += vdso_standalone_test_x86
>>   endif
>> -TEST_GEN_PROGS += $(OUTPUT)/vdso_test_correctness
>> +TEST_GEN_PROGS += vdso_test_correctness
>>   CFLAGS := -std=gnu99
>>   CFLAGS_vdso_standalone_test_x86 := -nostdlib 
>> -fno-asynchronous-unwind-tables -fno-stack-protector
>> @@ -19,7 +18,7 @@ ifeq ($(CONFIG_X86_32),y)
>>   LDLIBS += -lgcc_s
>>   endif
>> -all: $(TEST_GEN_PROGS)
>> +include ../lib.mk
>>   $(OUTPUT)/vdso_test_gettimeofday: parse_vdso.c vdso_test_gettimeofday.c
>>   $(OUTPUT)/vdso_test_getcpu: parse_vdso.c vdso_test_getcpu.c
>>   $(OUTPUT)/vdso_test_abi: parse_vdso.c vdso_test_abi.c
> 
> 
> thanks,
> -- Shuah

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v4 2/3] selftests/mm: remove partially duplicated "all:" target in Makefile
  2024-07-05 17:58     ` John Hubbard
@ 2024-07-05 18:10       ` Shuah Khan
  0 siblings, 0 replies; 9+ messages in thread
From: Shuah Khan @ 2024-07-05 18:10 UTC (permalink / raw)
  To: John Hubbard, Shuah Khan
  Cc: Jason A . Donenfeld, Thomas Gleixner, Andy Lutomirski, Mark Brown,
	Vincenzo Frascino, Colin Ian King, Valentin Obst, linux-kselftest,
	LKML, llvm, Shuah Khan

On 7/5/24 11:58, John Hubbard wrote:
> On 7/5/24 10:53, Shuah Khan wrote:
>> On 7/3/24 20:33, John Hubbard wrote:
>>> There were a couple of errors here:
>>>
>>> 1. TEST_GEN_PROGS was incorrectly prepending $(OUTPUT) to each program
>>> to be built. However, lib.mk already does that because it assumes "bare"
>>> program names are passed in, so this ended up creating
>>> $(OUTPUT)/$(OUTPUT)/file.c, which of course won't work as intended.
>>>
>>> 2. lib.mk was included before TEST_GEN_PROGS was set, which led to
>>> lib.mk's "all:" target not seeing anything to rebuild.
>>>
>>> So nothing worked, which caused the author to force things by creating
>>> an "all:" target locally--while still including ../lib.mk.
>>>
>>> Fix all of this by including ../lib.mk at the right place, and removing
>>> the $(OUTPUT) prefix to the programs to be built, and removing the
>>> duplicate "all:" target.
>>>
>>> Signed-off-by: John Hubbard <jhubbard@nvidia.com>
>>
>> Why does the summary say mm ?
> 
> This is a mistake. I was also preparing some mm work at the time,
> and typed the wrong thing.
> 
> Could you fix it up to s/mm/vDSO/ for me? Or if it's easier, I can send
> an updated patch, let me know.
> 
> 

Send me updated patch - it will be easier that way. I saw the note
about getting these into 6.10 - As soon as you send the patch I will
apply them and send them for 6.10

thanks,
-- Shuah


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2024-07-05 18:10 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-04  2:33 [PATCH v4 0/3] selftests/vDSO: fix clang build errors, and Makefile cleanup John Hubbard
2024-07-04  2:33 ` [PATCH v4 1/3] selftests/vDSO: fix clang build errors and warnings John Hubbard
2024-07-04  2:33 ` [PATCH v4 2/3] selftests/mm: remove partially duplicated "all:" target in Makefile John Hubbard
2024-07-05  8:13   ` Muhammad Usama Anjum
2024-07-05 17:53   ` Shuah Khan
2024-07-05 17:58     ` John Hubbard
2024-07-05 18:10       ` Shuah Khan
2024-07-04  2:33 ` [PATCH v4 3/3] selftests/vDSO: remove duplicate compiler invocations from Makefile John Hubbard
2024-07-05 16:54 ` [PATCH v4 0/3] selftests/vDSO: fix clang build errors, and Makefile cleanup Shuah Khan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox