2012-02-27 Pedro Alves <palves@redhat.com>
authorPedro Alves <palves@redhat.com>
Mon, 27 Feb 2012 16:22:16 +0000 (16:22 +0000)
committerPedro Alves <palves@redhat.com>
Mon, 27 Feb 2012 16:22:16 +0000 (16:22 +0000)
gdb/gdbserver/
* linux-low.c (pid_is_stopped): Delete, moved to common/.
(linux_attach_lwp_1): Adjust to use linux_proc_pid_is_stopped.

gdb/
* linux-nat.c (pid_is_stopped): Delete, moved to common/.
(linux_nat_post_attach_wait): Adjust to use
linux_proc_pid_is_stopped.

* common/linux-procfs.h (linux_proc_pid_is_stopped): Declare.
* common/linux-procfs.c (linux_proc_pid_is_stopped): New function,
based on pid_is_stopped from both linux-nat.c and
gdbserver/linux-low.c, and renamed.

gdb/ChangeLog
gdb/common/linux-procfs.c
gdb/common/linux-procfs.h
gdb/gdbserver/ChangeLog
gdb/gdbserver/linux-low.c
gdb/linux-nat.c

index 0772ee8..e2379f4 100644 (file)
@@ -1,3 +1,13 @@
+2012-02-27  Pedro Alves  <palves@redhat.com>
+
+       * linux-nat.c (pid_is_stopped): Delete, moved to common/.
+       (linux_nat_post_attach_wait): Adjust to use
+       linux_proc_pid_is_stopped.
+       * common/linux-procfs.h (linux_proc_pid_is_stopped): Declare.
+       * common/linux-procfs.c (linux_proc_pid_is_stopped): New function,
+       based on pid_is_stopped from both linux-nat.c and
+       gdbserver/linux-low.c, and renamed.
+
 2012-02-24  Maciej W. Rozycki  <macro@codesourcery.com>
 
        * remote.c (remote_watchpoint_addr_within_range): New function.
index 421f36e..165383e 100644 (file)
@@ -53,3 +53,34 @@ linux_proc_get_tgid (int lwpid)
 
   return tgid;
 }
+
+/* Detect `T (stopped)' in `/proc/PID/status'.
+   Other states including `T (tracing stop)' are reported as false.  */
+
+int
+linux_proc_pid_is_stopped (pid_t pid)
+{
+  FILE *status_file;
+  char buf[100];
+  int retval = 0;
+
+  snprintf (buf, sizeof (buf), "/proc/%d/status", (int) pid);
+  status_file = fopen (buf, "r");
+  if (status_file != NULL)
+    {
+      int have_state = 0;
+
+      while (fgets (buf, sizeof (buf), status_file))
+       {
+         if (strncmp (buf, "State:", 6) == 0)
+           {
+             have_state = 1;
+             break;
+           }
+       }
+      if (have_state && strstr (buf, "T (stopped)") != NULL)
+       retval = 1;
+      fclose (status_file);
+    }
+  return retval;
+}
index a4ba4a1..c1e5547 100644 (file)
@@ -26,4 +26,9 @@
 
 extern int linux_proc_get_tgid (int lwpid);
 
+/* Detect `T (stopped)' in `/proc/PID/status'.
+   Other states including `T (tracing stop)' are reported as false.  */
+
+extern int linux_proc_pid_is_stopped (pid_t pid);
+
 #endif /* COMMON_LINUX_PROCFS_H */
index b6d9ce9..fed95bf 100644 (file)
@@ -1,5 +1,10 @@
 2012-02-27  Pedro Alves  <palves@redhat.com>
 
+       * linux-low.c (pid_is_stopped): Delete, moved to common/.
+       (linux_attach_lwp_1): Adjust to use linux_proc_pid_is_stopped.
+
+2012-02-27  Pedro Alves  <palves@redhat.com>
+
        PR server/9684
        * linux-low.c (pid_is_stopped): New.
        (linux_attach_lwp_1): Handle attaching to 'T (stopped)' processes.
index f2887e6..8f57ee3 100644 (file)
@@ -598,37 +598,6 @@ linux_create_inferior (char *program, char **allargs)
   return pid;
 }
 
-/* Detect `T (stopped)' in `/proc/PID/status'.
-   Other states including `T (tracing stop)' are reported as false.  */
-
-static int
-pid_is_stopped (pid_t pid)
-{
-  FILE *status_file;
-  char buf[100];
-  int retval = 0;
-
-  snprintf (buf, sizeof (buf), "/proc/%d/status", (int) pid);
-  status_file = fopen (buf, "r");
-  if (status_file != NULL)
-    {
-      int have_state = 0;
-
-      while (fgets (buf, sizeof (buf), status_file))
-       {
-         if (strncmp (buf, "State:", 6) == 0)
-           {
-             have_state = 1;
-             break;
-           }
-       }
-      if (have_state && strstr (buf, "T (stopped)") != NULL)
-       retval = 1;
-      fclose (status_file);
-    }
-  return retval;
-}
-
 /* Attach to an inferior process.  */
 
 static void
@@ -674,7 +643,7 @@ linux_attach_lwp_1 (unsigned long lwpid, int initial)
      ptrace call on this LWP.  */
   new_lwp->must_set_ptrace_flags = 1;
 
-  if (pid_is_stopped (lwpid))
+  if (linux_proc_pid_is_stopped (lwpid))
     {
       if (debug_threads)
        fprintf (stderr,
index 3731096..e426387 100644 (file)
@@ -1356,37 +1356,6 @@ exit_lwp (struct lwp_info *lp)
   delete_lwp (lp->ptid);
 }
 
-/* Detect `T (stopped)' in `/proc/PID/status'.
-   Other states including `T (tracing stop)' are reported as false.  */
-
-static int
-pid_is_stopped (pid_t pid)
-{
-  FILE *status_file;
-  char buf[100];
-  int retval = 0;
-
-  snprintf (buf, sizeof (buf), "/proc/%d/status", (int) pid);
-  status_file = fopen (buf, "r");
-  if (status_file != NULL)
-    {
-      int have_state = 0;
-
-      while (fgets (buf, sizeof (buf), status_file))
-       {
-         if (strncmp (buf, "State:", 6) == 0)
-           {
-             have_state = 1;
-             break;
-           }
-       }
-      if (have_state && strstr (buf, "T (stopped)") != NULL)
-       retval = 1;
-      fclose (status_file);
-    }
-  return retval;
-}
-
 /* Wait for the LWP specified by LP, which we have just attached to.
    Returns a wait status for that LWP, to cache.  */
 
@@ -1397,7 +1366,7 @@ linux_nat_post_attach_wait (ptid_t ptid, int first, int *cloned,
   pid_t new_pid, pid = GET_LWP (ptid);
   int status;
 
-  if (pid_is_stopped (pid))
+  if (linux_proc_pid_is_stopped (pid))
     {
       if (debug_linux_nat)
        fprintf_unfiltered (gdb_stdlog,