https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112654

            Bug ID: 112654
           Summary: bpf: bpf program load failure
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: brianwitte at mailfence dot com
  Target Milestone: ---

This branch has of my bpf application can reproduce error.

  git clone -b gcc-bpf-backend-load-failure_2023-11-21
g...@git.sr.ht:~brianwitte/waldo-80211

  ./scripts/fetch_libraries.sh
  make
  make gcc-bpf # or make clang to compare
  sudo ./waldo_gcc-bpf

Toolchain commit hashes:
  $ cat current_working_toolchain/config 
  GCC_COMMIT_HASH=bc274b8d677212fbfc317d379acb02e0eef696a0
  BINUTILS_COMMIT_HASH=74affa1bc070ff0530b2a1b92d8d9fbcae6024ec


libbpf: prog 'kprobe_ieee80211_request_scan': -- BEGIN PROG LOAD LOG --
0: R1=ctx(off=0,imm=0) R10=fp0
0: (79) r0 = *(u64 *)(r1 +112)        ; R0_w=scalar() R1=ctx(off=0,imm=0)
1: (15) if r0 == 0x0 goto pc+38       ; R0_w=scalar()
2: (b7) r2 = 42                       ; R2_w=42
3: (18) r1 = 0xffff8cce3d293aaa       ;
R1_w=map_value(off=410,ks=4,vs=568,imm=0)
5: (62) *(u32 *)(r10 -12) = 15170     ; R10=fp0 fp-16=mmmm????
6: (bf) r3 = r10                      ; R3_w=fp0 R10=fp0
7: (07) r3 += -12                     ; R3_w=fp-12
8: (85) call bpf_trace_printk#6       ; R0=scalar()
9: (85) call bpf_ktime_get_ns#5       ; R0_w=scalar()
10: (b7) r4 = 0                       ; R4_w=0
11: (7b) *(u64 *)(r10 -8) = r0        ; R0_w=scalar() R10=fp0 fp-8_w=mmmmmmmm
12: (bf) r3 = r10                     ; R3_w=fp0 R10=fp0
13: (bf) r2 = r10                     ; R2_w=fp0 R10=fp0
14: (07) r3 += -8                     ; R3_w=fp-8
15: (07) r2 += -12                    ; R2_w=fp-12
16: (18) r1 = 0xffff8cce3d290c00      ; R1_w=map_ptr(off=0,ks=4,vs=8,imm=0)
18: (85) call bpf_map_update_elem#2   ; R0=scalar()
19: (bf) r4 = r0
BPF_MOV uses reserved fields
processed 18 insns (limit 1000000) max_states_per_insn 0 total_states 2
peak_states 2 mark_read 1
-- END PROG LOAD LOG --

bkz at debian in ~/src/waldo-80211 (gcc-bpf-backend-load-failure_2023-11-21●●)
$ $HOME/root-bpf/bin/bpf-unknown-none-objdump -d build_output/waldo.gcc.bpf.o

build_output/waldo.gcc.bpf.o:     file format elf64-bpfle


Disassembly of section kprobe/ieee80211_register_hw:

0000000000000000 <kprobe_ieee80211_register_hw>:
   0:   85 00 00 00 0e 00 00 00         call 14
   8:   b7 02 00 00 10 00 00 00         mov %r2,16
  10:   bf 06 00 00 00 00 00 00         mov %r6,%r0
  18:   bf a1 00 00 00 00 00 00         mov %r1,%r10
  20:   07 01 00 00 f0 ff ff ff         add %r1,-16
  28:   85 00 00 00 10 00 00 00         call 16
  30:   18 05 00 00 00 00 00 00         lddw %r5,0
  38:   00 00 00 00 00 00 00 00
  40:   bf a4 00 00 00 00 00 00         mov %r4,%r10
  48:   bf 63 00 00 00 00 00 00         mov %r3,%r6
  50:   07 04 00 00 f0 ff ff ff         add %r4,-16
  58:   77 03 00 00 20 00 00 00         rsh %r3,32
  60:   b7 02 00 00 22 00 00 00         mov %r2,34
  68:   18 01 00 00 e9 01 00 00         lddw %r1,489
  70:   00 00 00 00 00 00 00 00
  78:   85 00 00 00 06 00 00 00         call 6
  80:   b7 00 00 00 00 00 00 00         mov %r0,0
  88:   95 00 00 00 00 00 00 00         exit

Disassembly of section kprobe/ieee80211_unregister_hw:

