2022-04-22 22:05:44

by Vincent MAILHOL

[permalink] [raw]
Subject: [PATCH] checksyscalls: ignore -Wunused-macros

The macros defined in this file are for testing only and are purposely
not used. When compiled with W=2, both gcc and clang yield some
-Wunused-macros warnings. Ignore them.

Signed-off-by: Vincent Mailhol <[email protected]>
---
scripts/checksyscalls.sh | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/scripts/checksyscalls.sh b/scripts/checksyscalls.sh
index 9dbab13329fa..cde15f22ec98 100755
--- a/scripts/checksyscalls.sh
+++ b/scripts/checksyscalls.sh
@@ -255,6 +255,7 @@ cat << EOF
/* 64-bit ports never needed these, and new 32-bit ports can use statx */
#define __IGNORE_fstat64
#define __IGNORE_fstatat64
+
EOF
}

@@ -268,4 +269,4 @@ syscall_list() {
}

(ignore_list && syscall_list $(dirname $0)/../arch/x86/entry/syscalls/syscall_32.tbl) | \
-$* -Wno-error -E -x c - > /dev/null
+$* -Wno-error -Wno-unused-macros -E -x c - > /dev/null
--
2.35.1


2022-04-25 08:33:47

by Nathan Chancellor

[permalink] [raw]
Subject: Re: [PATCH] checksyscalls: ignore -Wunused-macros

Hi Vincent,

On Sat, Apr 23, 2022 at 12:17:25AM +0900, Vincent Mailhol wrote:
> The macros defined in this file are for testing only and are purposely
> not used. When compiled with W=2, both gcc and clang yield some
> -Wunused-macros warnings. Ignore them.
>
> Signed-off-by: Vincent Mailhol <[email protected]>

The change itself looks fine but a couple of comments:

1. Nick and I do not pick up patches, we rely on others to do so.
Additionally, this is not really something within our domain, despite
what get_maintainer.pl might say. This change should be sent to
either

Masahiro Yamada <[email protected]>
[email protected]

or

Andrew Morton <[email protected]>

so that it can be applied by one of them.

2. I am not sure that silencing warnings from W=2 is that useful, as
they are unlikely to be real issues. Not to discourage you by any
means but it might be more useful to focus on cleaning up warnings
from W=1 and getting those promoted to regular build warnings.

Cheers,
Nathan

> ---
> scripts/checksyscalls.sh | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/checksyscalls.sh b/scripts/checksyscalls.sh
> index 9dbab13329fa..cde15f22ec98 100755
> --- a/scripts/checksyscalls.sh
> +++ b/scripts/checksyscalls.sh
> @@ -255,6 +255,7 @@ cat << EOF
> /* 64-bit ports never needed these, and new 32-bit ports can use statx */
> #define __IGNORE_fstat64
> #define __IGNORE_fstatat64
> +
> EOF
> }
>
> @@ -268,4 +269,4 @@ syscall_list() {
> }
>
> (ignore_list && syscall_list $(dirname $0)/../arch/x86/entry/syscalls/syscall_32.tbl) | \
> -$* -Wno-error -E -x c - > /dev/null
> +$* -Wno-error -Wno-unused-macros -E -x c - > /dev/null
> --
> 2.35.1
>

2022-04-25 10:52:41

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] checksyscalls: ignore -Wunused-macros

On Mon, Apr 25, 2022 at 9:42 AM Vincent MAILHOL
<[email protected]> wrote:
> On Mon. 25 Apr 2022 at 15:50, Arnd Bergmann <[email protected]> wrote:
> > On Mon, Apr 25, 2022 at 8:17 AM Vincent MAILHOL> <[email protected]> wrote:
> > > When I run W=2, I want to only see the warnings of the file I am
> > > working on. So I find it useful to fix the W=2 warnings which
> > > show up when building other files to not get spammed by
> > > irrelevant issues and to simplify the triage.
> > >
> > > My initial message lacked the rationale. I will add additional
> > > explanations in the v2 of this patch.
> >
> > I agree this is worth fixing if we want to make W=2 have any meaning at all.
> >
> > Your approach is probably fine. We could try to improve this by comparing
> > against the list from include/uapi/asm-generic/unistd.h instead of the i386
> > list. I suppose that would involve rewriting the script into a simpler one,
> > but I'm not sure if anyone has an interest in working on this.
>
> If someone wants to do it, great, but I do not have the
> confidence to do it myself so I hope you will forgive me for
> taking a pass here.

Sure, no worries.

