2020-12-09 22:26:17

by Seth Forshee

[permalink] [raw]
Subject: BPF selftests build failure in 5.10-rc

Building the BPF selftests with clang 11, I'm getting the following
error:

CLNG-LLC [test_maps] profiler1.o
In file included from progs/profiler1.c:6:
progs/profiler.inc.h:260:17: error: use of unknown builtin '__builtin_preserve_enum_value' [-Wimplicit-function-declaration]
int cgrp_id = bpf_core_enum_value(enum cgroup_subsys_id___local,
^
/home/ubuntu/unstable/tools/testing/selftests/bpf/tools/include/bpf/bpf_core_read.h:179:2: note: expanded from macro 'bpf_core_enum_value'
__builtin_preserve_enum_value(*(typeof(enum_type) *)enum_value, BPF_ENUMVAL_VALUE)
^
1 error generated.
llc: error: llc: <stdin>:1:1: error: expected top-level entity
BPF obj compilation failed

I see that test_core_reloc_enumval.c takes precautions around the use of
__builtin_preserve_enum_value as it is currently only available in clang
12 nightlies. Is it possible to do something similar here? Though I see
that the use of the builtin is not nearly so neatly localized as it is
in test_core_reloc_enumval.c.

Thanks,
Seth


2020-12-10 00:21:18

by Andrii Nakryiko

[permalink] [raw]
Subject: Re: BPF selftests build failure in 5.10-rc

On Wed, Dec 9, 2020 at 2:24 PM Seth Forshee <[email protected]> wrote:
>
> Building the BPF selftests with clang 11, I'm getting the following
> error:
>
> CLNG-LLC [test_maps] profiler1.o
> In file included from progs/profiler1.c:6:
> progs/profiler.inc.h:260:17: error: use of unknown builtin '__builtin_preserve_enum_value' [-Wimplicit-function-declaration]
> int cgrp_id = bpf_core_enum_value(enum cgroup_subsys_id___local,
> ^
> /home/ubuntu/unstable/tools/testing/selftests/bpf/tools/include/bpf/bpf_core_read.h:179:2: note: expanded from macro 'bpf_core_enum_value'
> __builtin_preserve_enum_value(*(typeof(enum_type) *)enum_value, BPF_ENUMVAL_VALUE)
> ^
> 1 error generated.
> llc: error: llc: <stdin>:1:1: error: expected top-level entity
> BPF obj compilation failed

Addressed by fb3558127cb6 ("bpf: Fix selftest compilation on clang 11")

>
> I see that test_core_reloc_enumval.c takes precautions around the use of
> __builtin_preserve_enum_value as it is currently only available in clang
> 12 nightlies. Is it possible to do something similar here? Though I see
> that the use of the builtin is not nearly so neatly localized as it is
> in test_core_reloc_enumval.c.
>
> Thanks,
> Seth

2020-12-11 01:22:14

by Seth Forshee

[permalink] [raw]
Subject: Re: BPF selftests build failure in 5.10-rc

On Wed, Dec 09, 2020 at 04:15:35PM -0800, Andrii Nakryiko wrote:
> On Wed, Dec 9, 2020 at 2:24 PM Seth Forshee <[email protected]> wrote:
> >
> > Building the BPF selftests with clang 11, I'm getting the following
> > error:
> >
> > CLNG-LLC [test_maps] profiler1.o
> > In file included from progs/profiler1.c:6:
> > progs/profiler.inc.h:260:17: error: use of unknown builtin '__builtin_preserve_enum_value' [-Wimplicit-function-declaration]
> > int cgrp_id = bpf_core_enum_value(enum cgroup_subsys_id___local,
> > ^
> > /home/ubuntu/unstable/tools/testing/selftests/bpf/tools/include/bpf/bpf_core_read.h:179:2: note: expanded from macro 'bpf_core_enum_value'
> > __builtin_preserve_enum_value(*(typeof(enum_type) *)enum_value, BPF_ENUMVAL_VALUE)
> > ^
> > 1 error generated.
> > llc: error: llc: <stdin>:1:1: error: expected top-level entity
> > BPF obj compilation failed
>
> Addressed by fb3558127cb6 ("bpf: Fix selftest compilation on clang 11")

Great, thanks!

>
> >
> > I see that test_core_reloc_enumval.c takes precautions around the use of
> > __builtin_preserve_enum_value as it is currently only available in clang
> > 12 nightlies. Is it possible to do something similar here? Though I see
> > that the use of the builtin is not nearly so neatly localized as it is
> > in test_core_reloc_enumval.c.
> >
> > Thanks,
> > Seth