diff options
Diffstat (limited to 'system/gdb/stopcode-lock.patch')
-rw-r--r-- | system/gdb/stopcode-lock.patch | 75 |
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; |