GCC рд▓реЗ рдЕрдм eBPF рдорд╛ рд╕рдВрдХрд▓рдирдХреЛ рд▓рд╛рдЧрд┐ рдмреНрдпрд╛рдХрдЗрдиреНрдб рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ

GCC рдХрдореНрдкрд╛рдЗрд▓рд░ рд╕реБрдЗрдЯрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░рд┐рдпреЛ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рдорд╛ рдирд┐рд░реНрдорд┐рдд рдмрд╛рдЗрдЯрдХреЛрдб рдЕрдиреБрд╡рд╛рджрдХрдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд╣рд░реВ рд╕рдВрдХрд▓рди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдб eGMPред JIT рдХрдореНрдкрд╛рдЗрд▓реЗрд╢рдирдХреЛ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрд╡рд╛рдж, рдХрд░реНрдиреЗрд▓ рдмрд╛рдЗрдЯрдХреЛрдбрд▓рд╛рдИ рдлреНрд▓рд╛рдИрдорд╛ рдореЗрд╕рд┐рди рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВрдорд╛ рдЕрдиреБрд╡рд╛рдж рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рдиреЗрдЯрд┐рдн рдХреЛрдбрдХреЛ рдкреНрд░рджрд░реНрд╢рдирдХреЛ рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреНрдЫред eBPF рд╕рдорд░реНрдердирдХреЛ рд╕рд╛рде рдкреНрдпрд╛рдЪрд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░рд┐рдпреЛ рд╢рд╛рдЦрд╛рдорд╛ рдЬрд╣рд╛рдБрдмрд╛рдЯ GCC 10 рд░рд┐рд▓реАрдЬ рд╡рд┐рдХрд╕рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред

рдмрд╛рдЗрдЯрдХреЛрдб рдЙрддреНрдкрд╛рджрдирдХреЛ рд▓рд╛рдЧрд┐ рдмреНрдпрд╛рдХрдЗрдиреНрдбрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, GCC рд▓реЗ eBPF рдХреЛ рд▓рд╛рдЧрд┐ libgcc рдкреЛрд░реНрдЯ рд░ ELF рдлрд╛рдЗрд▓рд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рдЙрдкрдХрд░рдгрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ рдЬрд╕рд▓реЗ рдХрд░реНрдиреЗрд▓-рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХрд╛ рд▓реЛрдбрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ eBPF рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдорд╛ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рд╕рдореНрднрд╡ рдмрдирд╛рдЙрдБрдЫред GCC рдорд╛ eBPF рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрди рдкреНрдпрд╛рдЪрд╣рд░реВ Oracle рдХрд╛ рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рддрдпрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЬреЛ рдкрд╣рд┐рд▓реЗ рдиреИ рдерд┐рдП рдкреНрд░рджрд╛рди рдЧрд░рд┐рдпреЛ GNU binutils рдорд╛ eBPF рд╕рдорд░реНрдердиред GDB рдХрд╛ рд▓рд╛рдЧрд┐ рд╕рд┐рдореБрд▓реЗрдЯрд░ рд░ рдкреНрдпрд╛рдЪрд╣рд░реВ рдкрдирд┐ рд╡рд┐рдХрд╛рд╕рдорд╛ рдЫрдиреН, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХрд░реНрдиреЗрд▓рдорд╛ рд▓реЛрдб рдирдЧрд░реА eBPF рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВ рдбрд┐рдмрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫред

eBPF рдХрд╛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВ C рднрд╛рд╖рд╛рдХреЛ рд╕рдмрд╕реЗрдЯрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реА рдХрд░реНрдиреЗрд▓рдорд╛ рд▓реЛрдб рдЧрд░рд┐рдиреНрдЫред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреБ рдЕрдШрд┐, eBPF рдЕрдиреБрд╡рд╛рджрдХрд▓реЗ рдЕрдиреБрдорддрд┐ рджрд┐рдЗрдПрдХреЛ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдмрд╛рдЗрдЯрдХреЛрдб рдЬрд╛рдБрдЪ рдЧрд░реНрджрдЫ рд░ рдХреЛрдбрдорд╛ рдирд┐рд╢реНрдЪрд┐рдд рдирд┐рдпрдорд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдХреБрдиреИ рд▓реВрдкрд╣рд░реВ рдЫреИрдирдиреН)ред
рд╕реБрд░реБрдорд╛, LLVM-рдЖрдзрд╛рд░рд┐рдд рдЙрдкрдХрд░рдгрд╣рд░реВ рд▓рд┐рдирдХреНрд╕рдорд╛ eBPF рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдереНрдпреЛред GCC рдорд╛ eBPF рд╕рдорд░реНрдерди рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдЫ рдХрд┐рдирднрдиреЗ рдпрд╕рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд░ eBPF рдкреНрд░реЛрдЧреНрд░рд╛рдорд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рдЯреБрд▓рдХрд┐рдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдирдЧрд░реАред

eBPF рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВрдХреЛ рд░реВрдкрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдЮреНрдЪрд╛рд▓рди рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЯреНрд░рд╛рдлрд┐рдХ рдлрд┐рд▓реНрдЯрд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдмреНрдпрд╛рдиреНрдбрд╡рд┐рде рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдкрд╣реБрдБрдЪ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рдЖрд╡реГрддреНрддрд┐ рд░ рд╕рдордп рдЧрдгрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд░ kprobes/uprobes/tracepoints рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЯреНрд░реЗрд╕рд┐рдЩ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди