public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] selftests/futex: clang-inspired fixes
@ 2024-05-03  4:18 John Hubbard
  2024-05-03  4:18 ` [PATCH 1/3] selftests/futex: don't redefine .PHONY targets (all, clean) John Hubbard
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: John Hubbard @ 2024-05-03  4:18 UTC (permalink / raw)
  To: Shuah Khan
  Cc: Thomas Gleixner, Ingo Molnar, Peter Zijlstra, Darren Hart,
	Davidlohr Bueso, André Almeida, Nysal Jan K . A, Mark Brown,
	Valentin Obst, linux-kselftest, LKML, llvm, John Hubbard

Hi,

Here's a few fixes that are part of my effort to get all selftests
building cleanly under clang. Plus one that I noticed by inspection.

Enjoy!

thanks,
John Hubbard

John Hubbard (3):
  selftests/futex: don't redefine .PHONY targets (all, clean)
  selftests/futex: don't pass a const char* to asprintf(3)
  selftests/futex: pass _GNU_SOURCE without a value to the compiler

 tools/testing/selftests/futex/Makefile                      | 2 --
 tools/testing/selftests/futex/functional/Makefile           | 2 +-
 tools/testing/selftests/futex/functional/futex_requeue_pi.c | 2 +-
 3 files changed, 2 insertions(+), 4 deletions(-)


base-commit: f03359bca01bf4372cf2c118cd9a987a5951b1c8
prerequisite-patch-id: b901ece2a5b78503e2fb5480f20e304d36a0ea27
-- 
2.45.0


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

* [PATCH 1/3] selftests/futex: don't redefine .PHONY targets (all, clean)
  2024-05-03  4:18 [PATCH 0/3] selftests/futex: clang-inspired fixes John Hubbard
@ 2024-05-03  4:18 ` John Hubbard
  2024-05-03  4:18 ` [PATCH 2/3] selftests/futex: don't pass a const char* to asprintf(3) John Hubbard
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: John Hubbard @ 2024-05-03  4:18 UTC (permalink / raw)
  To: Shuah Khan
  Cc: Thomas Gleixner, Ingo Molnar, Peter Zijlstra, Darren Hart,
	Davidlohr Bueso, André Almeida, Nysal Jan K . A, Mark Brown,
	Valentin Obst, linux-kselftest, LKML, llvm, John Hubbard

The .PHONY targets "all" and "clean"  are both defined in the file that
is included in the very next line: ../lib.mk.

Signed-off-by: John Hubbard <jhubbard@nvidia.com>
---
 tools/testing/selftests/futex/Makefile | 2 --
 1 file changed, 2 deletions(-)

diff --git a/tools/testing/selftests/futex/Makefile b/tools/testing/selftests/futex/Makefile
index 11e157d7533b..78ab2cd111f6 100644
--- a/tools/testing/selftests/futex/Makefile
+++ b/tools/testing/selftests/futex/Makefile
@@ -3,8 +3,6 @@ SUBDIRS := functional
 
 TEST_PROGS := run.sh
 
-.PHONY: all clean
-
 include ../lib.mk
 
 all:
-- 
2.45.0


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

* [PATCH 2/3] selftests/futex: don't pass a const char* to asprintf(3)
  2024-05-03  4:18 [PATCH 0/3] selftests/futex: clang-inspired fixes John Hubbard
  2024-05-03  4:18 ` [PATCH 1/3] selftests/futex: don't redefine .PHONY targets (all, clean) John Hubbard
