aboutsummaryrefslogtreecommitdiff
path: root/gdb
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
parent97d8f0ee776d6bbeef9c529f2880dedbb659492e (diff)
downloadgdb-7c0bc051fcae47b9f8620de156ddd744ec85309d.zip
gdb-7c0bc051fcae47b9f8620de156ddd744ec85309d.tar.gz
gdb-7c0bc051fcae47b9f8620de156ddd744ec85309d.tar.bz2
* inferior.h (enum stop_kind): Improve comment.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/inferior.h16
2 files changed, 12 insertions, 8 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c5c962a..4c464e2 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2014-03-30 Doug Evans <xdje42@gmail.com>
+
+ * inferior.h (enum stop_kind): Improve comment.
+
2014-03-28 Joel Brobecker <brobecker@adacore.com>
* varobj.c (varobj_value_has_mutated): If NEW_VALUE is
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. */