Change the_dummy_target to be a global
authorTom Tromey <tromey@adacore.com>
Mon, 4 Mar 2019 20:37:59 +0000 (13:37 -0700)
committerTom Tromey <tromey@adacore.com>
Tue, 5 Mar 2019 21:11:17 +0000 (14:11 -0700)
While debugging gdb, I printed the target stack and got:

    (top-gdb) p g_target_stack
    $10 = {
      m_top = thread_stratum,
      m_stack = {0x142b0b0, 0x13da600 <exec_ops>, 0x1c70690, 0x13d63b0 <ravenscar_ops>, 0x0, 0x0, 0x0}
    }

(This is clearly from before the change to make ravenscar
multi-target-capable.)

Here, 0x142b0b0 is the singleton dummy target.  It seems to me that
since this is always a singleton, it would be a bit nicer if it were a
global, so that it would be noted in the above.

This patch implements this idea, and now I get:

    (top-gdb) p g_target_stack
    $2 = {
      m_top = dummy_stratum,
      m_stack = {0x1f1b040 <the_dummy_target>, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}
    }

I did not do the same for the debug target.  It didn't seem as useful
to me.

gdb/ChangeLog
2019-03-05  Tom Tromey  <tromey@adacore.com>

* target.c (the_dummy_target): Move later.  Change type to
"dummy_target".
(initialize_targets): Don't initialize the_dummy_target.

gdb/ChangeLog
gdb/target.c

index 359d222..120cce0 100644 (file)
@@ -1,5 +1,11 @@
 2019-03-05  Tom Tromey  <tromey@adacore.com>
 
+       * target.c (the_dummy_target): Move later.  Change type to
+       "dummy_target".
+       (initialize_targets): Don't initialize the_dummy_target.
+
+2019-03-05  Tom Tromey  <tromey@adacore.com>
+
        * gdb_bfd.c (gdb_bfd_fdopenr): Remove.
        * gdb_bfd.h (gdb_bfd_fdopenr): Don't declare.
 
index fe7cb08..8579c19 100644 (file)
@@ -106,10 +106,8 @@ static enum exec_direction_kind default_execution_direction
 static std::unordered_map<const target_info *, target_open_ftype *>
   target_factories;
 
-/* The initial current target, so that there is always a semi-valid
-   current target.  */
+/* The singleton debug target.  */
 
-static struct target_ops *the_dummy_target;
 static struct target_ops *the_debug_target;
 
 /* The target stack.  */
@@ -3239,6 +3237,10 @@ dummy_make_corefile_notes (struct target_ops *self,
 
 #include "target-delegates.c"
 
+/* The initial current target, so that there is always a semi-valid
+   current target.  */
+
+static dummy_target the_dummy_target;
 
 static const target_info dummy_target_info = {
   "None",
@@ -3976,8 +3978,7 @@ set_write_memory_permission (const char *args, int from_tty,
 void
 initialize_targets (void)
 {
-  the_dummy_target = new dummy_target ();
-  push_target (the_dummy_target);
+  push_target (&the_dummy_target);
 
   the_debug_target = new debug_target ();