Sortie de l'éditeur de liens Mold 1.1, développé par LLVM lld

Une version de l'éditeur de liens Mold a été publiée, qui peut être utilisée comme remplacement plus rapide et transparent de l'éditeur de liens GNU sur les systèmes Linux. Le projet est développé par l'auteur de l'éditeur de liens LLVM lld. Une caractéristique clé de Mold est la très grande vitesse de liaison des fichiers objets, sensiblement en avance sur les éditeurs de liens GNU gold et LLVM lld (la liaison dans Mold est effectuée à une vitesse deux fois moins rapide que la simple copie de fichiers avec l'utilitaire cp). Le code est écrit en C++ (C++20) et distribué sous licence AGPLv3.

Dans la nouvelle version:

  • Ajout de la prise en charge de l'optimisation au stade de la liaison (LTO, Link Time Optimization). Les optimisations LTO diffèrent en prenant en compte l'état de tous les fichiers impliqués dans le processus de construction, tandis que les modes d'optimisation traditionnels optimisent chaque fichier séparément et ne prennent pas en compte les conditions d'appel des fonctions définies dans d'autres fichiers. Alors qu'auparavant, lorsque des fichiers de code intermédiaire (IR) GCC ou LLVM étaient trouvés, les éditeurs de liens ld.bfd ou ld.lld correspondants étaient appelés, Mold traite désormais les fichiers IR de manière indépendante et utilise l'API Linker Plugin, également utilisée dans GNU ld et GNU. lieurs d'or. Lorsqu'il est activé, LTO n'est que légèrement plus rapide que les autres éditeurs de liens, car la plupart du temps est consacré à l'optimisation du code plutôt qu'à la liaison.
  • Ajout de la prise en charge de l'architecture RISC-V (RV64) sur les plates-formes hôte et cible.
  • Ajout de l'option « --emit-relocs » pour permettre la copie des sections de relocalisation des fichiers d'entrée vers les fichiers de sortie pour une application ultérieure des optimisations au stade post-liaison.
  • Ajout de l'option « --shuffle-sections » pour randomiser l'ordre des sections avant de fixer leurs adresses dans l'espace d'adressage virtuel.
  • Ajout des options « --print-dependencies » et « --print-dependencies=full » pour afficher au format CSV des informations sur les dépendances entre les fichiers d'entrée, qui, par exemple, peuvent être utilisées pour analyser les raisons de la connexion lors de la liaison de certains fichiers objets. ou lors de l'exécution d'un travail de minification des dépendances entre fichiers.
  • Ajout des options "--warn-once" et "--warn-textrel".
  • Suppression de la dépendance sur libxxhash.

Source: opennet.ru

Ajouter un commentaire