gdb/testsuite/tui: Introduce check_box_contents
[deliverable/binutils-gdb.git] / sim / igen / misc.c
index 660570ca6a5bf41a127e22702e5127f14cf5bbab..1ac056ef0233659e0f127a536d37721a7b8edcc7 100644 (file)
@@ -1,22 +1,24 @@
-/*  This file is part of the program psim.
+/* The IGEN simulator generator for GDB, the GNU Debugger.
 
-    Copyright (C) 1994-1995, Andrew Cagney <cagney@highland.com.au>
+   Copyright 2002-2020 Free Software Foundation, Inc.
 
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
+   Contributed by Andrew Cagney.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-    */
 
 
 #include <stdio.h>
 #endif
 #endif
 
+/* NB: Because warning and error can be interchanged, neither append a
+   trailing '\n' */
+
 void
-error (char *msg, ...)
+error (const line_ref *line, char *msg, ...)
 {
   va_list ap;
-  va_start(ap, msg);
-  vprintf(msg, ap);
-  va_end(ap);
+  if (line != NULL)
+    fprintf (stderr, "%s:%d: ", line->file_name, line->line_nr);
+  va_start (ap, msg);
+  vfprintf (stderr, msg, ap);
+  va_end (ap);
   exit (1);
 }
 
-void *
-zalloc(long size)
+void
+warning (const line_ref *line, char *msg, ...)
 {
-  void *memory = malloc(size);
-  if (memory == NULL)
-    error("zalloc failed\n");
-  memset(memory, 0, size);
-  return memory;
+  va_list ap;
+  if (line != NULL)
+    fprintf (stderr, "%s:%d: warning: ", line->file_name, line->line_nr);
+  va_start (ap, msg);
+  vfprintf (stderr, msg, ap);
+  va_end (ap);
 }
 
 void
-dumpf (int indent, char *msg, ...)
+notify (const line_ref *line, char *msg, ...)
 {
   va_list ap;
-  for (; indent > 0; indent--)
-    printf(" ");
-  va_start(ap, msg);
-  vprintf(msg, ap);
-  va_end(ap);
+  if (line != NULL)
+    fprintf (stdout, "%s %d: info: ", line->file_name, line->line_nr);
+  va_start (ap, msg);
+  vfprintf (stdout, msg, ap);
+  va_end (ap);
+}
+
+void *
+zalloc (long size)
+{
+  void *memory = malloc (size);
+  if (memory == NULL)
+    ERROR ("zalloc failed");
+  memset (memory, 0, size);
+  return memory;
 }
 
 
 unsigned long long
