sim: m32c: clean up various warnings
authorMike Frysinger <vapier@gentoo.org>
Fri, 7 May 2021 04:31:05 +0000 (00:31 -0400)
committerMike Frysinger <vapier@gentoo.org>
Fri, 7 May 2021 04:36:26 +0000 (00:36 -0400)
A random grab bag of minor fixes to enable -Werror for this port.

Check the return values of read & write calls and issue warnings when
they fail.
Fixup funky pointer math as the compiler doesn't like ++ on void*.
Handle short reads with fread().

sim/m32c/ChangeLog
sim/m32c/configure
sim/m32c/configure.ac
sim/m32c/mem.c
sim/m32c/trace.c

index aedcb6a22a80c442cfef1ba90c40190cfd77fb64..f8842f57af19e5861a6c25866ffc61490251ff71 100644 (file)
@@ -1,3 +1,15 @@
+2021-05-07  Mike Frysinger  <vapier@gentoo.org>
+
+       * mem.c: Include errno.h.
+       (mem_put_byte): Print a warning when the write call fails.
+       (mem_put_blk): Declare local buf pointer and use it.
+       (mem_get_byte): Return 0 when the read call fails.
+       (mem_get_blk): Declare local buf pointer and use it.
+       * trace.c (load_file_and_line): Declare ret.
+       Assign fread to ret and use to index f->data.
+       * configure.ac: Delete SIM_AC_OPTION_WARNINGS call.
+       * configure: Regenerate.
+
 2021-05-07  Mike Frysinger  <vapier@gentoo.org>
 
        * m32c.opc: Add scope braces around a few segments.
index 4d5f524a7668701de61431f0394dcf118062cc90..7c283c21ca660fa8a614d8640e0c5e00c65e1fc8 100755 (executable)
@@ -11850,6 +11850,18 @@ _ACEOF
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
 # Check whether --enable-werror was given.
 if test "${enable_werror+set}" = set; then :
   enableval=$enable_werror; case "${enableval}" in
@@ -11866,6 +11878,9 @@ if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
 fi
 
 WERROR_CFLAGS=""
+  if test "${ERROR_ON_WARNING}" = yes ; then
+    WERROR_CFLAGS="-Werror"
+  fi
 
 build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
 -Wpointer-sign \
@@ -11947,19 +11962,6 @@ $as_echo "${WARN_CFLAGS} ${WERROR_CFLAGS}" >&6; }
 fi
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
 hardware="cfi core pal glue "
 sim_hw_cflags="-DWITH_HW=1"
 sim_hw="$hardware"
index a69fa128293261c3984e953c5aec5db2c7278135..de1587eaac113feb50265d490cc8eb2312160d23 100644 (file)
@@ -23,8 +23,6 @@ AC_CONFIG_MACRO_DIRS([../m4 ../.. ../../config])
 
 SIM_AC_COMMON
 
-SIM_AC_OPTION_WARNINGS(no)
-
 AC_CHECK_HEADERS_ONCE(m4_flatten([
   termios.h
   netinet/in.h
index 13513552cd0ef0795587b40ac9bbf7563983f199..4baf71fa6728f47df7c749039aa10cd4d234f3c7 100644 (file)
@@ -20,6 +20,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 
 #include "config.h"
+#include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -294,7 +295,8 @@ mem_put_byte (int address, unsigned char value)
          }
        else
          {
-           write (m32c_console_ofd, &value, 1);
+           if (write (m32c_console_ofd, &value, 1) != 1)
+             printf ("write console failed: %s\n", strerror (errno));
          }
       }
       break;
@@ -367,11 +369,13 @@ mem_put_si (int address, unsigned long value)
 void
 mem_put_blk (int address, const void *bufptr, int nbytes)
 {
+  const unsigned char *buf = bufptr;
+
   S ("<=");
   if (enable_counting)
     mem_counters[1][1] += nbytes;
   while (nbytes--)
-    mem_put_byte (address++, *(const unsigned char *) bufptr++);
+    mem_put_byte (address++, *buf++);
   E ();
 }
 
@@ -443,7 +447,8 @@ mem_get_byte (int address)
     case 0x2ee:                /* m32c uart1 rx */
       {
        char c;
-       read (m32c_console_ifd, &c, 1);
+       if (read (m32c_console_ifd, &c, 1) != 1)
+         return 0;
        if (m32c_console_ifd == 0 && c == 3)    /* Ctrl-C */
          {
            printf ("Ctrl-C!\n");
@@ -535,11 +540,13 @@ mem_get_si (int address)
 void
 mem_get_blk (int address, void *bufptr, int nbytes)
 {
+  char *buf = bufptr;
+
   S ("=>");
   if (enable_counting)
     mem_counters[0][1] += nbytes;
   while (nbytes--)
-    *(char *) bufptr++ = mem_get_byte (address++);
+    *buf++ = mem_get_byte (address++);
   E ();
 }
 
index 43a4604b94670b1361389baf5fdd62a73b8138a3..f871c01d82b21386c3408c5b31eeee57a9176acd 100644 (file)
@@ -130,6 +130,7 @@ load_file_and_line (const char *filename, int lineno)
       struct stat s;
       const char *found_filename, *slash;
       FILE *file;
+      size_t ret;
 
       found_filename = filename;
       while (1)
@@ -148,8 +149,8 @@ load_file_and_line (const char *filename, int lineno)
       f->filename = strdup (filename);
       f->data = (char *) malloc (s.st_size + 2);
       file = fopen (found_filename, "rb");
-      fread (f->data, 1, s.st_size, file);
-      f->data[s.st_size] = 0;
+      ret = fread (f->data, 1, s.st_size, file);
+      f->data[ret] = 0;
       fclose (file);
 
       f->nlines = 1;