public inbox for llvm@lists.linux.dev
 help / color / mirror / Atom feed
* [PATCH v3 0/3] selftests/futex: clang-inspired fixes
@ 2024-05-31 20:07 John Hubbard
  2024-05-31 20:07 ` [PATCH v3 1/3] selftests/futex: don't redefine .PHONY targets (all, clean) John Hubbard
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: John Hubbard @ 2024-05-31 20:07 UTC (permalink / raw)
  To: Shuah Khan
  Cc: Thomas Gleixner, Ingo Molnar, Peter Zijlstra, Darren Hart,
	Davidlohr Bueso, Edward Liaw, 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.

Changes since v2:

1) Added a sentence to the .PHONY patch, to show that it is removing
   duplicate code.

2) Added the actual clang warning output to the commit description.

Changes since the first version:

1) Rebased onto Linux 6.10-rc1
2) Added Reviewed-by's.

...and it turns out that all three patches are still required, on -rc1,
in order to get a clean clang build.

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: b050496579632f86ee1ef7e7501906db579f3457
-- 
2.45.1


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

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

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

    ../lib.mk.

Remove this duplicate code.

Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>
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.1


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

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

When building with clang, via:

    make LLVM=1 -C tools/testing/selftests

...clang issues this warning:

futex_requeue_pi.c:403:17: warning: passing 'const char **' to parameter
of type 'char **' discards qualifiers in nested pointer types
[-Wincompatible-pointer-types-discards-qualifiers]

This warning fires 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")
Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>
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.1


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

* [PATCH v3 3/3] selftests/futex: pass _GNU_SOURCE without a value to the compiler
  2024-05-31 20:07 [PATCH v3 0/3] selftests/futex: clang-inspired fixes John Hubbard
  2024-05-31 20:07 ` [PATCH v3 1/3] selftests/futex: don't redefine .PHONY targets (all, clean) John Hubbard
  2024-05-31 20:07 ` [PATCH v3 2/3] selftests/futex: don't pass a const char* to asprintf(3) John Hubbard
@ 2024-05-31 20:07 ` John Hubbard
  2024-05-31 20:39 ` [PATCH v3 0/3] selftests/futex: clang-inspired fixes Shuah Khan
  3 siblings, 0 replies; 5+ messages in thread
From: John Hubbard @ 2024-05-31 20:07 UTC (permalink / raw)
  To: Shuah Khan
  Cc: Thomas Gleixner, Ingo Molnar, Peter Zijlstra, Darren Hart,
	Davidlohr Bueso, Edward Liaw, 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.

Reviewed-by: Edward Liaw <edliaw@google.com>
Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>
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.1


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

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

On 5/31/24 14:07, 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.
> 
> Changes since v2:
> 
> 1) Added a sentence to the .PHONY patch, to show that it is removing
>     duplicate code.
> 
> 2) Added the actual clang warning output to the commit description.
> 
> Changes since the first version:
> 
> 1) Rebased onto Linux 6.10-rc1
> 2) Added Reviewed-by's.
> 
> ...and it turns out that all three patches are still required, on -rc1,
> in order to get a clean clang build.
> 
> 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: b050496579632f86ee1ef7e7501906db579f3457

Thank you - applied to linux-kselftest fixes branch for next rc.

thanks,
-- Shuah

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

end of thread, other threads:[~2024-05-31 20:39 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-31 20:07 [PATCH v3 0/3] selftests/futex: clang-inspired fixes John Hubbard
2024-05-31 20:07 ` [PATCH v3 1/3] selftests/futex: don't redefine .PHONY targets (all, clean) John Hubbard
2024-05-31 20:07 ` [PATCH v3 2/3] selftests/futex: don't pass a const char* to asprintf(3) John Hubbard
2024-05-31 20:07 ` [PATCH v3 3/3] selftests/futex: pass _GNU_SOURCE without a value to the compiler John Hubbard
2024-05-31 20:39 ` [PATCH v3 0/3] selftests/futex: clang-inspired fixes Shuah Khan

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