[SOS] gcc 4

David Decotigny david.decotigny at free.fr
Sam 15 Oct 19:36:58 CEST 2005


Bonjour,

En voulant regarder ce que SOS donnait avec gcc4, je suis tombé sur un
bug grave de SOS : un problème d'ecrasement de données dans le noyau a
cause du comportement de sos_memdup_from_user qui etait incorrect
lorsqu'on voulait copier un objet de taille nulle (il ne retournait pas
d'erreur alors que le pointeur retourné n'etait pas valide). L'effet de
bord etait moins visible avec gcc 3 mais le bug existait.

Autre "bug" (pb de compilation) : gcc 4 interdit
l'__attribute__(alias("symbole")) pour un symbole qui n'est pas declare
dans le fichier courant. Il a donc fallu modifier libc.c et libc.h pour
definir des vraies fonctions qui font de vrais appels des fonctions
_sos_exit & co. Dans le patch que je vous joins, il risque d'y avoir
quelques chunks rejetes parce que j'ai fait le diff sur une version des
sources qui ne correspond pas a la version "officielle" de l'article 8 :
reportez les modifs refusees a la main, c'est trivial.

Dernier bug lie a l'utilisation de gcc 4 : une contrainte de
l'assembleur inline oubliee dans la fonction user _sos_syscall3.

Enfin, en bonus un bug aperçu pendant le developpement du code des
articles suivants : un probleme de comptage de references mal gere.

Le patch est en attachement de ce mail. Il est a appliquer sur la
version "officielle" de l'article 8, moyennant les quelques adaptations
sus-mentionnees pour libc.c et libc.h.

Bonne journee,

-- 
http://david.decotigny.free.fr/
-------------- section suivante --------------
Une pièce jointe non texte a été nettoyée...
Nom: change_webversion8.diff
Type: text/x-patch
Taille: 13939 octets
Desc: non disponible
Url: http://the-doors.enix.org/pipermail/sos/attachments/20051015/fe407eca/change_webversion8.bin


Plus d'informations sur la liste de diffusion Sos