[Mono-devel-list] Compiler Warnings..
Willibald Krenn
Willibald.Krenn at gmx.at
Wed Dec 1 11:04:42 EST 2004
Hi!
AFAIK mono is currently built using
Wall -Wunused -Wmissing-prototypes -Wmissing-declarations
-Wstrict-prototypes -Wmissing-prototypes -Wnested-externs
-Wpointer-arith -Wno-cast-qual -Wcast-align -Wwrite-strings
as arguments for gcc.
(At least this is partly correct, as haven't checked if these args are
used everywhere..)
I did a build in my private tree using the parameters above and logged
all warnings gcc emitted: This file is over 1400 lines. Sure, some of
the warnings are from code that isn't found in official mono and
probably lots of these warnings come from code that mono does not build
using the full warning parameter set from above, but that still leaves a
substantial number..
If I build my private tree with a set of
-g -O2 -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_COMPILER
_TLS (i.e. no warnings at all)
and after applying a patch to elimiate some int32<->pointer64 warnings,
I still get warnings in metadata/loader.c, reflection.c,
debug-mono-symfile.c, mono-debug-debugger.c and one in mini.c: warning:
#warning "fixme: add opcode emulation"
Question is: Why's mono even built using such a strict warning set, when
no-one seems to care? What warning level is considered to be 'standard'
and useful?
To my first real patch: Attached to this mail you'll find some
modifications to eliminate gcc warnings on int32<->pointer64 casts. Note
that there are some interface changes too and I considere this version
as NOT ready for including in SV, but I need your comments in
correcting/developing this patch further.
I've introduced one additional global header file called intps.h: It's
sole purpose is to define an unsigned integer that is guaranteed to be
the same size as a pointer: uintps. (unsigned int pointer size)
#ifndef _intps_H
#define _intps_H
#include "config.h"
#include <glib.h>
/*definition of an unsigned int datatype that is always
sizeof(pointer)*/
#if SIZEOF_VOID_P == 8
typedef guint64 uintps;
#else
typedef guint32 uintps;
#endif
#endif
Using this type as a basis, I've introduced casts wherever gcc (without
all warnings!) complained about integer size not matching pointer size..
But see attached diff.. Again, I do not consider it ready to commit,
cause I haven't run all tests and did not re-check if new warnings are
emitted when compiling with the strict warning set outlined above.
Thanks,
Willi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: clean64.diff
Type: text/x-diff
Size: 22183 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-devel-list/attachments/20041201/1702a18c/attachment.bin
More information about the Mono-devel-list
mailing list