aboutsummaryrefslogtreecommitdiff
path: root/gdb/memattr.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/memattr.h')
-rw-r--r--gdb/memattr.h69
1 files changed, 46 insertions, 23 deletions
diff --git a/gdb/memattr.h b/gdb/memattr.h
index e869fa3..aa62bfb 100644
--- a/gdb/memattr.h
+++ b/gdb/memattr.h
@@ -20,8 +20,6 @@
#ifndef MEMATTR_H
#define MEMATTR_H
-#include "vec.h"
-
enum mem_access_mode
{
MEM_NONE, /* Memory that is not physically present. */
@@ -54,27 +52,62 @@ enum mem_access_width
struct mem_attrib
{
+ static mem_attrib unknown ()
+ {
+ mem_attrib attrib;
+
+ attrib.mode = MEM_NONE;
+
+ return attrib;
+ }
+
/* read/write, read-only, or write-only */
- enum mem_access_mode mode;
+ enum mem_access_mode mode = MEM_RW;
- enum mem_access_width width;
+ enum mem_access_width width = MEM_WIDTH_UNSPECIFIED;
/* enables hardware breakpoints */
- int hwbreak;
+ int hwbreak = 0;
/* enables host-side caching of memory region data */
- int cache;
+ int cache = 0;
/* Enables memory verification. After a write, memory is re-read
to verify that the write was successful. */
- int verify;
+ int verify = 0;
/* Block size. Only valid if mode == MEM_FLASH. */
- int blocksize;
+ int blocksize = -1;
};
struct mem_region
{
+ /* Create a mem_region with default attributes. */
+
+ mem_region (CORE_ADDR lo_, CORE_ADDR hi_)
+ : lo (lo_), hi (hi_)
+ {}
+
+ /* Create a mem_region with access mode MODE_, but otherwise default
+ attributes. */
+
+ mem_region (CORE_ADDR lo_, CORE_ADDR hi_, mem_access_mode mode_)
+ : lo (lo_), hi (hi_)
+ {
+ attrib.mode = mode_;
+ }
+
+ /* Create a mem_region with attributes ATTRIB_. */
+
+ mem_region (CORE_ADDR lo_, CORE_ADDR hi_, const mem_attrib &attrib_)
+ : lo (lo_), hi (hi_), attrib (attrib_)
+ {}
+
+ bool operator< (const mem_region &other) const
+ {
+ return this->lo < other.lo;
+ }
+
/* Lowest address in the region. */
CORE_ADDR lo;
/* Address past the highest address of the region.
@@ -82,28 +115,18 @@ struct mem_region
CORE_ADDR hi;
/* Item number of this memory region. */
- int number;
+ int number = 0;
- /* Status of this memory region (enabled if non-zero, otherwise
+ /* Status of this memory region (enabled if true, otherwise
disabled). */
- int enabled_p;
+ bool enabled_p = true;
/* Attributes for this region. */
- struct mem_attrib attrib;
+ mem_attrib attrib;
};
-/* Declare a vector type for a group of mem_region structures. The
- typedef is necessary because vec.h can not handle a struct tag.
- Except during construction, these vectors are kept sorted. */
-typedef struct mem_region mem_region_s;
-DEF_VEC_O(mem_region_s);
-
-extern struct mem_region *lookup_mem_region(CORE_ADDR);
+extern struct mem_region *lookup_mem_region (CORE_ADDR);
void invalidate_target_mem_regions (void);
-void mem_region_init (struct mem_region *);
-
-int mem_region_cmp (const void *, const void *);
-
#endif /* MEMATTR_H */