[U-Boot] [PATCH] ppc: mpc8323erdb: Fix compiler warning

Fix the following warning:
mpc8323erdb.c: In function 'mac_read_from_eeprom': mpc8323erdb.c:198:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] if (crc32(crc, buf, 24) == *(unsigned int *)&buf[24]) { ^
Size remains unchanged after and before fix:
text data bss dec hex filename 206977 18748 23344 249069 3cced ./u-boot
Note the fix is the crudest possible, but also least intrusive.
Signed-off-by: Marek Vasut marex@denx.de Cc: Michael Barkowski michael.barkowski@freescale.com Cc: Tom Rini trini@ti.com Cc: Wolfgang Denk wd@denx.de --- board/freescale/mpc8323erdb/mpc8323erdb.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/board/freescale/mpc8323erdb/mpc8323erdb.c b/board/freescale/mpc8323erdb/mpc8323erdb.c index f29b2f4..710589f 100644 --- a/board/freescale/mpc8323erdb/mpc8323erdb.c +++ b/board/freescale/mpc8323erdb/mpc8323erdb.c @@ -184,7 +184,8 @@ void ft_board_setup(void *blob, bd_t *bd) #if defined(CONFIG_SYS_I2C_MAC_OFFSET) int mac_read_from_eeprom(void) { - uchar buf[28]; + uint32_t bbuf[28 / 4]; + uchar *buf = (uchar *)bbuf; char str[18]; int i = 0; unsigned int crc = 0; @@ -195,7 +196,7 @@ int mac_read_from_eeprom(void) printf("\nEEPROM @ 0x%02x read FAILED!!!\n", CONFIG_SYS_I2C_EEPROM_ADDR); } else { - if (crc32(crc, buf, 24) == *(unsigned int *)&buf[24]) { + if (crc32(crc, buf, 24) == bbuf[24 / 4]) { printf("Reading MAC from EEPROM\n"); for (i = 0; i < 4; i++) { if (memcmp(&buf[i * 6], "\0\0\0\0\0\0", 6)) {

Dear Marek Vasut,
In message 1373710940-15779-1-git-send-email-marex@denx.de you wrote:
Fix the following warning:
mpc8323erdb.c: In function 'mac_read_from_eeprom': mpc8323erdb.c:198:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] if (crc32(crc, buf, 24) == *(unsigned int *)&buf[24]) { ^
Size remains unchanged after and before fix:
text data bss dec hex filename 206977 18748 23344 249069 3cced ./u-boot
Note the fix is the crudest possible, but also least intrusive.
Please see Timur's review comments to my original patch for this isssue ([1]). The "unsigned int" should indeed be fixed.
I resubmitted a v2 with the review comments incorporated on July 08, see [2], but I caught only one part of the needed changes. V3 sent right now; see [3]. I'd rather see this added than yours.
Also note that it might be a good idea to add the MPC83xx custodion to the Cc: list of such patches...
[1] http://article.gmane.org/gmane.comp.boot-loaders.u-boot/163386 [2] http://article.gmane.org/gmane.comp.boot-loaders.u-boot/165266 [3] http://article.gmane.org/gmane.comp.boot-loaders.u-boot/165731
Best regards,
Wolfgang Denk

Hello Wolfgang,
Dear Marek Vasut,
In message 1373710940-15779-1-git-send-email-marex@denx.de you wrote:
Fix the following warning:
mpc8323erdb.c: In function 'mac_read_from_eeprom': mpc8323erdb.c:198:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
if (crc32(crc, buf, 24) == *(unsigned int *)&buf[24]) { ^
Size remains unchanged after and before fix: text data bss dec hex filename
206977 18748 23344 249069 3cced ./u-boot
Note the fix is the crudest possible, but also least intrusive.
Please see Timur's review comments to my original patch for this isssue ([1]). The "unsigned int" should indeed be fixed.
I resubmitted a v2 with the review comments incorporated on July 08, see [2], but I caught only one part of the needed changes. V3 sent right now; see [3]. I'd rather see this added than yours.
OK, I didn't know you were at it.
Also note that it might be a good idea to add the MPC83xx custodion to the Cc: list of such patches...
Yes, I only added the board maintainer, who's apparently no longer at FSL :(
[1] http://article.gmane.org/gmane.comp.boot-loaders.u-boot/163386 [2] http://article.gmane.org/gmane.comp.boot-loaders.u-boot/165266 [3] http://article.gmane.org/gmane.comp.boot-loaders.u-boot/165731
Best regards, Marek Vasut
participants (2)
-
Marek Vasut
-
Wolfgang Denk