До складу набору компіляторів GCC
Крім бекенда для генерації байткоду в GCC включений порт libgcc для eBPF і засоби для формування ELF-файлів, що дають можливість виконати код у віртуальній машині eBPF з використанням завантажувачів, що надаються ядром. Патчі для підтримки eBPF у GCC підготовлені інженерами з компанії Oracle, які до цього вже
Програми для eBPF можуть визначатися на підмножині мови C, компілюватися та завантажуватись у ядро. Перед виконанням інтерпретатор eBPF перевіряє байткод щодо застосування дозволених інструкцій і накладає певні правила на код (наприклад, відсутність циклів).
Спочатку компіляції eBPF в Linux застосовувався інструментарій з урахуванням LLVM. Підтримка eBPF у GCC представляє інтерес тим, що дозволяє використовувати один інструментарій для збирання ядра Linux та eBPF-програм, без встановлення додаткових залежностей.
У формі програм eBPF можна створювати обробники мережевих операцій, фільтрувати трафік, керувати пропускною спроможністю, відстежувати роботу систем, перехоплювати системні виклики, контролювати доступ, підраховувати частоту та час виконання операцій, виконувати трасування за допомогою kprobes/uprobes/tracepoints.
Джерело: opennet.ru