On Tue, Jul 22, 2014 at 10:57:18AM +0900, Masahiro Yamada wrote:
> The latest GCC is so clever that it reports more warnings
> than old ones did:
>
> ------------------------------>8------------------------------
>
> board/freescale/m5253demo/flash.c: In function 'flash_get_offsets':
> board/freescale/m5253demo/flash.c:65:23: warning: iteration 2047u
> invokes undefined behavior [-Waggressive-loop-optimizations]
> info->start[k + 1] = info->start[k] + CONFIG_SYS_SST_SECTSZ;
> ^
> board/freescale/m5253demo/flash.c:64:3: note: containing loop
> for (k = 0, j = 0; j < CONFIG_SYS_SST_SECT; j++, k++) {
> ^
>
> ------------------------------8<------------------------------
>
> The cause of the warning is like this:
>
> The for statement iterates 2048 times in flash_get_offsets() func.
> (Notice CONFIG_SYS_SST_SECT is defined as 2048)
>
> The last iteration does
> info->start[2048] = info->start[2047] + CONFIG_SYS_SST_SECTSZ;
> causing an undefined behavior.
>
> (Please note the array size of info->start is 2048.
> CONFIG_SYS_MAX_FLASH_SECT is defined as 2048 for this board.)
>
> This commit fixes that so as not to overrun the info->start array.
>
> Signed-off-by: Masahiro Yamada <[email protected]>
> Cc: Jason Jin <[email protected]>Applied to u-boot/master, thanks! -- Tom
signature.asc
Description: Digital signature
_______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

