Contourner l'erreur "ld: warning: unknown dwarf DW_FORM_strp (offset=0xFFFFFF99) is too big in XXX.a(raw.o)"

Il m'arrive d'utiliser des composants tiers utilisant des librairies open source (ou pas) et donc compilées à la base pour d'autres environnements de développement. Comme vous pourrez le constater en cherchant le message d'erreur "unknown dwarf DW_FORM_strp is too big in" sur votre moteur de recherche habituel je ne suis pas le seul dans ce cas et Delphi n'est pas le seul environnement concerné, loin de là.

Suite à une mise à jour d'un pack de composants je me suis trouvé le bec dans l'eau pendant quelques heures, le temps de comprendre ce qui bloquait. J'obtenais ceci lorsque je tentais de compiler mon application sur iOS 64 :

[DCC Erreur fatale] Code d'erreur du lieur : 3221225477 ($c0000005)
[DCC Erreur fatale] F2084 Erreur interne : AV102FD37C-R00000AA2-0

  ld: warning: unknown dwarf DW_FORM_strp (offset=0xFFFFFF99) is too big in libpdfium.a(raw.o)
  
  
[DCC Erreur fatale] Code d'erreur du lieur : 3221225477 ($c0000005)
[DCC Erreur fatale] F2084 Erreur interne : AV102FD37C-R00000AA2-0

Delphi compilait correctement pour iOS en 32 bits, Android, Windows et Mac, mais voilà, impossible de basculer en 64 bis pour vérifier l'application sur un iPad récent.

Mes recherches, lectures et réflexions m'ont amenés à tester en mode RELEASE au lieu du mode DEBUG pour voir si c'était bien lié et bingo. Ca a fonctionné.

En fait les informations de débogage jointes à la librairie sont trop volumineuses ou incomplètes et le lieur n'arrive pas à s'en dépatouiller. Par conséquent il plante et refuse la compilation. Le hic c'est que la fenêtre d'erreur retournée par Delphi dit juste qu'il n'arrive pas à se connecter à l'appareil sur lequel on veut exécuter l'application, du coup on ne cherche pas au bon endroit.

On peut tout à fait exécuter l'application en mode RELEASE pour les tests. Ca complique un peu les choses, mais si le logiciel fonctionne correctement sur les autres plateformes il y a des chances qu'il n'y ait pas de bizarreries sur une autre (à part des ajustements liés aux styles et aux tailles d'écrans). Et ça, c'est le gros point positif avec Delphi et Firemonkey.

Morale de cette histoire : quand votre outil de développement vous donne une explication impossible, cherchez en une autre ! wink


Mug carte postale SydneyMug Toucan DX dans la baie de Rio