GCC include avà un backend per a compilazione à eBPF

Inclusu in a suite di compilatori GCC accettatu codice per a compilazione di prugrammi per l'interprete di bytecode integratu in u kernel Linux eGMP. Grazie à l'usu di a compilazione JIT, u bytecode di u kernel hè traduttu nantu à a mosca in istruzzioni di a macchina è eseguitu cù a prestazione di u codice nativu. Patches cù supportu eBPF accettatu à a branche da quale hè sviluppata a versione GCC 10.

In più di un backend per a generazione di bytecode, GCC include un portu libgcc per eBPF è arnesi per a generazione di fugliali ELF chì facenu pussibule eseguisce codice in a macchina virtuale eBPF utilizendu caricatori furniti da u kernel. Patchs per supportà eBPF in GCC sò stati preparati da ingegneri da Oracle, chì avianu digià furnitu Supportu eBPF in GNU binutils. Un simulatore è patch per GDB sò ancu in sviluppu, chì vi permetterà di debug programmi eBPF senza carricà in u kernel.

I prugrammi per eBPF ponu esse definiti in un subset di a lingua C, compilati è carricati in u kernel. Prima di l'esekzione, l'interprete eBPF verifica u bytecode per l'usu di l'istruzzioni permessi è impone certe regule nantu à u codice (per esempiu, senza loops).
Inizialmente, i strumenti basati in LLVM sò stati utilizati per cumpilà eBPF in Linux. U supportu eBPF in GCC hè interessante perchè vi permette di utilizà un toolkit per custruisce u kernel Linux è i prugrammi eBPF, senza installà dipendenze supplementari.

In a forma di prugrammi eBPF, pudete creà gestori di l'operazione di rete, filtrà u trafficu, gestione a larghezza di banda, monitorà i sistemi, intercepte e chjama di u sistema, cuntrullà l'accessu, cuntà a frequenza è u tempu di l'operazioni, è eseguisce traccia cù kprobes/uprobes/tracepoints.

Source: opennet.ru

Add a comment