From: Yonghong Song <yonghong.song@linux.dev>
To: "Jose E. Marchesi" <jose.marchesi@oracle.com>, bpf@vger.kernel.org
Cc: david.faust@oracle.com, cupertino.miranda@oracle.com,
Eduard Zingerman <eddyz87@gmail.com>
Subject: Re: [PATCH bpf-next] bpf: disable some `attribute ignored' warnings in GCC
Date: Mon, 6 May 2024 11:32:06 -0700 [thread overview]
Message-ID: <a95b1917-80aa-4c81-942d-91f369d31bb2@linux.dev> (raw)
In-Reply-To: <20240503123213.5380-1-jose.marchesi@oracle.com>
On 5/3/24 5:32 AM, Jose E. Marchesi wrote:
> This patch modifies selftests/bpf/Makefile to pass -Wno-attributes to
> GCC. This is because of the following attributes which are ignored:
>
> - btf_decl_tag
> - btf_type_tag
>
> There are many of these. At the moment none of these are
> recognized/handled by gcc-bpf.
>
> We are aware that btf_decl_tag is necessary for some of the
> selftest harness to communicate test failure/success. Support for
> it is in progress in GCC upstream:
>
> https://gcc.gnu.org/pipermail/gcc-patches/2024-May/650482.html
>
> However, the GCC master branch is not yet open, so the series
> above (currently under review upstream) wont be able to make it
> there until 14.1 gets released, probably mid next week.
Thanks. It would be great if the patch can be merged soon.
>
> As for btf_type_tag, more extensive work will be needed in GCC
> upstream to support it in both BTF and DWARF. We have a WIP big
> patch for that, but that is not needed to compile/build the
> selftests.
Thanks. Eduard has implemented in llvm with agreed new format. Since
the old phabricator becomes readonly, he will upstream the original
patch to llvm-project soon.
>
> - used
>
> There are SEC macros defined in the selftests as:
>
> #define SEC(N) __attribute__((section(N),used))
>
> The SEC macro is used for both functions and global variables.
> According to the GCC documentation `used' attribute is really only
> meaningful for functions, and it warns when the attribute is used
> for other global objects, like for example ctl_array in
> test_xdp_noinline.c.
>
> Ignoring this is bening.
Bening -> Benign?
>
> - visibility
>
> In progs/cpumask_common.h:13 there is:
>
> #define private(name) SEC(".bss." #name) __hidden __attribute__((aligned(8)))
> private(MASK) static struct bpf_cpumask __kptr * global_mask;
>
> The __hidden macro defines to:
>
> tools/lib/bpf/bpf_helpers.h:#define __hidden __attribute__((visibility("hidden")))
>
> GCC emits an "attribute ignored" warning because static implies
> hidden visibility.
>
> Ignoring this warning is benign. An alternative would be to make
> global_mask as non-static.
In the above, let us just remove __hidden from the '#define'.
As you mentioned, the 'global_mask' is already a static variable,
adding '__hidden' is not really needed at all.
>
> - align_value
>
> In progs/test_cls_redirect.c:127 there is:
>
> typedef uint8_t *net_ptr __attribute__((align_value(8)));
>
> GCC warns that it is ignoring this attribute, because it is not
> implemented by GCC.
>
> I think ignoring this attribute in GCC is bening, because according
Bening -> Benign?
> to the clang documentation [1] its purpose seems to be merely
> declarative and doesn't seem to translate into extra checks at
> run-time, only to pehaps better optimized code ("runtime behavior is
> undefined if the pointed memory object is not aligned to the
> specified alignment").
Yes, the attribute does not really enforce at runtime. It merely
give a declarative requirement.
>
> [1] https://clang.llvm.org/docs/AttributeReference.html#align-value
>
> Tested in bpf-next master.
>
> Signed-off-by: Jose E. Marchesi <jose.marchesi@oracle.com>
> Cc: david.faust@oracle.com
> Cc: cupertino.miranda@oracle.com
> Cc: Yonghong Song <yonghong.song@linux.dev>
> Cc: Eduard Zingerman <eddyz87@gmail.com>
> ---
> tools/testing/selftests/bpf/Makefile | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
> index ba28d42b74db..5d9c906bc3cb 100644
> --- a/tools/testing/selftests/bpf/Makefile
> +++ b/tools/testing/selftests/bpf/Makefile
> @@ -431,7 +431,7 @@ endef
> # Build BPF object using GCC
> define GCC_BPF_BUILD_RULE
> $(call msg,GCC-BPF,$(TRUNNER_BINARY),$2)
> - $(Q)$(BPF_GCC) $3 -O2 -c $1 -o $2
> + $(Q)$(BPF_GCC) $3 -Wno-attributes -O2 -c $1 -o $2
LGTM with above a few nits.
Acked-by: Yonghong Song <yonghong.song@linux.dev>
> endef
>
> SKEL_BLACKLIST := btf__% test_pinning_invalid.c test_sk_assign.c
next prev parent reply other threads:[~2024-05-06 18:32 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-03 12:32 [PATCH bpf-next] bpf: disable some `attribute ignored' warnings in GCC Jose E. Marchesi
2024-05-06 18:32 ` Yonghong Song [this message]
2024-05-06 19:09 ` David Faust
2024-05-06 21:42 ` Yonghong Song
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=a95b1917-80aa-4c81-942d-91f369d31bb2@linux.dev \
--to=yonghong.song@linux.dev \
--cc=bpf@vger.kernel.org \
--cc=cupertino.miranda@oracle.com \
--cc=david.faust@oracle.com \
--cc=eddyz87@gmail.com \
--cc=jose.marchesi@oracle.com \
/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