> Another alternative I considered was to only call
> checksyscalls.sh when doing a 'make all'. This way, we keep the
> warning but people won’t be spammed when building sub projects
> because the script would not be executed.

Right, I like that as well, one less thing to be done for every
iterative make as well. The syscall table really doesn't change
all that much that this needs to be run by most developers.

Arnd

2022-04-25 16:51:41

by Vincent MAILHOL

[permalink] [raw]
Subject: Re: [PATCH] checksyscalls: ignore -Wunused-macros

Hi Nathan,

Thanks for the comments!

On Mon. 25 Apr 2022 at 07:17, Nathan Chancellor <[email protected]> wrote:
> Hi Vincent,
>
> On Sat, Apr 23, 2022 at 12:17:25AM +0900, Vincent Mailhol wrote:
> > The macros defined in this file are for testing only and are purposely
> > not used. When compiled with W=2, both gcc and clang yield some
> > -Wunused-macros warnings. Ignore them.
> >
> > Signed-off-by: Vincent Mailhol <[email protected]>
>
> The change itself looks fine but a couple of comments:
>
> 1. Nick and I do not pick up patches, we rely on others to do so.
> Additionally, this is not really something within our domain, despite
> what get_maintainer.pl might say. This change should be sent to
> either
>
> Masahiro Yamada <[email protected]>
> [email protected]
>
> or
>
> Andrew Morton <[email protected]>
>
> so that it can be applied by one of them.

Ack. As you pointed out, I indeed just followed get_maintainer.pl.
I will resend a v2 to the people you pointed out (and exclude you).

> 2. I am not sure that silencing warnings from W=2 is that useful, as
> they are unlikely to be real issues. Not to discourage you by any
> means but it might be more useful to focus on cleaning up warnings
> from W=1 and getting those promoted to regular build warnings.

Normally I agree, but there is one reason to fix this W=2: this
warning appears when building other files.

Example:
| $ make W=2 drivers/net/dummy.o
| CALL scripts/checksyscalls.sh
| <stdin>:21: warning: macro "__IGNORE_stat64" is not used [-Wunused-macros]
| <stdin>:22: warning: macro "__IGNORE_lstat64" is not used [-Wunused-macros]
| <stdin>:75: warning: macro "__IGNORE_llseek" is not used [-Wunused-macros]
| <stdin>:159: warning: macro "__IGNORE_madvise1" is not used [-Wunused-macros]
(rest of the output redacted).

When I run W=2, I want to only see the warnings of the file I am
working on. So I find it useful to fix the W=2 warnings which
show up when building other files to not get spammed by
irrelevant issues and to simplify the triage.

My initial message lacked the rationale. I will add additional
explanations in the v2 of this patch.


Yours sincerely,
Vincent Mailhol

2022-04-25 20:24:00

by Vincent MAILHOL

[permalink] [raw]
Subject: Re: [PATCH] checksyscalls: ignore -Wunused-macros

On Mon. 25 Apr 2022 at 15:50, Arnd Bergmann <[email protected]> wrote:
> On Mon, Apr 25, 2022 at 8:17 AM Vincent MAILHOL
> <[email protected]> wrote:
> > On Mon. 25 Apr 2022 at 07:17, Nathan Chancellor <[email protected]> wrote:
> > > Hi Vincent,
> > >
> > > On Sat, Apr 23, 2022 at 12:17:25AM +0900, Vincent Mailhol wrote:
> > > > The macros defined in this file are for testing only and are purposely
> > > > not used. When compiled with W=2, both gcc and clang yield some
> > > > -Wunused-macros warnings. Ignore them.
> > > >
> > > > Signed-off-by: Vincent Mailhol <[email protected]>
> > >
> > > The change itself looks fine but a couple of comments:
> > >
> > > 1. Nick and I do not pick up patches, we rely on others to do so.
> > > Additionally, this is not really something within our domain, despite
> > > what get_maintainer.pl might say. This change should be sent to
> > > either
> > >
> > > Masahiro Yamada <[email protected]>
> > > [email protected]
> > >
> > > or
> > >
> > > Andrew Morton <[email protected]>
> > >
> > > so that it can be applied by one of them.
> >
> > Ack. As you pointed out, I indeed just followed get_maintainer.pl.
> > I will resend a v2 to the people you pointed out (and exclude you).
> >
> > > 2. I am not sure that silencing warnings from W=2 is that useful, as
> > > they are unlikely to be real issues. Not to discourage you by any
> > > means but it might be more useful to focus on cleaning up warnings
> > > from W=1 and getting those promoted to regular build warnings.
> >
> > Normally I agree, but there is one reason to fix this W=2: this
> > warning appears when building other files.
> >
> > Example:
> > | $ make W=2 drivers/net/dummy.o
> > | CALL scripts/checksyscalls.sh
> > | <stdin>:21: warning: macro "__IGNORE_stat64" is not used [-Wunused-macros]
> > | <stdin>:22: warning: macro "__IGNORE_lstat64" is not used [-Wunused-macros]
> > | <stdin>:75: warning: macro "__IGNORE_llseek" is not used [-Wunused-macros]
> > | <stdin>:159: warning: macro "__IGNORE_madvise1" is not used [-Wunused-macros]
> > (rest of the output redacted).
> >
> > When I run W=2, I want to only see the warnings of the file I am
> > working on. So I find it useful to fix the W=2 warnings which
> > show up when building other files to not get spammed by
> > irrelevant issues and to simplify the triage.
> >
> > My initial message lacked the rationale. I will add additional
> > explanations in the v2 of this patch.
>
> I agree this is worth fixing if we want to make W=2 have any meaning at all.
>
> Your approach is probably fine. We could try to improve this by comparing
> against the list from include/uapi/asm-generic/unistd.h instead of the i386
> list. I suppose that would involve rewriting the script into a simpler one,
> but I'm not sure if anyone has an interest in working on this.

If someone wants to do it, great, but I do not have the
confidence to do it myself so I hope you will forgive me for
taking a pass here.

Another alternative I considered was to only call
checksyscalls.sh when doing a 'make all'. This way, we keep the
warning but people won’t be spammed when building sub projects
because the script would not be executed.

I tried to be as less disruptive as possible. Unless people show
interest in one of the alternative approaches, I will keep using
the -Wno-unused-macros approach in the v2.

> diff --git a/scripts/checksyscalls.sh b/scripts/checksyscalls.sh
> index 9dbab13329fa..cde15f22ec98 100755
> --- a/scripts/checksyscalls.sh
> +++ b/scripts/checksyscalls.sh
> @@ -255,6 +255,7 @@ cat << EOF
> /* 64-bit ports never needed these, and new 32-bit ports can use statx */
> #define __IGNORE_fstat64
> #define __IGNORE_fstatat64
> +

Just realized that I added a new line for no reason.
This will be removed in v2. Sorry.

> EOF
> }
>
> @@ -268,4 +269,4 @@ syscall_list() {
> }
>
> (ignore_list && syscall_list $(dirname $0)/../arch/x86/entry/syscalls/syscall_32.tbl) | \
> -$* -Wno-error -E -x c - > /dev/null
> +$* -Wno-error -Wno-unused-macros -E -x c - > /dev/null
> --
> 2.35.1

Yours sincerely,
Vincent Mailhol

2022-04-25 23:32:53

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] checksyscalls: ignore -Wunused-macros

On Mon, Apr 25, 2022 at 8:17 AM Vincent MAILHOL
<[email protected]> wrote:
> On Mon. 25 Apr 2022 at 07:17, Nathan Chancellor <[email protected]> wrote:
> > Hi Vincent,
> >
> > On Sat, Apr 23, 2022 at 12:17:25AM +0900, Vincent Mailhol wrote:
> > > The macros defined in this file are for testing only and are purposely
> > > not used. When compiled with W=2, both gcc and clang yield some
> > > -Wunused-macros warnings. Ignore them.
> > >
> > > Signed-off-by: Vincent Mailhol <[email protected]>
> >
> > The change itself looks fine but a couple of comments:
> >
> > 1. Nick and I do not pick up patches, we rely on others to do so.
> > Additionally, this is not really something within our domain, despite
> > what get_maintainer.pl might say. This change should be sent to
> > either
> >
> > Masahiro Yamada <[email protected]>
> > [email protected]
> >
> > or
> >
> > Andrew Morton <[email protected]>
> >
> > so that it can be applied by one of them.
>
> Ack. As you pointed out, I indeed just followed get_maintainer.pl.
> I will resend a v2 to the people you pointed out (and exclude you).
>
> > 2. I am not sure that silencing warnings from W=2 is that useful, as
> > they are unlikely to be real issues. Not to discourage you by any
> > means but it might be more useful to focus on cleaning up warnings
> > from W=1 and getting those promoted to regular build warnings.
>
> Normally I agree, but there is one reason to fix this W=2: this
> warning appears when building other files.
>
> Example:
> | $ make W=2 drivers/net/dummy.o
> | CALL scripts/checksyscalls.sh
> | <stdin>:21: warning: macro "__IGNORE_stat64" is not used [-Wunused-macros]
> | <stdin>:22: warning: macro "__IGNORE_lstat64" is not used [-Wunused-macros]
> | <stdin>:75: warning: macro "__IGNORE_llseek" is not used [-Wunused-macros]
> | <stdin>:159: warning: macro "__IGNORE_madvise1" is not used [-Wunused-macros]
> (rest of the output redacted).
>
> When I run W=2, I want to only see the warnings of the file I am
> working on. So I find it useful to fix the W=2 warnings which
> show up when building other files to not get spammed by
> irrelevant issues and to simplify the triage.
>
> My initial message lacked the rationale. I will add additional
> explanations in the v2 of this patch.

I agree this is worth fixing if we want to make W=2 have any meaning at all.

Your approach is probably fine. We could try to improve this by comparing
against the list from include/uapi/asm-generic/unistd.h instead of the i386
list. I suppose that would involve rewriting the script into a simpler one,
but I'm not sure if anyone has an interest in working on this.

Arnd

2022-04-27 11:07:04

by Vincent MAILHOL

[permalink] [raw]
Subject: Re: [PATCH] checksyscalls: ignore -Wunused-macros

On Mon. 25 Apr 2022 at 17:49, Arnd Bergmann <[email protected]> wrote:
> On Mon, Apr 25, 2022 at 9:42 AM Vincent MAILHOL
> <[email protected]> wrote:
> > On Mon. 25 Apr 2022 at 15:50, Arnd Bergmann <[email protected]> wrote:
> > > On Mon, Apr 25, 2022 at 8:17 AM Vincent MAILHOL> <[email protected]> wrote:
> > > > When I run W=2, I want to only see the warnings of the file I am
> > > > working on. So I find it useful to fix the W=2 warnings which
> > > > show up when building other files to not get spammed by
> > > > irrelevant issues and to simplify the triage.
> > > >
> > > > My initial message lacked the rationale. I will add additional
> > > > explanations in the v2 of this patch.
> > >
> > > I agree this is worth fixing if we want to make W=2 have any meaning at all.
> > >
> > > Your approach is probably fine. We could try to improve this by comparing
> > > against the list from include/uapi/asm-generic/unistd.h instead of the i386
> > > list. I suppose that would involve rewriting the script into a simpler one,
> > > but I'm not sure if anyone has an interest in working on this.
> >
> > If someone wants to do it, great, but I do not have the
> > confidence to do it myself so I hope you will forgive me for
> > taking a pass here.
>
> Sure, no worries.
>
> > Another alternative I considered was to only call
> > checksyscalls.sh when doing a 'make all'. This way, we keep the
> > warning but people won’t be spammed when building sub projects
> > because the script would not be executed.
>
> Right, I like that as well, one less thing to be done for every
> iterative make as well. The syscall table really doesn't change
> all that much that this needs to be run by most developers.

I send a patch in a new thread to only call the script once:
https://lore.kernel.org/lkml/[email protected]/T/#u

If this new patch gets rejected, then I will go back to the
-Wno-unused-macros approach.


Yours sincerely,
Vincent Mailhol

2022-05-01 05:15:53

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] checksyscalls: ignore -Wunused-macros

On Sat, Apr 23, 2022 at 12:18 AM Vincent Mailhol
<[email protected]> wrote:
>
> The macros defined in this file are for testing only and are purposely
> not used. When compiled with W=2, both gcc and clang yield some
> -Wunused-macros warnings. Ignore them.
>
> Signed-off-by: Vincent Mailhol <[email protected]>
> ---

Applied to linux-kbuild (only the second hunk)
Thanks.

The current check is not nice,
but this does not hurt.



> scripts/checksyscalls.sh | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/checksyscalls.sh b/scripts/checksyscalls.sh
> index 9dbab13329fa..cde15f22ec98 100755
> --- a/scripts/checksyscalls.sh
> +++ b/scripts/checksyscalls.sh
> @@ -255,6 +255,7 @@ cat << EOF
> /* 64-bit ports never needed these, and new 32-bit ports can use statx */
> #define __IGNORE_fstat64
> #define __IGNORE_fstatat64
> +
> EOF
> }

Noise.
I dropped it.



>
> @@ -268,4 +269,4 @@ syscall_list() {
> }
>
> (ignore_list && syscall_list $(dirname $0)/../arch/x86/entry/syscalls/syscall_32.tbl) | \
> -$* -Wno-error -E -x c - > /dev/null
> +$* -Wno-error -Wno-unused-macros -E -x c - > /dev/null
> --
> 2.35.1
>


--
Best Regards
Masahiro Yamada