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
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:
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-2f9ed7d1c...
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) {
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 := \
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,
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
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,
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
linux-kselftest-mirror@lists.linaro.org