Convert remote.c to type-safe registry API
authorTom Tromey <tom@tromey.com>
Sun, 21 Apr 2019 18:48:39 +0000 (12:48 -0600)
committerTom Tromey <tom@tromey.com>
Wed, 8 May 2019 22:01:50 +0000 (16:01 -0600)
This changes remote.c to use the type-safe registry API.

gdb/ChangeLog
2019-05-08  Tom Tromey  <tom@tromey.com>

* remote.c (remote_pspace_data): Change type.
(remote_pspace_data_cleanup): Remove.
(get_remote_exec_file, set_pspace_remote_exec_file)
(_initialize_remote): Update.

gdb/ChangeLog
gdb/remote.c

index 05a06ece80d63bb02543c0ac43912392bd6485d8..f93c27c9f5521f5ee0dc898c1b8949275ba69f0c 100644 (file)
@@ -1,3 +1,10 @@
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+       * remote.c (remote_pspace_data): Change type.
+       (remote_pspace_data_cleanup): Remove.
+       (get_remote_exec_file, set_pspace_remote_exec_file)
+       (_initialize_remote): Update.
+
 2019-05-08  Tom Tromey  <tom@tromey.com>
 
        * breakpoint.c (breakpoint_objfile_key): Change type.
index 81e6427a7fa2b22c7f7468c24d178d50775ff0e8..dc734723d14cbfb003802df75a9873f83a8af13b 100644 (file)
@@ -969,7 +969,8 @@ public:
 };
 
 /* Per-program-space data key.  */
-static const struct program_space_data *remote_pspace_data;
+static const struct program_space_key<char, gdb::xfree_deleter<char>>
+  remote_pspace_data;
 
 /* The variable registered as the control variable used by the
    remote exec-file commands.  While the remote exec-file setting is
@@ -1229,16 +1230,6 @@ remote_target::get_remote_state ()
   return &m_remote_state;
 }
 
-/* Cleanup routine for the remote module's pspace data.  */
-
-static void
-remote_pspace_data_cleanup (struct program_space *pspace, void *arg)
-{
-  char *remote_exec_file = (char *) arg;
-
-  xfree (remote_exec_file);
-}
-
 /* Fetch the remote exec-file from the current program space.  */
 
 static const char *
@@ -1246,9 +1237,7 @@ get_remote_exec_file (void)
 {
   char *remote_exec_file;
 
-  remote_exec_file
-    = (char *) program_space_data (current_program_space,
-                                  remote_pspace_data);
+  remote_exec_file = remote_pspace_data.get (current_program_space);
   if (remote_exec_file == NULL)
     return "";
 
@@ -1259,13 +1248,12 @@ get_remote_exec_file (void)
 
 static void
 set_pspace_remote_exec_file (struct program_space *pspace,
-                       char *remote_exec_file)
+                            const char *remote_exec_file)
 {
-  char *old_file = (char *) program_space_data (pspace, remote_pspace_data);
+  char *old_file = remote_pspace_data.get (pspace);
 
   xfree (old_file);
-  set_program_space_data (pspace, remote_pspace_data,
-                         xstrdup (remote_exec_file));
+  remote_pspace_data.set (pspace, xstrdup (remote_exec_file));
 }
 
 /* The "set/show remote exec-file" set command hook.  */
@@ -14277,10 +14265,6 @@ _initialize_remote (void)
   remote_g_packet_data_handle =
     gdbarch_data_register_pre_init (remote_g_packet_data_init);
 
-  remote_pspace_data
-    = register_program_space_data_with_cleanup (NULL,
-                                               remote_pspace_data_cleanup);
-
   add_target (remote_target_info, remote_target::open);
   add_target (extended_remote_target_info, extended_remote_target::open);