@ 2024-05-03  4:18 ` John Hubbard
  2024-05-03  4:18 ` [PATCH 3/3] selftests/futex: pass _GNU_SOURCE without a value to the compiler John Hubbard
  2024-05-06 16:13 ` [PATCH 0/3] selftests/futex: clang-inspired fixes Davidlohr Bueso
  3 siblings, 0 replies; 8+ messages in thread
From: John Hubbard @ 2024-05-03  4:18 UTC (permalink / raw)
  To: Shuah Khan
  Cc: Thomas Gleixner, Ingo Molnar, Peter Zijlstra, Darren Hart,
	Davidlohr Bueso, André Almeida, Nysal Jan K . A, Mark Brown,
	Valentin Obst, linux-kselftest, LKML, llvm, John Hubbard

First of all, in order to build with clang at all, one must first apply
Valentin Obst's build fix for LLVM [1]. Once that is done, then when
building with clang, via:

    make LLVM=1 -C tools/testing/selftests

...clang issues a warning, because test_name is passed into asprintf(3),
which then changes it.

Fix this by simply removing the const qualifier. This is a local
automatic variable in a very short function, so there is not much need
to use the compiler to enforce const-ness at this scope.

[1] https://lore.kernel.org/all/20240329-selftests-libmk-llvm-rfc-v1-1-2f9ed7d1c49f@valentinobst.de/

Fixes: f17d8a87ecb5 ("selftests: fuxex: Report a unique test name per run of futex_requeue_pi")
Signed-off-by: John Hubbard <jhubbard@nvidia.com>
---
 tools/testing/selftests/futex/functional/futex_requeue_pi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/testing/selftests/futex/functional/futex_requeue_pi.c b/tools/testing/selftests/futex/functional/futex_requeue_pi.c
index 7f3ca5c78df1..215c6cb539b4 100644
--- a/tools/testing/selftests/futex/functional/futex_requeue_pi.c
+++ b/tools/testing/selftests/futex/functional/futex_requeue_pi.c
@@ -360,7 +360,7 @@ int unit_test(int broadcast, long lock, int third_party_owner, long timeout_ns)
 
 int main(int argc, char *argv[])
 {
-	const char *test_name;
+	char *test_name;
 	int c, ret;
 
 	while ((c = getopt(argc, argv, "bchlot:v:")) != -1) {
-- 
2.45.0


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

* [PATCH 3/3] selftests/futex: pass _GNU_SOURCE without a value to the compiler
  2024-05-03  4:18 [PATCH 0/3] selftests/futex: clang-inspired fixes John Hubbard
  2024-05-03  4:18 ` [PATCH 1/3] selftests/futex: don't redefine .PHONY targets (all, clean) John Hubbard
  2024-05-03  4:18 ` [PATCH 2/3] selftests/futex: don't pass a const char* to asprintf(3) John Hubbard
@ 2024-05-03  4:18 ` John Hubbard
  2024-05-08 21:05   ` John Hubbard
  2024-05-06 16:13 ` [PATCH 0/3] selftests/futex: clang-inspired fixes Davidlohr Bueso
  3 siblings, 1 reply; 8+ messages in thread
From: John Hubbard @ 2024-05-03  4:18 UTC (permalink / raw)
  To: Shuah Khan
  Cc: Thomas Gleixner, Ingo Molnar, Peter Zijlstra, Darren Hart,
	Davidlohr Bueso, André Almeida, Nysal Jan K . A, Mark Brown,
	Valentin Obst, linux-kselftest, LKML, llvm, John Hubbard

It's slightly better to set _GNU_SOURCE in the source code, but if one
must do it via the compiler invocation, then the best way to do so is
this:

    $(CC) -D_GNU_SOURCE=

...because otherwise, if this form is used:

    $(CC) -D_GNU_SOURCE

...then that leads the compiler to set a value, as if you had passed in:

    $(CC) -D_GNU_SOURCE=1

That, in turn, leads to warnings under both gcc and clang, like this:

    futex_requeue_pi.c:20: warning: "_GNU_SOURCE" redefined

Fix this by using the "-D_GNU_SOURCE=" form.

Signed-off-by: John Hubbard <jhubbard@nvidia.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 a392d0917b4e..994fa3468f17 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 -D_GNU_SOURCE= -pthread $(INCLUDES) $(KHDR_INCLUDES)
 LDLIBS := -lpthread -lrt
 
 LOCAL_HDRS := \
-- 
2.45.0


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

* Re: [PATCH 0/3] selftests/futex: clang-inspired fixes
  2024-05-03  4:18 [PATCH 0/3] selftests/futex: clang-inspired fixes John Hubbard
                   ` (2 preceding siblings ...)
  2024-05-03  4:18 ` [PATCH 3/3] selftests/futex: pass _GNU_SOURCE without a value to the compiler John Hubbard
@ 2024-05-06 16:13 ` Davidlohr Bueso
  3 siblings, 0 replies; 8+ messages in thread
From: Davidlohr Bueso @ 2024-05-06 16:13 UTC (permalink / raw)
  To: John Hubbard
  Cc: Shuah Khan, Thomas Gleixner, Ingo Molnar, Peter Zijlstra,
	Darren Hart, Andr� Almeida, Nysal Jan K . A,
	Mark Brown, Valentin Obst, linux-kselftest, LKML, llvm

On Thu, 02 May 2024, John Hubbard wrote:

>Hi,
>
>Here's a few fixes that are part of my effort to get all selftests
>building cleanly under clang. Plus one that I noticed by inspection.
>

lgtm - feel free to add:

Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>

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

* Re: [PATCH 3/3] selftests/futex: pass _GNU_SOURCE without a value to the compiler
  2024-05-03  4:18 ` [PATCH 3/3] selftests/futex: pass _GNU_SOURCE without a value to the compiler John Hubbard
@ 2024-05-08 21:05   ` John Hubbard
  2024-05-28 22:24     ` Edward Liaw
  0 siblings, 1 reply; 8+ messages in thread
From: John Hubbard @ 2024-05-08 21:05 UTC (permalink / raw)
  To: Shuah Khan
  Cc: Thomas Gleixner, Ingo Molnar, Peter Zijlstra, Darren Hart,
	Davidlohr Bueso, André Almeida, Nysal Jan K . A, Mark Brown,
	Valentin Obst, linux-kselftest, LKML, llvm, Edward Liaw

On 5/2/24 9:18 PM, John Hubbard wrote:
> It's slightly better to set _GNU_SOURCE in the source code, but if one
> must do it via the compiler invocation, then the best way to do so is
> this:

Hi Shuah, Edward and all,

This patch now seems to be obsolete, due to Edward Liaw's comprehensive
fix, "[PATCH v2 0/5] Define _GNU_SOURCE for sources using" [1].

[1] https://lore.kernel.org/20240507214254.2787305-1-edliaw@google.com

A process question for Shuah: shall I gather up the selftest patches
that have reviews and acks, and post them with the versions incremented?

I'm new to this list, and I'm not sure of your exact workflow. And there
are admittedly a flurry of patches involved.

[1] https://lore.kernel.org/20240507214254.2787305-1-edliaw@google.com

thanks,
-- 
John Hubbard
NVIDIA

> 
>      $(CC) -D_GNU_SOURCE=
> 
> ...because otherwise, if this form is used:
> 
>      $(CC) -D_GNU_SOURCE
> 
> ...then that leads the compiler to set a value, as if you had passed in:
> 
>      $(CC) -D_GNU_SOURCE=1
> 
> That, in turn, leads to warnings under both gcc and clang, like this:
> 
>      futex_requeue_pi.c:20: warning: "_GNU_SOURCE" redefined
> 
> Fix this by using the "-D_GNU_SOURCE=" form.
> 
> Signed-off-by: John Hubbard <jhubbard@nvidia.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 a392d0917b4e..994fa3468f17 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 -D_GNU_SOURCE= -pthread $(INCLUDES) $(KHDR_INCLUDES)
>   LDLIBS := -lpthread -lrt
>   
>   LOCAL_HDRS := \



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

