Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH] Use scoped_fd in linux-nat.c:proc_mem_file
@ 2025-03-17 20:55 Tom Tromey
  2025-03-18  1:30 ` Kevin Buettner
  2025-03-18  2:16 ` Simon Marchi
  0 siblings, 2 replies; 4+ messages in thread
From: Tom Tromey @ 2025-03-17 20:55 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey

This changes linux-nat.c:proc_mem_file to use a scoped_fd and fixes up
the users.  Regression tested on x86-64 Fedora 40.
---
 gdb/linux-nat.c | 29 +++++++++++++++--------------
 1 file changed, 15 insertions(+), 14 deletions(-)

diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
index b16f9f96726..8861829f917 100644
--- a/gdb/linux-nat.c
+++ b/gdb/linux-nat.c
@@ -4029,24 +4029,26 @@ linux_nat_target::pid_to_exec_file (int pid)
 class proc_mem_file
 {
 public:
-  proc_mem_file (ptid_t ptid, int fd)
-    : m_ptid (ptid), m_fd (fd)
+  proc_mem_file (ptid_t ptid, scoped_fd fd)
+    : m_ptid (ptid), m_fd (std::move (fd))
   {
-    gdb_assert (m_fd != -1);
+    gdb_assert (m_fd.get () != -1);
   }
 
   ~proc_mem_file ()
   {
     linux_nat_debug_printf ("closing fd %d for /proc/%d/task/%ld/mem",
-			    m_fd, m_ptid.pid (), m_ptid.lwp ());
-    close (m_fd);
+			    m_fd.get (), m_ptid.pid (), m_ptid.lwp ());
   }
 
   DISABLE_COPY_AND_ASSIGN (proc_mem_file);
 
-  int fd ()
+  proc_mem_file (proc_mem_file &&) = default;
+  proc_mem_file &operator= (proc_mem_file &&) = default;
+
+  int fd () const noexcept
   {
-    return m_fd;
+    return m_fd.get ();
   }
 
 private:
@@ -4055,7 +4057,7 @@ class proc_mem_file
   ptid_t m_ptid;
 
   /* The file descriptor.  */
-  int m_fd = -1;
+  scoped_fd m_fd;
 };
 
 /* The map between an inferior process id, and the open /proc/PID/mem
@@ -4093,9 +4095,9 @@ open_proc_mem_file (ptid_t ptid)
   xsnprintf (filename, sizeof filename,
 	     "/proc/%d/task/%ld/mem", ptid.pid (), ptid.lwp ());
 
-  int fd = gdb_open_cloexec (filename, O_RDWR | O_LARGEFILE, 0).release ();
+  scoped_fd fd = gdb_open_cloexec (filename, O_RDWR | O_LARGEFILE, 0);
 
-  if (fd == -1)
+  if (fd.get () == -1)
     {
       warning (_("opening /proc/PID/mem file for lwp %d.%ld failed: %s (%d)"),
 	       ptid.pid (), ptid.lwp (),
@@ -4103,12 +4105,11 @@ open_proc_mem_file (ptid_t ptid)
       return;
     }
 
+  linux_nat_debug_printf ("opened fd %d for lwp %d.%ld",
+			  fd.get (), ptid.pid (), ptid.lwp ());
   proc_mem_file_map.emplace (std::piecewise_construct,
 			     std::forward_as_tuple (ptid.pid ()),
-			     std::forward_as_tuple (ptid, fd));
-
-  linux_nat_debug_printf ("opened fd %d for lwp %d.%ld",
-			  fd, ptid.pid (), ptid.lwp ());
+			     std::forward_as_tuple (ptid, std::move (fd)));
 }
 
 /* Helper for linux_proc_xfer_memory_partial and
-- 
2.46.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-03-18 11:30 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-03-17 20:55 [PATCH] Use scoped_fd in linux-nat.c:proc_mem_file Tom Tromey
2025-03-18  1:30 ` Kevin Buettner
2025-03-18  2:16 ` Simon Marchi
2025-03-18 11:29   ` Tom Tromey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox