2023-08-01 05:37:57

by Thomas Weißschuh

[permalink] [raw]
Subject: [PATCH v2 07/10] selftests/nolibc: avoid unused arguments warnings

This warnings will be enabled later so avoid triggering it.

Signed-off-by: Thomas Weißschuh <[email protected]>
---
tools/testing/selftests/nolibc/nolibc-test.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c
index 53a3773c7790..cb17cccd0bc7 100644
--- a/tools/testing/selftests/nolibc/nolibc-test.c
+++ b/tools/testing/selftests/nolibc/nolibc-test.c
@@ -1089,7 +1089,8 @@ static int smash_stack(void)
return 1;
}

-static int run_protection(int min, int max)
+static int run_protection(int __attribute__((unused)) min,
+ int __attribute__((unused)) max)
{
pid_t pid;
int llen = 0, status;

--
2.41.0



2023-08-01 08:14:56

by Willy Tarreau

[permalink] [raw]
Subject: Re: [PATCH v2 07/10] selftests/nolibc: avoid unused arguments warnings

On Tue, Aug 01, 2023 at 07:30:14AM +0200, Thomas Wei?schuh wrote:
> This warnings will be enabled later so avoid triggering it.
>
> Signed-off-by: Thomas Wei?schuh <[email protected]>
> ---
> tools/testing/selftests/nolibc/nolibc-test.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c
> index 53a3773c7790..cb17cccd0bc7 100644
> --- a/tools/testing/selftests/nolibc/nolibc-test.c
> +++ b/tools/testing/selftests/nolibc/nolibc-test.c
> @@ -1089,7 +1089,8 @@ static int smash_stack(void)
> return 1;
> }
>
> -static int run_protection(int min, int max)
> +static int run_protection(int __attribute__((unused)) min,
> + int __attribute__((unused)) max)

This one is used to silence -Wunused-parameter I guess. It's one of
the rare warnings that I find totally useless in field, because it's
simply against the principle of using function pointers with different
functions having the same interface but different implementations. As
your code evolves you end up with unused on absolutely *all* of the
arguments of *all* such functions, which makes them a real pain to add
and tends to encourage poor practices such as excessive code reuse just
by laziness or boredom. BTW it's one of those that are already disabled
in the kernel and we could very well do the same here.

Willy

2023-08-01 09:14:44

by Thomas Weißschuh

[permalink] [raw]
Subject: Re: [PATCH v2 07/10] selftests/nolibc: avoid unused arguments warnings

On 2023-08-01 10:07:28+0200, Willy Tarreau wrote:
> On Tue, Aug 01, 2023 at 07:30:14AM +0200, Thomas Weißschuh wrote:
> > This warnings will be enabled later so avoid triggering it.
> >
> > Signed-off-by: Thomas Weißschuh <[email protected]>
> > ---
> > tools/testing/selftests/nolibc/nolibc-test.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c
> > index 53a3773c7790..cb17cccd0bc7 100644
> > --- a/tools/testing/selftests/nolibc/nolibc-test.c
> > +++ b/tools/testing/selftests/nolibc/nolibc-test.c
> > @@ -1089,7 +1089,8 @@ static int smash_stack(void)
> > return 1;
> > }
> >
> > -static int run_protection(int min, int max)
> > +static int run_protection(int __attribute__((unused)) min,
> > + int __attribute__((unused)) max)
>
> This one is used to silence -Wunused-parameter I guess.

Yep.

> It's one of
> the rare warnings that I find totally useless in field, because it's
> simply against the principle of using function pointers with different
> functions having the same interface but different implementations. As
> your code evolves you end up with unused on absolutely *all* of the
> arguments of *all* such functions, which makes them a real pain to add
> and tends to encourage poor practices such as excessive code reuse just
> by laziness or boredom. BTW it's one of those that are already disabled
> in the kernel and we could very well do the same here.

It's indeed unfortunate.

As long as we don't have too many of them I would prefer to keep the
explicit annotations. While they are ugly we then can still reap the
positive aspects of the warning.

This is where -std=c89 bites us. With extensions (or C2X) we could also
just leave off the argument name to mark it as unused:
run_protection(int, int)

2023-08-01 10:20:10

by Zhangjin Wu

[permalink] [raw]
Subject: Re: [PATCH v2 07/10] selftests/nolibc: avoid unused arguments warnings

