Constify target_pid_to_exec_file
authorTom Tromey <tromey@adacore.com>
Tue, 26 Apr 2022 20:08:03 +0000 (14:08 -0600)
committerTom Tromey <tromey@adacore.com>
Fri, 13 May 2022 14:21:16 +0000 (08:21 -0600)
This changes target_pid_to_exec_file and target_ops::pid_to_exec_file
to return a "const char *".  I couldn't build many of these targets,
but did examine the code by hand -- also, as this only affects the
return type, it's normally pretty safe.  This brings gdb and gdbserver
a bit closer, and allows for the removal of a const_cast as well.

20 files changed:
gdb/darwin-nat.c
gdb/darwin-nat.h
gdb/exec.c
gdb/fbsd-nat.c
gdb/fbsd-nat.h
gdb/inf-child.c
gdb/inf-child.h
gdb/linux-nat.c
gdb/linux-nat.h
gdb/nat/linux-procfs.c
gdb/nat/linux-procfs.h
gdb/netbsd-nat.c
gdb/netbsd-nat.h
gdb/nto-procfs.c
gdb/procfs.c
gdb/remote.c
gdb/target-delegates.c
gdb/target.c
gdb/target.h
gdb/windows-nat.c

index 17723656930e0b2458bee480cec4aa9c0ddd3385..eca97c9bde989ce93f6b78f5e787cb18cd82eb1e 100644 (file)
@@ -2373,7 +2373,7 @@ set_enable_mach_exceptions (const char *args, int from_tty,
     }
 }
 
