<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/55062>55062</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[bpf] failed to load program when using inline function
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
lanthora
</td>
</tr>
</table>
<pre>
clang version 13.0.1
linux kernel version 5.17.3
```c
#include "vmlinux.h"
#include <bpf/bpf_helpers.h>
// __noinline will work
static size_t offset()
{
if (bpf_ktime_get_ns() & 0x1)
return 6;
else
return 0;
}
SEC("tracepoint/syscalls/sys_enter_execve")
int tracepoint__syscalls__sys_enter_execve(struct trace_event_raw_sys_enter *ctx)
{
char text[] = "Hello World";
size_t pos = offset();
bpf_printk("%s\n", text + pos);
return 0;
}
char LICENSE[] SEC("license") = "GPL";
```
error message
```txt
R1 type=ctx expected=fp
0: R1=ctx(id=0,off=0,imm=0) R10=fp0
; int tracepoint__syscalls__sys_enter_execve(struct trace_event_raw_sys_enter *ctx)
0: (b7) r1 = 6581362 ; R1_w=inv6581362
; char text[] = "Hello World";
1: (63) *(u32 *)(r10 -8) = r1 ; R1_w=inv6581362 R10=fp0 fp-8_w=inv6581362
2: (18) r1 = 0x6f57206f6c6c6548 ; R1_w=inv8022916924116329800
4: (7b) *(u64 *)(r10 -16) = r1 ; R1_w=inv8022916924116329800 R10=fp0 fp-16_w=inv8022916924116329800
; if (bpf_ktime_get_ns() & 0x1)
5: (85) call bpf_ktime_get_ns#5 ; R0_w=inv(id=0)
; if (bpf_ktime_get_ns() & 0x1)
6: (57) r0 &= 1 ; R0_w=inv(id=0,umax_value=1,var_off=(0x0; 0x1))
7: (87) r0 = -r0 ; R0_w=inv(id=0)
;
8: (57) r0 &= 6 ; R0_w=inv(id=0,umax_value=6,var_off=(0x0; 0x6))
9: (bf) r3 = r10 ; R3_w=fp0 R10=fp0
;
10: (07) r3 += -16 ; R3_w=fp-16
; bpf_printk("%s\n", text + pos);
11: (4f) r3 |= r0
R3 bitwise operator |= on pointer prohibited
```
llvm-objdump -d
```txt
hello.bpf.o: file format elf64-bpf
Disassembly of section tracepoint/syscalls/sys_enter_execve:
0000000000000000 <tracepoint__syscalls__sys_enter_execve>:
0: b7 01 00 00 72 6c 64 00 r1 = 6581362
1: 63 1a f8 ff 00 00 00 00 *(u32 *)(r10 - 8) = r1
2: 18 01 00 00 48 65 6c 6c 00 00 00 00 6f 20 57 6f r1 = 8022916924116329800 ll
4: 7b 1a f0 ff 00 00 00 00 *(u64 *)(r10 - 16) = r1
5: 85 00 00 00 05 00 00 00 call 5
6: 57 00 00 00 01 00 00 00 r0 &= 1
7: 87 00 00 00 00 00 00 00 r0 = -r0
8: 57 00 00 00 06 00 00 00 r0 &= 6
9: bf a3 00 00 00 00 00 00 r3 = r10
10: 07 03 00 00 f0 ff ff ff r3 += -16
11: 4f 03 00 00 00 00 00 00 r3 |= r0
12: 18 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r1 = 0 ll
14: b7 02 00 00 04 00 00 00 r2 = 4
15: 85 00 00 00 06 00 00 00 call 6
16: b7 00 00 00 00 00 00 00 r0 = 0
17: 95 00 00 00 00 00 00 00 exi
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1V12TqjgQ_TX6ktJKAgR48GFG5-5u1a2trbkP-0gBBs2dABYJ6uyv304IAo7Ox91apDRId5_TTeckZPX2dZXLtNqhI2-UqCtEvCVekhnezPCDFFV7Ri-8qbi8GARLEi69zsB9M9ydubumnqhy2W45mlF6LG2Y5R7Gb-976-xQzOg3-E72XB4ABCy9p0l8-g1OlCRVLSoIxtFJSIlOdfPSGSidapEjJf7hiUZ1USiuZzSa0dgFCB_7eLEogFRk4F60KHmy4zqpVGcNdxjCZzI4YhjEDddtUyE284YwXCp-wwYPNuFmnMOPp7XFoLpJc36ARIDhN_Wq8lRK1Q0TXmneJPzM8yM31eppgDEa_JKkd7OjK69I6abNnX3Cj3A3adLTYAlJPuT6fLM4-T5tkOZnPQseZ8EGHs_GPMLfuZQ1-rtu5NbQGpXBlfxQK2s7Kf3IzJT70AD3l64IMxqoWbCu7HBtEQHn0cS58vyorpbx9z_WT3_-eHKkL6WWIueVcpXsc_ntr--THPreHQflTVM3qORKpTt-s9M1lMj-80yQfj1wCA41Rfx84LnmW7gsDp0BMH9Az6QzAF7C3MSQNdTKjURZdqMYDLH17el4j-h_ffiWnZkPoUFviK0SCyLiMYreHIbOM0lOYCSqozMbmH6te4iDZl4382CaR61Hu1EMFw3BaBH1jw64vUtjKB0qDovoJknqIEk0yhafWRGEFLOC5fAJ_OgmTIQpjQmLqU8I82gcYfeMfBc0zEZ5MP8qD8LeJvIhwDQnwj7kYvvlKwIXOPJRYO6avkJvPb1gTBj3LEbNHP8iPHPwQdd-2BiYGhF0-7hLYN2W6Tk5prI1UxEA1se0SbopBmb4bASkh-7Rwz75CzpAL-D3a9ij5LtRdCcr9t-yYnezYuOs4n5KFxbdc033XlaexTZtdkN_3GztlQKHfVj6aOtFbqY1iWu6_xLvF9cC0uuFf8krXNvUHNdnD2VCn4TiqIZtRKpBwp0J7FqseIL-HZp6L8AONPq-_kt5LBd19nPblge02KL3l4C90bclpLWsDUU4CiE5KuqmTDXismD-wmxyRkE2QqVK8TKTr7BmIgWLhtlafXpv4D2Mo-Grw-yqPrliwEarj-UeHHY5wJGFCBME8eAMKWI5AlmD8XSZmHiTwZt5iKSoiFBRuBjdeU_p0UjqJzHpEJNEAyPQaRZYUvkkPisQxSgIzcAxvSWtUk5A_AEkzCxxfIf4G2lHY22fBA2GoFEwijUaW8kNJl5s8IIsBi8yjEdKOXENR4DhhPzEtZO5iWd0B5TdAmUT13jUMQVKvVugFxUae5JRr2EA7T270nfnRGgmzqNW84vB-Rp2KhLO905Lfebsdw1XDUT86byhvYc_cqXW1Z_43euRUeFtj0yTZ1O0dx70NPFRg8TBbT9-FldKN9-uvG3sxelcCy35CrZ3Rs9gh1ekoHRbpGsk63RrxHXXpCU67XmFWiXgtdK9sBVtZSVu3jZytdf6oIzu2Pe6ndD7NlvmdQkXRnndzwKi_QRhhEuhVMuNEAYBZnS-X8Us4ozkJGB-5uEiiLcR9nweZTnhFLjOZZrBG5phCstKxU_IhjBLTLCZixUFQcA-yAElge8vozRgEfwR5SzO85jNfMxLSG1peCzrZjdvVpZS1u4U3JRCaTXcBCkXu4rbwpj4aav3NXiklflN5xZ7Zbn_Cxe96Rw">