[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