aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/target-delegates.c16
-rw-r--r--gdb/target.c27
-rw-r--r--gdb/target.h3
4 files changed, 34 insertions, 19 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7c489a9..adcdf65 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,6 +1,13 @@
2014-02-19 Tom Tromey <tromey@redhat.com>
* target-delegates.c: Rebuild.
+ * target.c (target_verify_memory): Unconditionally delegate.
+ * target.h (struct target_ops) <to_verify_memory>: Use
+ TARGET_DEFAULT_NORETURN.
+
+2014-02-19 Tom Tromey <tromey@redhat.com>
+
+ * target-delegates.c: Rebuild.
* target.c (target_core_of_thread): Unconditionally delegate.
* target.h (struct target_ops) <to_core_of_thread>: Use
TARGET_DEFAULT_RETURN.
diff --git a/gdb/target-delegates.c b/gdb/target-delegates.c
index 2c7ab7f..20ebda8 100644
--- a/gdb/target-delegates.c
+++ b/gdb/target-delegates.c
@@ -1145,6 +1145,19 @@ tdefault_core_of_thread (struct target_ops *self, ptid_t arg1)
}
static int
+delegate_verify_memory (struct target_ops *self, const gdb_byte *arg1, CORE_ADDR arg2, ULONGEST arg3)
+{
+ self = self->beneath;
+ return self->to_verify_memory (self, arg1, arg2, arg3);
+}
+
+static int
+tdefault_verify_memory (struct target_ops *self, const gdb_byte *arg1, CORE_ADDR arg2, ULONGEST arg3)
+{
+ tcomplain ();
+}
+
+static int
delegate_get_tib_address (struct target_ops *self, ptid_t arg1, CORE_ADDR *arg2)
{
self = self->beneath;
@@ -1457,6 +1470,8 @@ install_delegators (struct target_ops *ops)
ops->to_set_trace_notes = delegate_set_trace_notes;
if (ops->to_core_of_thread == NULL)
ops->to_core_of_thread = delegate_core_of_thread;
+ if (ops->to_verify_memory == NULL)
+ ops->to_verify_memory = delegate_verify_memory;
if (ops->to_get_tib_address == NULL)
ops->to_get_tib_address = delegate_get_tib_address;
if (ops->to_set_permissions == NULL)
@@ -1577,6 +1592,7 @@ install_dummy_methods (struct target_ops *ops)
ops->to_set_trace_buffer_size = tdefault_set_trace_buffer_size;
ops->to_set_trace_notes = tdefault_set_trace_notes;
ops->to_core_of_thread = tdefault_core_of_thread;
+ ops->to_verify_memory = tdefault_verify_memory;
ops->to_get_tib_address = tdefault_get_tib_address;
ops->to_set_permissions = tdefault_set_permissions;
ops->to_static_tracepoint_marker_at = tdefault_static_tracepoint_marker_at;
diff --git a/gdb/target.c b/gdb/target.c
index 5f86c4e..4468648 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -3723,25 +3723,16 @@ target_core_of_thread (ptid_t ptid)
int
target_verify_memory (const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size)
{
- struct target_ops *t;
-
- for (t = current_target.beneath; t != NULL; t = t->beneath)
- {
- if (t->to_verify_memory != NULL)
- {
- int retval = t->to_verify_memory (t, data, memaddr, size);
+ int retval = current_target.to_verify_memory (&current_target,
+ data, memaddr, size);
- if (targetdebug)
- fprintf_unfiltered (gdb_stdlog,
- "target_verify_memory (%s, %s) = %d\n",
- paddress (target_gdbarch (), memaddr),
- pulongest (size),
- retval);
- return retval;
- }
- }
-
- tcomplain ();
+ if (targetdebug)
+ fprintf_unfiltered (gdb_stdlog,
+ "target_verify_memory (%s, %s) = %d\n",
+ paddress (target_gdbarch (), memaddr),
+ pulongest (size),
+ retval);
+ return retval;
}
/* The documentation for this function is in its prototype declaration in
diff --git a/gdb/target.h b/gdb/target.h
index 0a6c467..69f3c1f 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -941,7 +941,8 @@ struct target_ops
a match, 0 if there's a mismatch, and -1 if an error is
encountered while reading memory. */
int (*to_verify_memory) (struct target_ops *, const gdb_byte *data,
- CORE_ADDR memaddr, ULONGEST size);
+ CORE_ADDR memaddr, ULONGEST size)
+ TARGET_DEFAULT_NORETURN (tcomplain ());
/* Return the address of the start of the Thread Information Block
a Windows OS specific feature. */