Re: tools/bpf: Compilation issue on powerpc: unknown type name '__vector128'

3 messages, 3 authors, 2020-10-26 · open the first message on its own page

Re: tools/bpf: Compilation issue on powerpc: unknown type name '__vector128'

From: Vitaly Chikunov <hidden>
Date: 2020-10-24 20:30:44

Adding netdev and PowerPC maintainers JFYI.

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:
quoted
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
  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.

Thanks,

-- 
ldv

Re: tools/bpf: Compilation issue on powerpc: unknown type name '__vector128'

From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2020-10-26 04:46:00

Vitaly Chikunov [off-list ref] writes:
Adding netdev and PowerPC maintainers JFYI.
Thanks.
On Sat, Oct 24, 2020 at 11:23:19AM +0300, Dmitry V. Levin wrote:
quoted
Hi,

On Sat, Oct 24, 2020 at 02:06:41AM +0300, Vitaly Chikunov wrote:
quoted
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.
quoted
quoted
  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

Re: tools/bpf: Compilation issue on powerpc: unknown type name '__vector128'

From: Will Deacon <will@kernel.org>
Date: 2020-10-26 08:46:10

On Mon, Oct 26, 2020 at 03:45:55PM +1100, Michael Ellerman wrote:
Vitaly Chikunov [off-list ref] writes:
quoted
Adding netdev and PowerPC maintainers JFYI.
Thanks.
quoted
On Sat, Oct 24, 2020 at 11:23:19AM +0300, Dmitry V. Levin wrote:
quoted
Hi,

On Sat, Oct 24, 2020 at 02:06:41AM +0300, Vitaly Chikunov wrote:
quoted
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.
quoted
quoted
quoted
  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.

29 more quoted lines

Yeah, all f143c11bb7b9 did was sync the local copy with the result of
'headers_install', so if that's sufficient then I think that's the right
way to fix the immediate breakage.
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.
Agreed, although in some cases I suspect that kernel-internal parts are
being used.

Wiil
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help