GCC рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реВрдЯ рдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ
рдмрд╛рдЗрдЯрдХреЛрдб рдЬрдирд░реЗрд╢рдирд╕рд╛рдареА рдмреЕрдХрдПрдВрдб рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, GCC рдордзреНрдпреЗ eBPF рд╕рд╛рдареА libgcc рдкреЛрд░реНрдЯ рдЖрдгрд┐ ELF рдлрд╛рдЗрд▓реНрд╕ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЯреВрд▓реНрд╕ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд рдЬреЗ рдХрд░реНрдирд▓-рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реЗ рд▓реЛрдбрд░ рд╡рд╛рдкрд░реВрди eBPF рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирдордзреНрдпреЗ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рдХрд░рддрд╛рдд. GCC рдордзреНрдпреЗ eBPF рдЪреЗ рд╕рдорд░реНрдерди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреЕрдЪреЗрд╕ Oracle рдордзреАрд▓ рдЕрднрд┐рдпрдВрддреНрдпрд╛рдВрдиреА рддрдпрд╛рд░ рдХреЗрд▓реЗ рд╣реЛрддреЗ, рдЬреНрдпрд╛рдВрдиреА рдЖрдзреАрдЪ рддрдпрд╛рд░ рдХреЗрд▓реЗ рд╣реЛрддреЗ
eBPF рд╕рд╛рдареА рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕ C рднрд╛рд╖реЗрдЪреНрдпрд╛ рдЙрдкрд╕рдВрдЪрдордзреНрдпреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд, рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рдХрд░реНрдирд▓рдордзреНрдпреЗ рд▓реЛрдб рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдИрдмреАрдкреАрдПрдл рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ рдкрд░рд╡рд╛рдирдЧреА рджрд┐рд▓реЗрд▓реНрдпрд╛ рд╕реВрдЪрдирд╛рдВрдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА рдмрд╛рдпрдХреЛрдб рддрдкрд╛рд╕рддреЛ рдЖрдгрд┐ рдХреЛрдбрд╡рд░ рдХрд╛рд╣реА рдирд┐рдпрдо рд▓рд╛рдЧреВ рдХрд░рддреЛ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд▓реВрдк рдирд╛рд╣реАрдд).
рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛, Linux рд╡рд░ eBPF рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА LLVM-рдЖрдзрд╛рд░рд┐рдд рд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдд рд╣реЛрддреА. GCC рдордзреАрд▓ eBPF рд╕рдорд░реНрдерди рдордиреЛрд░рдВрдЬрдХ рдЖрд╣реЗ рдХрд╛рд░рдг рддреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрд╡рд▓рдВрдмрди рд╕реНрдерд╛рдкрд┐рдд рди рдХрд░рддрд╛, Linux рдХрд░реНрдирд▓ рдЖрдгрд┐ eBPF рдкреНрд░реЛрдЧреНрд░рд╛рдо рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдЯреВрд▓рдХрд┐рдЯ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ.
eBPF рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕рдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд, рддреБрдореНрд╣реА рдиреЗрдЯрд╡рд░реНрдХ рдСрдкрд░реЗрд╢рди рд╣рдБрдбрд▓рд░ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛, рдЯреНрд░реЕрдлрд┐рдХ рдлрд┐рд▓реНрдЯрд░ рдХрд░реВ рд╢рдХрддрд╛, рдмрдБрдбрд╡рд┐рдбреНрде рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддрд╛, рд╕рд┐рд╕реНрдЯрдо рдореЙрдирд┐рдЯрд░ рдХрд░реВ рд╢рдХрддрд╛, рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд░реВ рд╢рдХрддрд╛, рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реВ рд╢рдХрддрд╛, рдСрдкрд░реЗрд╢рдирдЪреА рд╡рд╛рд░рдВрд╡рд╛рд░рддрд╛ рдЖрдгрд┐ рд╡реЗрд│ рдореЛрдЬреВ рд╢рдХрддрд╛ рдЖрдгрд┐ kprobes/uprobes/tracepoints рд╡рд╛рдкрд░реВрди рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдХрд░реВ рд╢рдХрддрд╛.
рд╕реНрддреНрд░реЛрдд: opennet.ru