GCC kini termasuk bahagian belakang untuk penyusunan kepada eBPF

Termasuk dalam suite pengkompil GCC diterima pakai kod untuk menyusun atur cara untuk penterjemah bytecode yang dibina ke dalam kernel Linux eGMP. Terima kasih kepada penggunaan kompilasi JIT, kod bait kernel diterjemahkan dengan cepat ke dalam arahan mesin dan dilaksanakan dengan prestasi kod asli. Tampalan dengan sokongan eBPF diterima ke cawangan dari mana keluaran GCC 10 dibangunkan.

Selain bahagian belakang untuk penjanaan bytecode, GCC menyertakan port libgcc untuk eBPF dan alatan untuk menjana fail ELF yang memungkinkan untuk melaksanakan kod dalam mesin maya eBPF menggunakan pemuat yang disediakan kernel. Tampalan untuk menyokong eBPF dalam GCC telah disediakan oleh jurutera dari Oracle, yang telah pun melakukannya disediakan sokongan eBPF dalam binutil GNU. Simulator dan patch untuk GDB juga sedang dibangunkan, yang akan membolehkan anda menyahpepijat program eBPF tanpa memuatkannya ke dalam kernel.

Program untuk eBPF boleh ditakrifkan dalam subset bahasa C, disusun dan dimuatkan ke dalam kernel. Sebelum pelaksanaan, jurubahasa eBPF menyemak kod bait untuk penggunaan arahan yang dibenarkan dan mengenakan peraturan tertentu pada kod (contohnya, tiada gelung).
Pada mulanya, alatan berasaskan LLVM digunakan untuk menyusun eBPF pada Linux. Sokongan eBPF dalam GCC adalah menarik kerana ia membolehkan anda menggunakan satu kit alat untuk membina program kernel Linux dan eBPF, tanpa memasang kebergantungan tambahan.

Dalam bentuk program eBPF, anda boleh membuat pengendali operasi rangkaian, menapis trafik, mengurus lebar jalur, memantau sistem, memintas panggilan sistem, mengawal akses, mengira kekerapan dan masa operasi, dan melakukan pengesanan menggunakan kprobes/uprobes/titik jejak.

Sumber: opennet.ru

Tambah komen