GCC inclut désormais un backend pour la compilation vers eBPF

Inclus dans la suite du compilateur GCC adopté par code pour compiler des programmes pour l'interpréteur de bytecode intégré au noyau Linux eGMP. Grâce à l'utilisation de la compilation JIT, le bytecode du noyau est traduit à la volée en instructions machine et exécuté avec les performances du code natif. Correctifs avec prise en charge eBPF accepté à la branche à partir de laquelle la version GCC 10 est développée.

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à à condition de Prise en charge d'eBPF dans GNU binutils. Un simulateur et des correctifs pour GDB sont également en développement, ce qui vous permettra de déboguer les programmes eBPF sans les charger dans le noyau.

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

Ajouter un commentaire