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'.
This commit is contained in:
Pedro Alves 2016-07-25 12:42:18 +01:00
parent d617208bb0
commit 0e1a6a5169
2 changed files with 9 additions and 0 deletions

View File

@ -1,3 +1,9 @@
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.

View File

@ -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