<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">