Veröffentlichung des Mold 1.1-Linkers, entwickelt von LLVM lld

Es wurde eine Version des Mold-Linkers veröffentlicht, der als schnellerer, transparenter Ersatz für den GNU-Linker auf Linux-Systemen verwendet werden kann. Das Projekt wurde vom Autor des LLVM-LLD-Linkers entwickelt. Ein Hauptmerkmal von Mold ist die sehr hohe Geschwindigkeit beim Verknüpfen von Objektdateien, deutlich vor den GNU Gold- und LLVM-LLD-Linkern (das Verknüpfen in Mold erfolgt nur halb so schnell wie das einfache Kopieren von Dateien mit dem Dienstprogramm cp). Der Code ist in C++ (C++20) geschrieben und wird unter der AGPLv3-Lizenz vertrieben.

In der neuen Version:

  • Unterstützung für die Optimierung in der Verbindungsphase hinzugefügt (LTO, Link Time Optimization). LTO-Optimierungen unterscheiden sich dadurch, dass sie den Status aller am Build-Prozess beteiligten Dateien berücksichtigen, während herkömmliche Optimierungsmodi jede Datei einzeln optimieren und die Bedingungen für den Aufruf von Funktionen, die in anderen Dateien definiert sind, nicht berücksichtigen. Während früher beim Auffinden von GCC- oder LLVM-Intermediate-Code (IR)-Dateien die entsprechenden ld.bfd- oder ld.lld-Linker aufgerufen wurden, verarbeitet Mold jetzt IR-Dateien unabhängig und verwendet die Linker-Plugin-API, die auch in GNU ld und GNU verwendet wird Goldlinker. Wenn aktiviert, ist LTO nur unwesentlich schneller als andere Linker, da die meiste Zeit für die Durchführung von Codeoptimierungen und nicht für die Verknüpfung aufgewendet wird.
  • Unterstützung für die RISC-V (RV64)-Architektur auf den Host- und Zielplattformen hinzugefügt.
  • Option „--emit-relocs“ hinzugefügt, um das Kopieren von Verschiebungsabschnitten von Eingabedateien in Ausgabedateien für die spätere Anwendung von Optimierungen in der Post-Linking-Phase zu ermöglichen.
  • Option „--shuffle-sections“ hinzugefügt, um die Reihenfolge der Abschnitte zu randomisieren, bevor ihre Adressen im virtuellen Adressraum festgelegt werden.
  • Optionen „--print-dependencies“ und „--print-dependencies=full“ hinzugefügt, um Informationen über Abhängigkeiten zwischen Eingabedateien im CSV-Format auszugeben, die beispielsweise zur Analyse der Gründe für Verbindungen bei der Verknüpfung bestimmter Objektdateien verwendet werden können oder bei der Durchführung von Minimierungsarbeitsabhängigkeiten zwischen Dateien.
  • Optionen „--warn-once“ und „--warn-textrel“ hinzugefügt.
  • Abhängigkeit von libxxhash entfernt.

Source: opennet.ru

Kommentar hinzufügen