diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-03-13 15:00:37 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-03-13 15:00:37 +0000 |
commit | 5f572decf9c6fe42f07706514b5056e7fc65cfef (patch) | |
tree | d02de67fa34ec12a975bd026bc7c1ee99aa9842e /gdb/common | |
parent | 44f238bb633edb3694f64cb6d3b60c510b2fb714 (diff) | |
download | gdb-5f572decf9c6fe42f07706514b5056e7fc65cfef.zip gdb-5f572decf9c6fe42f07706514b5056e7fc65cfef.tar.gz gdb-5f572decf9c6fe42f07706514b5056e7fc65cfef.tar.bz2 |
gdb/
* Makefile.in (linux-ptrace.o): New.
* common/linux-procfs.c (linux_proc_pid_is_zombie): New,
from linux-nat.c.
* common/linux-procfs.h (linux_proc_pid_is_zombie): New declaration.
* common/linux-ptrace.c: New file.
* config/alpha/alpha-linux.mh (NATDEPFILES): Add linux-ptrace.o.
* config/arm/linux.mh: Likewise.
* config/i386/linux.mh: Likewise.
* config/i386/linux64.mh: Likewise.
* config/ia64/linux.mh: Likewise.
* config/m32r/linux.mh: Likewise.
* config/m68k/linux.mh: Likewise.
* config/mips/linux.mh: Likewise.
* config/pa/linux.mh: Likewise.
* config/powerpc/linux.mh: Likewise.
* config/powerpc/ppc64-linux.mh: Likewise.
* config/powerpc/spu-linux.mh: Likewise.
* config/s390/s390.mh: Likewise.
* config/sparc/linux.mh: Likewise.
* config/sparc/linux64.mh: Likewise.
* config/xtensa/linux.mh: Likewise.
* linux-nat.c (linux_lwp_is_zombie): Remove, move it to
common/linux-procfs.c.
(wait_lwp): Rename linux_lwp_is_zombie to linux_proc_pid_is_zombie.
gdb/gdbserver/
* Makefile.in (linux-ptrace.o): New.
* configure.srv (arm*-*-linux*, bfin-*-*linux*, crisv32-*-linux*)
(cris-*-linux*, i[34567]86-*-linux*, ia64-*-linux*, m32r*-*-linux*)
(m68*-*-linux*, m68*-*-uclinux*, mips*-*-linux*, powerpc*-*-linux*)
(s390*-*-linux*, sh*-*-linux*, sparc*-*-linux*, tic6x-*-uclinux)
(x86_64-*-linux*, xtensa*-*-linux*): Add linux-ptrace.o to SRV_TGTOBJ
of these targets.
* linux-low.c (linux_attach_lwp_1): Remove redundent else clause.
Diffstat (limited to 'gdb/common')
-rw-r--r-- | gdb/common/linux-procfs.c | 31 | ||||
-rw-r--r-- | gdb/common/linux-procfs.h | 4 | ||||
-rw-r--r-- | gdb/common/linux-ptrace.c | 26 |
3 files changed, 61 insertions, 0 deletions
diff --git a/gdb/common/linux-procfs.c b/gdb/common/linux-procfs.c index 165383e..b7d98a5 100644 --- a/gdb/common/linux-procfs.c +++ b/gdb/common/linux-procfs.c @@ -84,3 +84,34 @@ linux_proc_pid_is_stopped (pid_t pid) } return retval; } + +/* See linux-procfs.h declaration. */ + +int +linux_proc_pid_is_zombie (pid_t pid) +{ + char buffer[100]; + FILE *procfile; + int retval; + int have_state; + + xsnprintf (buffer, sizeof (buffer), "/proc/%d/status", (int) pid); + procfile = fopen (buffer, "r"); + if (procfile == NULL) + { + warning (_("unable to open /proc file '%s'"), buffer); + return 0; + } + + have_state = 0; + while (fgets (buffer, sizeof (buffer), procfile) != NULL) + if (strncmp (buffer, "State:", 6) == 0) + { + have_state = 1; + break; + } + retval = (have_state + && strcmp (buffer, "State:\tZ (zombie)\n") == 0); + fclose (procfile); + return retval; +} diff --git a/gdb/common/linux-procfs.h b/gdb/common/linux-procfs.h index c1e5547..130adeb 100644 --- a/gdb/common/linux-procfs.h +++ b/gdb/common/linux-procfs.h @@ -31,4 +31,8 @@ extern int linux_proc_get_tgid (int lwpid); extern int linux_proc_pid_is_stopped (pid_t pid); +/* Return non-zero if PID is a zombie. */ + +extern int linux_proc_pid_is_zombie (pid_t pid); + #endif /* COMMON_LINUX_PROCFS_H */ diff --git a/gdb/common/linux-ptrace.c b/gdb/common/linux-ptrace.c new file mode 100644 index 0000000..6dea677 --- /dev/null +++ b/gdb/common/linux-ptrace.c @@ -0,0 +1,26 @@ +/* Linux-specific ptrace manipulation routines. + Copyright (C) 2012 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#ifdef GDBSERVER +#include "server.h" +#else +#include "defs.h" +#include "gdb_string.h" +#endif + +#include "linux-ptrace.h" |