GCC ikozvino inosanganisira backend yekubatanidzwa kune eBPF

Inosanganisirwa muGCC compiler suite kugamuchirwa kodhi yekunyora zvirongwa zveiyo bytecode muturikiri akavakirwa muLinux kernel eGMP. Nekuda kwekushandiswa kweJIT kuunganidzwa, iyo kernel bytecode inoshandurirwa panhunzi kuita mirairo yemuchina uye kuitiswa nekuita kwekodhi kodhi. Zvigamba zvine eBPF rutsigiro zvakagamuchirwa kune bazi iro GCC 10 kuburitswa kunogadzirwa.

Pamusoro peiyo backend yekugadzirwa kwebytecode, GCC inosanganisira libgcc chiteshi che eBPF uye maturusi ekugadzira ELF mafaera anoita kuti zvikwanise kuita kodhi mumushini weBPF chaiwo uchishandisa kernel-yakapihwa maloaders. Mapache ekutsigira eBPF muGCC akagadzirwa nemainjiniya kubva kuOracle, anga atove akapa eBPF rutsigiro muGNU binutils. Simulator uye zvigamba zveGDB zvakare zviri mukusimudzira, izvo zvinokutendera kuti ugadzirise zvirongwa zveBPF usingazviise mukernel.

Zvirongwa zveBPF zvinogona kutsanangurwa mune subset yemutauro weC, inounganidzwa uye kurodha mu kernel. Asati aurayiwa, muturikiri weBPF anotarisa bytecode yekushandiswa kwemirairo inobvumirwa uye anoisa mimwe mitemo pane kodhi (semuenzaniso, hapana zvishwe).
Pakutanga, LLVM-yakavakirwa maturusi akashandiswa kuunganidza eBPF paLinux. eBPF tsigiro muGCC inonakidza nekuti inokutendera iwe kuti ushandise imwe Toolkit kuvaka Linux kernel uye eBPF zvirongwa, pasina kuisa kumwe kutsamira.

Muchimiro chezvirongwa zveBPF, unogona kugadzira network operation handlers, filter traffic, maneja bandwidth, monitor system, intercept system call, control access, kuverenga frequency uye nguva yekushanda, uye kuita tracing uchishandisa kprobes/uprobes/tracepoints.

Source: opennet.ru

Voeg