Google рдЪреНрдпрд╛ рд╡рд┐рдХрд╕рдХрд╛рдВрдиреА LLVM рд╕рд╛рдареА рддреНрдпрд╛рдВрдЪреЗ рд╕реНрд╡рддрдГрдЪреЗ libc рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреЗ рд╕реБрдЪрд╡рд▓реЗ

Google рдХрдбреАрд▓ рд╡рд┐рдХрд╕рдХрд╛рдВрдкреИрдХреА рдПрдХ рдЙрдард╡рд▓реЗ LLVM рдкреНрд░реЛрдЬреЗрдХреНрдЯрдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рдорд▓реНрдЯреА-рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рд╕реНрдЯрдБрдбрд░реНрдб C рд▓рд╛рдпрдмреНрд░рд░реА (Libc) рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рдмрджреНрджрд▓ LLVM рдореЗрд▓рд┐рдВрдЧ рд▓рд┐рд╕реНрдЯрд╡рд░. рдЕрдиреЗрдХ рдХрд╛рд░рдгрд╛рдВрдореБрд│реЗ, Google рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ libc (glibc, musl) рдмрджреНрджрд▓ рд╕рдорд╛рдзрд╛рдиреА рдирд╛рд╣реА рдЖрдгрд┐ рдХрдВрдкрдиреА рдирд╡реАрди рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдорд╛рд░реНрдЧрд╛рд╡рд░ рдЖрд╣реЗ, рдЬреА LLVM рдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЖрд╣реЗ.

LLVM рд╡рд┐рдХрд╛рд╕ рдЕрд▓реАрдХрдбреЗ Google рдЪреНрдпрд╛ рдЕрд╕реЗрдВрдмреНрд▓реА рдЯреВрд▓реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдзрд╛рд░ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ. рдореБрдЦреНрдп рдХрд▓реНрдкрдирд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА рдЬрд░ Google рдиреЗ рдЖрдзреАрдЪ рддреНрдпрд╛рдЪреЗ libc рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА рдЖрд╣реЗ, рддрд░ LLVM рдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рддреНрдпрд╛рдЪреА рдкреНрд░рдгрд╛рд▓реА рддреНрд╡рд░рд┐рдд рд╡рд┐рдХрд╕рд┐рдд рдХрд╛ рдХрд░реВ рдирдпреЗ, рдЬреА рдЖрдзреАрдЪ C++ (Libc++) рд╕рд╛рдареА рд╕реНрд╡рддрдГрдЪреА рдорд╛рдирдХ рд▓рд╛рдпрдмреНрд░рд░реА рдСрдлрд░ рдХрд░рддреЗ, рдкрд░рдВрддреБ C рд╕рд╛рдареА рд╕рдорд╛рди рдорд╛рдирдХ рд▓рд╛рдпрдмреНрд░рд░реА рдирд╛рд╣реА. (libc).

