
Le compilateur GCC (GNU Compiler Collection), très célèbre dans l’écosystème du libre et de l’open source, est utilisé pour le développement de grands projets comme le noyau Linux, dont plusieurs fonctionnalités dépendent de GCC. GCC propose une série de compilateurs pouvant prendre en charge les langages C, C++, Objective-C ou encore Java.
Lors du développement de la version 3.16 du noyau Linux, un bug a été constaté dans une fonction d’équilibrage de charge. Après plusieurs évaluations du code de Linux pour identifier le problème, Linus Torvalds s’est rendu compte que c’était le compilateur GCC 4.9 qui était la source du problème.
Dans un ton qui lui est caractéristique, Torvalds n’a pas ménagé sa colère et s’est emporté contre les développeurs de GCC. Il était dégoûté par le code généré par GCC 4.9, qu’il n’a pas manqué de qualifier de « merde ».
« Ok, je suis en train de regarder le code généré et votre compilateur est purement et absolument une *merde* », a écrit Linus Torvalds dans la liste de diffusion du projet.
Le problème indexé par Torvalds est le fait que le compilateur aurait apparemment renversé une constante lors de la génération du code sur architecture x86-64. « Le compilateur fait des choses absolument folles avec le renversement, y compris le renversement d’une constante », a critiqué Linus Torvals, avant d’enfoncer le clou. « Ce compilateur n’aurait pas dû être autorisé à sortir de la maternelle. »
La suite du message de Linus Torvalds présente de façon détaillée le bogue et les potentielles causes, ainsi que le rapprochement avec un autre bogue, avant de conclure que quoi qu’il en soit, il ne s’agit pas d’un bogue du noyau Linux. « C’est votre compilateur qui crée du code complètement cassé. », conclut Torvals, qui met ensuite en garde les développeurs de GCC. « Nous pourrions ajouter un avertissement pour nous assurer que personne ne compile avec GCC 4.9.0 et les gens de Debian devraient probablement downgrader leur brillant nouveau compilateur. »
GCC 4.9.0 est disponible depuis avril dernier. Une mise à jour (GCC 4.9.1) a été publiée récemment. Il n’est pas certain que le bug soit résolu dans cette version. Linus Torvalds a signalé le problème sur le bug tracker du projet. Pour l’instant, il est préférable d’utiliser GCC 4.8 qui est encore la version par défaut pour plusieurs distributions Linux.
Parallèlement, GCC a reçu pour la première fois un prix de l’ACM, après pratiquement 30 ans d’existence. Pour l’ACM, GCC « offre un compilateur portable, productif, conforme aux normes et optimisé, qui soutient plusieurs architectures et plusieurs langages de programmation ».
Pour rappel, le compilateur LLVM, qui existe depuis environ 10 ans, a reçu il y a 2 ans le même prix de l’ACM. Des travaux ont déjà été effectués par des développeurs pour compiler le noyau Linux avec LLVM/Clang. Dans Linux 3.15, il est pratiquement possible de compiler le Kernel avec LLVM.
Sources : message de Linus Torvalds sur LKML, ACM
Et vous ?


Vous avez lu gratuitement 390 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.