Supporting BPF in the GNU Toolchain
Pia Andrews Conservatory | Sun 24 Jan 11:40 a.m.–12:25 p.m.
Presented by
-
Jose E. Marchesi
http://www.jemarch.net
Jose E. Marchesi is a GNU hacker and maintainer.
Currently employed by Oracle as the Tech Lead of their Toolchain/Compilers team.
Jose E. Marchesi
http://www.jemarch.net
Abstract
BPF (previously known as eBPF) is a virtual machine running within the Linux kernel; initially intended for user-level packet capture and filtering, BPF has since been generalized to also serve as a general-purpose infrastructure for non-networking purposes. As its use spreads among more and more kernel subsystems, the length and complexity of BPF programs are also increasing. That, combined with the fact that the kernel BPF verifier is getting more and more smart, allowing more sophisticated programs to run in the kernel, results in people wanting to write BPF programs in high-level languages such as C.
For many years a LLVM port was the only option for BPF developers who wanted to write C BPF programs. A year ago Oracle undertook the task to add a BPF port to the GNU Toolchain. At the present time we have upstreamed support for BPF to GCC, the binutils (assembler, disassembler, linker) the GDB debugger and the GNU simulator. This is work in progress, and we are currently in the task of adding support for BTF and CO-RE (Compile once, run everywhere.)
In this talk we will describe the current status of the port and quickly show how it can be used to do BPF development.
BPF (previously known as eBPF) is a virtual machine running within the Linux kernel; initially intended for user-level packet capture and filtering, BPF has since been generalized to also serve as a general-purpose infrastructure for non-networking purposes. As its use spreads among more and more kernel subsystems, the length and complexity of BPF programs are also increasing. That, combined with the fact that the kernel BPF verifier is getting more and more smart, allowing more sophisticated programs to run in the kernel, results in people wanting to write BPF programs in high-level languages such as C. For many years a LLVM port was the only option for BPF developers who wanted to write C BPF programs. A year ago Oracle undertook the task to add a BPF port to the GNU Toolchain. At the present time we have upstreamed support for BPF to GCC, the binutils (assembler, disassembler, linker) the GDB debugger and the GNU simulator. This is work in progress, and we are currently in the task of adding support for BTF and CO-RE (Compile once, run everywhere.) In this talk we will describe the current status of the port and quickly show how it can be used to do BPF development.