рд╡рд┐рдХрд╛рд╕ рдЯрдкреНрдкреНрдпрд╛рдЯрдкреНрдкреНрдпрд╛рдиреЗ рдХрд░рдгреНрдпрд╛рдЪреЗ рдирд┐рдпреЛрдЬрд┐рдд рдЖрд╣реЗ, рд╣рд│реВрд╣рд│реВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд╛рдврд╡рдд рдЖрд╣реЗ. рдкрд╣рд┐рд▓реЗ рдкрд░реНрдпрд╛рдп рд╣реЗ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдгрд┐ рд╕рд┐рд╕реНрдЯреАрдо Libc рдордзреАрд▓ рдПрдХ рдерд░ рдореНрд╣рдгреВрди рдбрд┐рдЭрд╛рдЗрди рдХрд░рдгреНрдпрд╛рдЪреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЖрд╣реЗ, рдЬреНрдпрд╛рдордзреВрди рдЕрджреНрдпрд╛рдк рд▓рд╛рдЧреВ рди рдЭрд╛рд▓реЗрд▓реА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдЙрдзрд╛рд░ рдШреЗрддрд▓реА рдЬрд╛рддреАрд▓. рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреНрдпрд╛ рдПрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрддрд░рд╛рд╡рд░ рдкреЛрд╣реЛрдЪрд▓реНрдпрд╛рдирдВрддрд░, рдирд╡реАрди Libc рдЪрд╛ рд╡рд╛рдкрд░ Libc рдкреНрд░рдгрд╛рд▓реАрд╕рд╛рдареА рд╕рдВрдкреВрд░реНрдг рдмрджрд▓реА рдореНрд╣рдгреВрди рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рдЖрдореНрд╣реА x86-64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░, рд▓рд┐рдирдХреНрд╕ рдЖрдгрд┐ рд╕реНрдЯреЕрдЯрд┐рдХ рд▓рд┐рдВрдХрд┐рдВрдЧ (рдбрд╛рдпрдиреЕрдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧ, рд▓рд┐рдВрдХрд┐рдВрдЧ рдЖрдгрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рджреБрдпреНрдпрдорд░рд┐рддреНрдпрд╛ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓) рд╕рд╛рдареА рд╕рдорд░реНрдердирд╛рд╕рд╣ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрдЦрдд рдЖрд╣реЛрдд.

рдкреНрд░рдХрд▓реНрдк рдЕрджреНрдпрд╛рдк рд╡рд┐рдХрд╛рд╕рд╛рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрдЪреНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдореВрд▓рднреВрдд рдЙрджреНрджрд┐рд╖реНрдЯреЗ рдЖрдзреАрдЪ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗрдд:

  • рдореЛрдиреЛрд▓рд┐рдерд┐рдХ рд╕рдВрдЪрд╛рдРрд╡рдЬреА рдЧреНрд░реЕрдиреНрдпреБрд▓рд░ рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд┐рддрд░реАрдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рддрддреНрддреНрд╡рдЬреНрдЮрд╛рдирд╛рдиреБрд╕рд╛рд░ рдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рдЖрдгрд┐ рд╡рд┐рдХрд╛рд╕;
  • рдореЛрдбрдордзреНрдпреЗ рд╕реНрдерд┐рд░ рд▓рд┐рдВрдХрд┐рдВрдЧрд╕рд╛рдареА рд╕рдорд░реНрдерди рдкреАрдЖрдпрдИ (рдкреЛрдЭрд┐рд╢рди-рд╕реНрд╡рддрдВрддреНрд░ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓) рдЖрдгрд┐ PIE рд╢рд┐рд╡рд╛рдп. рд╕реНрдЯреЕрдЯрд┐рдХрд▓реА рд▓рд┐рдВрдХ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдПрдХреНрдЭрд┐рдХреНрдпреВрдЯреЗрдмрд▓рд╕рд╛рдареА рд╕реАрдЖрд░рдЯреА (рд╕реА рд░рдирдЯрд╛рдЗрдо) рдЖрдгрд┐ рдкреАрдЖрдпрдИ рд▓реЛрдбрд░ рдкреНрд░рджрд╛рди рдХрд░рдгреЗ;
  • POSIX рдНрдбрд┐рд╢рдиреНрд╕рд╕рд╣ рдЖрдгрд┐ рд╡рд┐рджреНрдпрдорд╛рди рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдХрд╛рд╣реА рд╕рд┐рд╕реНрдЯрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╕реНрддрд╛рд░рд╛рдВрд╕рд╣ рдмрд╣реБрддреЗрдХ рдорд╛рдирдХ C рд▓рд╛рдпрдмреНрд░рд░реА рдлрдВрдХреНрд╢рдиреНрд╕рд╕рд╛рдареА рд╕рдорд░реНрдерди;
  • рд╡рд┐рдХреНрд░реЗрддрд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╕реНрддрд╛рд░рд╛рдВрд╕рд╣ рд╕рд╛рд╡рдзрдЧрд┐рд░реА рдмрд╛рд│рдЧрд╛ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕реЗрд▓ рддреЗрд╡реНрд╣рд╛рдЪ рддреЗ рдЬреЛрдбрд╛. рддреГрддреАрдп-рдкрдХреНрд╖ рд╡рд┐рд╕реНрддрд╛рд░рд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдердирд╛рдмрд╛рдмрдд, рдХреНрд▓рдБрдЧ рдЖрдгрд┐ libc++ рдкреНрд░рдХрд▓реНрдкрд╛рдВрдЪрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрди рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЖрд╣реЗ;
  • LLVM рдЯреВрд▓рдХрд┐рдЯ рд╡рд╛рдкрд░реВрди рд╡рд┐рдХрд╛рд╕рд╛рддреАрд▓ рд╕рд░реНрд╡реЛрддреНрддрдо рдкрджреНрдзрддреА рд╡рд╛рдкрд░рдгреЗ, рдЬрд╕реЗ рдХреА рд╕реЕрдирд┐рдЯрд╛рдпрдЭрд░ рд╡рд╛рдкрд░рдгреЗ рдЖрдгрд┐ рдЕрдЧрджреА рд╕реБрд░реБрд╡рд╛рддреАрдкрд╛рд╕реВрдирдЪ рдлрдЭ рдЪрд╛рдЪрдгреА рдХрд░рдгреЗ.

