[U-Boot] [PATCH 2/9] Fix strict-aliasing warning in dlmalloc

Andreas Bießmann andreas.devel at googlemail.com
Tue Sep 4 23:25:16 CEST 2012


Dear Simon Glas,

On 13.08.2012 17:25, Andreas Bießmann wrote:
> Dear Simon Glass,
>
> On 06.01.2012 04:54, Simon Glass wrote:
>> This fixes the following warnings in dlmalloc seen with my gcc 4.6.
>>
>> dlmalloc.c: In function 'malloc_bin_reloc':
>> dlmalloc.c:1493: warning: dereferencing pointer 'p' does break strict-aliasing rules
>> dlmalloc.c:1493: warning: dereferencing pointer 'p' does break strict-aliasing rules
>> dlmalloc.c:1490: note: initialized from here
>> dlmalloc.c:1493: note: initialized from here
>
> This is really annoying, but ...
>
>>
>> Signed-off-by: Simon Glass <sjg at chromium.org>
>> ---
>>   common/dlmalloc.c |    8 ++++----
>>   1 files changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/common/dlmalloc.c b/common/dlmalloc.c
>> index c645d73..0a719b4 100644
>> --- a/common/dlmalloc.c
>> +++ b/common/dlmalloc.c
>> @@ -1487,11 +1487,11 @@ static mbinptr av_[NAV * 2 + 2] = {
>>   #ifdef CONFIG_NEEDS_MANUAL_RELOC
>>   void malloc_bin_reloc (void)
>>   {
>> -	unsigned long *p = (unsigned long *)(&av_[2]);
>> +	mbinptr *p = &av_[2];
>>   	int i;
>> -	for (i=2; i<(sizeof(av_)/sizeof(mbinptr)); ++i) {
>> -		*p++ += gd->reloc_off;
>> -	}
>> +
>> +	for (i = 2; i < ARRAY_SIZE(av_); ++i)
>> +		*p = (mbinptr)((ulong)*p + gd->reloc_off);
------------------^

Ouch ... isn't there something missing? Who increments the pointer? ;)

> your patch breaks avr32 boards at runtime:

Will send a new version which supersedes this one and 
http://patchwork.ozlabs.org/patch/176885/

Best regards

Andreas Bießmann


More information about the U-Boot mailing list