This is the mail archive of the
gdb-cvs@sourceware.org
mailing list for the GDB project.
[binutils-gdb] linux-procfs: Handle lowercase "t (tracing stop)" state
- From: Pedro Alves <palves at sourceware dot org>
- To: gdb-cvs at sourceware dot org
- Date: 25 Jul 2016 12:01:26 -0000
- Subject: [binutils-gdb] linux-procfs: Handle lowercase "t (tracing stop)" state
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=0e1a6a5169023ee0c19de2c9160b469e43634b21
commit 0e1a6a5169023ee0c19de2c9160b469e43634b21
Author: Pedro Alves <palves@redhat.com>
Date: Mon Jul 25 12:42:18 2016 +0100
linux-procfs: Handle lowercase "t (tracing stop)" state
Since Linux 2.6.33, /proc/PID/status shows "t (tracing stop)", with
lowercase 't'. Because GDB is only expecting "T (tracing stop)", GDB
can incorrectly suppress errors in check_ptrace_stopped_lwp_gone:
1578 if (!check_ptrace_stopped_lwp_gone (lp))
1579 throw_exception (ex);
Ref: https://sourceware.org/ml/gdb-patches/2016-06/msg00072.html
2016-07-25 Pedro Alves <palves@redhat.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
* nat/linux-procfs.c (parse_proc_status_state): Handle lowercase
't'.
Diff:
---
gdb/ChangeLog | 6 ++++++
gdb/nat/linux-procfs.c | 3 +++
2 files changed, 9 insertions(+)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 0840a69..c346a90 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,4 +1,10 @@
2016-07-25 Pedro Alves <palves@redhat.com>
+ Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * nat/linux-procfs.c (parse_proc_status_state): Handle lowercase
+ 't'.
+
+2016-07-25 Pedro Alves <palves@redhat.com>
* nat/linux-procfs.c (enum proc_state): New enum.
(parse_proc_status_state): New function.
diff --git a/gdb/nat/linux-procfs.c b/gdb/nat/linux-procfs.c
index 5d63e1b..f00fe29 100644
--- a/gdb/nat/linux-procfs.c
+++ b/gdb/nat/linux-procfs.c
@@ -102,7 +102,10 @@ parse_proc_status_state (const char *state)
switch (state[0])
{
+ case 't':
+ return PROC_STATE_TRACING_STOP;
case 'T':
+ /* Before Linux 2.6.33, tracing stop used uppercase T. */
if (strcmp (state, "T (tracing stop)") == 0)
return PROC_STATE_TRACING_STOP;
else