dimanche 9 août 2009
Bold: un linker particulier
Par alrj, dimanche 9 août 2009 à 11:24 :: Devel
J'ai l'honneur de vous faire part de la sortie de Bold, un linker d'un genre particulier qui ne servira pas à grand monde :-)
Il est spécifiquement conçu pour ceux qui souhaitent réaliser des intros 4k (voire 1k), et ne fonctionne que pour x86_64. Pour des tailles supérieures, je doute que ses avantages contrebalancent ses limitations.
Distribué sous GPL 3, il est écrit en python et disponible sur http://www.alrj.org/projects/bold/. Toute suggestion, amélioration, critique ou remarque est la bienvenue.
La partie "runtime", qui peut être incluse dans le binaire final, est écrite en assembleur et bénéficie d'une exception à la GPL, un peu comme le runtime de GCC.
Les principales caractéristiques de Bold sont les suivantes :
- En-têtes ELF limités au strict minimum
- Structures internes (particulièrement la table DYNAMIC) réduites à leur plus simple expression.
- Résolution des symboles externes par hash, pour ne pas embarquer dans le binaire les noms de fonctions à rallonge (OpenGL est parfois champion pour ça)
J'ai encore quelques idées d'amélioration, mais peu de courage pour les implémenter :
- Réordonner les différentes sections jusqu'à trouver l'arrangement qui compresse le mieux
- Porter la chose pour x86, en 32 bits
La discussion, s'il y en a une, se passe sur http://linuxfr.org/~allergy/28643.html