Subject: Failed to build arm64 bpf samples with LLVM 3.7 on 4.3 kernel

From: [email-masked] (Shi, Yang)
Date: Tue, 10 Nov 2015 16:53:28 -0800

On 11/10/2015 4:47 PM, Alexei Starovoitov wrote:
> On Tue, Nov 10, 2015 at 03:10:42PM -0800, Shi, Yang wrote:
>>
>>> Try hacking it by adding #define __ASM_SYSREG_H to prevent inclusion
>>> of that file? all those asms are unused anyway.
>>> tracing samples include kernel headers to have exact struct layout.
>>> and #include skbuff.h can be removed from almost all samples.
>>> In-kernel 'struct sk_buff' only used inside tracex1_kern.c
>>
>> The below change works:
>>
>>          clang $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(EXTRA_CFLAGS) \
>> -               -D__KERNEL__ -Wno-unused-value -Wno-pointer-sign \
>> +               -D__KERNEL__ -D__ASM_SYSREG_H -Wno-unused-value
>> -Wno-pointer-sign \
>>                  -O2 -emit-llvm -c $< -o -| $(LLC) -march=bpf -filetype=obj
>> -o $@
>>
>> Is it ok for upstream too?
>
> It's fragile and ugly, but I don't see a cleaner way for arm64,
> so yes, please submit it officially.

Yes, but anyway I could add some comment to explain the workaround. If 
anyone else run into such issue in the future, at least they could know 
how to workaround it.

Thanks,
Yang

> Thanks!