libbpf: Handle GCC built-in types for Arm NEON
authorJean-Philippe Brucker <jean-philippe@linaro.org>
Wed, 12 Aug 2020 14:39:10 +0000 (16:39 +0200)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 13 Aug 2020 01:11:51 +0000 (18:11 -0700)
commit702eddc77a905782083b14ccd05b23840675fd18
treea35551fc9f48c2e498a012e4c4f4b35af1130b60
parent8faf7fc597d59b142af41ddd4a2d59485f75f88a
libbpf: Handle GCC built-in types for Arm NEON

When building Arm NEON (SIMD) code from lib/raid6/neon.uc, GCC emits
DWARF information using a base type "__Poly8_t", which is internal to
GCC and not recognized by Clang. This causes build failures when
building with Clang a vmlinux.h generated from an arm64 kernel that was
built with GCC.

vmlinux.h:47284:9: error: unknown type name '__Poly8_t'
typedef __Poly8_t poly8x16_t[16];
        ^~~~~~~~~

The polyX_t types are defined as unsigned integers in the "Arm C
Language Extension" document (101028_Q220_00_en). Emit typedefs based on
standard integer types for the GCC internal types, similar to those
emitted by Clang.

Including linux/kernel.h to use ARRAY_SIZE() incidentally redefined
max(), causing a build bug due to different types, hence the seemingly
unrelated change.

Reported-by: Jakov Petrina <jakov.petrina@sartura.hr>
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Link: https://lore.kernel.org/bpf/20200812143909.3293280-1-jean-philippe@linaro.org
tools/lib/bpf/btf_dump.c