GCC ื›ื•ืœืœ ื›ืขืช ืงืฆื” ืื—ื•ืจื™ ืœื”ื™ื“ื•ืจ ืœ-eBPF

ื›ืœื•ืœ ื‘ื—ื‘ื™ืœืช ื”ืžื”ื“ืจ ืฉืœ GCC ืžืื•ืžืฅ ืงื•ื“ ืœื”ื™ื“ื•ืจ ืชื•ื›ื ื™ื•ืช ืขื‘ื•ืจ ืžืชื•ืจื’ืžืŸ bytecode ื”ืžื•ื‘ื ื” ื‘ืœื™ื‘ืช ืœื™ื ื•ืงืก eGMP. ื”ื•ื“ื•ืช ืœืฉื™ืžื•ืฉ ื‘ืงื•ืžืคื™ืœืฆื™ื” ืฉืœ JIT, ืงื•ื“ ื”ื‘ื™ื˜ื™ื ืฉืœ ื”ืœื™ื‘ื” ืžืชื•ืจื’ื ืชื•ืš ื›ื“ื™ ืชื ื•ืขื” ืœื”ื•ืจืื•ืช ืžื›ื•ื ื” ื•ืžื‘ื•ืฆืข ืขื ื‘ื™ืฆื•ืขื™ื ืฉืœ ืงื•ื“ ืžืงื•ืจื™. ืชื™ืงื•ื ื™ื ืขื ืชืžื™ื›ื” ื‘-eBPF ืžึฐืงื•ึผื‘ึผึธืœ ืœืกื ื™ืฃ ืฉืžืžื ื• ืคื•ืชื— ื”ืžื”ื“ื•ืจื” ืฉืœ GCC 10.

ื‘ื ื•ืกืฃ ืœ-backend ืœื™ืฆื™ืจืช bytecode, GCC ื›ื•ืœืœ ื™ืฆื™ืืช libgcc ืขื‘ื•ืจ eBPF ื•ื›ืœื™ื ืœื”ืคืงืช ืงื‘ืฆื™ ELF ื”ืžืืคืฉืจื™ื ืœื‘ืฆืข ืงื•ื“ ื‘ืžื›ื•ื ื” ื”ื•ื•ื™ืจื˜ื•ืืœื™ืช eBPF ื‘ืืžืฆืขื•ืช ืžืขืžื™ืกื™ื ื”ืžืกื•ืคืงื™ื ืขืœ ื™ื“ื™ ืœื™ื‘ื”. ืชื™ืงื•ื ื™ื ืœืชืžื™ื›ื” ื‘-eBPF ื‘-GCC ื”ื•ื›ื ื• ืขืœ ื™ื“ื™ ืžื”ื ื“ืกื™ื ืž-Oracle, ืฉื›ื‘ืจ ืขืฉื• ื–ืืช ืžืกื•ืคืง ืชืžื™ื›ื” ื‘-eBPF ื‘-GNU binutils. ืกื™ืžื•ืœื˜ื•ืจ ื•ืชื™ืงื•ื ื™ื ืขื‘ื•ืจ GDB ื ืžืฆืื™ื ื’ื ื”ื ื‘ืคื™ืชื•ื—, ืฉื™ืืคืฉืจื• ืœืš ืœื‘ืฆืข ื ื™ืคื•ื™ ื‘ืื’ื™ื ื‘ืชื•ื›ื ื™ื•ืช eBPF ืžื‘ืœื™ ืœื˜ืขื•ืŸ ืื•ืชืŸ ืœืงืจื ืœ.

ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืชื•ื›ื ื™ื•ืช ืขื‘ื•ืจ eBPF ื‘ืชืช-ืงื‘ื•ืฆื” ืฉืœ ืฉืคืช C, ืœื”ื™ื“ื•ืจ ื•ืœื˜ืขื•ืŸ ืœืชื•ืš ื”ืœื™ื‘ื”. ืœืคื ื™ ื”ื‘ื™ืฆื•ืข, ืžืชื•ืจื’ืžืŸ eBPF ื‘ื•ื“ืง ืืช ืงื•ื“ ื”ื‘ืชื™ื ืœืฉื™ืžื•ืฉ ื‘ื”ื•ืจืื•ืช ืžื•ืชืจื•ืช ื•ืžื˜ื™ืœ ื›ืœืœื™ื ืžืกื•ื™ืžื™ื ืขืœ ื”ืงื•ื“ (ืœื“ื•ื’ืžื”, ืœืœื ืœื•ืœืื•ืช).
ื‘ืชื—ื™ืœื”, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ื›ืœื™ื ืžื‘ื•ืกืกื™ LLVM ื›ื“ื™ ืœื”ื“ืจ eBPF ืขืœ ืœื™ื ื•ืงืก. ืชืžื™ื›ืช eBPF ื‘-GCC ื”ื™ื ืžืขื ื™ื™ื ืช ืžื›ื™ื•ื•ืŸ ืฉื”ื™ื ืžืืคืฉืจืช ืœืš ืœื”ืฉืชืžืฉ ื‘ืขืจื›ืช ื›ืœื™ื ืื—ืช ื›ื“ื™ ืœื‘ื ื•ืช ืืช ืœื™ื‘ืช ืœื™ื ื•ืงืก ื•ืชื•ื›ื ื™ื•ืช eBPF, ืžื‘ืœื™ ืœื”ืชืงื™ืŸ ืชืœื•ืช ื ื•ืกืคืช.

ื‘ืฆื•ืจื” ืฉืœ ืชื•ื›ื ื™ื•ืช eBPF, ื ื™ืชืŸ ืœื™ืฆื•ืจ ืžื˜ืคืœื™ ืคืขื•ืœื•ืช ื‘ืจืฉืช, ืœืกื ืŸ ืชืขื‘ื•ืจื”, ืœื ื”ืœ ืจื•ื—ื‘ ืคืก, ืœื ื˜ืจ ืžืขืจื›ื•ืช, ืœื™ื™ืจื˜ ืฉื™ื—ื•ืช ืžืขืจื›ืช, ืœืฉืœื•ื˜ ื‘ื’ื™ืฉื”, ืœืกืคื•ืจ ืืช ืชื“ื™ืจื•ืช ื•ื–ืžืŸ ื”ืคืขื•ืœื•ืช ื•ืœื‘ืฆืข ืžืขืงื‘ ื‘ืืžืฆืขื•ืช kprobes/uprobes/tracepoints.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”