summaryrefslogtreecommitdiff
path: root/system/gdb/stopcode-lock.patch
diff options
context:
space:
mode:
Diffstat (limited to 'system/gdb/stopcode-lock.patch')
-rw-r--r--system/gdb/stopcode-lock.patch75
1 files changed, 0 insertions, 75 deletions
diff --git a/system/gdb/stopcode-lock.patch b/system/gdb/stopcode-lock.patch
deleted file mode 100644
index 6a4e3d855..000000000
--- a/system/gdb/stopcode-lock.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From: Andrew Burgess <andrew.burgess@embecosm.com>
-Date: Tue, 3 Jul 2018 18:02:48 +0000 (+0100)
-Subject: gdb: Avoid using W_STOPCODE(0) as this is ambiguous on MIPS
-X-Git-Tag: users/ARM/embedded-binutils-master-2018q4~1172
-X-Git-Url: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff_plain;h=953473375500a809fbb3eca3efa4dbb670c3a32f
-
-gdb: Avoid using W_STOPCODE(0) as this is ambiguous on MIPS
-
-The MIPS target supports 127 signals, and this can create an ambiguity
-in process wait statuses. A status value of 0x007f could potentially
-indicate a process that has exited with signal 127, or a process that
-has stopped with signal 0.
-
-In uClibc-ng the interpretation of 0x007f is that the process has
-exited with signal 127 rather than stopped with signal 0, and so,
-WIFSTOPPED (W_STOPCODE (0)) will be false rather than true as it would
-be on most other platforms.
-
-Given that it's pretty easy to avoid using W_STOPCODE (0), lets do that.
-
-gdb/ChangeLog:
-
- * linux-nat.c (linux_nat_target::follow_fork): Avoid using
- 'W_STOPCODE (0)' as this could be ambiguous.
----
-
-diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
-index 86d3dfd..d2c88ad 100644
---- a/gdb/linux-nat.c
-+++ b/gdb/linux-nat.c
-@@ -445,7 +445,6 @@ linux_nat_target::follow_fork (int follow_child, int detach_fork)
- if (!follow_child)
- {
- struct lwp_info *child_lp = NULL;
-- int status = W_STOPCODE (0);
- int has_vforked;
- ptid_t parent_ptid, child_ptid;
- int parent_pid, child_pid;
-@@ -465,6 +464,8 @@ linux_nat_target::follow_fork (int follow_child, int detach_fork)
- /* Detach new forked process? */
- if (detach_fork)
- {
-+ int child_stop_signal = 0;
-+ bool detach_child = true;
- struct cleanup *old_chain = make_cleanup (delete_lwp_cleanup,
- child_lp);
-
-@@ -484,18 +485,24 @@ linux_nat_target::follow_fork (int follow_child, int detach_fork)
- if (!gdbarch_software_single_step_p (target_thread_architecture
- (parent_ptid)))
- {
-+ int status;
-+
- linux_disable_event_reporting (child_pid);
- if (ptrace (PTRACE_SINGLESTEP, child_pid, 0, 0) < 0)
- perror_with_name (_("Couldn't do single step"));
- if (my_waitpid (child_pid, &status, 0) < 0)
- perror_with_name (_("Couldn't wait vfork process"));
-+ else
-+ {
-+ detach_child = WIFSTOPPED (status);
-+ child_stop_signal = WSTOPSIG (status);
-+ }
- }
-
-- if (WIFSTOPPED (status))
-+ if (detach_child)
- {
-- int signo;
-+ int signo = child_stop_signal;
-
-- signo = WSTOPSIG (status);
- if (signo != 0
- && !signal_pass_state (gdb_signal_from_host (signo)))
- signo = 0;