aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2014-01-16 11:39:32 -0700
committerTom Tromey <tromey@redhat.com>2014-02-19 07:48:47 -0700
commitc0eca49f4e3382163153a1cdbb090a25b4a32e31 (patch)
tree925e767f99b1ffb1cff3c7d3bdaff7272efb14cc
parent596b6b39ab5f26a86980bc9aa6cf348d32d244b4 (diff)
downloadgdb-c0eca49f4e3382163153a1cdbb090a25b4a32e31.zip
gdb-c0eca49f4e3382163153a1cdbb090a25b4a32e31.tar.gz
gdb-c0eca49f4e3382163153a1cdbb090a25b4a32e31.tar.bz2
convert to_decr_pc_after_break
This converts to_decr_pc_after_break to the new style of delegation, removing forward_target_decr_pc_after_break. 2014-02-19 Tom Tromey <tromey@redhat.com> * record-btrace.c (record_btrace_decr_pc_after_break): Delegate directly. * target-delegates.c: Rebuild. * target.h (struct target_ops) <to_decr_pc_after_break>: Use TARGET_DEFAULT_FUNC. * target.c (default_target_decr_pc_after_break): Rename from forward_target_decr_pc_after_break. Simplify. (target_decr_pc_after_break): Rely on delegation.
-rw-r--r--gdb/ChangeLog11
-rw-r--r--gdb/record-btrace.c2
-rw-r--r--gdb/target-delegates.c10
-rw-r--r--gdb/target.c15
-rw-r--r--gdb/target.h3
5 files changed, 31 insertions, 10 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d41f14e..ff6188b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,16 @@
2014-02-19 Tom Tromey <tromey@redhat.com>
+ * record-btrace.c (record_btrace_decr_pc_after_break): Delegate
+ directly.
+ * target-delegates.c: Rebuild.
+ * target.h (struct target_ops) <to_decr_pc_after_break>: Use
+ TARGET_DEFAULT_FUNC.
+ * target.c (default_target_decr_pc_after_break): Rename from
+ forward_target_decr_pc_after_break. Simplify.
+ (target_decr_pc_after_break): Rely on delegation.
+
+2014-02-19 Tom Tromey <tromey@redhat.com>
+
* target.c (update_current_target): Do not INHERIT to_doc or
to_magic. Do not de_fault to_open or to_close.
diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c
index e343f38..50bce79 100644
--- a/gdb/record-btrace.c
+++ b/gdb/record-btrace.c
@@ -1737,7 +1737,7 @@ record_btrace_decr_pc_after_break (struct target_ops *ops,
if (record_btrace_is_replaying (ops))
return 0;
- return forward_target_decr_pc_after_break (ops->beneath, gdbarch);
+ return ops->beneath->to_decr_pc_after_break (ops->beneath, gdbarch);
}
/* The to_find_new_threads method of target record-btrace. */
diff --git a/gdb/target-delegates.c b/gdb/target-delegates.c
index 15ab43a..04824f2 100644
--- a/gdb/target-delegates.c
+++ b/gdb/target-delegates.c
@@ -1572,6 +1572,13 @@ tdefault_augmented_libraries_svr4_read (struct target_ops *self)
return 0;
}
+static CORE_ADDR
+delegate_decr_pc_after_break (struct target_ops *self, struct gdbarch *arg1)
+{
+ self = self->beneath;
+ return self->to_decr_pc_after_break (self, arg1);
+}
+
static void
install_delegators (struct target_ops *ops)
{
@@ -1837,6 +1844,8 @@ install_delegators (struct target_ops *ops)
ops->to_call_history_range = delegate_call_history_range;
if (ops->to_augmented_libraries_svr4_read == NULL)
ops->to_augmented_libraries_svr4_read = delegate_augmented_libraries_svr4_read;
+ if (ops->to_decr_pc_after_break == NULL)
+ ops->to_decr_pc_after_break = delegate_decr_pc_after_break;
}
static void
@@ -1973,4 +1982,5 @@ install_dummy_methods (struct target_ops *ops)
ops->to_call_history_from = tdefault_call_history_from;
ops->to_call_history_range = tdefault_call_history_range;
ops->to_augmented_libraries_svr4_read = tdefault_augmented_libraries_svr4_read;
+ ops->to_decr_pc_after_break = default_target_decr_pc_after_break;
}
diff --git a/gdb/target.c b/gdb/target.c
index e816f71..911c279 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -108,6 +108,9 @@ static int find_default_is_async_p (struct target_ops *ignore);
static enum exec_direction_kind default_execution_direction
(struct target_ops *self);
+static CORE_ADDR default_target_decr_pc_after_break (struct target_ops *ops,
+ struct gdbarch *gdbarch);
+
#include "target-delegates.c"
static void init_dummy_target (void);
@@ -3842,16 +3845,12 @@ target_get_tailcall_unwinder (void)
return NULL;
}
-/* See target.h. */
+/* Default implementation of to_decr_pc_after_break. */
-CORE_ADDR
-forward_target_decr_pc_after_break (struct target_ops *ops,
+static CORE_ADDR
+default_target_decr_pc_after_break (struct target_ops *ops,
struct gdbarch *gdbarch)
{
- for (; ops != NULL; ops = ops->beneath)
- if (ops->to_decr_pc_after_break != NULL)
- return ops->to_decr_pc_after_break (ops, gdbarch);
-
return gdbarch_decr_pc_after_break (gdbarch);
}
@@ -3860,7 +3859,7 @@ forward_target_decr_pc_after_break (struct target_ops *ops,
CORE_ADDR
target_decr_pc_after_break (struct gdbarch *gdbarch)
{
- return forward_target_decr_pc_after_break (current_target.beneath, gdbarch);
+ return current_target.to_decr_pc_after_break (&current_target, gdbarch);
}
static int
diff --git a/gdb/target.h b/gdb/target.h
index 79805d1..4a46a16 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -1117,7 +1117,8 @@ struct target_ops
after executing a breakpoint instruction.
Defaults to gdbarch_decr_pc_after_break (GDBARCH). */
CORE_ADDR (*to_decr_pc_after_break) (struct target_ops *ops,
- struct gdbarch *gdbarch);
+ struct gdbarch *gdbarch)
+ TARGET_DEFAULT_FUNC (default_target_decr_pc_after_break);
int to_magic;
/* Need sub-structure for target machine related rather than comm related?