Hi Jiri, On Tue, Feb 06, 2024 at 02:42:22PM +0100, Jiri Olsa wrote: > On Sun, Feb 04, 2024 at 02:06:34PM -0700, Daniel Xu wrote: > > Since 20d59ee55172 ("libbpf: add bpf_core_cast() macro"), libbpf is now > > exporting a const arg version of bpf_rdonly_cast(). This causes the > > following conflicting type error when generating kfunc prototypes from > > BTF: > > > > In file included from skeleton/pid_iter.bpf.c:5: > > /home/dxu/dev/linux/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_core_read.h:297:14: error: conflicting types for 'bpf_rdonly_cast' > > extern void *bpf_rdonly_cast(const void *obj__ign, __u32 btf_id__k) __ksym __weak; > > ^ > > ./vmlinux.h:135625:14: note: previous declaration is here > > extern void *bpf_rdonly_cast(void *obj__ign, u32 btf_id__k) __weak __ksym; > > hi, > I'm hiting more of these when compiling bpf selftests (attached), > it looks like some kfuncs declarations in bpf_kfuncs.h might be in conflict Yep, I was actually going to put that as an office hours topic on how we want to handle that for selftests. Marking kfuncs in bpf_kfuncs.h and bpf_experimental.h as __weak is an option. ifdef is another option. Final option I can think of is bumping required pahole version up and simply deleting all the kfunc definitions. But given that pahole changes come with the feature flag, I don't see this as a pressing issue. So I was planning on getting to that after current outstanding patchsets (just so there's less stuff for me to juggle). [...] Thanks, Daniel