Re: [PATCH bpf-next] selftests/bpf: fix a clang deprecated-declarations compilation error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Feb 17, 2022 at 11:40 AM Yonghong Song <yhs@xxxxxx> wrote:
>
> Build the kernel and selftest with clang compiler with LLVM=1,
>   make -j LLVM=1
>   make -C tools/testing/selftests/bpf -j LLVM=1
>
> I hit the following selftests/bpf compilation error:
>   In file included from test_cpp.cpp:3:
>   /.../tools/testing/selftests/bpf/tools/include/bpf/libbpf.h:73:8:
>     error: 'relaxed_core_relocs' is deprecated: libbpf v0.6+: field has no effect [-Werror,-Wdeprecated-declarations]
>   struct bpf_object_open_opts {
>          ^
>   test_cpp.cpp:56:2: note: in implicit move constructor for 'bpf_object_open_opts' first required here
>           LIBBPF_OPTS(bpf_object_open_opts, opts);
>           ^
>   /.../tools/testing/selftests/bpf/tools/include/bpf/libbpf_common.h:77:3: note: expanded from macro 'LIBBPF_OPTS'
>                   (struct TYPE) {                                             \
>                   ^
>   /.../tools/testing/selftests/bpf/tools/include/bpf/libbpf.h:90:2: note: 'relaxed_core_relocs' has been explicitly marked deprecated here
>           LIBBPF_DEPRECATED_SINCE(0, 6, "field has no effect")
>           ^
>   /.../tools/testing/selftests/bpf/tools/include/bpf/libbpf_common.h:24:4: note: expanded from macro 'LIBBPF_DEPRECATED_SINCE'
>                   (LIBBPF_DEPRECATED("libbpf v" # major "." # minor "+: " msg))
>                    ^
>   /.../tools/testing/selftests/bpf/tools/include/bpf/libbpf_common.h:19:47: note: expanded from macro 'LIBBPF_DEPRECATED'
>   #define LIBBPF_DEPRECATED(msg) __attribute__((deprecated(msg)))
>
> There are two ways to fix the issue, one is to use GCC diagnostic ignore pragma, and the
> other is to open code bpf_object_open_opts instead of using LIBBPF_OPTS.
> Since in general LIBBPF_OPTS is preferred, the patch fixed the issue by
> adding proper GCC diagnostic ignore pragmas.
>
> Signed-off-by: Yonghong Song <yhs@xxxxxx>
> ---

Do you know why we see this only with Clang? Why GCC doesn't generate this?


>  tools/testing/selftests/bpf/test_cpp.cpp | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/tools/testing/selftests/bpf/test_cpp.cpp b/tools/testing/selftests/bpf/test_cpp.cpp
> index 773f165c4898..19ad172036da 100644
> --- a/tools/testing/selftests/bpf/test_cpp.cpp
> +++ b/tools/testing/selftests/bpf/test_cpp.cpp
> @@ -1,6 +1,9 @@
>  /* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */
>  #include <iostream>
> +#pragma GCC diagnostic push
> +#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
>  #include <bpf/libbpf.h>
> +#pragma GCC diagnostic pop
>  #include <bpf/bpf.h>
>  #include <bpf/btf.h>
>  #include "test_core_extern.skel.h"
> --
> 2.30.2
>



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux