Re: [LLVMdev] Cc llvmdev: Re: llvm bpf debug info. Re: [RFC PATCH v4 3/3] bpf: Introduce function for outputing data to perf event

From: Wangnan (F)
Date: Wed Aug 05 2015 - 04:35:15 EST




On 2015/8/5 15:11, Alexei Starovoitov wrote:
On 8/4/15 11:51 PM, Wangnan (F) wrote:
void bpf_store_half(void *skb, int off, int val)
asm("llvm.bpf.store.half");
int func()
{
bpf_store_half(0, 0, 0);
return 0;
}

Compiled with:

$ clang -g -target bpf -O2 -S -c test.c

And get this:

.text
.globl func
.align 8
func: # @func
# BB#0: # %entry
mov r1, 0
mov r2, 0
mov r3, 0
call llvm.bpf.store.half

it didn't work because number and types of args were incompatible.
Every samples/bpf/sockex[0-9]_kern.c is using llvm.bpf.load.* intrinsics.


Make it work. Thank you.

It doesn't work for me at first since in my llvm there's only llvm.bpf.load.*.

I think llvm.bpf.store.* belone to some patches you haven't posted yet?

the typeid changing ids with order is surprising.
I think the assertion in ExtractTypeInfo() is not hard.
Just there were no such use cases. May be we can do something
similar to what LowerIntrinsicCall() does and lower it differently
in the backend.

But in backend can we still get type information? I thought type is
meaningful in frontend only, and backend behaviors is unable to affect
DWARF generation, right?

Thank you.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/