Bonjour,
Ça m’embête un peu que le passage à une nouvelle version du noyau linux ne s’accompagne jamais par la rectification d’erreurs bénines ou manquements à la syntaxe du langage C.
La différence entre une version 2.6.x.x et 2.6.x.y consiste donc en l’ajout de nouveau module, mais pas en révision de la syntaxe de ce qui a déjà été écrit, qui fonctionne certe, mais qui provoque des erreurs non fatales de compilation.
Voici les premières lignes de logs de ma dernière compilation d’un 2.6.21 debian, les erreurs tournent principalement autour de trois choses:
- non initialisation préalable d’une variable utilisée dans le corps d’une fonction.
- test de comparaison toujours vrai ou toujours faux que le gcc relève.
- bloc de test if vide (que certains langages se refusent à interpréter).
arch/i386/kernel/setup.c:80: warning: missing initializer
arch/i386/kernel/setup.c:80: warning: (near initialization for ‘new_cpu_data.x86_capability’)
arch/i386/kernel/setup.c:82: warning: missing initializer
arch/i386/kernel/setup.c:82: warning: (near initialization for ‘boot_cpu_data.x86_capability’)
arch/i386/kernel/reboot.c:150: warning: initialization discards qualifiers from pointer target type
arch/i386/kernel/init_task.c:17: warning: missing initializer
arch/i386/kernel/init_task.c:17: warning: (near initialization for ‘init_mm.context’)
arch/i386/kernel/init_task.c:37: warning: missing initializer
arch/i386/kernel/init_task.c:37: warning: (near initialization for ‘init_task.rcu’)
Ou encore :
fs/lockd/svc.c:490: warning: comparison of unsigned expression < 0 is always false
fs/ncpfs/dir.c:327: warning: empty body in an else-statement
fs/ncpfs/ioctl.c:397: warning: empty body in an else-statement
fs/ncpfs/ioctl.c:399: warning: empty body in an else-statement
fs/ncpfs/ioctl.c:447: warning: empty body in an else-statement
fs/ncpfs/ioctl.c:449: warning: empty body in an else-statement
fs/ncpfs/ncplib_kernel.c:299: warning: empty body in an if-statement
Le tout représente 1455 lignes de warning (mais pas 1455 fichiers *.c incriminés).
Mais je ne connais pas le C. Y aurait il quelqu’un connaissant la syntaxe C et à même de rectifier tout cela dans les sources pour mettre ici et à disposition un package linux-source-x.y.z voir un patch à appliquer aux sources debian pour qu’on dispose de sources bien écrites ?
ps: pour le confort compilatoire
En plus je me dis que ces petits manquements ne sont pas toujours étrangers aux bizarreries de comportement d’un driver donné, non ?