On 09/30/2013 11:13 AM, Alexander Graf wrote: >> - int cpu_num; >> + union { >> + uint64_t cpuid; >> + struct { >> +#ifdef HOST_WORDS_BIGENDIAN >> + uint32_t cpu_num; >> + uint32_t machine_type; >> +#else >> + uint32_t machine_type; >> + uint32_t cpu_num; >> +#endif > > Are we guaranteed that we don't need to pack? Also anonymous unions/structs > are > a gcc extension IIRC. And why do you swap endianness here, but not above when > defining the machine_type value?
(1) I can't imagine that we would; such struct/unions are used all over. (2) Sure, but we've so many other gcc extensions I figured it didn't matter. (3) Of course. I want host endianness, not target endianness. r~