* Re: [PATCH 3/3] selftests/futex: pass _GNU_SOURCE without a value to the compiler
  2024-05-08 21:05   ` John Hubbard
@ 2024-05-28 22:24     ` Edward Liaw
  2024-05-28 22:43       ` John Hubbard
  0 siblings, 1 reply; 8+ messages in thread
From: Edward Liaw @ 2024-05-28 22:24 UTC (permalink / raw)
  To: John Hubbard
  Cc: Shuah Khan, Thomas Gleixner, Ingo Molnar, Peter Zijlstra,
	Darren Hart, Davidlohr Bueso, André Almeida, Nysal Jan K . A,
	Mark Brown, Valentin Obst, linux-kselftest, LKML, llvm

On Wed, May 8, 2024 at 2:05 PM John Hubbard <jhubbard@nvidia.com> wrote:
>
> On 5/2/24 9:18 PM, John Hubbard wrote:
> > It's slightly better to set _GNU_SOURCE in the source code, but if one
> > must do it via the compiler invocation, then the best way to do so is
> > this:
>
> Hi Shuah, Edward and all,
>
> This patch now seems to be obsolete, due to Edward Liaw's comprehensive
> fix, "[PATCH v2 0/5] Define _GNU_SOURCE for sources using" [1].
>
> [1] https://lore.kernel.org/20240507214254.2787305-1-edliaw@google.com

Since we're dropping that patch, would we be able to merge this one?
This should resolve the futex_requeue_pi compiler warnings with Clang.

Reviewed-by: Edward Liaw <edliaw@google.com>

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

* Re: [PATCH 3/3] selftests/futex: pass _GNU_SOURCE without a value to the compiler
  2024-05-28 22:24     ` Edward Liaw
@ 2024-05-28 22:43       ` John Hubbard
  0 siblings, 0 replies; 8+ messages in thread
From: John Hubbard @ 2024-05-28 22:43 UTC (permalink / raw)
  To: Edward Liaw
  Cc: Shuah Khan, Thomas Gleixner, Ingo Molnar, Peter Zijlstra,
	Darren Hart, Davidlohr Bueso, André Almeida, Nysal Jan K . A,
	Mark Brown, Valentin Obst, linux-kselftest, LKML, llvm

On 5/28/24 3:24 PM, Edward Liaw wrote:
> On Wed, May 8, 2024 at 2:05 PM John Hubbard <jhubbard@nvidia.com> wrote:
>>
>> On 5/2/24 9:18 PM, John Hubbard wrote:
>>> It's slightly better to set _GNU_SOURCE in the source code, but if one
>>> must do it via the compiler invocation, then the best way to do so is
>>> this:
>>
>> Hi Shuah, Edward and all,
>>
>> This patch now seems to be obsolete, due to Edward Liaw's comprehensive
>> fix, "[PATCH v2 0/5] Define _GNU_SOURCE for sources using" [1].
>>
>> [1] https://lore.kernel.org/20240507214254.2787305-1-edliaw@google.com
> 
> Since we're dropping that patch, would we be able to merge this one?
> This should resolve the futex_requeue_pi compiler warnings with Clang.
> 
> Reviewed-by: Edward Liaw <edliaw@google.com>

Thanks for the review! I can post a v2 of this tiny series that has only
patches 1 and 3, rebased on -rc1, so that it's clear what to merge.


thanks,
-- 
John Hubbard
NVIDIA


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

end of thread, other threads:[~2024-05-28 22:43 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-03  4:18 [PATCH 0/3] selftests/futex: clang-inspired fixes John Hubbard
2024-05-03  4:18 ` [PATCH 1/3] selftests/futex: don't redefine .PHONY targets (all, clean) John Hubbard
2024-05-03  4:18 ` [PATCH 2/3] selftests/futex: don't pass a const char* to asprintf(3) John Hubbard
2024-05-03  4:18 ` [PATCH 3/3] selftests/futex: pass _GNU_SOURCE without a value to the compiler John Hubbard
2024-05-08 21:05   ` John Hubbard
2024-05-28 22:24     ` Edward Liaw
2024-05-28 22:43       ` John Hubbard
2024-05-06 16:13 ` [PATCH 0/3] selftests/futex: clang-inspired fixes Davidlohr Bueso

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