GCC ni bayi pẹlu ẹhin ẹhin fun akopọ si eBPF

To wa ninu GCC alakojo suite gba koodu fun iṣakojọpọ awọn eto fun onitumọ bytecode ti a ṣe sinu ekuro Linux EBPF. Ṣeun si lilo akopọ JIT, a tumọ bytecode kernel lori fifo sinu awọn ilana ẹrọ ati ṣiṣe pẹlu iṣẹ ti koodu abinibi. Awọn abulẹ pẹlu atilẹyin eBPF gba si ẹka lati eyiti GCC 10 idasilẹ ti wa ni idagbasoke.

Ni afikun si ẹhin ẹhin fun iran bytecode, GCC pẹlu ibudo libgcc kan fun eBPF ati awọn irinṣẹ fun ṣiṣẹda awọn faili ELF ti o jẹ ki o ṣee ṣe lati ṣiṣẹ koodu ni ẹrọ foju eBPF nipa lilo awọn agberu ti a pese ekuro. Awọn abulẹ lati ṣe atilẹyin eBPF ni GCC ni a pese sile nipasẹ awọn onimọ-ẹrọ lati Oracle, ti wọn ti ni tẹlẹ pese atilẹyin eBPF ni GNU binutils. Simulator ati awọn abulẹ fun GDB tun wa ni idagbasoke, eyiti yoo gba ọ laaye lati ṣatunṣe awọn eto eBPF laisi ikojọpọ wọn sinu ekuro.

Awọn eto fun eBPF le jẹ asọye ni ipin kan ti ede C, ti o ṣajọ ati ti kojọpọ sinu ekuro. Ṣaaju ipaniyan, onitumọ eBPF ṣayẹwo bytecode fun lilo awọn ilana idasilẹ ati fi awọn ofin kan lelẹ lori koodu naa (fun apẹẹrẹ, ko si awọn lupu).
Ni ibẹrẹ, awọn irinṣẹ orisun LLVM ni a lo lati ṣajọ eBPF lori Lainos. Atilẹyin eBPF ni GCC jẹ ohun ti o nifẹ nitori pe o fun ọ laaye lati lo ohun elo irinṣẹ kan lati kọ ekuro Linux ati awọn eto eBPF, laisi fifi awọn igbẹkẹle afikun sii.

Ni irisi awọn eto eBPF, o le ṣẹda awọn oluṣakoso iṣẹ nẹtiwọọki, àlẹmọ ijabọ, ṣakoso bandiwidi, awọn eto atẹle, awọn ipe eto idilọwọ, iraye si iṣakoso, ka iye igbohunsafẹfẹ ati akoko awọn iṣẹ, ati ṣe wiwa kakiri nipa lilo kprobes/uprobes/awọn aaye itọpa.

orisun: opennet.ru

Fi ọrọìwòye kun