linux-kbuild.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 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).