Supporting BPF in the GNU Toolchain
summary
GNU toolchain now produces usable BPF object files: upstreamed support in GCC, binutils (assembler/disassembler/linker), GDB and a GNU simulator; Debian and Oracle packages exist and the triplet is bpf-unknown-none. Port handles big‑ and little‑endian instruction layouts, ten 64‑bit regs plus a read‑only frame pointer, 128‑bit lddw immediates, and verifier constraints (512‑byte stack limit, max five stack args). Simulator currently implements single‑step and a printk helper; BTF and CO‑RE support are work in progress.
AI-written summary · about
chapters (26)
- 0:00Start
- 0:05Emperor Penguin Sponsors
- 1:34Contents
- 6:44Hand-written BPF
- 9:11Compiled BPF
- 11:02eBPF ISA - Overview
- 13:24eBPF - Registers
- 13:43eBPF - Instruction Formats
- 14:58eBPF - Instructions
- 23:08The Port - Overview
- 24:25The port - GNU triplet
- 25:02The port - ELF support
- 25:56The port - assembler/disassembler
- 26:50the port - linker
- 28:00the port - binary utilities
- 28:12the port - GDB and simulator
- 30:25the port - GCC
- 31:38Compiling BPF - Endianness
- 33:56Compiling BPF - Automatic stack allocation
- 36:21Compiling BPF - Disjoint stacks
- 37:14Compiling BPF - Stack size limit
- 37:30Compiling BPF - Signed division
- 38:05Compiling BPF - No zero register
- 40:08BPF Compile-Once, Run-Everywhere
- 41:04BPF GNU toolchain use case: DTrace
- 41:51Current and future work
related talks
47mBPF: The Status of BTF, producers, consumers.
26mGCC BPF and Linux kernel
36mThe journey of BPF from restricted C language towards extended and safe C.
24mCompiling for verified targets BPF
37mThe BTF file format, more than just debugging
21mPortable BPF with CO:RE
34mWhat's new in the BPF world?
15mTowards a standardized eBPF ISA - Conformance testing
