sim/rx: avoid pointer arithmetic on void * pointers
authorAndrew Burgess <andrew.burgess@embecosm.com>
Mon, 1 Feb 2021 11:37:46 +0000 (11:37 +0000)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Mon, 8 Feb 2021 11:01:07 +0000 (11:01 +0000)
Pointer arithmetic on void * pointers results in a GCC warning.  Avoid
the warning by casting the pointer to its actual type earlier in the
function.

sim/rx/ChangeLog:

* mem.c (mem_put_blk): Rename parameter, add cast from parameter
type to local type.  Remove cast later in the function.
(mem_get_blk): Likewise.
* mem.h (mem_put_blk): Rename parameter to match definition.
(mem_get_blk): Likewise.

sim/rx/ChangeLog
sim/rx/mem.c
sim/rx/mem.h

index d71bb44c800921705f72f8cd188fa8cab400fe5d..b3d76be02db96f021ff962b71e1685617f5296ec 100644 (file)
@@ -1,3 +1,11 @@
+2021-02-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * mem.c (mem_put_blk): Rename parameter, add cast from parameter
+       type to local type.  Remove cast later in the function.
+       (mem_get_blk): Likewise.
+       * mem.h (mem_put_blk): Rename parameter to match definition.
+       (mem_get_blk): Likewise.
+
 2021-02-08  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * load.c: Replace 'elf/internal.h' and 'elf/common.h' includes
index fe8e08d1460f62cb9c21a7caba0df07584d055d1..7e62bfb89535222c7cc26786c3236223dba480cc 100644 (file)
@@ -434,13 +434,15 @@ mem_put_si (int address, unsigned long value)
 }
 
 void
-mem_put_blk (int address, void *bufptr, int nbytes)
+mem_put_blk (int address, void *bufptr_void, int nbytes)
 {
+  unsigned char *bufptr = (unsigned char *) bufptr_void;
+
   S ("<=");
   if (enable_counting)
     mem_counters[1][1] += nbytes;
   while (nbytes--)
-    mem_put_byte (address++, *(unsigned char *) bufptr++);
+    mem_put_byte (address++, *bufptr++);
   E ();
 }
 
@@ -567,13 +569,15 @@ mem_get_si (int address)
 }
 
 void
-mem_get_blk (int address, void *bufptr, int nbytes)
+mem_get_blk (int address, void *bufptr_void, int nbytes)
 {
+  char *bufptr = (char *) bufptr_void;
+
   S ("=>");
   if (enable_counting)
     mem_counters[0][1] += nbytes;
   while (nbytes--)
-    *(char *) bufptr++ = mem_get_byte (address++);
+    *bufptr++ = mem_get_byte (address++);
   E ();
 }
 
index 21080f6e6e3a1782587fe7b6d36c4fa9feadd168..a4c7455a20d92e104157fa4daa99f90e6b13b44d 100644 (file)
@@ -53,7 +53,7 @@ void mem_put_hi (int address, unsigned short value);
 void mem_put_psi (int address, unsigned long value);
 void mem_put_si (int address, unsigned long value);
 
-void mem_put_blk (int address, void *bufptr, int nbytes);
+void mem_put_blk (int address, void *bufptr_void, int nbytes);
 
 unsigned char mem_get_pc (int address);
 
@@ -62,7 +62,7 @@ unsigned short mem_get_hi (int address);
 unsigned long mem_get_psi (int address);
 unsigned long mem_get_si (int address);
 
-void mem_get_blk (int address, void *bufptr, int nbytes);
+void mem_get_blk (int address, void *bufptr_void, int nbytes);
 
 int sign_ext (int v, int bits);