Inclus dans la suite du compilateur GCC
En plus d'un backend pour la génération de bytecode, GCC comprend un port libgcc pour eBPF et des outils de génération de fichiers ELF qui permettent d'exécuter du code dans la machine virtuelle eBPF à l'aide des chargeurs fournis par le noyau. Les correctifs destinés à prendre en charge eBPF dans GCC ont été préparés par des ingénieurs d'Oracle, qui avaient déjà
Les programmes pour eBPF peuvent être définis dans un sous-ensemble du langage C, compilés et chargés dans le noyau. Avant l'exécution, l'interpréteur eBPF vérifie le bytecode pour l'utilisation des instructions autorisées et impose certaines règles au code (par exemple, pas de boucles).
Initialement, des outils basés sur LLVM étaient utilisés pour compiler eBPF sous Linux. La prise en charge d'eBPF dans GCC est intéressante car elle vous permet d'utiliser une seule boîte à outils pour créer le noyau Linux et les programmes eBPF, sans installer de dépendances supplémentaires.
Sous la forme de programmes eBPF, vous pouvez créer des gestionnaires d'opérations réseau, filtrer le trafic, gérer la bande passante, surveiller les systèmes, intercepter les appels système, contrôler l'accès, compter la fréquence et l'heure des opérations et effectuer un traçage à l'aide de kprobes/uprobes/tracepoints.
Source: opennet.ru