Move signatured_type::type to unshareable object
[deliverable/binutils-gdb.git] / gdb / memattr.c
index 6ef8e39e0229962ffc240a816cd5a45029a6207a..e38bc5c33ab6720e450fe34b6ba6dac42fc86b23 100644 (file)
@@ -1,6 +1,6 @@
 /* Memory attributes support, for GDB.
 
-   Copyright (C) 2001-2017 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 #include "target-dcache.h"
 #include "value.h"
 #include "language.h"
-#include "vec.h"
 #include "breakpoint.h"
 #include "cli/cli-utils.h"
 #include <algorithm>
+#include "gdbarch.h"
 
 static std::vector<mem_region> user_mem_region_list, target_mem_region_list;
 static std::vector<mem_region> *mem_region_list = &target_mem_region_list;
@@ -52,7 +52,7 @@ static bool target_mem_regions_valid;
 /* If this flag is set, gdb will assume that memory ranges not
    specified by the memory map have type MEM_NONE, and will
    emit errors on all accesses to that memory.  */
-static int inaccessible_by_default = 1;
+static bool inaccessible_by_default = true;
 
 static void
 show_inaccessible_by_default (struct ui_file *file, int from_tty,
@@ -74,9 +74,6 @@ show_inaccessible_by_default (struct ui_file *file, int from_tty,
 static void
 require_user_regions (int from_tty)
 {
-  struct mem_region *m;
-  int ix, length;
-
   /* If we're already using a user-provided list, nothing to do.  */
   if (!mem_use_target ())
     return;
@@ -136,7 +133,7 @@ create_user_mem_region (CORE_ADDR lo, CORE_ADDR hi,
   int ix = std::distance (user_mem_region_list.begin (), it);
 
   /* Check for an overlapping memory region.  We only need to check
-     in the vicinity - at most one before and one after the
+     in the vincinity - at most one before and one after the
      insertion point.  */
   for (int i = ix - 1; i < ix + 1; i++)
     {
@@ -166,10 +163,8 @@ struct mem_region *
 lookup_mem_region (CORE_ADDR addr)
 {
   static struct mem_region region (0, 0);
-  struct mem_region *m;
   CORE_ADDR lo;
   CORE_ADDR hi;
-  int ix;
 
   require_target_regions ();
 
@@ -251,10 +246,9 @@ user_mem_clear (void)
 \f
 
 static void
-mem_command (char *args, int from_tty)
+mem_command (const char *args, int from_tty)
 {
   CORE_ADDR lo, hi;
-  char *tok;
 
   if (!args)
     error_no_arg (_("No mem"));
@@ -273,41 +267,41 @@ mem_command (char *args, int from_tty)
 
   require_user_regions (from_tty);
 
-  tok = strtok (args, " \t");
-  if (!tok)
+  std::string tok = extract_arg (&args);
+  if (tok == "")
     error (_("no lo address"));
-  lo = parse_and_eval_address (tok);
+  lo = parse_and_eval_address (tok.c_str ());
 
-  tok = strtok (NULL, " \t");
-  if (!tok)
+  tok = extract_arg (&args);
+  if (tok == "")
     error (_("no hi address"));
-  hi = parse_and_eval_address (tok);
+  hi = parse_and_eval_address (tok.c_str ());
 
   mem_attrib attrib;
-  while ((tok = strtok (NULL, " \t")) != NULL)
+  while ((tok = extract_arg (&args)) != "")
     {
-      if (strcmp (tok, "rw") == 0)
+      if (tok == "rw")
        attrib.mode = MEM_RW;
-      else if (strcmp (tok, "ro") == 0)
+      else if (tok == "ro")
        attrib.mode = MEM_RO;
-      else if (strcmp (tok, "wo") == 0)
+      else if (tok == "wo")
        attrib.mode = MEM_WO;
 
-      else if (strcmp (tok, "8") == 0)
+      else if (tok == "8")
        attrib.width = MEM_WIDTH_8;
-      else if (strcmp (tok, "16") == 0)
+      else if (tok == "16")
        {
          if ((lo % 2 != 0) || (hi % 2 != 0))
            error (_("region bounds not 16 bit aligned"));
          attrib.width = MEM_WIDTH_16;
        }
-      else if (strcmp (tok, "32") == 0)
+      else if (tok == "32")
        {
          if ((lo % 4 != 0) || (hi % 4 != 0))
            error (_("region bounds not 32 bit aligned"));
          attrib.width = MEM_WIDTH_32;
        }
-      else if (strcmp (tok, "64") == 0)
+      else if (tok == "64")
        {
          if ((lo % 8 != 0) || (hi % 8 != 0))
            error (_("region bounds not 64 bit aligned"));
@@ -315,26 +309,26 @@ mem_command (char *args, int from_tty)
        }
 
 #if 0
-      else if (strcmp (tok, "hwbreak") == 0)
+      else if (tok == "hwbreak")
        attrib.hwbreak = 1;
-      else if (strcmp (tok, "swbreak") == 0)
+      else if (tok == "swbreak")
        attrib.hwbreak = 0;
 #endif
 
-      else if (strcmp (tok, "cache") == 0)
+      else if (tok == "cache")
        attrib.cache = 1;
-      else if (strcmp (tok, "nocache") == 0)
+      else if (tok == "nocache")
        attrib.cache = 0;
 
 #if 0
-      else if (strcmp (tok, "verify") == 0)
+      else if (tok == "verify")
        attrib.verify = 1;
-      else if (strcmp (tok, "noverify") == 0)
+      else if (tok == "noverify")
        attrib.verify = 0;
 #endif
 
       else
-       error (_("unknown attribute: %s"), tok);
+       error (_("unknown attribute: %s"), tok.c_str ());
     }
 
   create_user_mem_region (lo, hi, attrib);
@@ -342,7 +336,7 @@ mem_command (char *args, int from_tty)
 \f
 
 static void
-info_mem_command (char *args, int from_tty)
+info_mem_command (const char *args, int from_tty)
 {
   if (mem_use_target ())
     printf_filtered (_("Using memory regions provided by the target.\n"));
@@ -465,8 +459,6 @@ info_mem_command (char *args, int from_tty)
 #endif
 
       printf_filtered ("\n");
-
-      gdb_flush (gdb_stdout);
     }
 }
 \f
@@ -532,9 +524,6 @@ disable_mem_command (const char *args, int from_tty)
 
   if (args == NULL || *args == '\0')
     {
-      struct mem_region *m;
-      int ix;
-
       for (mem_region &m : *mem_region_list)
        m.enabled_p = false;
     }
@@ -554,9 +543,6 @@ disable_mem_command (const char *args, int from_tty)
 static void
 mem_delete (int num)
 {
-  struct mem_region *m;
-  int ix;
-
   if (!mem_region_list)
     {
       printf_unfiltered (_("No memory region number %d.\n"), num);
@@ -600,55 +586,51 @@ delete_mem_command (const char *args, int from_tty)
   dont_repeat ();
 }
 
-static void
-dummy_cmd (const char *args, int from_tty)
-{
-}
-
 static struct cmd_list_element *mem_set_cmdlist;
 static struct cmd_list_element *mem_show_cmdlist;
 
+void _initialize_mem ();
 void
-_initialize_mem (void)
+_initialize_mem ()
 {
   add_com ("mem", class_vars, mem_command, _("\
-Define attributes for memory region or reset memory region handling to\n\
-target-based.\n\
+Define attributes for memory region or reset memory region handling to "
+"target-based.\n\
 Usage: mem auto\n\
-       mem <lo addr> <hi addr> [<mode> <width> <cache>],\n\
-where <mode>  may be rw (read/write), ro (read-only) or wo (write-only),\n\
-      <width> may be 8, 16, 32, or 64, and\n\
-      <cache> may be cache or nocache"));
+       mem LOW HIGH [MODE WIDTH CACHE],\n\
+where MODE  may be rw (read/write), ro (read-only) or wo (write-only),\n\
+      WIDTH may be 8, 16, 32, or 64, and\n\
+      CACHE may be cache or nocache"));
 
   add_cmd ("mem", class_vars, enable_mem_command, _("\
 Enable memory region.\n\
-Arguments are the code numbers of the memory regions to enable.\n\
-Usage: enable mem <code number>...\n\
-Do \"info mem\" to see current list of code numbers."), &enablelist);
+Arguments are the IDs of the memory regions to enable.\n\
+Usage: enable mem [ID]...\n\
+Do \"info mem\" to see current list of IDs."), &enablelist);
 
   add_cmd ("mem", class_vars, disable_mem_command, _("\
 Disable memory region.\n\
-Arguments are the code numbers of the memory regions to disable.\n\
-Usage: disable mem <code number>...\n\
-Do \"info mem\" to see current list of code numbers."), &disablelist);
+Arguments are the IDs of the memory regions to disable.\n\
+Usage: disable mem [ID]...\n\
+Do \"info mem\" to see current list of IDs."), &disablelist);
 
   add_cmd ("mem", class_vars, delete_mem_command, _("\
 Delete memory region.\n\
-Arguments are the code numbers of the memory regions to delete.\n\
-Usage: delete mem <code number>...\n\
-Do \"info mem\" to see current list of code numbers."), &deletelist);
+Arguments are the IDs of the memory regions to delete.\n\
+Usage: delete mem [ID]...\n\
+Do \"info mem\" to see current list of IDs."), &deletelist);
 
   add_info ("mem", info_mem_command,
-           _("Memory region attributes"));
-
-  add_prefix_cmd ("mem", class_vars, dummy_cmd, _("\
-Memory regions settings"),
-                 &mem_set_cmdlist, "set mem ",
-                 0/* allow-unknown */, &setlist);
-  add_prefix_cmd ("mem", class_vars, dummy_cmd, _("\
-Memory regions settings"),
-                 &mem_show_cmdlist, "show mem  ",
-                 0/* allow-unknown */, &showlist);
+           _("Memory region attributes."));
+
+  add_basic_prefix_cmd ("mem", class_vars, _("\
+Memory regions settings."),
+                       &mem_set_cmdlist, "set mem ",
+                       0/* allow-unknown */, &setlist);
+  add_show_prefix_cmd ("mem", class_vars, _("\
+Memory regions settings."),
+                      &mem_show_cmdlist, "show mem  ",
+                      0/* allow-unknown */, &showlist);
 
   add_setshow_boolean_cmd ("inaccessible-by-default", no_class,
                                  &inaccessible_by_default, _("\
This page took 0.02907 seconds and 4 git commands to generate.