рд╕рдХреНрд░рд┐рдп LLVM рд╡рд┐рдХрд╕рдХрд╛рдВрдкреИрдХреА рдПрдХ рдирд┐рджрд░реНрд╢рдирд╛рд╕ рдЖрдгреВрди рджрд┐рд▓реЗрд╣реЗ рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ рдХреА LLVM рдЯреВрд▓рдХрд┐рдЯрдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди libc рдкрд╛рдард╡рдгреЗ рдЕрд░реНрдердкреВрд░реНрдг рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╕рд╛рдорд╛рдиреНрдпрддрдГ, рдЬреЗрд╡реНрд╣рд╛ рдЕрд╢реА рдЧрд░рдЬ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддреЗ, рддреЗрд╡реНрд╣рд╛ рддреЗ рдорд╕рд▓ рд▓рд╛рдпрдмреНрд░рд░реАрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рддрд╛рдд, рдЬреЗ рдЪрд╛рдВрдЧрд▓реЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдЖрд╣реЗ, рд╡рд┐рд╡рд┐рдз рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдбрд╛рдпрдиреЕрдорд┐рдХрд╕рд╛рдареА рд╕рдорд░реНрдерди рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ. рджреБрд╡рд╛ рд╕рд╛рдзрдд рдЖрд╣реЗ. LLVM рдордзреНрдпреЗ рдорд╕реНрд▓ рдПрдореНрдмреЗрдб рдХрд░рдгреНрдпрд╛рдЪреЗ рдЖрдгрд┐ рдореБрдЦреНрдп рдкреНрд░реЙрдЬреЗрдХреНрдЯрд╢реА рд╕рдордХреНрд░рдорд┐рдд рдХрд╛рдЯрд╛ рдореНрд╣рдгреВрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреЗ рд╕рдорд░реНрдерди рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

