mirror of
https://github.com/torvalds/linux.git
synced 2026-08-04 22:38:46 +02:00
When exploring building bpf_skel with GCC's BPF support, there was a
build failure because of bpf_core_field_exists vs the mem_hops bitfield:
```
In file included from util/bpf_skel/sample_filter.bpf.c:6:
util/bpf_skel/sample_filter.bpf.c: In function 'perf_get_sample':
tools/perf/libbpf/include/bpf/bpf_core_read.h:169:42: error: cannot take address of bit-field 'mem_hops'
169 | #define ___bpf_field_ref1(field) (&(field))
| ^
tools/perf/libbpf/include/bpf/bpf_helpers.h:222:29: note: in expansion of macro '___bpf_field_ref1'
222 | #define ___bpf_concat(a, b) a ## b
| ^
tools/perf/libbpf/include/bpf/bpf_helpers.h:225:29: note: in expansion of macro '___bpf_concat'
225 | #define ___bpf_apply(fn, n) ___bpf_concat(fn, n)
| ^~~~~~~~~~~~~
tools/perf/libbpf/include/bpf/bpf_core_read.h:173:9: note: in expansion of macro '___bpf_apply'
173 | ___bpf_apply(___bpf_field_ref, ___bpf_narg(args))(args)
| ^~~~~~~~~~~~
tools/perf/libbpf/include/bpf/bpf_core_read.h:188:39: note: in expansion of macro '___bpf_field_ref'
188 | __builtin_preserve_field_info(___bpf_field_ref(field), BPF_FIELD_EXISTS)
| ^~~~~~~~~~~~~~~~
util/bpf_skel/sample_filter.bpf.c:167:29: note: in expansion of macro 'bpf_core_field_exists'
167 | if (bpf_core_field_exists(data->mem_hops))
| ^~~~~~~~~~~~~~~~~~~~~
cc1: error: argument is not a field access
```
___bpf_field_ref1 was adapted for GCC in
|
||
|---|---|---|
| .. | ||
| vmlinux | ||
| .gitignore | ||
| augmented_raw_syscalls.bpf.c | ||
| bench_uprobe.bpf.c | ||
| bperf_cgroup.bpf.c | ||
| bperf_follower.bpf.c | ||
| bperf_leader.bpf.c | ||
| bperf_u.h | ||
| bpf_prog_profiler.bpf.c | ||
| func_latency.bpf.c | ||
| kwork_top.bpf.c | ||
| kwork_trace.bpf.c | ||
| lock_contention.bpf.c | ||
| lock_data.h | ||
| off_cpu.bpf.c | ||
| perf_version.h | ||
| sample_filter.bpf.c | ||
| sample-filter.h | ||
| syscall_summary.bpf.c | ||
| syscall_summary.h | ||