Skip to content
  • Masahiro Yamada's avatar
    m68k: fix an undefined behavior warning of M5253DEMO board · 61f06b14
    Masahiro Yamada authored
    
    
    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: default avatarMasahiro Yamada <yamada.m@jp.panasonic.com>
    Cc: Jason Jin <Jason.jin@freescale.com>
    61f06b14