Failed to build arm64 bpf samples with LLVM 3.7 on 4.3 kernel
alexei.starovoitov at gmail.com
Tue Nov 10 14:42:06 PST 2015
On Tue, Nov 10, 2015 at 11:25 AM, Shi, Yang <yang.shi at linaro.org> wrote:
> Hi guys,
> I just tried to build arm64 bpf samples on 4.3 kernel, but LLVM complain:
> LLVM ERROR: Inline asm not supported by this streamer because we don't have
> an asm parser for this target
> I took some time to bisect it, then found it is caused by sysreg.h
> There is inline assembly macro defined in sysreg.h:
> " .irp
> " .equ __reg_num_x\\num, \\num\n"
> " .endr\n"
> " .equ __reg_num_xzr, 31\n"
> " .macro mrs_s, rt, sreg\n"
> " .inst 0xd5200000|(\\sreg)|(__reg_num_\\rt)\n"
> " .endm\n"
> " .macro msr_s, sreg, rt\n"
> " .inst 0xd5000000|(\\sreg)|(__reg_num_\\rt)\n"
> " .endm\n"
> sysreg.h was not included by any other arm64 header files in 4.2, but in 4.3
> it is included by futex.h and uaccess.h, which are included by bpf samples
> via skbuff.h.
> But, it sounds LLVM can't recognize it. I'm not familiar with LLVM, so any
> Could it be worked around by some LLVM compile flags?
hmm this used to work. I don't have arm64 setup anymore.
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
More information about the linux-arm-kernel