https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121419
Bug ID: 121419
Summary: __clzdi2 emitted when building udev-hid-bpf
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: sjames at gcc dot gnu.org
Target Milestone: ---
Created attachment 62062
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=62062&action=edit
0009-WALTOP__Batteryless-Tablet.bpf.unstripped.i
When building https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/ with `meson
setup build -Dbpf-compiler=gcc && ninja -C build`, I get:
```
[...]
[1/7] /usr/bin/bpftool gen object src/bpf/0009-WALTOP__Batteryless-Tablet.bpf.o
src/bpf/0009-WALTOP__Batteryless-Tablet.bpf.unstripped.o
FAILED: [code=254] src/bpf/0009-WALTOP__Batteryless-Tablet.bpf.o
/usr/bin/bpftool gen object src/bpf/0009-WALTOP__Batteryless-Tablet.bpf.o
src/bpf/0009-WALTOP__Batteryless-Tablet.bpf.unstripped.o
libbpf: failed to find BTF info for global/extern symbol '__clzdi2'
Error: failed to link
'src/bpf/0009-WALTOP__Batteryless-Tablet.bpf.unstripped.o': No such file or
directory (2)
[...]
```
Running it manually:
```
$ /usr/bin/bpf-unknown-none-gcc -std=gnu11 -fno-stack-protector -fno-ssa-phiopt
-ffreestanding -O2 -mcpu=v3 -mco-re -gbtf -c -D__x86_64__ -mlittle-endian -I.
-isystem /usr/include/x86_64-pc-linux-gnu -idirafter /usr/include
../src/bpf/testing/0010-WALTOP__Batteryless-Tablet.bpf.c -o
src/bpf/0009-WALTOP__Batteryless-Tablet.bpf.unstripped.o
-I/home/sam/git/udev-hid-bpf/src/bpf -I/home/sam/git/udev-hid-bpf/src/bpf
-DHID_BPF_TRACING -save-temps
$ /usr/bin/bpftool gen object src/bpf/0009-WALTOP__Batteryless-Tablet.bpf.o
src/bpf/0009-WALTOP__Batteryless-Tablet.bpf.unstripped.o
libbpf: failed to find BTF info for global/extern symbol '__clzdi2'
Error: failed to link
'src/bpf/0009-WALTOP__Batteryless-Tablet.bpf.unstripped.o': No such file or
directory (2)
$ nm src/bpf/0009-WALTOP__Batteryless-Tablet.bpf.unstripped.o | grep __clzdi2
U __clzdi2
```
If I build it with Clang, there's no such reference emitted:
```
$ clang -std=gnu11 -fno-stack-protector -ffreestanding -O2 --target=bpf -c
-D__x86_64__ -mlittle-endian -I. -isystem /usr/include/x86_64-pc-linux-gnu
-idirafter /usr/include
../src/bpf/testing/0010-WALTOP__Batteryless-Tablet.bpf.c -o
src/bpf/0009-WALTOP__Batteryless-Tablet.bpf.unstripped.o
-I/home/sam/git/udev-hid-bpf/src/bpf -I/home/sam/git/udev-hid-bpf/src/bpf
-DHID_BPF_TRACING -g
$ /usr/bin/bpftool gen object src/bpf/0009-WALTOP__Batteryless-Tablet.bpf.o
src/bpf/0009-WALTOP__Batteryless-Tablet.bpf.unstripped.o
$ nm src/bpf/0009-WALTOP__Batteryless-Tablet.bpf.unstripped.o | grep __clzdi2
```