GCC nyní obsahuje backend pro kompilaci do eBPF

Zahrnuto v sadě kompilátoru GCC přijato kód pro kompilaci programů pro interpret bytecode vestavěný do jádra Linuxu eGMP. Díky použití kompilace JIT je bajtkód jádra za běhu překládán do strojových instrukcí a vykonáván s výkonem nativního kódu. Záplaty s podporou eBPF přijato do větve, ze které je vyvíjeno vydání GCC 10.

Kromě backendu pro generování bajtkódu obsahuje GCC port libgcc pro eBPF a nástroje pro generování souborů ELF, které umožňují spouštět kód na virtuálním stroji eBPF pomocí zavaděčů poskytovaných jádrem. Záplaty pro podporu eBPF v GCC připravili inženýři z Oracle, kteří to již udělali pokud Podpora eBPF v GNU binutils. Ve vývoji je také simulátor a záplaty pro GDB, které vám umožní ladit programy eBPF bez jejich načítání do jádra.

Programy pro eBPF lze definovat v podmnožině jazyka C, zkompilovat a načíst do jádra. Interpret eBPF před provedením zkontroluje bajtový kód pro použití povolených instrukcí a uloží kódu určitá pravidla (například žádné smyčky).
Zpočátku byly ke kompilaci eBPF na Linuxu použity nástroje založené na LLVM. Podpora eBPF v GCC je zajímavá, protože vám umožňuje používat jednu sadu nástrojů k sestavení jádra Linuxu a programů eBPF bez instalace dalších závislostí.

Ve formě programů eBPF můžete vytvářet ovladače síťových operací, filtrovat provoz, spravovat šířku pásma, monitorovat systémy, zachycovat systémová volání, řídit přístup, počítat frekvenci a čas operací a provádět trasování pomocí kprobes/uprobes/tracepointů.

Zdroj: opennet.ru

Přidat komentář