On Tue, Feb 6, 2024 at 7:44 AM Daniel Xu <dxu@xxxxxxxxx> wrote: > > 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. I think we should mark all kfuncs in selftests as __weak. And then audit all of them and add consts where it makes sense and make sure that all definitions are compatible between vmlinux.h and manual declarations. I'd rather avoid #ifdef'ing anything, it should work as is. > > 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