On 01/12/14 18:45, John Haxby wrote: > >> On 1 Dec 2014, at 17:15, Andrew Cooper <andrew.coop...@citrix.com >> <mailto:andrew.coop...@citrix.com>> wrote: >> >> On 01/12/14 14:37, John Haxby wrote: >>> With gcc 4.8.3, compiling xen-detect gives a compilation warning if >>> you're optimising: >>> >>> $ cc -Wall -Os xen-detect.c >>> xen-detect.c: In function ‘check_for_xen’: >>> xen-detect.c:65:9: warning: dereferencing type-punned pointer will break >>> strict-aliasing rules [-Wstrict-aliasing] >>> *(uint32_t *)(signature + 0) = regs[1]; >>> ^ >>> >>> Signed-off-by: John Haxby <john.ha...@oracle.com >>> <mailto:john.ha...@oracle.com>> >> >> Why are you compiling without the CFLAGS from the Xen build system? >> >> We explicitly disable strict alias optimisations, because optimisations >> based upon the aliasing rules in C is mad. Even when you eliminate all >> the warnings, there are still subtle bugs because the compiler is free >> to assume a lot more than a programmer would typically deem reasonable. > > > I wasn’t building the whole system, I just wanted xen-detect so I > pulled it out and compiled it; I usually use "-Wall -Os” because the > combination finds problems I might otherwise overlook. The patch > also removes three lines of code :) but you can take it or leave it as > you choose. The other patch — reversing the code of pv and hvm > checking — was the real problem. > > jch
I feel it would be neater to fix this by using the XEN_CPUID_SIGNATURE_E{B,C,D}X constants from the API. This fixes the strict aliasing, and does away with the string handling completely. ~Andrew
_______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel