Vrijgave van Mold 1.1 linker, ontwikkeld door LLVM lld

Er is een release van de Mold-linker gepubliceerd, die kan worden gebruikt als een snellere, transparante vervanging voor de GNU-linker op Linux-systemen. Het project is ontwikkeld door de auteur van de LLVM lld linker. Een belangrijk kenmerk van Mold is de zeer hoge snelheid waarmee objectbestanden kunnen worden gekoppeld, aanzienlijk hoger dan de GNU gold- en LLVM lld-linkers (het koppelen in Mold gebeurt met een snelheid die slechts half zo snel is als het simpelweg kopiëren van bestanden met het cp-hulpprogramma). De code is geschreven in C++ (C++20) en wordt gedistribueerd onder de AGPLv3-licentie.

In de nieuwe versie:

  • Ondersteuning toegevoegd voor optimalisatie in de koppelingsfase (LTO, Link Time Optimization). LTO-optimalisaties verschillen doordat ze rekening houden met de status van alle bestanden die bij het bouwproces betrokken zijn, terwijl traditionele optimalisatiemodi elk bestand afzonderlijk optimaliseren en geen rekening houden met de voorwaarden voor het aanroepen van functies die in andere bestanden zijn gedefinieerd. Terwijl voorheen, wanneer GCC- of LLVM-intermediaire codebestanden (IR) werden gevonden, de overeenkomstige ld.bfd- of ld.lld-linkers werden aangeroepen, verwerkt Mold nu IR-bestanden onafhankelijk en gebruikt het de Linker Plugin API, ook gebruikt in de GNU ld en GNU gouden linkers. Indien ingeschakeld, is LTO slechts marginaal sneller dan andere linkers, omdat de meeste tijd wordt besteed aan het uitvoeren van code-optimalisaties in plaats van aan het koppelen.
  • Ondersteuning toegevoegd voor RISC-V (RV64) architectuur op de host- en doelplatforms.
  • De optie “--emit-relocs” toegevoegd om het kopiëren van verplaatsingssecties van invoerbestanden naar uitvoerbestanden mogelijk te maken voor daaropvolgende toepassing van optimalisaties in de fase na het koppelen.
  • De optie “--shuffle-sections” toegevoegd om de volgorde van secties willekeurig te maken voordat hun adressen in de virtuele adresruimte worden vastgelegd.
  • Opties “--print-dependencies” en “--print-dependencies=full” toegevoegd om informatie over afhankelijkheden tussen invoerbestanden in CSV-formaat uit te voeren, die bijvoorbeeld kan worden gebruikt om de redenen voor verbinding te analyseren bij het koppelen van bepaalde objectbestanden of bij het uitvoeren van verkleiningswerkzaamheden afhankelijkheden tussen bestanden.
  • Opties "--warn-once" en "--warn-textrel" toegevoegd.
  • Afhankelijkheid van libxxhash verwijderd.

Bron: opennet.ru

Voeg een reactie