LLVM lld рджреНрд╡рд╛рд░реЗ рд╡рд┐рдХрд╕рд┐рдд рдореЛрд▓реНрдб 1.1 рд▓рд┐рдВрдХрд░рдЪреЗ рдкреНрд░рдХрд╛рд╢рди

рдореЛрд▓реНрдб рд▓рд┐рдВрдХрд░рдЪреЗ рдкреНрд░рдХрд╛рд╢рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдгрд╛рд▓реАрд╡рд░реАрд▓ GNU рд▓рд┐рдВрдХрд░рд╕рд╛рдареА рдЬрд▓рдж, рдкрд╛рд░рджрд░реНрд╢рдХ рдмрджрд▓реА рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рд╣рд╛ рдкреНрд░рдХрд▓реНрдк рдПрд▓рдПрд▓рд╡реНрд╣реАрдПрдо рдПрд▓рдПрд▓рдбреА рд▓рд┐рдВрдХрд░рдЪреНрдпрд╛ рд▓реЗрдЦрдХрд╛рдиреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓рд╛ рдЖрд╣реЗ. рдореЛрд▓реНрдбрдЪреЗ рдореБрдЦреНрдп рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдореНрд╣рдгрдЬреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реНрд╕рд▓рд╛ рдЬреЛрдбрдгреНрдпрд╛рдЪрд╛ рдЕрддрд┐рд╢рдп рдЙрдЪреНрдЪ рд╡реЗрдЧ, рдЬреАрдПрдирдпреВ рдЧреЛрд▓реНрдб рдЖрдгрд┐ рдПрд▓рдПрд▓рд╡реНрд╣реАрдПрдо рдПрд▓рдПрд▓рдбреА рд▓рд┐рдВрдХрд░реНрд╕рдЪреНрдпрд╛ рдЕрдЧрджреА рдкреБрдвреЗ рдЖрд╣реЗ (рдореЛрд▓реНрдбрдордзреНрдпреЗ рд▓рд┐рдВрдХ рдХрд░рдгреЗ рдХреЗрд╡рд│ cp рдпреБрдЯрд┐рд▓рд┐рдЯреАрд╕рд╣ рдлрд╛рдЗрд▓реНрд╕ рдХреЙрдкреА рдХрд░рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЕрд░реНрдзреНрдпрд╛ рд╡реЗрдЧрд╛рдиреЗ рдХреЗрд▓реЗ рдЬрд╛рддреЗ). рдХреЛрдб C++ (C++20) рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ AGPLv3 рдкрд░рд╡рд╛рдиреНрдпрд╛рдЕрдВрддрд░реНрдЧрдд рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓рд╛ рдЖрд╣реЗ.

