GCC kini menyertakan backend untuk kompilasi ke eBPF

Termasuk dalam rangkaian kompiler GCC diadopsi kode untuk mengkompilasi program untuk penerjemah bytecode yang dibangun ke dalam kernel Linux eGMP. Berkat penggunaan kompilasi JIT, bytecode kernel diterjemahkan dengan cepat ke dalam instruksi mesin dan dieksekusi dengan kinerja kode asli. Patch dengan dukungan eBPF diterima ke cabang tempat rilis GCC 10 dikembangkan.

Selain backend untuk pembuatan bytecode, GCC menyertakan port libgcc untuk eBPF dan alat untuk menghasilkan file ELF yang memungkinkan eksekusi kode di mesin virtual eBPF menggunakan loader yang disediakan kernel. Patch untuk mendukung eBPF di GCC disiapkan oleh para insinyur dari Oracle, yang telah menyiapkannya asalkan dukungan eBPF di binutils GNU. Simulator dan patch untuk GDB juga sedang dikembangkan, yang memungkinkan Anda melakukan debug program eBPF tanpa memuatnya ke dalam kernel.

Program untuk eBPF dapat didefinisikan dalam subset bahasa C, dikompilasi dan dimuat ke dalam kernel. Sebelum dieksekusi, juru bahasa eBPF memeriksa bytecode untuk penggunaan instruksi yang diizinkan dan menerapkan aturan tertentu pada kode (misalnya, tidak ada loop).
Awalnya, alat berbasis LLVM digunakan untuk mengkompilasi eBPF di Linux. Dukungan eBPF di GCC menarik karena memungkinkan Anda menggunakan satu toolkit untuk membangun kernel Linux dan program eBPF, tanpa menginstal dependensi tambahan.

Dalam bentuk program eBPF, Anda dapat membuat pengendali operasi jaringan, memfilter lalu lintas, mengelola bandwidth, memantau sistem, mencegat panggilan sistem, mengontrol akses, menghitung frekuensi dan waktu operasi, serta melakukan penelusuran menggunakan kprobes/uprobes/tracepoints.

Sumber: opennet.ru

Tambah komentar