[Kos-dev] Compilation silencieuse de KOS tous warnings actives
Thomas Petazzoni
kos-dev@enix.org
Sun, 19 Aug 2001 23:00:24 +0200
Bonjour,
J'ai commence a regarder ce que donnait la compilation de kos avec tous
les warnings actives, c'est a dire :
CFLAGS += -ffreestanding -W -Wundef -Wshadow -Wpointer-arith \
-Wbad-function-cast -Wcast-qual -Wcast-align -Wconversion \
-Wsign-compare -Waggregate-return -Wmissing-prototypes \
-Wredundant-decls -Wnested-externs -Winline -Wold-style-cast \
-Wall -O2
La plupart des warnings que j'ai corrige c'etait des comparaisons entre
signed/unsigned et des fonctions non definies dans un .h et non definies
en static.
Toutefois deux types de warnings sont ennuyeux :
- warning: negative integer implicitly converted to unsigned type : ce
warning est donne a chaque fois qu'on utilise la macro ALIGN_SUP. Et je
ne sais pas comment changer cette macro pour que le warning disparaisse.
J'ai reflechi, mais moi et les operations de bit dans tous les sens :(
- warning: cast does not match function type : ce warning est genere
quand on caste un pointeur en un non pointeur ou l'inverse. par exemple
quand on caste un void* en addr_t. Or le probleme c'est que les
fonctions d'allocation de memoire, par exemple mem_valloc retourne void*
et donc a chaque fois qu'on fait addr_t machin = (addr_t)
mem_valloc(...) bin bing. Alors il faudrait que toutes les variables
soient soit des void* soit des addr_t. Contraignant, non ?
D'autre part je n'ai pas reussi a corriger le warning
elf32_build.c:34: warning: passing arg 2 of `elf32_get_section_name' as
unsigned due to prototype
C'est du a l'appel a strcmp, pourtant dans le proto typeof(arg2) =
register const char *, et le arg2 est bien un char*.
Voila pour les experimentations concernant les warnings.
D'autre part, j'ai mis a jour modules.tex pour prendre en compte
KEEP_KSYMS, les init levels et autres changement. Bootstrap.tex explique
brievement ce que fais le module bootstrap.
Redaction cette semaine de idt.tex et kmem.tex. D'ailleurs je viens de
me rendre compte que idt comme nom de module c'est naze, idt ca veut
dire Interrupt Descriptor Table ! On a k'a dire que c'est "historical
reason"
Amicalement,
thomas
--
PETAZZONI Thomas
thomas.petazzoni@meridon.com UIN : 34937744
Projet KOS : http://kos.enix.org
Page Perso : http://www.enix.org/~thomas/