рдирд╡реАрди рдЖрд╡реГрддреНрддреАрдордзреНрдпреЗ:

  • рд▓рд┐рдВрдХрд┐рдВрдЧ рд╕реНрдЯреЗрдЬрд╡рд░ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ (LTO, рд▓рд┐рдВрдХ рдЯрд╛рдЗрдо рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди). LTO рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдиреНрд╕ рдмрд┐рд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпреЗрдордзреНрдпреЗ рд╕рд╛рдореАрд▓ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдлрд╛рдпрд▓реАрдВрдЪреА рд╕реНрдерд┐рддреА рд▓рдХреНрд╖рд╛рдд рдШреЗрдКрди рднрд┐рдиреНрди рдЕрд╕рддрд╛рдд, рддрд░ рдкрд╛рд░рдВрдкрд╛рд░рд┐рдХ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдореЛрдб рдкреНрд░рддреНрдпреЗрдХ рдлрд╛рдЗрд▓ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рддрд╛рдд рдЖрдгрд┐ рдЗрддрд░ рдлрд╛рдЗрд▓реНрд╕рдордзреНрдпреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреЙрд▓рд┐рдВрдЧ рдлрдВрдХреНрд╢рдиреНрд╕рдЪреНрдпрд╛ рдЕрдЯреА рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрдд рдирд╛рд╣реАрдд. рдкреВрд░реНрд╡реА, рдЬреЗрд╡реНрд╣рд╛ GCC рдХрд┐рдВрд╡рд╛ LLVM рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдХреЛрдб (IR) рдлрд╛рдИрд▓реНрд╕ рдЖрдврд│рд▓реНрдпрд╛ рд╣реЛрддреНрдпрд╛, рддреЗрд╡реНрд╣рд╛ рд╕рдВрдмрдВрдзрд┐рдд ld.bfd рдХрд┐рдВрд╡рд╛ ld.lld рд▓рд┐рдВрдХрд░реНрд╕ рдХреЙрд▓ рдХреЗрд▓реЗ рдЬрд╛рдд рд╣реЛрддреЗ, рдЖрддрд╛ Mold IR рдлрд╛рдЗрд▓реНрд╕рд╡рд░ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рдЖрдгрд┐ Linker Plugin API рд╡рд╛рдкрд░рддреЗ, GNU ld рдЖрдгрд┐ GNU рдордзреНрдпреЗ рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ. рд╕реЛрдиреЗ рд▓рд┐рдВрдХрд░реНрд╕. рд╕рдХреНрд╖рдо рдХреЗрд▓реНрдпрд╛рд╡рд░, LTO рдЗрддрд░ рд▓рд┐рдВрдХрд░реНрд╕рдкреЗрдХреНрд╖рд╛ рдХрд┐рд░рдХреЛрд│ рд╡реЗрдЧрд╡рд╛рди рдЖрд╣реЗ рдХрд╛рд░рдг рдмрд╣реБрддреЗрдХ рд╡реЗрд│ рд▓рд┐рдВрдХ рдХрд░рдгреНрдпрд╛рдРрд╡рдЬреА рдХреЛрдб рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдХрд░рдгреНрдпрд╛рдд рдШрд╛рд▓рд╡рд▓рд╛ рдЬрд╛рддреЛ.
  • рд╣реЛрд╕реНрдЯ рдЖрдгрд┐ рд▓рдХреНрд╖реНрдп рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░ RISC-V (RV64) рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.
  • рдкреЛрд╕реНрдЯ-рд▓рд┐рдВрдХрд┐рдВрдЧ рд╕реНрдЯреЗрдЬрд╡рд░ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирдЪреНрдпрд╛ рдкреБрдвреАрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╕рд╛рдареА рдЗрдирдкреБрдЯ рдлрд╛рдЗрд▓реНрд╕рдордзреВрди рдЖрдЙрдЯрдкреБрдЯ рдлрд╛рдЗрд▓реНрд╕рдордзреНрдпреЗ рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рд╡рд┐рднрд╛рдЧрд╛рдВрдЪреА рдХреЙрдкреА рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "--emit-relocs" рдкрд░реНрдпрд╛рдп рдЬреЛрдбрд▓рд╛.
  • рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдЕреЕрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕рдордзреНрдпреЗ рддреНрдпрд╛рдВрдЪреЗ рдкрддреНрддреЗ рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рд╡рд┐рднрд╛рдЧрд╛рдВрдЪрд╛ рдХреНрд░рдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "--shuffle-sections" рдкрд░реНрдпрд╛рдп рдЬреЛрдбрд▓рд╛.
  • рдЗрдирдкреБрдЯ рдлрд╛рдЗрд▓реНрд╕рдордзреАрд▓ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡рд╛рдВрдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреА CSV рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА тАЬ--print-dependenciesтАЭ рдЖрдгрд┐ тАЬ--print-dependencies=fullтАЭ рдкрд░реНрдпрд╛рдп рдЬреЛрдбрд▓реЗ рдЖрд╣реЗрдд, рдЬреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реНрд╕ рд▓рд┐рдВрдХ рдХрд░рддрд╛рдирд╛ рдХрдиреЗрдХреНрд╢рдирдЪреНрдпрд╛ рдХрд╛рд░рдгрд╛рдВрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рдХрд┐рдВрд╡рд╛ рдлрд╛рдИрд▓реНрд╕ рджрд░рдореНрдпрд╛рди рдорд┐рдирд┐рдлрд┐рдХреЗрд╢рди рдХрд╛рд░реНрдп рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдкрд╛рд░ рдкрд╛рдбрддрд╛рдирд╛.
  • "--warn-one" рдЖрдгрд┐ "--warn-textrel" рдкрд░реНрдпрд╛рдп рдЬреЛрдбрд▓реЗ.
  • libxxhash рд╡рд░реАрд▓ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдХрд╛рдвреВрди рдЯрд╛рдХрд▓реЗ.

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

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