From: "Alejandro Colomar (man-pages)" <alx.manpages@gmail.com>
To: Florian Westphal <fw@strlen.de>
Cc: Pablo Neira Ayuso <pablo@netfilter.org>,
Jozsef Kadlecsik <kadlec@netfilter.org>,
"David S. Miller" <davem@davemloft.net>,
Harald Welte <laforge@netfilter.org>,
netfilter-devel@vger.kernel.org, coreteam@netfilter.org
Subject: Re: Unused macro
Date: Sun, 4 Apr 2021 22:44:12 +0200 [thread overview]
Message-ID: <57ad16e0-a116-5fe7-4f95-3790fffccb20@gmail.com> (raw)
In-Reply-To: <20210404200517.GN13699@breakpoint.cc>
Hello Florian,
On 4/4/21 10:05 PM, Florian Westphal wrote:
> Alejandro Colomar (man-pages) <alx.manpages@gmail.com> wrote:
>> I was updating the includes on some manual pages, when I found that a
>> macro used ARRAY_SIZE() without including a header that defines it.
>> That surprised me, because it would more than likely result in a compile
>> error, but of course, the macro wasn't being used:
>>
>> .../linux$ grep -rn SCTP_CHUNKMAP_IS_ALL_SET
>> include/uapi/linux/netfilter/xt_sctp.h:80:#define
>> SCTP_CHUNKMAP_IS_ALL_SET(chunkmap) \
>> .../linux$
>
> This is an UAPI header, this macro is used by userspace software, e.g.
> iptables.
>
Ahh, I see. Thanks.
Then we still have the issue that ARRAY_SIZE is not defined in that
header (see a simple test below). You should probably include some
header that provides it.
But again, if no one noticed this in more than a decade, either no one
used this macro, or they included other headers in the same file where
they used the macro. So I'd still rethink if maybe that macro (and
possibly others) is really needed.
Test 1:
[[
$ cat test.c
#include <linux/netfilter/xt_sctp.h>
int foo(int x)
{
int a[x];
return ARRAY_SIZE(a);
}
$ cc -Wall -Wextra -Werror test.c -S -o test.s
test.c: In function ‘foo’:
test.c:7:9: error: implicit declaration of function ‘ARRAY_SIZE’
[-Werror=implicit-function-declaration]
7 | return ARRAY_SIZE(a);
| ^~~~~~~~~~
cc1: all warnings being treated as errors
$
]]
As you can see, no ARRAY_SIZE().
Test2:
[[
$ cat test.c
#include <linux/netfilter/xt_sctp.h>
int foo(int x)
{
unsigned a[x];
return SCTP_CHUNKMAP_IS_ALL_SET(a);
}
$ cc -Wall -Wextra -Werror test.c -S -o test.s
$ <test.s grep ARRAY_SIZE
call ARRAY_SIZE@PLT
$
]]
In this second test, tere's no error, because it's a system header, but
you can see that ARRAY_SIZE is treated as an implicitly declared
function, and it appears in the assembly file.
Cheers,
Alex
--
Alejandro Colomar
Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/
http://www.alejandro-colomar.es/
next prev parent reply other threads:[~2021-04-04 20:44 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-04 19:52 Unused macro Alejandro Colomar (man-pages)
2021-04-04 20:05 ` Florian Westphal
2021-04-04 20:44 ` Alejandro Colomar (man-pages) [this message]
2021-04-05 21:44 ` Pablo Neira Ayuso
2021-04-06 11:53 ` Alejandro Colomar (man-pages)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=57ad16e0-a116-5fe7-4f95-3790fffccb20@gmail.com \
--to=alx.manpages@gmail.com \
--cc=coreteam@netfilter.org \
--cc=davem@davemloft.net \
--cc=fw@strlen.de \
--cc=kadlec@netfilter.org \
--cc=laforge@netfilter.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=pablo@netfilter.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).