From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?ISO-8859-1?Q?Andreas_Bie=DFmann?= Date: Mon, 13 Aug 2012 17:25:33 +0200 Subject: [U-Boot] [PATCH 2/9] Fix strict-aliasing warning in dlmalloc In-Reply-To: <1325822097-15227-3-git-send-email-sjg@chromium.org> References: <1325822097-15227-1-git-send-email-sjg@chromium.org> <1325822097-15227-3-git-send-email-sjg@chromium.org> Message-ID: <50291C6D.7030101@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 > --- > 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); your patch breaks avr32 boards at runtime: ---8<--- U-Boot 2012.07-00134-g6073aab (Aug 13 2012 - 17:16:34) U-Boot code: 00000000 -> 00013588 data: 0001ab70 -> 00050448 VMR table @ 0x107ca4bc DMA: Using memory from 0x1076b000 to 0x1076f000 Flash: 8 MiB at address 0x00000000 DRAM Configuration: Bank #0: 10000000 8 MiB *** Unhandled exception 24 at PC=0x107b442e [0000542e] MMU exception at address 0x7af1ade4 pc: 107b442e lr: 0001b1c8 sp: 1076aecc r12: 00000001 r11: 00000000 r10: 00000079 r9: 107c9de8 r8: 107c9de0 r7: 00010000 r6: 107ca9ac r5: 1076af90 r4: 0000007e r3: 7af1ade0 r2: 107cb8f0 r1: 00000000 r0: 107cb908 Flags: qvnzc Mode bits: hrje....g CPU Mode: Supervisor --->8--- A working solution is http://patchwork.ozlabs.org/patch/176885/ Would be great to remove this aliasing warning in 2012.10 Best regards Andreas Bie?mann