* [Xenomai-core] [PATCH][SOLO] add more warnings
@ 2008-03-28 19:03 Robert Schwebel
2008-03-28 19:52 ` Philippe Gerum
2008-03-28 20:14 ` Philippe Gerum
0 siblings, 2 replies; 7+ messages in thread
From: Robert Schwebel @ 2008-03-28 19:03 UTC (permalink / raw)
To: xenomai-core
Contrary to what one would assume, -Wall doesn't warn on everything. It
turned out to add a few more options, like -Wsign-compare, -Wfloat-equal
and -Wformat-security, which is what the patch below does.
When running with these options, we get the following warnings:
kernelLib.c: In function 'kernelInit':
kernelLib.c:63: warning: comparison between signed and unsigned
msgQLib.c: In function 'msgQReceive':
msgQLib.c:165: warning: comparison between signed and unsigned
msgQLib.c: In function 'msgQSend':
msgQLib.c:227: warning: comparison between signed and unsigned
msgQLib.c:237: warning: comparison between signed and unsigned
taskLib.c: In function 'taskSpawn':
taskLib.c:382: warning: signed and unsigned type in conditional expression
pt.c: In function 'get_pt_from_id':
pt.c:56: warning: comparison between signed and unsigned
pt.c:58: warning: comparison between signed and unsigned
queue.c: In function 'get_queue_from_id':
queue.c:49: warning: comparison between signed and unsigned
queue.c: In function '__q_send':
queue.c:224: warning: comparison between signed and unsigned
queue.c: In function '__q_broadcast':
queue.c:311: warning: comparison between signed and unsigned
queue.c: In function '__q_receive':
queue.c:365: warning: comparison between signed and unsigned
rn.c: In function 'get_rn_from_id':
rn.c:41: warning: comparison between signed and unsigned
sem.c: In function 'get_sem_from_id':
sem.c:41: warning: comparison between signed and unsigned
task.c: In function 'find_psos_task':
task.c:54: warning: comparison between signed and unsigned
task.c: In function 'find_psos_task_or_self':
task.c:86: warning: comparison between signed and unsigned
task.c: In function 'get_psos_task':
task.c:110: warning: comparison between signed and unsigned
task.c: In function 'get_psos_task_or_self':
task.c:131: warning: comparison between signed and unsigned
task.c:140: warning: comparison between signed and unsigned
task.c: In function 'check_task_priority':
task.c:232: warning: comparison between signed and unsigned
tm.c: In function 'get_tm_from_id':
tm.c:43: warning: comparison between signed and unsigned
I've looked into the first ones only yet and it looks to me like the
type definitions have to be reviewed carefully. For example, TASK_ID is
defined to be unsigned long, whereas the vxworks documentation [1] looks
more like if we need 'int' there. Which also makes me wonder if vxworks
has a special idea about what 'int' is; guessing from [2] it looks like
it assumes sint32_t, so in order to fix this on 64 bit boxes, shouldn't
these cases be converted to use the inttypes.h definitions?
However, somebody with more vxworks knowledge than myself should have a
look at this.
Signed-off-by: Robert Schwebel <r.schwebel@domain.hid>
[1] http://spacegrant.colorado.edu/~dixonc/vxworks/docs/vxworks/ref/taskLib.html#taskActivate
[2] http://www.xs4all.nl/~borkhuis/vxworks/vxw_pt6.html
---
configure.in | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: xenomai-solo/configure.in
===================================================================
--- xenomai-solo.orig/configure.in 2008-03-28 19:17:23.000000000 +0100
+++ xenomai-solo/configure.in 2008-03-28 19:19:15.000000000 +0100
@@ -163,7 +163,8 @@
dnl Exported CFLAGS and LDFLAGS
XENO_USER_APP_CFLAGS=$XENO_USER_CFLAGS
XENO_USER_APP_LDFLAGS=$XENO_USER_LDFLAGS
-XENO_USER_CFLAGS="$XENO_USER_CFLAGS -Wall -pipe -fstrict-aliasing $gcc_w_noalias"
+XENO_USER_CFLAGS="$XENO_USER_CFLAGS -Wall -Wsign-compare -Wfloat-equal -Wformat-security"
+XENO_USER_CFLAGS="$XENO_USER_CFLAGS -pipe -fstrict-aliasing $gcc_w_noalias"
if test x$debug_symbols = xy; then
XENO_USER_CFLAGS="-g -O0 $XENO_USER_CFLAGS -D__SOLO_DEBUG__"
--
Dipl.-Ing. Robert Schwebel | http://www.pengutronix.de
Pengutronix - Linux Solutions for Science and Industry
Handelsregister: Amtsgericht Hildesheim, HRA 2686
Hannoversche Str. 2, 31134 Hildesheim, Germany
Phone: +49-5121-206917-0 | Fax: +49-5121-206917-9
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [Xenomai-core] [PATCH][SOLO] add more warnings
2008-03-28 19:03 [Xenomai-core] [PATCH][SOLO] add more warnings Robert Schwebel
@ 2008-03-28 19:52 ` Philippe Gerum
2008-03-28 20:26 ` Philippe Gerum
2008-03-28 20:46 ` Robert Schwebel
2008-03-28 20:14 ` Philippe Gerum
1 sibling, 2 replies; 7+ messages in thread
From: Philippe Gerum @ 2008-03-28 19:52 UTC (permalink / raw)
To: Robert Schwebel; +Cc: xenomai-core
Robert Schwebel wrote:
> Contrary to what one would assume, -Wall doesn't warn on everything. It
> turned out to add a few more options, like -Wsign-compare, -Wfloat-equal
> and -Wformat-security, which is what the patch below does.
>
> When running with these options, we get the following warnings:
>
> kernelLib.c: In function 'kernelInit':
> kernelLib.c:63: warning: comparison between signed and unsigned
> msgQLib.c: In function 'msgQReceive':
> msgQLib.c:165: warning: comparison between signed and unsigned
> msgQLib.c: In function 'msgQSend':
> msgQLib.c:227: warning: comparison between signed and unsigned
> msgQLib.c:237: warning: comparison between signed and unsigned
> taskLib.c: In function 'taskSpawn':
> taskLib.c:382: warning: signed and unsigned type in conditional expression
> pt.c: In function 'get_pt_from_id':
> pt.c:56: warning: comparison between signed and unsigned
> pt.c:58: warning: comparison between signed and unsigned
> queue.c: In function 'get_queue_from_id':
> queue.c:49: warning: comparison between signed and unsigned
> queue.c: In function '__q_send':
> queue.c:224: warning: comparison between signed and unsigned
> queue.c: In function '__q_broadcast':
> queue.c:311: warning: comparison between signed and unsigned
> queue.c: In function '__q_receive':
> queue.c:365: warning: comparison between signed and unsigned
> rn.c: In function 'get_rn_from_id':
> rn.c:41: warning: comparison between signed and unsigned
> sem.c: In function 'get_sem_from_id':
> sem.c:41: warning: comparison between signed and unsigned
> task.c: In function 'find_psos_task':
> task.c:54: warning: comparison between signed and unsigned
> task.c: In function 'find_psos_task_or_self':
> task.c:86: warning: comparison between signed and unsigned
> task.c: In function 'get_psos_task':
> task.c:110: warning: comparison between signed and unsigned
> task.c: In function 'get_psos_task_or_self':
> task.c:131: warning: comparison between signed and unsigned
> task.c:140: warning: comparison between signed and unsigned
> task.c: In function 'check_task_priority':
> task.c:232: warning: comparison between signed and unsigned
> tm.c: In function 'get_tm_from_id':
> tm.c:43: warning: comparison between signed and unsigned
>
> I've looked into the first ones only yet and it looks to me like the
> type definitions have to be reviewed carefully. For example, TASK_ID is
> defined to be unsigned long, whereas the vxworks documentation [1] looks
> more like if we need 'int' there. Which also makes me wonder if vxworks
> has a special idea about what 'int' is;
VxWorks assumes 32bit and sizeof(void *) == sizeof(int), unfortunately. See
taskSpawn() for instance.
guessing from [2] it looks like
> it assumes sint32_t, so in order to fix this on 64 bit boxes, shouldn't
> these cases be converted to use the inttypes.h definitions?
>
Did you mean stdint.h? What we need is an integer type which is able to carry a
pointer on 32/64bit platforms, so we should rather use intptr_t I guess, as per
C99, which expands as a long type. Object ids as unsigned long is a left over
from the co-kernel version, where we use actual integer handles returned from
kernel space, and not pointers in disguise. Will fix, thanks.
> However, somebody with more vxworks knowledge than myself should have a
> look at this.
>
> Signed-off-by: Robert Schwebel <r.schwebel@domain.hid>
>
> [1] http://spacegrant.colorado.edu/~dixonc/vxworks/docs/vxworks/ref/taskLib.html#taskActivate
> [2] http://www.xs4all.nl/~borkhuis/vxworks/vxw_pt6.html
>
> ---
> configure.in | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
Merged, thanks.
> Index: xenomai-solo/configure.in
> ===================================================================
> --- xenomai-solo.orig/configure.in 2008-03-28 19:17:23.000000000 +0100
> +++ xenomai-solo/configure.in 2008-03-28 19:19:15.000000000 +0100
> @@ -163,7 +163,8 @@
> dnl Exported CFLAGS and LDFLAGS
> XENO_USER_APP_CFLAGS=$XENO_USER_CFLAGS
> XENO_USER_APP_LDFLAGS=$XENO_USER_LDFLAGS
> -XENO_USER_CFLAGS="$XENO_USER_CFLAGS -Wall -pipe -fstrict-aliasing $gcc_w_noalias"
> +XENO_USER_CFLAGS="$XENO_USER_CFLAGS -Wall -Wsign-compare -Wfloat-equal -Wformat-security"
> +XENO_USER_CFLAGS="$XENO_USER_CFLAGS -pipe -fstrict-aliasing $gcc_w_noalias"
>
> if test x$debug_symbols = xy; then
> XENO_USER_CFLAGS="-g -O0 $XENO_USER_CFLAGS -D__SOLO_DEBUG__"
>
--
Philippe.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Xenomai-core] [PATCH][SOLO] add more warnings
2008-03-28 19:52 ` Philippe Gerum
@ 2008-03-28 20:26 ` Philippe Gerum
2008-03-28 20:46 ` Robert Schwebel
1 sibling, 0 replies; 7+ messages in thread
From: Philippe Gerum @ 2008-03-28 20:26 UTC (permalink / raw)
To: Robert Schwebel; +Cc: xenomai-core
Philippe Gerum wrote:
> Robert Schwebel wrote:
[snip]
>> I've looked into the first ones only yet and it looks to me like the
>> type definitions have to be reviewed carefully. For example, TASK_ID is
>> defined to be unsigned long, whereas the vxworks documentation [1] looks
>> more like if we need 'int' there. Which also makes me wonder if vxworks
>> has a special idea about what 'int' is;
>
> VxWorks assumes 32bit and sizeof(void *) == sizeof(int), unfortunately. See
> taskSpawn() for instance.
>
Sorry: s,taskSpawn,taskInit,
--
Philippe.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Xenomai-core] [PATCH][SOLO] add more warnings
2008-03-28 19:52 ` Philippe Gerum
2008-03-28 20:26 ` Philippe Gerum
@ 2008-03-28 20:46 ` Robert Schwebel
2008-03-28 23:06 ` Wolfgang Denk
2008-03-29 8:32 ` Philippe Gerum
1 sibling, 2 replies; 7+ messages in thread
From: Robert Schwebel @ 2008-03-28 20:46 UTC (permalink / raw)
To: xenomai-core
On Fri, Mar 28, 2008 at 08:52:26PM +0100, Philippe Gerum wrote:
> > I've looked into the first ones only yet and it looks to me like the
> > type definitions have to be reviewed carefully. For example, TASK_ID is
> > defined to be unsigned long, whereas the vxworks documentation [1] looks
> > more like if we need 'int' there. Which also makes me wonder if vxworks
> > has a special idea about what 'int' is;
>
> VxWorks assumes 32bit and sizeof(void *) == sizeof(int), unfortunately. See
> taskSpawn() for instance.
Yes, which probably means that using 'int' and friends is not a good
idea.
> Did you mean stdint.h?
Probably better, yes.
> What we need is an integer type which is able to carry a pointer on
> 32/64bit platforms, so we should rather use intptr_t I guess, as per
> C99, which expands as a long type. Object ids as unsigned long is a
> left over from the co-kernel version, where we use actual integer
> handles returned from kernel space, and not pointers in disguise. Will
> fix, thanks.
Hmm, if vxworks assumes "int" to be 32 bit, couldn't it lead to problems
if the pointer size itself isn't 32 bit as well?
> Merged, thanks.
Doesn't show up on http://www.denx.de/cgi-bin/gitweb.cgi?p=xenomai-solo.git;a=summary
?
Robert
--
Dipl.-Ing. Robert Schwebel | http://www.pengutronix.de
Pengutronix - Linux Solutions for Science and Industry
Handelsregister: Amtsgericht Hildesheim, HRA 2686
Hannoversche Str. 2, 31134 Hildesheim, Germany
Phone: +49-5121-206917-0 | Fax: +49-5121-206917-9
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [Xenomai-core] [PATCH][SOLO] add more warnings
2008-03-28 20:46 ` Robert Schwebel
@ 2008-03-28 23:06 ` Wolfgang Denk
2008-03-29 8:32 ` Philippe Gerum
1 sibling, 0 replies; 7+ messages in thread
From: Wolfgang Denk @ 2008-03-28 23:06 UTC (permalink / raw)
To: Robert Schwebel; +Cc: xenomai-core
In message <20080328204631.GC9009@domain.hid> you wrote:
>
> Doesn't show up on http://www.denx.de/cgi-bin/gitweb.cgi?p=xenomai-solo.git;a=summary
Please try again.
The cron job to push stuff to the public server runs not that often.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@domain.hid
Respect is a rational process
-- McCoy, "The Galileo Seven", stardate 2822.3
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Xenomai-core] [PATCH][SOLO] add more warnings
2008-03-28 20:46 ` Robert Schwebel
2008-03-28 23:06 ` Wolfgang Denk
@ 2008-03-29 8:32 ` Philippe Gerum
1 sibling, 0 replies; 7+ messages in thread
From: Philippe Gerum @ 2008-03-29 8:32 UTC (permalink / raw)
To: Robert Schwebel; +Cc: xenomai-core
Robert Schwebel wrote:
> On Fri, Mar 28, 2008 at 08:52:26PM +0100, Philippe Gerum wrote:
>>> I've looked into the first ones only yet and it looks to me like the
>>> type definitions have to be reviewed carefully. For example, TASK_ID is
>>> defined to be unsigned long, whereas the vxworks documentation [1] looks
>>> more like if we need 'int' there. Which also makes me wonder if vxworks
>>> has a special idea about what 'int' is;
>> VxWorks assumes 32bit and sizeof(void *) == sizeof(int), unfortunately. See
>> taskSpawn() for instance.
>
> Yes, which probably means that using 'int' and friends is not a good
> idea.
>
>> Did you mean stdint.h?
>
> Probably better, yes.
>
>> What we need is an integer type which is able to carry a pointer on
>> 32/64bit platforms, so we should rather use intptr_t I guess, as per
>> C99, which expands as a long type. Object ids as unsigned long is a
>> left over from the co-kernel version, where we use actual integer
>> handles returned from kernel space, and not pointers in disguise. Will
>> fix, thanks.
>
> Hmm, if vxworks assumes "int" to be 32 bit, couldn't it lead to problems
> if the pointer size itself isn't 32 bit as well?
>
VxWorks only documents that one may assume TASK_ID == pointer to TCB, which
implies sizeof(int) == sizeof(struct WIND_TCB *) as per the taskInit
documentation and the original taskSpawn prototype. But using a different scalar
type than int to underlay TASK_ID, which would guarantee sizeof(TASK_ID) ==
sizeof(struct WIND_TCB *) is logically ok (and actually always worked so far in
actual ports of legacy apps over the VxWorks skin).
Said differently, any application assuming that a task identifier must be 32bit
wide would only work in a 32bit environment anyway, as implied by the initial
VxWorks assumption that sizeof(TASK_ID) == sizeof(struct WIND_TCB *). Given that
sizeof(intptr_t) is 32bit in such environment, we would be fine in this case as
well.
>> Merged, thanks.
>
> Doesn't show up on http://www.denx.de/cgi-bin/gitweb.cgi?p=xenomai-solo.git;a=summary
>
My GIT tree is mirrored by a cron job to the public repo. You will see the
changes after the next refresh has taken place.
> ?
>
> Robert
--
Philippe.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Xenomai-core] [PATCH][SOLO] add more warnings
2008-03-28 19:03 [Xenomai-core] [PATCH][SOLO] add more warnings Robert Schwebel
2008-03-28 19:52 ` Philippe Gerum
@ 2008-03-28 20:14 ` Philippe Gerum
1 sibling, 0 replies; 7+ messages in thread
From: Philippe Gerum @ 2008-03-28 20:14 UTC (permalink / raw)
To: Robert Schwebel; +Cc: xenomai-core
Robert Schwebel wrote:
> Contrary to what one would assume, -Wall doesn't warn on everything. It
> turned out to add a few more options, like -Wsign-compare, -Wfloat-equal
> and -Wformat-security, which is what the patch below does.
>
> When running with these options, we get the following warnings:
>
It should be better now.
--
Philippe.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2008-03-29 8:32 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-03-28 19:03 [Xenomai-core] [PATCH][SOLO] add more warnings Robert Schwebel
2008-03-28 19:52 ` Philippe Gerum
2008-03-28 20:26 ` Philippe Gerum
2008-03-28 20:46 ` Robert Schwebel
2008-03-28 23:06 ` Wolfgang Denk
2008-03-29 8:32 ` Philippe Gerum
2008-03-28 20:14 ` Philippe Gerum
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.