On Wed, Jan 24, 2024 at 12:25 AM Jose E. Marchesi <jose.marchesi@xxxxxxxxxx> wrote: > > > > On 1/23/24 10:59 AM, Jose E. Marchesi wrote: > >> The definition of bpf_tail_call_static in tools/lib/bpf/bpf_helpers.h > >> is guarded by a preprocessor check to assure that clang is recent > >> enough to support it. This patch updates the guard so the function is > >> compiled when using GCC as well. > >> > >> Tested in bpf-next master. > >> No regressions. > >> > >> Signed-off-by: Jose E. Marchesi <jose.marchesi@xxxxxxxxxx> > >> Cc: Yonghong Song <yhs@xxxxxxxx> > >> Cc: Eduard Zingerman <eddyz87@xxxxxxxxx> > >> Cc: david.faust@xxxxxxxxxx > >> Cc: cupertino.miranda@xxxxxxxxxx > >> --- > >> tools/lib/bpf/bpf_helpers.h | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/tools/lib/bpf/bpf_helpers.h b/tools/lib/bpf/bpf_helpers.h > >> index 2324cc42b017..3306f50c5081 100644 > >> --- a/tools/lib/bpf/bpf_helpers.h > >> +++ b/tools/lib/bpf/bpf_helpers.h > >> @@ -136,7 +136,7 @@ > >> /* > >> * Helper function to perform a tail call with a constant/immediate map slot. > >> */ > >> -#if __clang_major__ >= 8 && defined(__bpf__) > >> +#if (!defined(__clang__) || __clang_major__ >= 8) && defined(__bpf__) > > > > Do you want to guard with a gcc version as well here or you assume any gcc which supports bpf > > should be okay here? > > The second, because GCC versions that do not support > bpf_tail_call_static are not capable of building the selftests for many > other reasons, so there is little point to support them. bpf_helpers.h is part of libbpf-provided API, and so it's going to be used way beyond just BPF selftests. So I think it's prudent to guard with version check just like we do it for clang. I assume you do know GCC version that is meant to support this? > > > > >> static __always_inline void > >> bpf_tail_call_static(void *ctx, const void *map, const __u32 slot) > >> { >