cmd_pxe.c: fix strict-aliasing warnings
authorJason Hobbs <jason.hobbs@calxeda.com>
Mon, 5 Mar 2012 08:12:28 +0000 (08:12 +0000)
committerAnatolij Gustschin <agust@denx.de>
Tue, 27 Mar 2012 13:17:32 +0000 (15:17 +0200)
Without this patch, some versions of gcc (at least ELDK 4.2) complain
about dereferencing type-punned pointers.

Reported-by: Marek Vasut <marex@denx.de>
Signed-off-by: Jason Hobbs <jason.hobbs@calxeda.com>
Cc: Heiko Schocher <hs@denx.de>
Cc: Marek Vasut <marex@denx.de>
Acked-by: Heiko Schocher <hs@denx.de>
common/cmd_pxe.c

index 8a68fa1ae34257be43aed1386968ef5a00ce7fb5..b3c1f67a33022c1ad5ec21781e07d3aba76e616c 100644 (file)
@@ -318,7 +318,7 @@ static int
 do_pxe_get(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        char *pxefile_addr_str;
-       void *pxefile_addr_r;
+       unsigned long pxefile_addr_r;
        int err;
 
        if (argc != 1)
@@ -339,10 +339,10 @@ do_pxe_get(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
         * Keep trying paths until we successfully get a file we're looking
         * for.
         */
-       if (pxe_uuid_path(pxefile_addr_r) > 0
-               || pxe_mac_path(pxefile_addr_r) > 0
-               || pxe_ipaddr_paths(pxefile_addr_r) > 0
-               || get_pxelinux_path("default", pxefile_addr_r) > 0) {
+       if (pxe_uuid_path((void *)pxefile_addr_r) > 0
+               || pxe_mac_path((void *)pxefile_addr_r) > 0
+               || pxe_ipaddr_paths((void *)pxefile_addr_r) > 0
+               || get_pxelinux_path("default", (void *)pxefile_addr_r) > 0) {
 
                printf("Config file found\n");
 
@@ -363,7 +363,7 @@ do_pxe_get(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  */
 static int get_relfile_envaddr(char *file_path, char *envaddr_name)
 {
-       void *file_addr;
+       unsigned long file_addr;
        char *envaddr;
 
        envaddr = from_env(envaddr_name);
@@ -371,10 +371,10 @@ static int get_relfile_envaddr(char *file_path, char *envaddr_name)
        if (!envaddr)
                return -ENOENT;
 
-       if (strict_strtoul(envaddr, 16, (unsigned long *)&file_addr) < 0)
+       if (strict_strtoul(envaddr, 16, &file_addr) < 0)
                return -EINVAL;
 
-       return get_relfile(file_path, file_addr);
+       return get_relfile(file_path, (void *)file_addr);
 }
 
 /*