From: Yao Qi Date: Fri, 28 Apr 2017 08:33:16 +0000 (+0100) Subject: [MIPS] Use lwpid from lwp_info instead of inferior_ptid X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7974a6050b6e2c44722a533e2d5d9131e7db00ff;p=binutils-gdb.git [MIPS] Use lwpid from lwp_info instead of inferior_ptid RAJESH reported that GDB gets "Couldn't write debug register: No such process." on mips64 when GDB attaches to a multi threaded application. Looks GDB nows PTRACE_GET_WATCH_REGS for inferior_ptid but PTRACE_SET_WATCH_REGS for lwp->ptid, they may be different. gdb: 2017-04-28 Yao Qi * mips-linux-nat.c (mips_linux_new_thread): Get lwpid from lwp_info instead of getting from inferior_ptid. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 88b44f94d12..9abf2766e31 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2017-04-28 Yao Qi + + * mips-linux-nat.c (mips_linux_new_thread): Get lwpid from + lwp_info instead of getting from inferior_ptid. + 2017-04-27 Keith Seitz * gdbtypes.c (LVALUE_REFERENCE_TO_RVALUE_BINDING_BADNESS) diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c index 9596b49099b..c5c18fdc621 100644 --- a/gdb/mips-linux-nat.c +++ b/gdb/mips-linux-nat.c @@ -624,14 +624,13 @@ write_watchpoint_regs (void) static void mips_linux_new_thread (struct lwp_info *lp) { - int tid; + long tid = ptid_get_lwp (lp->ptid); - if (!mips_linux_read_watch_registers (ptid_get_lwp (inferior_ptid), + if (!mips_linux_read_watch_registers (tid, &watch_readback, &watch_readback_valid, 0)) return; - tid = ptid_get_lwp (lp->ptid); if (ptrace (PTRACE_SET_WATCH_REGS, tid, &watch_mirror, NULL) == -1) perror_with_name (_("Couldn't write debug register")); }