Some BPF programs compiled on s390 fail to load, because s390
arch-specific linux headers contain float and double types. At the
moment there is no BTF_KIND for floats and doubles, so release version
of LLVM ends up emitting type id 0 for them, which in-kernel verifier
does not accept. This should also be the case for structs and enums
with >=64k members.
Fix by emitting byte arrays instead of real types. Another option would
be to skip the offending types altogether, but this would be
unnecessarily restrictive. Yet another option would be what pahole does
- represent floats and doubles as ints, but that won't cover other
"weird" cases like large structs.