-a2i(const char *a)
+a2i (const char *a)
 {
   int neg = 0;
   int base = 10;
@@ -81,89 +99,116 @@ a2i(const char *a)
   while (isspace (*a))
     a++;
 
-  if (*a == '-') {
-    neg = 1;
-    a++;
-  }
-
-  if (*a == '0') {
-    if (a[1] == 'x' || a[1] == 'X') {
-      a += 2;
-      base = 16;
-    } else if (a[1] == 'b' || a[1] == 'b') {
-      a += 2;
-      base = 2;
+  if (strcmp (a, "true") == 0 || strcmp (a, "TRUE") == 0)
+    return 1;
+
+  if (strcmp (a, "false") == 0 || strcmp (a, "FALSE") == 0)
+    return 0;
+
+  if (*a == '-')
+    {
+      neg = 1;
+      a++;
+    }
+
+  if (*a == '0')
+    {
+      if (a[1] == 'x' || a[1] == 'X')
+       {
+         a += 2;
+         base = 16;
+       }
+      else if (a[1] == 'b' || a[1] == 'B')
+       {
+         a += 2;
+         base = 2;
+       }
+      else
+       base = 8;
     }
-    else
-      base = 8;
-  }
 
   looping = 1;
-  while (looping) {
-    int ch = *a++;
-
-    switch (base) {
-    default:
-      looping = 0;
-      break;
-
-    case 2:
-      if (ch >= '0' && ch <= '1') {
-       num = (num * 2) + (ch - '0');
-      } else {
-       looping = 0;
-      }
-      break;
-
-    case 10:
-      if (ch >= '0' && ch <= '9') {
-       num = (num * 10) + (ch - '0');
-      } else {
-       looping = 0;
-      }
-      break;
-
-    case 8:
-      if (ch >= '0' && ch <= '7') {
-       num = (num * 8) + (ch - '0');
-      } else {
-       looping = 0;
-      }
-      break;
-
-    case 16:
-      if (ch >= '0' && ch <= '9') {
-       num = (num * 16) + (ch - '0');
-      } else if (ch >= 'a' && ch <= 'f') {
-       num = (num * 16) + (ch - 'a' + 10);
-      } else if (ch >= 'A' && ch <= 'F') {
-       num = (num * 16) + (ch - 'A' + 10);
-      } else {
-       looping = 0;
-      }
-      break;
+  while (looping)
+    {
+      int ch = *a++;
+
+      switch (base)
+       {
+       default:
+         looping = 0;
+         break;
+
+       case 2:
+         if (ch >= '0' && ch <= '1')
+           {
+             num = (num * 2) + (ch - '0');
+           }
+         else
+           {
+             looping = 0;
+           }
+         break;
+
+       case 10:
+         if (ch >= '0' && ch <= '9')
+           {
+             num = (num * 10) + (ch - '0');
+           }
+         else
+           {
+             looping = 0;
+           }
+         break;
+
+       case 8:
+         if (ch >= '0' && ch <= '7')
+           {
+             num = (num * 8) + (ch - '0');
+           }
+         else
+           {
+             looping = 0;
+           }
+         break;
+
+       case 16:
+         if (ch >= '0' && ch <= '9')
+           {
+             num = (num * 16) + (ch - '0');
+           }
+         else if (ch >= 'a' && ch <= 'f')
+           {
+             num = (num * 16) + (ch - 'a' + 10);
+           }
+         else if (ch >= 'A' && ch <= 'F')
+           {
+             num = (num * 16) + (ch - 'A' + 10);
+           }
+         else
+           {
+             looping = 0;
+           }
+         break;
+       }
     }
-  }
 
   if (neg)
-    num = - num;
+    num = -num;
 
   return num;
 }
 
 unsigned
-target_a2i(int ms_bit_nr,
-          const char *a)
+target_a2i (int ms_bit_nr, const char *a)
 {
   if (ms_bit_nr)
-    return (ms_bit_nr - a2i(a));
+    return (ms_bit_nr - a2i (a));
   else
-    return a2i(a);
+    return a2i (a);
 }
 
 unsigned
-i2target(int ms_bit_nr,
-        unsigned bit)
+i2target (int ms_bit_nr, unsigned bit)
 {
   if (ms_bit_nr)
     return ms_bit_nr - bit;
@@ -173,34 +218,37 @@ i2target(int ms_bit_nr,
 
 
 int
-name2i(const char *names,
-       const name_map *map)
+name2i (const char *names, const name_map * map)
 {
   const name_map *curr;
   const char *name = names;
-  while (*name != '\0') {
-    /* find our name */
-    char *end = strchr(name, ',');
-    char *next;
-    int len;
-    if (end == NULL) {
-      end = strchr(name, '\0');
-      next = end;
+  while (*name != '\0')
+    {
+      /* find our name */
+      char *end = strchr (name, ',');
+      char *next;
+      unsigned len;
+      if (end == NULL)
+       {
+         end = strchr (name, '\0');
+         next = end;
+       }
+      else
+       {
+         next = end + 1;
+       }
+      len = end - name;
+      /* look it up */
+      curr = map;
+      while (curr->name != NULL)
+       {
+         if (strncmp (curr->name, name, len) == 0
+             && strlen (curr->name) == len)
+           return curr->i;
+         curr++;
+       }
+      name = next;
     }
-    else {
-      next = end + 1;
-    }
-    len = end - name;
-    /* look it up */
-    curr = map;
-    while (curr->name != NULL) {
-      if (strncmp(curr->name, name, len) == 0
-         && strlen(curr->name) == len)
-       return curr->i;
-      curr++;
-    }
-    name = next;
-  }
   /* nothing found, possibly return a default */
   curr = map;
   while (curr->name != NULL)
@@ -208,19 +256,19 @@ name2i(const char *names,
   if (curr->i >= 0)
     return curr->i;
   else
-    error("%s contains no valid names\n", names);
+    error (NULL, "%s contains no valid names", names);
   return 0;
 }
 
 const char *
-i2name(const int i,
-       const name_map *map)
+i2name (const int i, const name_map * map)
 {
-  while (map->name != NULL) {
-    if (map->i == i)
-      return map->name;
-    map++;
-  }
-  error("map lookup failed for %d\n", i);
+  while (map->name != NULL)
+    {
+      if (map->i == i)
+       return map->name;
+      map++;
+    }
+  error (NULL, "map lookup failed for %d\n", i);
   return NULL;
 }
This page took 0.126055 seconds and 4 git commands to generate.