2012-02-27 Pedro Alves <palves@redhat.com>
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.
This commit is contained in:
parent
c14d7ab2b6
commit
644cebc98c
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue