GCC ahora incluye un backend para compilación en eBPF

Incluido en el conjunto de compiladores GCC aceptado código para compilar programas para el intérprete de código de bytes integrado en el kernel de Linux eGMP. Gracias al uso de la compilación JIT, el código de bytes del kernel se traduce sobre la marcha en instrucciones de máquina y se ejecuta con el rendimiento del código nativo. Parches con soporte eBPF aceptado a la rama desde la cual se desarrolla la versión GCC 10.

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 previsto Soporte de eBPF en binutils de GNU. También se están desarrollando un simulador y parches para GDB, que le permitirán depurar programas eBPF sin cargarlos en el kernel.

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

Añadir un comentario