eBPF CO-RE cross-compilation for 32-bit ARM platforms

Jakov Petrina jakov.petrina at sartura.hr
Mon Aug 10 03:39:43 EDT 2020


Hi,

On 07/08/2020 19:23, Jean-Philippe Brucker wrote:
> Hi,
> 
> [Adding the linux-arm-kernel list on Cc]
> 
> 
> It looks like this "__Poly8_t" type is internal to GCC (provided in
> arm_neon.h) and clang has its own internals. I managed to reproduce this
> with an arm64 allyesconfig kernel (+BTF), but don't know how to fix it at
> the moment. Maybe libbpf should generate defines to translate these
> intrinsics between clang and gcc? Not very elegant. I'll take another
> look next week.
> 

indeed, this has only been present in our arm64 kernel builds but I 
suppose it may surface for different configurations as well. Per 
Andrii's suggestion, I think blacklisting such types during the dump 
would be a safe bet for now.

> 
> I don't know if there is a room for improvement regarding your a) and b)
> points, as I think the added complexity is inherent to cross-building. But
> kernel crashes definitely need to be fixed, as well as the above problem.
> 

If that is the case, I suppose an additional step would be to configure 
the kernel in such a way so that the generated header files result in 
the smallest possible file size, while retaining all structures that we 
require in our eBPF programs.

The kernel crash seems to elude our attempts to reproduce it; it occurs 
only on a target 32-bit platform device, but a reproducible program does 
not crash the kernel in a QEMU ARM environment. When we investigate this 
further we will definitely share our results.

> Thanks,
> Jean
> 

Thanks,
-- 
Jakov Petrina



More information about the linux-arm-kernel mailing list