0000000000000000 <kprobe_ieee80211_unregister_hw>:
   0:   85 00 00 00 0e 00 00 00         call 14
   8:   b7 02 00 00 10 00 00 00         mov %r2,16
  10:   bf 06 00 00 00 00 00 00         mov %r6,%r0
  18:   bf a1 00 00 00 00 00 00         mov %r1,%r10
  20:   07 01 00 00 f0 ff ff ff         add %r1,-16
  28:   85 00 00 00 10 00 00 00         call 16
  30:   18 05 00 00 16 00 00 00         lddw %r5,22
  38:   00 00 00 00 00 00 00 00
  40:   bf a4 00 00 00 00 00 00         mov %r4,%r10
  48:   bf 63 00 00 00 00 00 00         mov %r3,%r6
  50:   07 04 00 00 f0 ff ff ff         add %r4,-16
  58:   77 03 00 00 20 00 00 00         rsh %r3,32
  60:   b7 02 00 00 22 00 00 00         mov %r2,34
  68:   18 01 00 00 e9 01 00 00         lddw %r1,489
  70:   00 00 00 00 00 00 00 00
  78:   85 00 00 00 06 00 00 00         call 6
  80:   b7 00 00 00 00 00 00 00         mov %r0,0
  88:   95 00 00 00 00 00 00 00         exit

Disassembly of section kprobe/register_netdev:

0000000000000000 <kprobe_register_netdev>:
   0:   79 17 70 00 00 00 00 00         ldxdw %r7,[%r1+112]
   8:   85 00 00 00 0e 00 00 00         call 14
  10:   c7 00 00 00 20 00 00 00         arsh %r0,32
  18:   bf a1 00 00 00 00 00 00         mov %r1,%r10
  20:   bf 06 00 00 00 00 00 00         mov %r6,%r0
  28:   b7 02 00 00 10 00 00 00         mov %r2,16
  30:   07 01 00 00 d0 ff ff ff         add %r1,-48
  38:   85 00 00 00 10 00 00 00         call 16
  40:   15 07 11 00 00 00 00 00         jeq %r7,0,17
  48:   bf a0 00 00 00 00 00 00         mov %r0,%r10
  50:   18 01 00 00 2e 00 00 00         lddw %r1,46
  58:   00 00 00 00 00 00 00 00
  60:   07 00 00 00 d0 ff ff ff         add %r0,-48
  68:   7b 1a f0 ff 00 00 00 00         stxdw [%r10-16],%r1
  70:   7b 6a e0 ff 00 00 00 00         stxdw [%r10-32],%r6
  78:   7b 0a e8 ff 00 00 00 00         stxdw [%r10-24],%r0
  80:   7b 7a f8 ff 00 00 00 00         stxdw [%r10-8],%r7
  88:   b7 04 00 00 20 00 00 00         mov %r4,32
  90:   bf a3 00 00 00 00 00 00         mov %r3,%r10
  98:   b7 02 00 00 2d 00 00 00         mov %r2,45
  a0:   07 03 00 00 e0 ff ff ff         add %r3,-32
  a8:   18 01 00 00 0b 02 00 00         lddw %r1,523
  b0:   00 00 00 00 00 00 00 00
  b8:   85 00 00 00 b1 00 00 00         call 177
  c0:   b7 00 00 00 00 00 00 00         mov %r0,0
  c8:   95 00 00 00 00 00 00 00         exit
  d0:   18 05 00 00 2e 00 00 00         lddw %r5,46
  d8:   00 00 00 00 00 00 00 00
  e0:   bf a4 00 00 00 00 00 00         mov %r4,%r10
  e8:   bf 63 00 00 00 00 00 00         mov %r3,%r6
  f0:   07 04 00 00 d0 ff ff ff         add %r4,-48
  f8:   b7 02 00 00 22 00 00 00         mov %r2,34
 100:   18 01 00 00 e9 01 00 00         lddw %r1,489
 108:   00 00 00 00 00 00 00 00
 110:   85 00 00 00 06 00 00 00         call 6
 118:   b7 00 00 00 00 00 00 00         mov %r0,0
 120:   95 00 00 00 00 00 00 00         exit

Disassembly of section kprobe/unregister_netdev:

0000000000000000 <kprobe_unregister_netdev>:
   0:   79 17 70 00 00 00 00 00         ldxdw %r7,[%r1+112]
   8:   85 00 00 00 0e 00 00 00         call 14
  10:   c7 00 00 00 20 00 00 00         arsh %r0,32
  18:   bf a1 00 00 00 00 00 00         mov %r1,%r10
  20:   bf 06 00 00 00 00 00 00         mov %r6,%r0
  28:   b7 02 00 00 10 00 00 00         mov %r2,16
  30:   07 01 00 00 d0 ff ff ff         add %r1,-48
  38:   85 00 00 00 10 00 00 00         call 16
  40:   15 07 11 00 00 00 00 00         jeq %r7,0,17
  48:   bf a0 00 00 00 00 00 00         mov %r0,%r10
  50:   18 01 00 00 3e 00 00 00         lddw %r1,62
  58:   00 00 00 00 00 00 00 00
  60:   07 00 00 00 d0 ff ff ff         add %r0,-48
  68:   7b 1a f0 ff 00 00 00 00         stxdw [%r10-16],%r1
  70:   7b 6a e0 ff 00 00 00 00         stxdw [%r10-32],%r6
  78:   7b 0a e8 ff 00 00 00 00         stxdw [%r10-24],%r0
  80:   7b 7a f8 ff 00 00 00 00         stxdw [%r10-8],%r7
  88:   b7 04 00 00 20 00 00 00         mov %r4,32
  90:   bf a3 00 00 00 00 00 00         mov %r3,%r10
  98:   b7 02 00 00 2d 00 00 00         mov %r2,45
  a0:   07 03 00 00 e0 ff ff ff         add %r3,-32
  a8:   18 01 00 00 0b 02 00 00         lddw %r1,523
  b0:   00 00 00 00 00 00 00 00
  b8:   85 00 00 00 b1 00 00 00         call 177
  c0:   b7 00 00 00 00 00 00 00         mov %r0,0
  c8:   95 00 00 00 00 00 00 00         exit
  d0:   18 05 00 00 3e 00 00 00         lddw %r5,62
  d8:   00 00 00 00 00 00 00 00
  e0:   bf a4 00 00 00 00 00 00         mov %r4,%r10
  e8:   bf 63 00 00 00 00 00 00         mov %r3,%r6
  f0:   07 04 00 00 d0 ff ff ff         add %r4,-48
  f8:   b7 02 00 00 22 00 00 00         mov %r2,34
 100:   18 01 00 00 e9 01 00 00         lddw %r1,489
 108:   00 00 00 00 00 00 00 00
 110:   85 00 00 00 06 00 00 00         call 6
 118:   b7 00 00 00 00 00 00 00         mov %r0,0
 120:   95 00 00 00 00 00 00 00         exit

Disassembly of section kprobe/ieee80211_request_scan:

0000000000000000 <kprobe_ieee80211_request_scan>:
   0:   79 10 70 00 00 00 00 00         ldxdw %r0,[%r1+112]
   8:   15 00 26 00 00 00 00 00         jeq %r0,0,38
  10:   b7 02 00 00 2a 00 00 00         mov %r2,42
  18:   18 01 00 00 9a 01 00 00         lddw %r1,410
  20:   00 00 00 00 00 00 00 00
  28:   62 0a f4 ff 42 3b 00 00         stw [%r10-12],15170
  30:   bf a3 00 00 00 00 00 00         mov %r3,%r10
  38:   07 03 00 00 f4 ff ff ff         add %r3,-12
  40:   85 00 00 00 06 00 00 00         call 6
  48:   85 00 00 00 05 00 00 00         call 5
  50:   b7 04 00 00 00 00 00 00         mov %r4,0
  58:   7b 0a f8 ff 00 00 00 00         stxdw [%r10-8],%r0
  60:   bf a3 00 00 00 00 00 00         mov %r3,%r10
  68:   bf a2 00 00 00 00 00 00         mov %r2,%r10
  70:   07 03 00 00 f8 ff ff ff         add %r3,-8
  78:   07 02 00 00 f4 ff ff ff         add %r2,-12
  80:   18 01 00 00 00 00 00 00         lddw %r1,0
  88:   00 00 00 00 00 00 00 00
  90:   85 00 00 00 02 00 00 00         call 2
  98:   bf 04 20 00 00 00 00 00         movs %r4,%r0,32
  a0:   56 00 0d 00 00 00 00 00         jne32 %r0,0,13
  a8:   bf a2 00 00 00 00 00 00         mov %r2,%r10
  b0:   18 01 00 00 00 00 00 00         lddw %r1,0
  b8:   00 00 00 00 00 00 00 00
  c0:   07 02 00 00 f4 ff ff ff         add %r2,-12
  c8:   85 00 00 00 01 00 00 00         call 1
  d0:   61 a3 f4 ff 00 00 00 00         ldxw %r3,[%r10-12]
  d8:   bf 04 00 00 00 00 00 00         mov %r4,%r0
  e0:   b7 02 00 00 48 00 00 00         mov %r2,72
  e8:   18 01 00 00 0e 01 00 00         lddw %r1,270
  f0:   00 00 00 00 00 00 00 00
  f8:   85 00 00 00 06 00 00 00         call 6
 100:   b7 00 00 00 00 00 00 00         mov %r0,0
 108:   95 00 00 00 00 00 00 00         exit
 110:   61 a3 f4 ff 00 00 00 00         ldxw %r3,[%r10-12]
 118:   b7 02 00 00 44 00 00 00         mov %r2,68
 120:   18 01 00 00 56 01 00 00         lddw %r1,342
 128:   00 00 00 00 00 00 00 00
 130:   85 00 00 00 06 00 00 00         call 6
 138:   05 00 ed ff 00 00 00 00         ja -19
 140:   b7 02 00 00 25 00 00 00         mov %r2,37
 148:   18 01 00 00 c4 01 00 00         lddw %r1,452
 150:   00 00 00 00 00 00 00 00
 158:   85 00 00 00 06 00 00 00         call 6
 160:   b7 00 00 00 00 00 00 00         mov %r0,0
 168:   95 00 00 00 00 00 00 00         exit

