GCC нь одоо eBPF-д эмхэтгэх арын хэсгийг агуулж байна

GCC хөрвүүлэгчийн багцад багтсан болно хүлээн зөвшөөрсөн Линукс цөмд суулгасан байт код тайлбарлагчийн программуудыг эмхэтгэх код eGMP. JIT эмхэтгэлийг ашигласны ачаар цөмийн байт кодыг шууд машины зааварт хөрвүүлж, эх кодын гүйцэтгэлээр гүйцэтгэдэг. eBPF дэмжлэгтэй засварууд хүлээн зөвшөөрсөн GCC 10 хувилбарыг боловсруулсан салбар руу.

GCC нь байт код үүсгэх backend-ээс гадна eBPF-д зориулсан libgcc порт болон цөмөөр хангагдсан дуудагч ашиглан eBPF виртуал машинд код ажиллуулах боломжтой ELF файл үүсгэх хэрэгслүүдийг агуулдаг. GCC дахь eBPF-ийг дэмжих засваруудыг Oracle-ийн инженерүүд бэлтгэсэн бөгөөд аль хэдийн бэлтгэсэн өгсөн GNU binutils дахь eBPF дэмжлэг. GDB-д зориулсан симулятор болон засваруудыг хөгжүүлж байгаа бөгөөд энэ нь eBPF програмуудыг цөмд ачаалахгүйгээр дибаг хийх боломжийг танд олгоно.

eBPF-д зориулсан программуудыг Си хэлний дэд бүлэгт тодорхойлж, эмхэтгэж, цөмд ачаалж болно. Гүйцэтгэхийн өмнө eBPF орчуулагч нь зөвшөөрөгдсөн зааврыг ашиглахын тулд байт кодыг шалгаж, кодонд тодорхой дүрмийг ногдуулдаг (жишээлбэл, гогцоо байхгүй).
Эхэндээ LLVM-д суурилсан хэрэгслүүдийг Линукс дээр eBPF хөрвүүлэхэд ашигладаг байсан. GCC дахь eBPF дэмжлэг нь нэмэлт хамаарал суулгахгүйгээр Линуксийн цөм болон eBPF програмуудыг бүтээхэд нэг хэрэглүүрийг ашиглах боломжийг олгодог тул сонирхолтой юм.

eBPF програмын хэлбэрээр та сүлжээний үйл ажиллагааны зохицуулагчийг үүсгэх, урсгалыг шүүх, зурвасын өргөнийг удирдах, системд хяналт тавих, системийн дуудлагыг таслан зогсоох, хандалтыг хянах, үйлдлийн давтамж, цагийг тоолох, kprobes/uprobes/tracepoints ашиглан мөрдөх боломжтой.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх