* Can this type-punned warning be silenced by using a union instead of a cast?
@ 2008-12-28 3:27 Steve Kenton
0 siblings, 0 replies; only message in thread
From: Steve Kenton @ 2008-12-28 3:27 UTC (permalink / raw)
To: Linux-Kbuild
[-- Attachment #1: Type: text/plain, Size: 541 bytes --]
Can this type-punned warning be silenced by using a union instead of a cast?
HOSTCC scripts/basic/fixdep
scripts/basic/fixdep.c: In function 'traps':
scripts/basic/fixdep.c:377: warning: dereferencing type-punned pointer
will break strict-aliasing rules
Something like the attached? As far as I can tell the union should take care of the alignment and make the __attribute__ unnecessary, in which case it does not need to be static either. Compiled with gcc 4.4 cross compiler for i386 successfully but not boot tested.
Steve Kenton
[-- Attachment #2: fixdep.c.patch --]
[-- Type: text/plain, Size: 529 bytes --]
--- linux-2.6/scripts/basic/fixdep.c.orig 2008-12-27 20:54:32.234375000 -0600
+++ linux-2.6/scripts/basic/fixdep.c 2008-12-27 21:03:00.140625000 -0600
@@ -372,11 +372,11 @@ void print_deps(void)
void traps(void)
{
- static char test[] __attribute__((aligned(sizeof(int)))) = "CONF";
+ union { int i; char c[4]; } test = { .c = "CONF" };
- if (*(int *)test != INT_CONF) {
+ if (test.i != INT_CONF) {
fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianess? %#x\n",
- *(int *)test);
+ test.i);
exit(2);
}
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2008-12-28 3:54 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-12-28 3:27 Can this type-punned warning be silenced by using a union instead of a cast? Steve Kenton
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).