Incluido en el conjunto de compiladores GCC
Además de un backend para la generación de códigos de bytes, GCC incluye un puerto libgcc para eBPF y herramientas para generar archivos ELF que permiten ejecutar código en la máquina virtual eBPF utilizando cargadores proporcionados por el kernel. Los parches para soportar eBPF en GCC fueron preparados por ingenieros de Oracle, que ya habían
Los programas para eBPF pueden definirse en un subconjunto del lenguaje C, compilarse y cargarse en el kernel. Antes de la ejecución, el intérprete eBPF verifica el código de bytes para determinar el uso de instrucciones permitidas e impone ciertas reglas al código (por ejemplo, sin bucles).
Inicialmente, se utilizaron herramientas basadas en LLVM para compilar eBPF en Linux. El soporte de eBPF en GCC es interesante porque le permite usar un conjunto de herramientas para construir el kernel de Linux y los programas eBPF, sin instalar dependencias adicionales.
En forma de programas eBPF, puede crear controladores de operaciones de red, filtrar el tráfico, administrar el ancho de banda, monitorear sistemas, interceptar llamadas al sistema, controlar el acceso, contar la frecuencia y el tiempo de las operaciones y realizar seguimiento utilizando kprobes/uprobes/tracepoints.
Fuente: opennet.ru