Disassembly of section kprobe/ieee80211_scan_completed:

0000000000000000 <kprobe_ieee80211_scan_completed>:
   0:   79 10 70 00 00 00 00 00         ldxdw %r0,[%r1+112]
   8:   15 00 2b 00 00 00 00 00         jeq %r0,0,43
  10:   b7 02 00 00 2c 00 00 00         mov %r2,44
  18:   b7 03 00 00 42 3b 00 00         mov %r3,15170
  20:   18 01 00 00 bb 00 00 00         lddw %r1,187
  28:   00 00 00 00 00 00 00 00
  30:   62 0a fc ff 42 3b 00 00         stw [%r10-4],15170
  38:   85 00 00 00 06 00 00 00         call 6
  40:   18 01 00 00 00 00 00 00         lddw %r1,0
  48:   00 00 00 00 00 00 00 00
  50:   bf a2 00 00 00 00 00 00         mov %r2,%r10
  58:   07 02 00 00 fc ff ff ff         add %r2,-4
  60:   85 00 00 00 01 00 00 00         call 1
  68:   bf 06 00 00 00 00 00 00         mov %r6,%r0
  70:   15 00 17 00 00 00 00 00         jeq %r0,0,23
  78:   85 00 00 00 05 00 00 00         call 5
  80:   79 63 00 00 00 00 00 00         ldxdw %r3,[%r6+0]
  88:   1f 30 00 00 00 00 00 00         sub %r0,%r3
  90:   61 a4 fc ff 00 00 00 00         ldxw %r4,[%r10-4]
  98:   bf 03 00 00 00 00 00 00         mov %r3,%r0
  a0:   b7 02 00 00 34 00 00 00         mov %r2,52
  a8:   18 01 00 00 87 00 00 00         lddw %r1,135
  b0:   00 00 00 00 00 00 00 00
  b8:   85 00 00 00 06 00 00 00         call 6
  c0:   bf a2 00 00 00 00 00 00         mov %r2,%r10
  c8:   18 01 00 00 00 00 00 00         lddw %r1,0
  d0:   00 00 00 00 00 00 00 00
  d8:   07 02 00 00 fc ff ff ff         add %r2,-4
  e0:   85 00 00 00 03 00 00 00         call 3
  e8:   bf 04 20 00 00 00 00 00         movs %r4,%r0,32
  f0:   16 00 05 00 00 00 00 00         jeq32 %r0,0,5
  f8:   61 a3 fc ff 00 00 00 00         ldxw %r3,[%r10-4]
 100:   b7 02 00 00 46 00 00 00         mov %r2,70
 108:   18 01 00 00 41 00 00 00         lddw %r1,65
 110:   00 00 00 00 00 00 00 00
 118:   85 00 00 00 06 00 00 00         call 6
 120:   b7 00 00 00 00 00 00 00         mov %r0,0
 128:   95 00 00 00 00 00 00 00         exit
 130:   61 a3 fc ff 00 00 00 00         ldxw %r3,[%r10-4]
 138:   b7 02 00 00 41 00 00 00         mov %r2,65
 140:   18 01 00 00 00 00 00 00         lddw %r1,0
 148:   00 00 00 00 00 00 00 00
 150:   85 00 00 00 06 00 00 00         call 6
 158:   b7 00 00 00 00 00 00 00         mov %r0,0
 160:   95 00 00 00 00 00 00 00         exit
 168:   b7 02 00 00 27 00 00 00         mov %r2,39
 170:   18 01 00 00 e7 00 00 00         lddw %r1,231
 178:   00 00 00 00 00 00 00 00
 180:   85 00 00 00 06 00 00 00         call 6
 188:   b7 00 00 00 00 00 00 00         mov %r0,0
 190:   95 00 00 00 00 00 00 00         exit

Disassembly of section kretprobe/ieee80211_get_channel_khz:

0000000000000000 <kretprobe_ieee80211_get_channel_khz>:
   0:   b7 00 00 00 00 00 00 00         mov %r0,0
   8:   95 00 00 00 00 00 00 00         exit


I have also attached .s file.

Reply via email to