Vitaly Chikunov <vt@xxxxxxxxxxxx> writes: > Adding netdev and PowerPC maintainers JFYI. Thanks. > On Sat, Oct 24, 2020 at 11:23:19AM +0300, Dmitry V. Levin wrote: >> Hi, >> >> On Sat, Oct 24, 2020 at 02:06:41AM +0300, Vitaly Chikunov wrote: >> > Hi, >> > >> > Commit f143c11bb7b9 ("tools: bpf: Use local copy of headers including >> > uapi/linux/filter.h") introduces compilation issue on powerpc: >> > >> > builder@powerpc64le:~/linux$ make -C tools/bpf V=1 >> > make: Entering directory '/usr/src/linux/tools/bpf' >> > gcc -Wall -O2 -D__EXPORTED_HEADERS__ -I/usr/src/linux/tools/include/uapi -I/usr/src/linux/tools/include -DDISASM_FOUR_ARGS_SIGNATURE -c -o bpf_dbg.o /usr/src/linux/tools/bpf/bpf_dbg.c Defining __EXPORTED_HEADERS__ is a hack to circumvent the checks in the uapi headers. So first comment is to stop doing that, although it doesn't actually fix this issue. >> > In file included from /usr/include/asm/sigcontext.h:14, >> > from /usr/include/bits/sigcontext.h:30, >> > from /usr/include/signal.h:291, >> > from /usr/src/linux/tools/bpf/bpf_dbg.c:51: >> > /usr/include/asm/elf.h:160:9: error: unknown type name '__vector128' >> > 160 | typedef __vector128 elf_vrreg_t; >> > | ^~~~~~~~~~~ >> > make: *** [Makefile:67: bpf_dbg.o] Error 1 >> > make: Leaving directory '/usr/src/linux/tools/bpf' >> >> __vector128 is defined in arch/powerpc/include/uapi/asm/types.h; >> while include/uapi/linux/types.h does #include <asm/types.h>, >> tools/include/uapi/linux/types.h doesn't, resulting to this >> compilation error. > > This is too puzzling to fix portably. I don't really understand how this is expected to work. We have tools/include/uapi/linux/types.h which is some sort of hand hacked types.h, but doesn't match the real types.h from include/uapi/linux. In particular the tools/include types.h doesn't include asm/types.h, which is why this breaks. I can build bpf_dbg if I copy the properly exported header in: $ make INSTALL_HDR_PATH=$PWD/headers headers_install $ cp headers/include/linux/types.h tools/include/uapi/linux/ $ make -C tools/bpf bpf_dbg make: Entering directory '/home/michael/linux/tools/bpf' Auto-detecting system features: ... libbfd: [ on ] ... disassembler-four-args: [ on ] CC bpf_dbg.o LINK bpf_dbg make: Leaving directory '/home/michael/linux/tools/bpf I'm not sure what the proper fix is. Maybe sync the tools/include types.h with the real one? Or TBH I would have thought the best option is to not have tools/include/uapi at all, but instead just run headers_install before building and use the properly exported headers. cheers