рддреБрдордЪреЗрд╣реА рдордд рд╡реНрдпрдХреНрдд рдореБрд╕рд▓ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рд▓реЗрдЦрдХ, рдЬреНрдпрд╛рдВрдиреА рдпреБрдХреНрддрд┐рд╡рд╛рдж рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рдХреА Google рдЪрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЖрдгрд┐ LLVM рд╡рд┐рддрд░рдгрд╛рдордзреНрдпреЗ Libc рдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдХрд╛ рдЕрддрд┐рд╢рдп рд╡рд╛рдИрдЯ рдХрд▓реНрдкрдирд╛ рдЖрд╣реЗрдд:

  • рдпреЛрдЧреНрдп, рд╕реБрд╕рдВрдЧрдд рдЖрдгрд┐ рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддреЗрдЪреЗ Libc рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рд░рд╛рдЦрдгреЗ рд╣реЗ рдЦреВрдк рдХрдареАрдг рдХрд╛рдо рдЖрд╣реЗ. рд╕рдорд╕реНрдпрд╛ рдХреЛрдбрдЪреНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рдпреЛрдЧреНрдп рд╡рд░реНрддрди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рдд рдЖрдгрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдд рдпреЗрдгрд╛рд▒реНрдпрд╛ рдЕрдбрдЪрдгреА, C/C++ рдордзреНрдпреЗ рд▓рд┐рд╣реАрд▓реЗрд▓реНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪрд╛ рдореЛрдард╛ рд╕реНрддрд░, рддрд╕реЗрдЪ рдЗрддрд░ рднрд╛рд╖рд╛рдВрдордзреАрд▓ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рд▓рдХреНрд╖рд╛рдд рдШреЗрдКрди, рдЬреНрдпрд╛рдЪрд╛ рд░рдирдЯрд╛рдЗрдо рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ. Libc рджреНрд╡рд╛рд░реЗ. рдмрд╛рд░рдХрд╛рд╡реЗ рд╡рд┐рдЪрд╛рд░рд╛рдд рди рдШреЗрддрд╛ рд╣реЗрдб-рдСрди рджреГрд╖реНрдЯреАрдХреЛрди рдХреЗрд╡рд│ рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрд▓рд╛ рдХрд╛рд░рдгреАрднреВрдд рдард░реЗрд▓ рдХреА рдмрд░реЗрдЪ рд╡рд┐рджреНрдпрдорд╛рди рдкреНрд░реЛрдЧреНрд░рд╛рдо Libc рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рд╣реЛрдгрд╛рд░ рдирд╛рд╣реАрдд, рдкрд░рдВрддреБ рдирдВрддрд░ рдЕрд╕рд╛ рдкреНрд░рдХрд▓реНрдк рдЧреНрд░рд╛рд╣рдХрд╛рдВрдЪреНрдпрд╛ рд╣рд┐рддрд╛рдЪрд╛ рд░рд╛рд╣рдгрд╛рд░ рдирд╛рд╣реА.
  • рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯрдореБрд│реЗ Libc рдирд╖реНрдЯ рд╣реЛрдК рд╢рдХрддреЗ, рдкрд░рдВрддреБ рддреНрдпрд╛рдЪрд╛ рд╡реНрдпрд╛рдкрдХ рд╡рд╛рдкрд░ рд╣реЛрдК рд╢рдХрддреЛ, рдкрд░рд┐рдгрд╛рдореА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдордзреНрдпреЗ рд╕реБрд╕рдВрдЧрддрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЕрдХ рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рдЖрд╢реНрд░рдпрд╛рдиреЗ рд╣реЛрдгрд╛рд░рд╛ рд╡рд┐рдХрд╛рд╕, рдХрдВрдкрдиреАрдЪреНрдпрд╛ рдЧрд░рдЬрд╛ рдЖрдгрд┐ рдЙрдкрд╛рдпрд╛рдВрд╕рд╛рдареА, рд╕рдореБрджрд╛рдпрд╛рдЪреНрдпрд╛ рд╣рд┐рддрд╕рдВрдмрдВрдзрд╛рдВрдирд╛ рд╣рд╛рдиреА рдкреЛрд╣реЛрдЪрд╡реЗрд▓. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬрд░ рддреБрдореНрд╣реА рджреБрд╕рд▒реНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдордордзреАрд▓ рдмрдЧрдореБрд│реЗ рдЙрджреНрднрд╡рд▓реЗрд▓реА рд╕рдорд╕реНрдпрд╛ рдУрд│рдЦрд▓реА рддрд░, рдирд┐рдпрдВрддреНрд░рд┐рдд рд╡рд┐рдХрд╛рд╕рд╛рдордзреНрдпреЗ Libc рдпрд╛ рдмрдЧрд╢реА рд╕реБрд╕рдВрдЧрдд рдЕрд╕рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рдгреЗ рд╣реЗ рдмрдЧ рд╕реНрд╡рддрдГрдЪ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рд╕реЛрдкреЗ рдЖрд╣реЗ. Apple рдпрд╛ рдЙрджреНрджреЗрд╢рд╛рдВрд╕рд╛рдареА BSD libc рдХрд╛рдЯрд╛ рд╡рд╛рдкрд░рддреЗ рдЖрдгрд┐ Google Fuchsia рдордзреНрдпреЗ musl fork рд╡рд╛рдкрд░рддреЗ. рдореБрд╕рд▓ рдбреЗрд╡реНрд╣рд▓рдкрд░рдЪрд╛ рдЕрдиреБрднрд╡ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рддреНрдпрд╛рдЪреНрдпрд╛рд╢реА рдореБрдЦреНрдпрддреНрд╡реЗ рд╡рдХрд┐рд▓рд╛рдВрдиреА рдкрд░рд╡рд╛рдирд╛ рд╕рдорд╕реНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдВрдкрд░реНрдХ рд╕рд╛рдзрд▓рд╛ рд╣реЛрддрд╛, рдкрд░рдВрддреБ рддреНрдпрд╛рдЪреНрдпрд╛ рд╢рд╛рдЦрд╛рдВрдордзреНрдпреЗ рдирд┐рд░реБрдкрдпреЛрдЧреА рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп рдЖрдгрдгрд╛рд░реЗ рдмрджрд▓ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рддрд╛рдВрддреНрд░рд┐рдХ рддрдкрд╢реАрд▓ рд╕реНрдкрд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрдзреАрд╣реА рд╕рдВрдкрд░реНрдХ рд╕рд╛рдзрд▓рд╛ рдЧреЗрд▓рд╛ рдирд╛рд╣реА.
  • libc рд╡рд┐рдХрд╛рд╕рд╛рдордзреНрдпреЗ рдореЛрдиреЛрдХрд▓реНрдЪрд░рдЪреА рдЕрдиреБрдкрд╕реНрдерд┐рддреА рдЖрдгрд┐ рд╡реИрдпрдХреНрддрд┐рдХ рдирд┐рдпрдВрддреНрд░рдгрд╛рдРрд╡рдЬреА рдПрдХрдордд-рдЪрд╛рд▓рд┐рдд рдорд╛рдирдХрд╛рдВрд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдгреЗ, рдЬреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╢реА рдЬреЛрдбрдгреНрдпрд╛рдРрд╡рдЬреА рдорд╛рдирдХрд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рдгреНрдпрд╛рд╕ рдкреНрд░рд╡реГрддреНрдд рдХрд░рддреЗ. рдореНрд╣рдгреВрдирдЪ рдореБрд╕рд▓рдЪрд╛ рд▓реЗрдЦрдХ LLVM рдордзреНрдпреЗ рддреНрдпрд╛рдЪреНрдпрд╛ рд▓рд╛рдпрдмреНрд░рд░реАрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╡рд┐рд░реЛрдзрд╛рдд рдЖрд╣реЗ, рддрд╕реЗрдЪ LLVM рдордзреНрдпреЗ libc рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рдЪреНрдпрд╛ рд╡рд┐рд░реЛрдзрд╛рдд рдЖрд╣реЗ, рдХрд╛рд░рдг рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд libc рдЪреЗ рд╕реНрд╡рддрдВрддреНрд░ рд╕реНрд╡рд░реВрдк рдирд╖реНрдЯ рд╣реЛрддреЗ рдЖрдгрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╣рд╛ рдкреНрд░рдердо рд╢реНрд░реЗрдгреАрдЪрд╛ рдЙрдкрд╛рдп рдмрдирддреЛ. LLVM рдЖрдгрд┐ рдЗрддрд░ рд╕рд░реНрд╡ рджреНрд╡рд┐рддреАрдп рд╢реНрд░реЗрдгреАрдЪреЗ рд╕рдорд╛рдзрд╛рди рдмрдирддрд╛рдд.

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