-char *
+const char *
 darwin_nat_target::pid_to_exec_file (int pid)
 {
   static char path[PATH_MAX];
index 733ac7cc058efe9184c9217748085a2925a36b19..e3dcd963706126d65fbe0def37d09c3d095cc9cf 100644 (file)
@@ -100,7 +100,7 @@ class darwin_nat_target : public inf_child_target
 
   std::string pid_to_str (ptid_t) override;
 
-  char *pid_to_exec_file (int pid) override;
+  const char *pid_to_exec_file (int pid) override;
 
   enum target_xfer_status xfer_partial (enum target_object object,
                                        const char *annex,
index 38540c0840b99995a403bd8b4a5ad0a0a916b589..40c89d53ba91691d493851f3ba1fcf61a27d1eb1 100644 (file)
@@ -314,7 +314,7 @@ validate_exec_file (int from_tty)
 void
 exec_file_locate_attach (int pid, int defer_bp_reset, int from_tty)
 {
-  char *exec_file_target;
+  const char *exec_file_target;
   symfile_add_flags add_flags = 0;
 
   /* Do nothing if we already have an executable filename.  */
index a501d9212c09dfbbb816c0f99d9e913b51a9a855..281b034b11573763e897abd8f094f2c8ca4e6d89 100644 (file)
@@ -57,7 +57,7 @@
 /* Return the name of a file that can be opened to get the symbols for
    the child process identified by PID.  */
 
-char *
+const char *
 fbsd_nat_target::pid_to_exec_file (int pid)
 {
   static char buf[PATH_MAX];
index ba359c623141a5b5ffaf76a9b51e82db23106006..3a13bc8711f12a6e553e5350d2606ea22b20b477 100644 (file)
@@ -44,7 +44,7 @@
 class fbsd_nat_target : public inf_ptrace_target
 {
 public:
-  char *pid_to_exec_file (int pid) override;
+  const char *pid_to_exec_file (int pid) override;
 
   int find_memory_regions (find_memory_region_ftype func, void *data) override;
 
index cc00867787ac84dbe2bf1c6879e578ef3f6ed944..56ebd2a5549cadbb910446ba0b27b748328750be 100644 (file)
@@ -220,7 +220,7 @@ inf_child_target::can_attach ()
   return true;
 }
 
-char *
+const char *
 inf_child_target::pid_to_exec_file (int pid)
 {
   /* This target doesn't support translation of a process ID to the
index a017032a32f0353e846c9ff05882b6a268d58933..ae5ace46f30e3d2a3b2705473e296c7d87f065f2 100644 (file)
@@ -71,7 +71,7 @@ public:
 
   void post_attach (int) override;
 
-  char *pid_to_exec_file (int pid) override;
+  const char *pid_to_exec_file (int pid) override;
 
   int fileio_open (struct inferior *inf, const char *filename,
                   int flags, int mode, int warn_if_slow,
index 740cc0ddfc02f91b5bdfd9dc71042a4887574eb4..3b5400896bc2814101f7e5d2d6b1d68a1b997e08 100644 (file)
@@ -3764,7 +3764,7 @@ linux_nat_target::thread_name (struct thread_info *thr)
 /* Accepts an integer PID; Returns a string representing a file that
    can be opened to get the symbols for the child process.  */
 
-char *
+const char *
 linux_nat_target::pid_to_exec_file (int pid)
 {
   return linux_proc_pid_to_exec_file (pid);
index 12a90eccb2828262f86a4ad2b1bd431108a353fb..11043c4b9f64c2997dc755600c4dc5132648d894 100644 (file)
@@ -123,7 +123,7 @@ public:
   int set_syscall_catchpoint (int pid, bool needed, int any_count,
                              gdb::array_view<const int> syscall_counts) override;
 
-  char *pid_to_exec_file (int pid) override;
+  const char *pid_to_exec_file (int pid) override;
 
   void post_attach (int) override;
 
index 2618c99d9f4db5e62a251408377c0cfa2a199a76..99e645786c2de81db5c7a8c7f98f3a72ec699472 100644 (file)
@@ -341,7 +341,7 @@ linux_proc_task_list_dir_exists (pid_t pid)
 
 /* See linux-procfs.h.  */
 
-char *
+const char *
 linux_proc_pid_to_exec_file (int pid)
 {
   static char buf[PATH_MAX];
index fa1280a8967eac423597d6a061aa40a10e8daa42..fcc8280adf15f8b492f7c00cc053ae6c5df084e8 100644 (file)
@@ -78,7 +78,7 @@ extern int linux_proc_task_list_dir_exists (pid_t pid);
    to create the process PID.  The returned value persists until this
    function is next called.  */
 
-extern char *linux_proc_pid_to_exec_file (int pid);
+extern const char *linux_proc_pid_to_exec_file (int pid);
 
 /* Display possible problems on this system.  Display them only once
    per GDB execution.  */
index f2eeb3ff61e1692940d596b575330de2cfa9f440..2ccd0e014c237a490571c3c6b54028bc41ad441e 100644 (file)
 /* Return the name of a file that can be opened to get the symbols for
    the child process identified by PID.  */
 
-char *
+const char *
 nbsd_nat_target::pid_to_exec_file (int pid)
 {
-  return const_cast<char *> (netbsd_nat::pid_to_exec_file (pid));
+  return netbsd_nat::pid_to_exec_file (pid);
 }
 
 /* Return the current directory for the process identified by PID.  */
index ef190c4e4717c26ce4bcb0daa04e4b709a10de4b..ff468452b2ce8888a9ca49f3442f5ac9b244ff98 100644 (file)
@@ -28,7 +28,7 @@ struct thread_info;
 
 struct nbsd_nat_target : public inf_ptrace_target
 {
-  char *pid_to_exec_file (int pid) override;
+  const char *pid_to_exec_file (int pid) override;
 
   bool thread_alive (ptid_t ptid) override;
   const char *thread_name (struct thread_info *thr) override;
index 61374c9fad4e8a5e6c8958e093ae7746e7a03662..ef9e0f05261254765570eb150bcf50813e0ac552 100644 (file)
@@ -121,7 +121,7 @@ struct nto_procfs_target : public inf_child_target
 
   const char *extra_thread_info (struct thread_info *) override;
 
-  char *pid_to_exec_file (int pid) override;
+  const char *pid_to_exec_file (int pid) override;
 };
 
 /* For "target native".  */
@@ -664,7 +664,7 @@ nto_procfs_target::files_info ()
 
 /* Target to_pid_to_exec_file implementation.  */
 
-char *
+const char *
 nto_procfs_target::pid_to_exec_file (const int pid)
 {
   int proc_fd;
index f6ca1345a21c7e5eed67d609bf6f0645460e2d51..d290505d8c36f4c46141688723ec1c1d6e764617 100644 (file)
@@ -127,7 +127,7 @@ public:
 
   std::string pid_to_str (ptid_t) override;
 
-  char *pid_to_exec_file (int pid) override;
+  const char *pid_to_exec_file (int pid) override;
 
   thread_control_capabilities get_thread_control_capabilities () override
   { return tc_schedlock; }
@@ -2927,7 +2927,7 @@ procfs_target::pid_to_str (ptid_t ptid)
 /* Accepts an integer PID; Returns a string representing a file that
    can be opened to get the symbols for the child process.  */
 
-char *
+const char *
 procfs_target::pid_to_exec_file (int pid)
 {
   static char buf[PATH_MAX];
index b8df3326849f66f6ffad9923c74077ff99e113c5..f41e6ce82c285008723e64953d4b48545007c4a3 100644 (file)
@@ -508,7 +508,7 @@ public:
 
   void rcmd (const char *command, struct ui_file *output) override;
 
-  char *pid_to_exec_file (int pid) override;
+  const char *pid_to_exec_file (int pid) override;
 
   void log_command (const char *cmd) override
   {
@@ -14353,7 +14353,7 @@ remote_target::load (const char *name, int from_tty)
    can be opened on the remote side to get the symbols for the child
    process.  Returns NULL if the operation is not supported.  */
 
-char *
+const char *
 remote_target::pid_to_exec_file (int pid)
 {
   static gdb::optional<gdb::char_vector> filename;
index 4e653e8f4299df6f40a389fc1c0277bb279dcd9a..8a9986454dd4fadc9a7c98dbe5a3b9c4af65fd79 100644 (file)
@@ -94,7 +94,7 @@ struct dummy_target : public target_ops
   void interrupt () override;
   void pass_ctrlc () override;
   void rcmd (const char *arg0, struct ui_file *arg1) override;
-  char *pid_to_exec_file (int arg0) override;
+  const char *pid_to_exec_file (int arg0) override;
   void log_command (const char *arg0) override;
   const target_section_table *get_section_table () override;
   thread_control_capabilities get_thread_control_capabilities () override;
@@ -268,7 +268,7 @@ struct debug_target : public target_ops
   void interrupt () override;
   void pass_ctrlc () override;
   void rcmd (const char *arg0, struct ui_file *arg1) override;
-  char *pid_to_exec_file (int arg0) override;
+  const char *pid_to_exec_file (int arg0) override;
   void log_command (const char *arg0) override;
   const target_section_table *get_section_table () override;
   thread_control_capabilities get_thread_control_capabilities () override;
@@ -1983,28 +1983,28 @@ debug_target::rcmd (const char *arg0, struct ui_file *arg1)
   gdb_puts (")\n", gdb_stdlog);
 }
 
-char *
+const char *
 target_ops::pid_to_exec_file (int arg0)
 {
   return this->beneath ()->pid_to_exec_file (arg0);
 }
 
-char *
+const char *
 dummy_target::pid_to_exec_file (int arg0)
 {
   return NULL;
 }
 
-char *
+const char *
 debug_target::pid_to_exec_file (int arg0)
 {
-  char * result;
+  const char * result;
   gdb_printf (gdb_stdlog, "-> %s->pid_to_exec_file (...)\n", this->beneath ()->shortname ());
   result = this->beneath ()->pid_to_exec_file (arg0);
   gdb_printf (gdb_stdlog, "<- %s->pid_to_exec_file (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   gdb_puts (") = ", gdb_stdlog);
-  target_debug_print_char_p (result);
+  target_debug_print_const_char_p (result);
   gdb_puts ("\n", gdb_stdlog);
   return result;
 }
index 1063f8086bc97527ebf298a7cf892dcd1a133f4b..18e53aa5d2768638513173243d62ec1ac459a5c8 100644 (file)
@@ -423,7 +423,7 @@ target_extra_thread_info (thread_info *tp)
 
 /* See target.h.  */
 
-char *
+const char *
 target_pid_to_exec_file (int pid)
 {
   return current_inferior ()->top_target ()->pid_to_exec_file (pid);
index f77dbf051130dce85b97d03a94d49268f9da10eb..18559feef89f4d3a1f400229285d321cdc97eed9 100644 (file)
@@ -688,7 +688,7 @@ struct target_ops
       TARGET_DEFAULT_FUNC (default_target_pass_ctrlc);
     virtual void rcmd (const char *command, struct ui_file *output)
       TARGET_DEFAULT_FUNC (default_rcmd);
-    virtual char *pid_to_exec_file (int pid)
+    virtual const char *pid_to_exec_file (int pid)
       TARGET_DEFAULT_RETURN (NULL);
     virtual void log_command (const char *)
       TARGET_DEFAULT_IGNORE ();
@@ -1951,7 +1951,7 @@ extern gdb::byte_vector target_thread_info_to_thread_handle
    the client if the string will not be immediately used, or if
    it must persist.  */
 
-extern char *target_pid_to_exec_file (int pid);
+extern const char *target_pid_to_exec_file (int pid);
 
 /* See the to_thread_architecture description in struct target_ops.  */
 
index 1068558cd2111ebd06d99d136e240e5bf32fa83f..cd43409a02fd77e8d316f3965e38dbd3d65bb20e 100644 (file)
@@ -276,7 +276,7 @@ struct windows_nat_target final : public x86_nat_target<inf_child_target>
 
   void interrupt () override;
 
-  char *pid_to_exec_file (int pid) override;
+  const char *pid_to_exec_file (int pid) override;
 
   ptid_t get_ada_task_ptid (long lwp, ULONGEST thread) override;
 
@@ -2005,7 +2005,7 @@ windows_get_exec_module_filename (char *exe_name_ret, size_t exe_name_max_len)
 
 /* The pid_to_exec_file target_ops method for this platform.  */
 
-char *
+const char *
 windows_nat_target::pid_to_exec_file (int pid)
 {
   static char path[__PMAX];