[linux-dvb] [patch 3/3] fix strict aliasing warning.

Ludwig Nussel ludwig.nussel at suse.de
Thu Sep 29 17:36:46 CEST 2005


Johannes Stezenbach wrote:
> Ludwig Nussel wrote:
> > Johannes Stezenbach wrote:
> > > On Thu, Sep 29, 2005 Ludwig Nussel wrote:
> > > > An int* must not be used to change some enum. As workaround a char* can be
> > > > used.
> > > 
> > > Says who?
> > 
> > My local gcc guru ;-) As far as I understood gcc makes the
> > assumption that a pointer to e.g. int never points to a float, enum
> > something etc and vice versa. With that assumption it can optimize
> > some cases better but may also produces garbage if your pointers do
> > point to the same location. Only char* may point to anything.
> 
> gcc info pages contain some info in the -fstrict-aliasing
> description (and of course the iso c99 spec).
> 
> But AFAIK enums have int type (unless you use -fshort-enum), and a
> pointer to int may alias a pointer to enum without breaking the rules.

I don't know.

> > > Which compiler with whcih option gives you a warning about this?
> > 
> > gcc (GCC) 4.1.0 20050920 (experimental) (SUSE Linux)
> > 
> > -O2 -Wall -D_FORTIFY_SOURCE=2
> > 
> > > This patch looks wrong to me.
> > 
> > This whole alising stuff is strange. The code as it is right now is
> > definitively wrong, eventhough gcc probably doesn't produce garbage
> > in this case as the affected function likely will not be inlined.
> > Anyways, aliasing isn't exactly something I care about but I can't
> > get packages out of our build system as long as there are such
> > problems. if you think the interface to parse_param is perfect
> > -fno-strict-aliasing needs to be added to CFLAGS.
> 
> I believe your gcc is buggy.
> 
> What is -D_FORTIFY_SOURCE=2 ?

Enables some static buffer overflow checking, warnings about unused
return values etc in glibc.

cu
Ludwig

-- 
 (o_   Ludwig Nussel
 //\   SUSE LINUX Products GmbH, Development
 V_/_  http://www.suse.de/



More information about the linux-dvb mailing list