Hi, Thomas

> On 2023-08-01 10:07:28+0200, Willy Tarreau wrote:
> > On Tue, Aug 01, 2023 at 07:30:14AM +0200, Thomas Weißschuh wrote:
> > > This warnings will be enabled later so avoid triggering it.
> > >
> > > Signed-off-by: Thomas Weißschuh <[email protected]>
> > > ---
> > > tools/testing/selftests/nolibc/nolibc-test.c | 3 ++-
> > > 1 file changed, 2 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c
> > > index 53a3773c7790..cb17cccd0bc7 100644
> > > --- a/tools/testing/selftests/nolibc/nolibc-test.c
> > > +++ b/tools/testing/selftests/nolibc/nolibc-test.c
> > > @@ -1089,7 +1089,8 @@ static int smash_stack(void)
> > > return 1;
> > > }
> > >
> > > -static int run_protection(int min, int max)
> > > +static int run_protection(int __attribute__((unused)) min,
> > > + int __attribute__((unused)) max)
> >
> > This one is used to silence -Wunused-parameter I guess.
>
> Yep.
>
> > It's one of
> > the rare warnings that I find totally useless in field, because it's
> > simply against the principle of using function pointers with different
> > functions having the same interface but different implementations. As
> > your code evolves you end up with unused on absolutely *all* of the
> > arguments of *all* such functions, which makes them a real pain to add
> > and tends to encourage poor practices such as excessive code reuse just
> > by laziness or boredom. BTW it's one of those that are already disabled
> > in the kernel and we could very well do the same here.
>
> It's indeed unfortunate.
>
> As long as we don't have too many of them I would prefer to keep the
> explicit annotations. While they are ugly we then can still reap the
> positive aspects of the warning.
>
> This is where -std=c89 bites us. With extensions (or C2X) we could also
> just leave off the argument name to mark it as unused:
> run_protection(int, int)

what about further simply ignore the arguments like we did for main(void)?

Thanks,
Zhangjin

2023-08-01 10:51:54

by Thomas Weißschuh

[permalink] [raw]
Subject: Re: [PATCH v2 07/10] selftests/nolibc: avoid unused arguments warnings


Aug 1, 2023 12:15:27 Zhangjin Wu <[email protected]>:

> Hi, Thomas
>
>> On 2023-08-01 10:07:28+0200, Willy Tarreau wrote:
>>> On Tue, Aug 01, 2023 at 07:30:14AM +0200, Thomas Weißschuh wrote:
>>>> This warnings will be enabled later so avoid triggering it.
>>>>
>>>> Signed-off-by: Thomas Weißschuh <[email protected]>
>>>> ---
>>>> tools/testing/selftests/nolibc/nolibc-test.c | 3 ++-
>>>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c
>>>> index 53a3773c7790..cb17cccd0bc7 100644
>>>> --- a/tools/testing/selftests/nolibc/nolibc-test.c
>>>> +++ b/tools/testing/selftests/nolibc/nolibc-test.c
>>>> @@ -1089,7 +1089,8 @@ static int smash_stack(void)
>>>>     return 1;
>>>> }
>>>>
>>>> -static int run_protection(int min, int max)
>>>> +static int run_protection(int __attribute__((unused)) min,
>>>> +             int __attribute__((unused)) max)
>>>
>>> This one is used to silence -Wunused-parameter I guess.
>>
>> Yep.
>>
>>> It's one of
>>> the rare warnings that I find totally useless in field, because it's
>>> simply against the principle of using function pointers with different
>>> functions having the same interface but different implementations. As
>>> your code evolves you end up with unused on absolutely *all* of the
>>> arguments of *all* such functions, which makes them a real pain to add
>>> and tends to encourage poor practices such as excessive code reuse just
>>> by laziness or boredom. BTW it's one of those that are already disabled
>>> in the kernel and we could very well do the same here.
>>
>> It's indeed unfortunate.
>>
>> As long as we don't have too many of them I would prefer to keep the
>> explicit annotations. While they are ugly we then can still reap the
>> positive aspects of the warning.
>>
>> This is where -std=c89 bites us. With extensions (or C2X) we could also
>> just leave off the argument name to mark it as unused:
>>     run_protection(int, int)
>
> what about further simply ignore the arguments like we did for main(void)?

That doesn't work because it is stored as a function pointer in the testcases array.
And these members all take the two parameters.