[U-Boot-Users] [PATCH] Squash warnings from pointer aliasing in dlmalloc

Kumar Gala galak at kernel.crashing.org
Mon Jul 7 16:28:54 CEST 2008


On Jul 5, 2008, at 5:32 PM, Wolfgang Denk wrote:

> In message <Pine.LNX.4.64.0806042337200.650 at blarg.am.freescale.net>  
> you wrote:
>> When we building with gcc-4.3.x on a ppc host we get the following  
>> warnings:
>>
>> dlmalloc.c: In function 'malloc_extend_top':
>> dlmalloc.c:1971: warning: dereferencing type-punned pointer will  
>> break strict-aliasing rules
>> dlmalloc.c:1999: warning: dereferencing type-punned pointer will  
>> break strict-aliasing rules
> ...
>> This is due to pointer aliasing that the dlmalloc code does and  
>> depends on.
>
> Can you please explain why the dlmalloc code depends on this?

That's what Scott said when I asked about this on the list.

> In my experience so far it has always been possible to avoid such
> warnings by trivial changes to the code (the tricky part was usually
> to understand what the exact problem was and what changes were
> necessary).
>
>> Instead of trying trying to work around the warnings, we use the  
>> per file
>> CFLAGs to disable the warnings via -fno-strict-aliasing.
>
> I tend to reject this patch. I would much rather have the problem
> fixed in the sources. Hushing up compiler warnings has never been a
> good idea.

I'm all for trying to fix the code to git rid of the warnings, however  
nothing I tried was able to accomplish that.

The root of the warnings is the bin_at() macro:

#define bin_at(i)      ((mbinptr)((char*)&(av_[2*(i) + 2]) - 2*SIZE_SZ))
#define next_bin(b)    ((mbinptr)((char*)(b) + 2 * sizeof(mbinptr)))
#define prev_bin(b)    ((mbinptr)((char*)(b) - 2 * sizeof(mbinptr)))

- k




More information about the U-Boot mailing list