[U-Boot] [PATCH] dlmalloc: remove manual reloc alias warning

Andreas Bießmann andreas.devel at googlemail.com
Tue Aug 14 10:50:36 CEST 2012


Dear all,

On 13.08.2012 11:02, Andreas Bießmann wrote:
> From: Andreas Bießmann <biessmann at corscience.de>
> 
> The avr32 architecture (and some others) require manual relocation. Due to the
> previous error all avr32 boards gave warnings in MAKEALL wich makes it hard to
> find new warnings.
> 
> This patch fixes following warning:
> ---8<---
> 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
> --->8---
> 
> Signed-off-by: Andreas Bießmann <biessmann at corscience.de>
> ---
> A question to all the other related arches, namely m68k, mips, nds32 and
> sparc: Do you encounter the same warnings or is this warning due to my
> outdated compiler (4.4.3 currently, unfortunately atmel do not bother to send
> their patches mainline)?
> 
>  common/dlmalloc.c |    3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/common/dlmalloc.c b/common/dlmalloc.c
> index c645d73..78b1885 100644
> --- a/common/dlmalloc.c
> +++ b/common/dlmalloc.c
> @@ -1485,9 +1485,10 @@ static mbinptr av_[NAV * 2 + 2] = {
>  };
>  
>  #ifdef CONFIG_NEEDS_MANUAL_RELOC
> +typedef unsigned long __attribute__((__may_alias__)) ulong_aliased;
>  void malloc_bin_reloc (void)
>  {
> -	unsigned long *p = (unsigned long *)(&av_[2]);
> +	ulong_aliased *p = (ulong_aliased *)(&av_[2]);
>  	int i;
>  	for (i=2; i<(sizeof(av_)/sizeof(mbinptr)); ++i) {
>  		*p++ += gd->reloc_off;
> 

this seems to be related to
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/121848/focus=121849
can you Wolfgang and/or Simon please comment.

best regards

Andreas Bießmann


More information about the U-Boot mailing list