aboutsummaryrefslogtreecommitdiff
path: root/gdb/inferior.h
diff options
context:
space:
mode:
authorDoug Evans <xdje42@gmail.com>2014-03-30 12:24:31 -0700
committerDoug Evans <xdje42@gmail.com>2014-03-30 12:24:31 -0700
commit7c0bc051fcae47b9f8620de156ddd744ec85309d (patch)
tree8225435a68315eb79f934cea5f24dbd9a20a3b4c /gdb/inferior.h
parent97d8f0ee776d6bbeef9c529f2880dedbb659492e (diff)
downloadfsf-binutils-gdb-7c0bc051fcae47b9f8620de156ddd744ec85309d.zip
fsf-binutils-gdb-7c0bc051fcae47b9f8620de156ddd744ec85309d.tar.gz
fsf-binutils-gdb-7c0bc051fcae47b9f8620de156ddd744ec85309d.tar.bz2
* inferior.h (enum stop_kind): Improve comment.
Diffstat (limited to 'gdb/inferior.h')
-rw-r--r--gdb/inferior.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/gdb/inferior.h b/gdb/inferior.h
index 64a78ce..f8d358d 100644
--- a/gdb/inferior.h
+++ b/gdb/inferior.h
@@ -305,20 +305,20 @@ enum step_over_calls_kind
setting up a remote connection; it is like STOP_QUIETLY_NO_SIGSTOP
except that there is no need to hide a signal. */
-/* It is also used after attach, due to attaching to a process. This
- is a bit trickier. When doing an attach, the kernel stops the
- debuggee with a SIGSTOP. On newer GNU/Linux kernels (>= 2.5.61)
- the handling of SIGSTOP for a ptraced process has changed. Earlier
- versions of the kernel would ignore these SIGSTOPs, while now
- SIGSTOP is treated like any other signal, i.e. it is not muffled.
-
+/* STOP_QUIETLY_NO_SIGSTOP is used to handle a tricky situation with attach.
+ When doing an attach, the kernel stops the debuggee with a SIGSTOP.
+ On newer GNU/Linux kernels (>= 2.5.61) the handling of SIGSTOP for
+ a ptraced process has changed. Earlier versions of the kernel
+ would ignore these SIGSTOPs, while now SIGSTOP is treated like any
+ other signal, i.e. it is not muffled.
+
If the gdb user does a 'continue' after the 'attach', gdb passes
the global variable stop_signal (which stores the signal from the
attach, SIGSTOP) to the ptrace(PTRACE_CONT,...) call. This is
problematic, because the kernel doesn't ignore such SIGSTOP
now. I.e. it is reported back to gdb, which in turn presents it
back to the user.
-
+
To avoid the problem, we use STOP_QUIETLY_NO_SIGSTOP, which allows
gdb to clear the value of stop_signal after the attach, so that it
is not passed back down to the kernel. */