something to warry about...
sknaumov at gmail.com
Tue Jan 18 08:23:16 UTC 2011
> I need a concrete example how to make warning go away in this case:
> static smallint detect_link_priv(void)
> struct ifreq ifreq;
> struct mii_ioctl_data *mii = (void *)&ifreq.ifr_data;
> mii->reg_num = 1;
> Can we redeclare structures with __attribute__(__may_alias__)?
> No, because they are already declared.
Denys, here is text from the GCC manual:
Example of use:
typedef short __attribute__((__may_alias__)) short_a;
int main (void)
int a = 0x12345678;
short_a *b = (short_a *) &a;
b = 0;
if (a == 0x12345678)
If you replaced short_a with short in the variable declaration,
the above program would abort when compiled with -fstrict-aliasing,
which is on by default at -O2 or above in recent GCC versions.
So try to
static smallint detect_link_priv(void)
typedef struct mii_ioctl_data __attribute__((__may_alias__)) mii_alias;
struct ifreq ifreq;
mii_alias *mii = (void *)&ifreq.ifr_data;
mii->reg_num = 1;
Hope that this will help,
More information about the busybox