Make exceptions use std::string and be self-managing
[external/binutils.git] / gdb / linux-nat.c
1 /* GNU/Linux native-dependent code common to multiple platforms.
2
3    Copyright (C) 2001-2019 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "inferior.h"
22 #include "infrun.h"
23 #include "target.h"
24 #include "nat/linux-nat.h"
25 #include "nat/linux-waitpid.h"
26 #include "common/gdb_wait.h"
27 #include <unistd.h>
28 #include <sys/syscall.h>
29 #include "nat/gdb_ptrace.h"
30 #include "linux-nat.h"
31 #include "nat/linux-ptrace.h"
32 #include "nat/linux-procfs.h"
33 #include "nat/linux-personality.h"
34 #include "linux-fork.h"
35 #include "gdbthread.h"
36 #include "gdbcmd.h"
37 #include "regcache.h"
38 #include "regset.h"
39 #include "inf-child.h"
40 #include "inf-ptrace.h"
41 #include "auxv.h"
42 #include <sys/procfs.h>         /* for elf_gregset etc.  */
43 #include "elf-bfd.h"            /* for elfcore_write_* */
44 #include "gregset.h"            /* for gregset */
45 #include "gdbcore.h"            /* for get_exec_file */
46 #include <ctype.h>              /* for isdigit */
47 #include <sys/stat.h>           /* for struct stat */
48 #include <fcntl.h>              /* for O_RDONLY */
49 #include "inf-loop.h"
50 #include "event-loop.h"
51 #include "event-top.h"
52 #include <pwd.h>
53 #include <sys/types.h>
54 #include <dirent.h>
55 #include "xml-support.h"
56 #include <sys/vfs.h>
57 #include "solib.h"
58 #include "nat/linux-osdata.h"
59 #include "linux-tdep.h"
60 #include "symfile.h"
61 #include "common/agent.h"
62 #include "tracepoint.h"
63 #include "common/buffer.h"
64 #include "target-descriptions.h"
65 #include "common/filestuff.h"
66 #include "objfiles.h"
67 #include "nat/linux-namespaces.h"
68 #include "common/fileio.h"
69 #include "common/scope-exit.h"
70
71 #ifndef SPUFS_MAGIC
72 #define SPUFS_MAGIC 0x23c9b64e
73 #endif
74
75 /* This comment documents high-level logic of this file.
76
77 Waiting for events in sync mode
78 ===============================
79
80 When waiting for an event in a specific thread, we just use waitpid,
81 passing the specific pid, and not passing WNOHANG.
82
83 When waiting for an event in all threads, waitpid is not quite good:
84
85 - If the thread group leader exits while other threads in the thread
86   group still exist, waitpid(TGID, ...) hangs.  That waitpid won't
87   return an exit status until the other threads in the group are
88   reaped.
89
90 - When a non-leader thread execs, that thread just vanishes without
91   reporting an exit (so we'd hang if we waited for it explicitly in
92   that case).  The exec event is instead reported to the TGID pid.
93
94 The solution is to always use -1 and WNOHANG, together with
95 sigsuspend.
96
97 First, we use non-blocking waitpid to check for events.  If nothing is
98 found, we use sigsuspend to wait for SIGCHLD.  When SIGCHLD arrives,
99 it means something happened to a child process.  As soon as we know
100 there's an event, we get back to calling nonblocking waitpid.
101
102 Note that SIGCHLD should be blocked between waitpid and sigsuspend
103 calls, so that we don't miss a signal.  If SIGCHLD arrives in between,
104 when it's blocked, the signal becomes pending and sigsuspend
105 immediately notices it and returns.
106
107 Waiting for events in async mode (TARGET_WNOHANG)
108 =================================================
109
110 In async mode, GDB should always be ready to handle both user input
111 and target events, so neither blocking waitpid nor sigsuspend are
112 viable options.  Instead, we should asynchronously notify the GDB main
113 event loop whenever there's an unprocessed event from the target.  We
114 detect asynchronous target events by handling SIGCHLD signals.  To
115 notify the event loop about target events, the self-pipe trick is used
116 --- a pipe is registered as waitable event source in the event loop,
117 the event loop select/poll's on the read end of this pipe (as well on
118 other event sources, e.g., stdin), and the SIGCHLD handler writes a
119 byte to this pipe.  This is more portable than relying on
120 pselect/ppoll, since on kernels that lack those syscalls, libc
121 emulates them with select/poll+sigprocmask, and that is racy
122 (a.k.a. plain broken).
123
124 Obviously, if we fail to notify the event loop if there's a target
125 event, it's bad.  OTOH, if we notify the event loop when there's no
126 event from the target, linux_nat_wait will detect that there's no real
127 event to report, and return event of type TARGET_WAITKIND_IGNORE.
128 This is mostly harmless, but it will waste time and is better avoided.
129
130 The main design point is that every time GDB is outside linux-nat.c,
131 we have a SIGCHLD handler installed that is called when something
132 happens to the target and notifies the GDB event loop.  Whenever GDB
133 core decides to handle the event, and calls into linux-nat.c, we
134 process things as in sync mode, except that the we never block in
135 sigsuspend.
136
137 While processing an event, we may end up momentarily blocked in
138 waitpid calls.  Those waitpid calls, while blocking, are guarantied to
139 return quickly.  E.g., in all-stop mode, before reporting to the core
140 that an LWP hit a breakpoint, all LWPs are stopped by sending them
141 SIGSTOP, and synchronously waiting for the SIGSTOP to be reported.
142 Note that this is different from blocking indefinitely waiting for the
143 next event --- here, we're already handling an event.
144
145 Use of signals
146 ==============
147
148 We stop threads by sending a SIGSTOP.  The use of SIGSTOP instead of another
149 signal is not entirely significant; we just need for a signal to be delivered,
150 so that we can intercept it.  SIGSTOP's advantage is that it can not be
151 blocked.  A disadvantage is that it is not a real-time signal, so it can only
152 be queued once; we do not keep track of other sources of SIGSTOP.
153
154 Two other signals that can't be blocked are SIGCONT and SIGKILL.  But we can't
155 use them, because they have special behavior when the signal is generated -
156 not when it is delivered.  SIGCONT resumes the entire thread group and SIGKILL
157 kills the entire thread group.
158
159 A delivered SIGSTOP would stop the entire thread group, not just the thread we
160 tkill'd.  But we never let the SIGSTOP be delivered; we always intercept and 
161 cancel it (by PTRACE_CONT without passing SIGSTOP).
162
163 We could use a real-time signal instead.  This would solve those problems; we
164 could use PTRACE_GETSIGINFO to locate the specific stop signals sent by GDB.
165 But we would still have to have some support for SIGSTOP, since PTRACE_ATTACH
166 generates it, and there are races with trying to find a signal that is not
167 blocked.
168
169 Exec events
170 ===========
171
172 The case of a thread group (process) with 3 or more threads, and a
173 thread other than the leader execs is worth detailing:
174
175 On an exec, the Linux kernel destroys all threads except the execing
176 one in the thread group, and resets the execing thread's tid to the
177 tgid.  No exit notification is sent for the execing thread -- from the
178 ptracer's perspective, it appears as though the execing thread just
179 vanishes.  Until we reap all other threads except the leader and the
180 execing thread, the leader will be zombie, and the execing thread will
181 be in `D (disc sleep)' state.  As soon as all other threads are
182 reaped, the execing thread changes its tid to the tgid, and the
183 previous (zombie) leader vanishes, giving place to the "new"
184 leader.  */
185
186 #ifndef O_LARGEFILE
187 #define O_LARGEFILE 0
188 #endif
189
190 struct linux_nat_target *linux_target;
191
192 /* Does the current host support PTRACE_GETREGSET?  */
193 enum tribool have_ptrace_getregset = TRIBOOL_UNKNOWN;
194
195 static unsigned int debug_linux_nat;
196 static void
197 show_debug_linux_nat (struct ui_file *file, int from_tty,
198                       struct cmd_list_element *c, const char *value)
199 {
200   fprintf_filtered (file, _("Debugging of GNU/Linux lwp module is %s.\n"),
201                     value);
202 }
203
204 struct simple_pid_list
205 {
206   int pid;
207   int status;
208   struct simple_pid_list *next;
209 };
210 struct simple_pid_list *stopped_pids;
211
212 /* Whether target_thread_events is in effect.  */
213 static int report_thread_events;
214
215 /* Async mode support.  */
216
217 /* The read/write ends of the pipe registered as waitable file in the
218    event loop.  */
219 static int linux_nat_event_pipe[2] = { -1, -1 };
220
221 /* True if we're currently in async mode.  */
222 #define linux_is_async_p() (linux_nat_event_pipe[0] != -1)
223
224 /* Flush the event pipe.  */
225
226 static void
227 async_file_flush (void)
228 {
229   int ret;
230   char buf;
231
232   do
233     {
234       ret = read (linux_nat_event_pipe[0], &buf, 1);
235     }
236   while (ret >= 0 || (ret == -1 && errno == EINTR));
237 }
238
239 /* Put something (anything, doesn't matter what, or how much) in event
240    pipe, so that the select/poll in the event-loop realizes we have
241    something to process.  */
242
243 static void
244 async_file_mark (void)
245 {
246   int ret;
247
248   /* It doesn't really matter what the pipe contains, as long we end
249      up with something in it.  Might as well flush the previous
250      left-overs.  */
251   async_file_flush ();
252
253   do
254     {
255       ret = write (linux_nat_event_pipe[1], "+", 1);
256     }
257   while (ret == -1 && errno == EINTR);
258
259   /* Ignore EAGAIN.  If the pipe is full, the event loop will already
260      be awakened anyway.  */
261 }
262
263 static int kill_lwp (int lwpid, int signo);
264
265 static int stop_callback (struct lwp_info *lp);
266
267 static void block_child_signals (sigset_t *prev_mask);
268 static void restore_child_signals_mask (sigset_t *prev_mask);
269
270 struct lwp_info;
271 static struct lwp_info *add_lwp (ptid_t ptid);
272 static void purge_lwp_list (int pid);
273 static void delete_lwp (ptid_t ptid);
274 static struct lwp_info *find_lwp_pid (ptid_t ptid);
275
276 static int lwp_status_pending_p (struct lwp_info *lp);
277
278 static void save_stop_reason (struct lwp_info *lp);
279
280 \f
281 /* LWP accessors.  */
282
283 /* See nat/linux-nat.h.  */
284
285 ptid_t
286 ptid_of_lwp (struct lwp_info *lwp)
287 {
288   return lwp->ptid;
289 }
290
291 /* See nat/linux-nat.h.  */
292
293 void
294 lwp_set_arch_private_info (struct lwp_info *lwp,
295                            struct arch_lwp_info *info)
296 {
297   lwp->arch_private = info;
298 }
299
300 /* See nat/linux-nat.h.  */
301
302 struct arch_lwp_info *
303 lwp_arch_private_info (struct lwp_info *lwp)
304 {
305   return lwp->arch_private;
306 }
307
308 /* See nat/linux-nat.h.  */
309
310 int
311 lwp_is_stopped (struct lwp_info *lwp)
312 {
313   return lwp->stopped;
314 }
315
316 /* See nat/linux-nat.h.  */
317
318 enum target_stop_reason
319 lwp_stop_reason (struct lwp_info *lwp)
320 {
321   return lwp->stop_reason;
322 }
323
324 /* See nat/linux-nat.h.  */
325
326 int
327 lwp_is_stepping (struct lwp_info *lwp)
328 {
329   return lwp->step;
330 }
331
332 \f
333 /* Trivial list manipulation functions to keep track of a list of
334    new stopped processes.  */
335 static void
336 add_to_pid_list (struct simple_pid_list **listp, int pid, int status)
337 {
338   struct simple_pid_list *new_pid = XNEW (struct simple_pid_list);
339
340   new_pid->pid = pid;
341   new_pid->status = status;
342   new_pid->next = *listp;
343   *listp = new_pid;
344 }
345
346 static int
347 pull_pid_from_list (struct simple_pid_list **listp, int pid, int *statusp)
348 {
349   struct simple_pid_list **p;
350
351   for (p = listp; *p != NULL; p = &(*p)->next)
352     if ((*p)->pid == pid)
353       {
354         struct simple_pid_list *next = (*p)->next;
355
356         *statusp = (*p)->status;
357         xfree (*p);
358         *p = next;
359         return 1;
360       }
361   return 0;
362 }
363
364 /* Return the ptrace options that we want to try to enable.  */
365
366 static int
367 linux_nat_ptrace_options (int attached)
368 {
369   int options = 0;
370
371   if (!attached)
372     options |= PTRACE_O_EXITKILL;
373
374   options |= (PTRACE_O_TRACESYSGOOD
375               | PTRACE_O_TRACEVFORKDONE
376               | PTRACE_O_TRACEVFORK
377               | PTRACE_O_TRACEFORK
378               | PTRACE_O_TRACEEXEC);
379
380   return options;
381 }
382
383 /* Initialize ptrace and procfs warnings and check for supported
384    ptrace features given PID.
385
386    ATTACHED should be nonzero iff we attached to the inferior.  */
387
388 static void
389 linux_init_ptrace_procfs (pid_t pid, int attached)
390 {
391   int options = linux_nat_ptrace_options (attached);
392
393   linux_enable_event_reporting (pid, options);
394   linux_ptrace_init_warnings ();
395   linux_proc_init_warnings ();
396 }
397
398 linux_nat_target::~linux_nat_target ()
399 {}
400
401 void
402 linux_nat_target::post_attach (int pid)
403 {
404   linux_init_ptrace_procfs (pid, 1);
405 }
406
407 void
408 linux_nat_target::post_startup_inferior (ptid_t ptid)
409 {
410   linux_init_ptrace_procfs (ptid.pid (), 0);
411 }
412
413 /* Return the number of known LWPs in the tgid given by PID.  */
414
415 static int
416 num_lwps (int pid)
417 {
418   int count = 0;
419   struct lwp_info *lp;
420
421   for (lp = lwp_list; lp; lp = lp->next)
422     if (lp->ptid.pid () == pid)
423       count++;
424
425   return count;
426 }
427
428 /* Deleter for lwp_info unique_ptr specialisation.  */
429
430 struct lwp_deleter
431 {
432   void operator() (struct lwp_info *lwp) const
433   {
434     delete_lwp (lwp->ptid);
435   }
436 };
437
438 /* A unique_ptr specialisation for lwp_info.  */
439
440 typedef std::unique_ptr<struct lwp_info, lwp_deleter> lwp_info_up;
441
442 /* Target hook for follow_fork.  On entry inferior_ptid must be the
443    ptid of the followed inferior.  At return, inferior_ptid will be
444    unchanged.  */
445
446 int
447 linux_nat_target::follow_fork (int follow_child, int detach_fork)
448 {
449   if (!follow_child)
450     {
451       struct lwp_info *child_lp = NULL;
452       int has_vforked;
453       ptid_t parent_ptid, child_ptid;
454       int parent_pid, child_pid;
455
456       has_vforked = (inferior_thread ()->pending_follow.kind
457                      == TARGET_WAITKIND_VFORKED);
458       parent_ptid = inferior_ptid;
459       child_ptid = inferior_thread ()->pending_follow.value.related_pid;
460       parent_pid = parent_ptid.lwp ();
461       child_pid = child_ptid.lwp ();
462
463       /* We're already attached to the parent, by default.  */
464       child_lp = add_lwp (child_ptid);
465       child_lp->stopped = 1;
466       child_lp->last_resume_kind = resume_stop;
467
468       /* Detach new forked process?  */
469       if (detach_fork)
470         {
471           int child_stop_signal = 0;
472           bool detach_child = true;
473
474           /* Move CHILD_LP into a unique_ptr and clear the source pointer
475              to prevent us doing anything stupid with it.  */
476           lwp_info_up child_lp_ptr (child_lp);
477           child_lp = nullptr;
478
479           linux_target->low_prepare_to_resume (child_lp_ptr.get ());
480
481           /* When debugging an inferior in an architecture that supports
482              hardware single stepping on a kernel without commit
483              6580807da14c423f0d0a708108e6df6ebc8bc83d, the vfork child
484              process starts with the TIF_SINGLESTEP/X86_EFLAGS_TF bits
485              set if the parent process had them set.
486              To work around this, single step the child process
487              once before detaching to clear the flags.  */
488
489           /* Note that we consult the parent's architecture instead of
490              the child's because there's no inferior for the child at
491              this point.  */
492           if (!gdbarch_software_single_step_p (target_thread_architecture
493                                                (parent_ptid)))
494             {
495               int status;
496
497               linux_disable_event_reporting (child_pid);
498               if (ptrace (PTRACE_SINGLESTEP, child_pid, 0, 0) < 0)
499                 perror_with_name (_("Couldn't do single step"));
500               if (my_waitpid (child_pid, &status, 0) < 0)
501                 perror_with_name (_("Couldn't wait vfork process"));
502               else
503                 {
504                   detach_child = WIFSTOPPED (status);
505                   child_stop_signal = WSTOPSIG (status);
506                 }
507             }
508
509           if (detach_child)
510             {
511               int signo = child_stop_signal;
512
513               if (signo != 0
514                   && !signal_pass_state (gdb_signal_from_host (signo)))
515                 signo = 0;
516               ptrace (PTRACE_DETACH, child_pid, 0, signo);
517             }
518         }
519       else
520         {
521           scoped_restore save_inferior_ptid
522             = make_scoped_restore (&inferior_ptid);
523           inferior_ptid = child_ptid;
524
525           /* Let the thread_db layer learn about this new process.  */
526           check_for_thread_db ();
527         }
528
529       if (has_vforked)
530         {
531           struct lwp_info *parent_lp;
532
533           parent_lp = find_lwp_pid (parent_ptid);
534           gdb_assert (linux_supports_tracefork () >= 0);
535
536           if (linux_supports_tracevforkdone ())
537             {
538               if (debug_linux_nat)
539                 fprintf_unfiltered (gdb_stdlog,
540                                     "LCFF: waiting for VFORK_DONE on %d\n",
541                                     parent_pid);
542               parent_lp->stopped = 1;
543
544               /* We'll handle the VFORK_DONE event like any other
545                  event, in target_wait.  */
546             }
547           else
548             {
549               /* We can't insert breakpoints until the child has
550                  finished with the shared memory region.  We need to
551                  wait until that happens.  Ideal would be to just
552                  call:
553                  - ptrace (PTRACE_SYSCALL, parent_pid, 0, 0);
554                  - waitpid (parent_pid, &status, __WALL);
555                  However, most architectures can't handle a syscall
556                  being traced on the way out if it wasn't traced on
557                  the way in.
558
559                  We might also think to loop, continuing the child
560                  until it exits or gets a SIGTRAP.  One problem is
561                  that the child might call ptrace with PTRACE_TRACEME.
562
563                  There's no simple and reliable way to figure out when
564                  the vforked child will be done with its copy of the
565                  shared memory.  We could step it out of the syscall,
566                  two instructions, let it go, and then single-step the
567                  parent once.  When we have hardware single-step, this
568                  would work; with software single-step it could still
569                  be made to work but we'd have to be able to insert
570                  single-step breakpoints in the child, and we'd have
571                  to insert -just- the single-step breakpoint in the
572                  parent.  Very awkward.
573
574                  In the end, the best we can do is to make sure it
575                  runs for a little while.  Hopefully it will be out of
576                  range of any breakpoints we reinsert.  Usually this
577                  is only the single-step breakpoint at vfork's return
578                  point.  */
579
580               if (debug_linux_nat)
581                 fprintf_unfiltered (gdb_stdlog,
582                                     "LCFF: no VFORK_DONE "
583                                     "support, sleeping a bit\n");
584
585               usleep (10000);
586
587               /* Pretend we've seen a PTRACE_EVENT_VFORK_DONE event,
588                  and leave it pending.  The next linux_nat_resume call
589                  will notice a pending event, and bypasses actually
590                  resuming the inferior.  */
591               parent_lp->status = 0;
592               parent_lp->waitstatus.kind = TARGET_WAITKIND_VFORK_DONE;
593               parent_lp->stopped = 1;
594
595               /* If we're in async mode, need to tell the event loop
596                  there's something here to process.  */
597               if (target_is_async_p ())
598                 async_file_mark ();
599             }
600         }
601     }
602   else
603     {
604       struct lwp_info *child_lp;
605
606       child_lp = add_lwp (inferior_ptid);
607       child_lp->stopped = 1;
608       child_lp->last_resume_kind = resume_stop;
609
610       /* Let the thread_db layer learn about this new process.  */
611       check_for_thread_db ();
612     }
613
614   return 0;
615 }
616
617 \f
618 int
619 linux_nat_target::insert_fork_catchpoint (int pid)
620 {
621   return !linux_supports_tracefork ();
622 }
623
624 int
625 linux_nat_target::remove_fork_catchpoint (int pid)
626 {
627   return 0;
628 }
629
630 int
631 linux_nat_target::insert_vfork_catchpoint (int pid)
632 {
633   return !linux_supports_tracefork ();
634 }
635
636 int
637 linux_nat_target::remove_vfork_catchpoint (int pid)
638 {
639   return 0;
640 }
641
642 int
643 linux_nat_target::insert_exec_catchpoint (int pid)
644 {
645   return !linux_supports_tracefork ();
646 }
647
648 int
649 linux_nat_target::remove_exec_catchpoint (int pid)
650 {
651   return 0;
652 }
653
654 int
655 linux_nat_target::set_syscall_catchpoint (int pid, bool needed, int any_count,
656                                           gdb::array_view<const int> syscall_counts)
657 {
658   if (!linux_supports_tracesysgood ())
659     return 1;
660
661   /* On GNU/Linux, we ignore the arguments.  It means that we only
662      enable the syscall catchpoints, but do not disable them.
663
664      Also, we do not use the `syscall_counts' information because we do not
665      filter system calls here.  We let GDB do the logic for us.  */
666   return 0;
667 }
668
669 /* List of known LWPs, keyed by LWP PID.  This speeds up the common
670    case of mapping a PID returned from the kernel to our corresponding
671    lwp_info data structure.  */
672 static htab_t lwp_lwpid_htab;
673
674 /* Calculate a hash from a lwp_info's LWP PID.  */
675
676 static hashval_t
677 lwp_info_hash (const void *ap)
678 {
679   const struct lwp_info *lp = (struct lwp_info *) ap;
680   pid_t pid = lp->ptid.lwp ();
681
682   return iterative_hash_object (pid, 0);
683 }
684
685 /* Equality function for the lwp_info hash table.  Compares the LWP's
686    PID.  */
687
688 static int
689 lwp_lwpid_htab_eq (const void *a, const void *b)
690 {
691   const struct lwp_info *entry = (const struct lwp_info *) a;
692   const struct lwp_info *element = (const struct lwp_info *) b;
693
694   return entry->ptid.lwp () == element->ptid.lwp ();
695 }
696
697 /* Create the lwp_lwpid_htab hash table.  */
698
699 static void
700 lwp_lwpid_htab_create (void)
701 {
702   lwp_lwpid_htab = htab_create (100, lwp_info_hash, lwp_lwpid_htab_eq, NULL);
703 }
704
705 /* Add LP to the hash table.  */
706
707 static void
708 lwp_lwpid_htab_add_lwp (struct lwp_info *lp)
709 {
710   void **slot;
711
712   slot = htab_find_slot (lwp_lwpid_htab, lp, INSERT);
713   gdb_assert (slot != NULL && *slot == NULL);
714   *slot = lp;
715 }
716
717 /* Head of doubly-linked list of known LWPs.  Sorted by reverse
718    creation order.  This order is assumed in some cases.  E.g.,
719    reaping status after killing alls lwps of a process: the leader LWP
720    must be reaped last.  */
721 struct lwp_info *lwp_list;
722
723 /* Add LP to sorted-by-reverse-creation-order doubly-linked list.  */
724
725 static void
726 lwp_list_add (struct lwp_info *lp)
727 {
728   lp->next = lwp_list;
729   if (lwp_list != NULL)
730     lwp_list->prev = lp;
731   lwp_list = lp;
732 }
733
734 /* Remove LP from sorted-by-reverse-creation-order doubly-linked
735    list.  */
736
737 static void
738 lwp_list_remove (struct lwp_info *lp)
739 {
740   /* Remove from sorted-by-creation-order list.  */
741   if (lp->next != NULL)
742     lp->next->prev = lp->prev;
743   if (lp->prev != NULL)
744     lp->prev->next = lp->next;
745   if (lp == lwp_list)
746     lwp_list = lp->next;
747 }
748
749 \f
750
751 /* Original signal mask.  */
752 static sigset_t normal_mask;
753
754 /* Signal mask for use with sigsuspend in linux_nat_wait, initialized in
755    _initialize_linux_nat.  */
756 static sigset_t suspend_mask;
757
758 /* Signals to block to make that sigsuspend work.  */
759 static sigset_t blocked_mask;
760
761 /* SIGCHLD action.  */
762 struct sigaction sigchld_action;
763
764 /* Block child signals (SIGCHLD and linux threads signals), and store
765    the previous mask in PREV_MASK.  */
766
767 static void
768 block_child_signals (sigset_t *prev_mask)
769 {
770   /* Make sure SIGCHLD is blocked.  */
771   if (!sigismember (&blocked_mask, SIGCHLD))
772     sigaddset (&blocked_mask, SIGCHLD);
773
774   sigprocmask (SIG_BLOCK, &blocked_mask, prev_mask);
775 }
776
777 /* Restore child signals mask, previously returned by
778    block_child_signals.  */
779
780 static void
781 restore_child_signals_mask (sigset_t *prev_mask)
782 {
783   sigprocmask (SIG_SETMASK, prev_mask, NULL);
784 }
785
786 /* Mask of signals to pass directly to the inferior.  */
787 static sigset_t pass_mask;
788
789 /* Update signals to pass to the inferior.  */
790 void
791 linux_nat_target::pass_signals
792   (gdb::array_view<const unsigned char> pass_signals)
793 {
794   int signo;
795
796   sigemptyset (&pass_mask);
797
798   for (signo = 1; signo < NSIG; signo++)
799     {
800       int target_signo = gdb_signal_from_host (signo);
801       if (target_signo < pass_signals.size () && pass_signals[target_signo])
802         sigaddset (&pass_mask, signo);
803     }
804 }
805
806 \f
807
808 /* Prototypes for local functions.  */
809 static int stop_wait_callback (struct lwp_info *lp);
810 static int resume_stopped_resumed_lwps (struct lwp_info *lp, const ptid_t wait_ptid);
811 static int check_ptrace_stopped_lwp_gone (struct lwp_info *lp);
812
813 \f
814
815 /* Destroy and free LP.  */
816
817 static void
818 lwp_free (struct lwp_info *lp)
819 {
820   /* Let the arch specific bits release arch_lwp_info.  */
821   linux_target->low_delete_thread (lp->arch_private);
822
823   xfree (lp);
824 }
825
826 /* Traversal function for purge_lwp_list.  */
827
828 static int
829 lwp_lwpid_htab_remove_pid (void **slot, void *info)
830 {
831   struct lwp_info *lp = (struct lwp_info *) *slot;
832   int pid = *(int *) info;
833
834   if (lp->ptid.pid () == pid)
835     {
836       htab_clear_slot (lwp_lwpid_htab, slot);
837       lwp_list_remove (lp);
838       lwp_free (lp);
839     }
840
841   return 1;
842 }
843
844 /* Remove all LWPs belong to PID from the lwp list.  */
845
846 static void
847 purge_lwp_list (int pid)
848 {
849   htab_traverse_noresize (lwp_lwpid_htab, lwp_lwpid_htab_remove_pid, &pid);
850 }
851
852 /* Add the LWP specified by PTID to the list.  PTID is the first LWP
853    in the process.  Return a pointer to the structure describing the
854    new LWP.
855
856    This differs from add_lwp in that we don't let the arch specific
857    bits know about this new thread.  Current clients of this callback
858    take the opportunity to install watchpoints in the new thread, and
859    we shouldn't do that for the first thread.  If we're spawning a
860    child ("run"), the thread executes the shell wrapper first, and we
861    shouldn't touch it until it execs the program we want to debug.
862    For "attach", it'd be okay to call the callback, but it's not
863    necessary, because watchpoints can't yet have been inserted into
864    the inferior.  */
865
866 static struct lwp_info *
867 add_initial_lwp (ptid_t ptid)
868 {
869   struct lwp_info *lp;
870
871   gdb_assert (ptid.lwp_p ());
872
873   lp = XNEW (struct lwp_info);
874
875   memset (lp, 0, sizeof (struct lwp_info));
876
877   lp->last_resume_kind = resume_continue;
878   lp->waitstatus.kind = TARGET_WAITKIND_IGNORE;
879
880   lp->ptid = ptid;
881   lp->core = -1;
882
883   /* Add to sorted-by-reverse-creation-order list.  */
884   lwp_list_add (lp);
885
886   /* Add to keyed-by-pid htab.  */
887   lwp_lwpid_htab_add_lwp (lp);
888
889   return lp;
890 }
891
892 /* Add the LWP specified by PID to the list.  Return a pointer to the
893    structure describing the new LWP.  The LWP should already be
894    stopped.  */
895
896 static struct lwp_info *
897 add_lwp (ptid_t ptid)
898 {
899   struct lwp_info *lp;
900
901   lp = add_initial_lwp (ptid);
902
903   /* Let the arch specific bits know about this new thread.  Current
904      clients of this callback take the opportunity to install
905      watchpoints in the new thread.  We don't do this for the first
906      thread though.  See add_initial_lwp.  */
907   linux_target->low_new_thread (lp);
908
909   return lp;
910 }
911
912 /* Remove the LWP specified by PID from the list.  */
913
914 static void
915 delete_lwp (ptid_t ptid)
916 {
917   struct lwp_info *lp;
918   void **slot;
919   struct lwp_info dummy;
920
921   dummy.ptid = ptid;
922   slot = htab_find_slot (lwp_lwpid_htab, &dummy, NO_INSERT);
923   if (slot == NULL)
924     return;
925
926   lp = *(struct lwp_info **) slot;
927   gdb_assert (lp != NULL);
928
929   htab_clear_slot (lwp_lwpid_htab, slot);
930
931   /* Remove from sorted-by-creation-order list.  */
932   lwp_list_remove (lp);
933
934   /* Release.  */
935   lwp_free (lp);
936 }
937
938 /* Return a pointer to the structure describing the LWP corresponding
939    to PID.  If no corresponding LWP could be found, return NULL.  */
940
941 static struct lwp_info *
942 find_lwp_pid (ptid_t ptid)
943 {
944   struct lwp_info *lp;
945   int lwp;
946   struct lwp_info dummy;
947
948   if (ptid.lwp_p ())
949     lwp = ptid.lwp ();
950   else
951     lwp = ptid.pid ();
952
953   dummy.ptid = ptid_t (0, lwp, 0);
954   lp = (struct lwp_info *) htab_find (lwp_lwpid_htab, &dummy);
955   return lp;
956 }
957
958 /* See nat/linux-nat.h.  */
959
960 struct lwp_info *
961 iterate_over_lwps (ptid_t filter,
962                    gdb::function_view<iterate_over_lwps_ftype> callback)
963 {
964   struct lwp_info *lp, *lpnext;
965
966   for (lp = lwp_list; lp; lp = lpnext)
967     {
968       lpnext = lp->next;
969
970       if (lp->ptid.matches (filter))
971         {
972           if (callback (lp) != 0)
973             return lp;
974         }
975     }
976
977   return NULL;
978 }
979
980 /* Update our internal state when changing from one checkpoint to
981    another indicated by NEW_PTID.  We can only switch single-threaded
982    applications, so we only create one new LWP, and the previous list
983    is discarded.  */
984
985 void
986 linux_nat_switch_fork (ptid_t new_ptid)
987 {
988   struct lwp_info *lp;
989
990   purge_lwp_list (inferior_ptid.pid ());
991
992   lp = add_lwp (new_ptid);
993   lp->stopped = 1;
994
995   /* This changes the thread's ptid while preserving the gdb thread
996      num.  Also changes the inferior pid, while preserving the
997      inferior num.  */
998   thread_change_ptid (inferior_ptid, new_ptid);
999
1000   /* We've just told GDB core that the thread changed target id, but,
1001      in fact, it really is a different thread, with different register
1002      contents.  */
1003   registers_changed ();
1004 }
1005
1006 /* Handle the exit of a single thread LP.  */
1007
1008 static void
1009 exit_lwp (struct lwp_info *lp)
1010 {
1011   struct thread_info *th = find_thread_ptid (lp->ptid);
1012
1013   if (th)
1014     {
1015       if (print_thread_events)
1016         printf_unfiltered (_("[%s exited]\n"),
1017                            target_pid_to_str (lp->ptid).c_str ());
1018
1019       delete_thread (th);
1020     }
1021
1022   delete_lwp (lp->ptid);
1023 }
1024
1025 /* Wait for the LWP specified by LP, which we have just attached to.
1026    Returns a wait status for that LWP, to cache.  */
1027
1028 static int
1029 linux_nat_post_attach_wait (ptid_t ptid, int *signalled)
1030 {
1031   pid_t new_pid, pid = ptid.lwp ();
1032   int status;
1033
1034   if (linux_proc_pid_is_stopped (pid))
1035     {
1036       if (debug_linux_nat)
1037         fprintf_unfiltered (gdb_stdlog,
1038                             "LNPAW: Attaching to a stopped process\n");
1039
1040       /* The process is definitely stopped.  It is in a job control
1041          stop, unless the kernel predates the TASK_STOPPED /
1042          TASK_TRACED distinction, in which case it might be in a
1043          ptrace stop.  Make sure it is in a ptrace stop; from there we
1044          can kill it, signal it, et cetera.
1045
1046          First make sure there is a pending SIGSTOP.  Since we are
1047          already attached, the process can not transition from stopped
1048          to running without a PTRACE_CONT; so we know this signal will
1049          go into the queue.  The SIGSTOP generated by PTRACE_ATTACH is
1050          probably already in the queue (unless this kernel is old
1051          enough to use TASK_STOPPED for ptrace stops); but since SIGSTOP
1052          is not an RT signal, it can only be queued once.  */
1053       kill_lwp (pid, SIGSTOP);
1054
1055       /* Finally, resume the stopped process.  This will deliver the SIGSTOP
1056          (or a higher priority signal, just like normal PTRACE_ATTACH).  */
1057       ptrace (PTRACE_CONT, pid, 0, 0);
1058     }
1059
1060   /* Make sure the initial process is stopped.  The user-level threads
1061      layer might want to poke around in the inferior, and that won't
1062      work if things haven't stabilized yet.  */
1063   new_pid = my_waitpid (pid, &status, __WALL);
1064   gdb_assert (pid == new_pid);
1065
1066   if (!WIFSTOPPED (status))
1067     {
1068       /* The pid we tried to attach has apparently just exited.  */
1069       if (debug_linux_nat)
1070         fprintf_unfiltered (gdb_stdlog, "LNPAW: Failed to stop %d: %s",
1071                             pid, status_to_str (status));
1072       return status;
1073     }
1074
1075   if (WSTOPSIG (status) != SIGSTOP)
1076     {
1077       *signalled = 1;
1078       if (debug_linux_nat)
1079         fprintf_unfiltered (gdb_stdlog,
1080                             "LNPAW: Received %s after attaching\n",
1081                             status_to_str (status));
1082     }
1083
1084   return status;
1085 }
1086
1087 void
1088 linux_nat_target::create_inferior (const char *exec_file,
1089                                    const std::string &allargs,
1090                                    char **env, int from_tty)
1091 {
1092   maybe_disable_address_space_randomization restore_personality
1093     (disable_randomization);
1094
1095   /* The fork_child mechanism is synchronous and calls target_wait, so
1096      we have to mask the async mode.  */
1097
1098   /* Make sure we report all signals during startup.  */
1099   pass_signals ({});
1100
1101   inf_ptrace_target::create_inferior (exec_file, allargs, env, from_tty);
1102 }
1103
1104 /* Callback for linux_proc_attach_tgid_threads.  Attach to PTID if not
1105    already attached.  Returns true if a new LWP is found, false
1106    otherwise.  */
1107
1108 static int
1109 attach_proc_task_lwp_callback (ptid_t ptid)
1110 {
1111   struct lwp_info *lp;
1112
1113   /* Ignore LWPs we're already attached to.  */
1114   lp = find_lwp_pid (ptid);
1115   if (lp == NULL)
1116     {
1117       int lwpid = ptid.lwp ();
1118
1119       if (ptrace (PTRACE_ATTACH, lwpid, 0, 0) < 0)
1120         {
1121           int err = errno;
1122
1123           /* Be quiet if we simply raced with the thread exiting.
1124              EPERM is returned if the thread's task still exists, and
1125              is marked as exited or zombie, as well as other
1126              conditions, so in that case, confirm the status in
1127              /proc/PID/status.  */
1128           if (err == ESRCH
1129               || (err == EPERM && linux_proc_pid_is_gone (lwpid)))
1130             {
1131               if (debug_linux_nat)
1132                 {
1133                   fprintf_unfiltered (gdb_stdlog,
1134                                       "Cannot attach to lwp %d: "
1135                                       "thread is gone (%d: %s)\n",
1136                                       lwpid, err, safe_strerror (err));
1137                 }
1138             }
1139           else
1140             {
1141               std::string reason
1142                 = linux_ptrace_attach_fail_reason_string (ptid, err);
1143
1144               warning (_("Cannot attach to lwp %d: %s"),
1145                        lwpid, reason.c_str ());
1146             }
1147         }
1148       else
1149         {
1150           if (debug_linux_nat)
1151             fprintf_unfiltered (gdb_stdlog,
1152                                 "PTRACE_ATTACH %s, 0, 0 (OK)\n",
1153                                 target_pid_to_str (ptid).c_str ());
1154
1155           lp = add_lwp (ptid);
1156
1157           /* The next time we wait for this LWP we'll see a SIGSTOP as
1158              PTRACE_ATTACH brings it to a halt.  */
1159           lp->signalled = 1;
1160
1161           /* We need to wait for a stop before being able to make the
1162              next ptrace call on this LWP.  */
1163           lp->must_set_ptrace_flags = 1;
1164
1165           /* So that wait collects the SIGSTOP.  */
1166           lp->resumed = 1;
1167
1168           /* Also add the LWP to gdb's thread list, in case a
1169              matching libthread_db is not found (or the process uses
1170              raw clone).  */
1171           add_thread (lp->ptid);
1172           set_running (lp->ptid, 1);
1173           set_executing (lp->ptid, 1);
1174         }
1175
1176       return 1;
1177     }
1178   return 0;
1179 }
1180
1181 void
1182 linux_nat_target::attach (const char *args, int from_tty)
1183 {
1184   struct lwp_info *lp;
1185   int status;
1186   ptid_t ptid;
1187
1188   /* Make sure we report all signals during attach.  */
1189   pass_signals ({});
1190
1191   TRY
1192     {
1193       inf_ptrace_target::attach (args, from_tty);
1194     }
1195   CATCH (ex, RETURN_MASK_ERROR)
1196     {
1197       pid_t pid = parse_pid_to_attach (args);
1198       std::string reason = linux_ptrace_attach_fail_reason (pid);
1199
1200       if (!reason.empty ())
1201         throw_error (ex.error, "warning: %s\n%s", reason.c_str (),
1202                      ex.what ());
1203       else
1204         throw_error (ex.error, "%s", ex.what ());
1205     }
1206   END_CATCH
1207
1208   /* The ptrace base target adds the main thread with (pid,0,0)
1209      format.  Decorate it with lwp info.  */
1210   ptid = ptid_t (inferior_ptid.pid (),
1211                  inferior_ptid.pid (),
1212                  0);
1213   thread_change_ptid (inferior_ptid, ptid);
1214
1215   /* Add the initial process as the first LWP to the list.  */
1216   lp = add_initial_lwp (ptid);
1217
1218   status = linux_nat_post_attach_wait (lp->ptid, &lp->signalled);
1219   if (!WIFSTOPPED (status))
1220     {
1221       if (WIFEXITED (status))
1222         {
1223           int exit_code = WEXITSTATUS (status);
1224
1225           target_terminal::ours ();
1226           target_mourn_inferior (inferior_ptid);
1227           if (exit_code == 0)
1228             error (_("Unable to attach: program exited normally."));
1229           else
1230             error (_("Unable to attach: program exited with code %d."),
1231                    exit_code);
1232         }
1233       else if (WIFSIGNALED (status))
1234         {
1235           enum gdb_signal signo;
1236
1237           target_terminal::ours ();
1238           target_mourn_inferior (inferior_ptid);
1239
1240           signo = gdb_signal_from_host (WTERMSIG (status));
1241           error (_("Unable to attach: program terminated with signal "
1242                    "%s, %s."),
1243                  gdb_signal_to_name (signo),
1244                  gdb_signal_to_string (signo));
1245         }
1246
1247       internal_error (__FILE__, __LINE__,
1248                       _("unexpected status %d for PID %ld"),
1249                       status, (long) ptid.lwp ());
1250     }
1251
1252   lp->stopped = 1;
1253
1254   /* Save the wait status to report later.  */
1255   lp->resumed = 1;
1256   if (debug_linux_nat)
1257     fprintf_unfiltered (gdb_stdlog,
1258                         "LNA: waitpid %ld, saving status %s\n",
1259                         (long) lp->ptid.pid (), status_to_str (status));
1260
1261   lp->status = status;
1262
1263   /* We must attach to every LWP.  If /proc is mounted, use that to
1264      find them now.  The inferior may be using raw clone instead of
1265      using pthreads.  But even if it is using pthreads, thread_db
1266      walks structures in the inferior's address space to find the list
1267      of threads/LWPs, and those structures may well be corrupted.
1268      Note that once thread_db is loaded, we'll still use it to list
1269      threads and associate pthread info with each LWP.  */
1270   linux_proc_attach_tgid_threads (lp->ptid.pid (),
1271                                   attach_proc_task_lwp_callback);
1272
1273   if (target_can_async_p ())
1274     target_async (1);
1275 }
1276
1277 /* Get pending signal of THREAD as a host signal number, for detaching
1278    purposes.  This is the signal the thread last stopped for, which we
1279    need to deliver to the thread when detaching, otherwise, it'd be
1280    suppressed/lost.  */
1281
1282 static int
1283 get_detach_signal (struct lwp_info *lp)
1284 {
1285   enum gdb_signal signo = GDB_SIGNAL_0;
1286
1287   /* If we paused threads momentarily, we may have stored pending
1288      events in lp->status or lp->waitstatus (see stop_wait_callback),
1289      and GDB core hasn't seen any signal for those threads.
1290      Otherwise, the last signal reported to the core is found in the
1291      thread object's stop_signal.
1292
1293      There's a corner case that isn't handled here at present.  Only
1294      if the thread stopped with a TARGET_WAITKIND_STOPPED does
1295      stop_signal make sense as a real signal to pass to the inferior.
1296      Some catchpoint related events, like
1297      TARGET_WAITKIND_(V)FORK|EXEC|SYSCALL, have their stop_signal set
1298      to GDB_SIGNAL_SIGTRAP when the catchpoint triggers.  But,
1299      those traps are debug API (ptrace in our case) related and
1300      induced; the inferior wouldn't see them if it wasn't being
1301      traced.  Hence, we should never pass them to the inferior, even
1302      when set to pass state.  Since this corner case isn't handled by
1303      infrun.c when proceeding with a signal, for consistency, neither
1304      do we handle it here (or elsewhere in the file we check for
1305      signal pass state).  Normally SIGTRAP isn't set to pass state, so
1306      this is really a corner case.  */
1307
1308   if (lp->waitstatus.kind != TARGET_WAITKIND_IGNORE)
1309     signo = GDB_SIGNAL_0; /* a pending ptrace event, not a real signal.  */
1310   else if (lp->status)
1311     signo = gdb_signal_from_host (WSTOPSIG (lp->status));
1312   else
1313     {
1314       struct thread_info *tp = find_thread_ptid (lp->ptid);
1315
1316       if (target_is_non_stop_p () && !tp->executing)
1317         {
1318           if (tp->suspend.waitstatus_pending_p)
1319             signo = tp->suspend.waitstatus.value.sig;
1320           else
1321             signo = tp->suspend.stop_signal;
1322         }
1323       else if (!target_is_non_stop_p ())
1324         {
1325           struct target_waitstatus last;
1326           ptid_t last_ptid;
1327
1328           get_last_target_status (&last_ptid, &last);
1329
1330           if (lp->ptid.lwp () == last_ptid.lwp ())
1331             signo = tp->suspend.stop_signal;
1332         }
1333     }
1334
1335   if (signo == GDB_SIGNAL_0)
1336     {
1337       if (debug_linux_nat)
1338         fprintf_unfiltered (gdb_stdlog,
1339                             "GPT: lwp %s has no pending signal\n",
1340                             target_pid_to_str (lp->ptid).c_str ());
1341     }
1342   else if (!signal_pass_state (signo))
1343     {
1344       if (debug_linux_nat)
1345         fprintf_unfiltered (gdb_stdlog,
1346                             "GPT: lwp %s had signal %s, "
1347                             "but it is in no pass state\n",
1348                             target_pid_to_str (lp->ptid).c_str (),
1349                             gdb_signal_to_string (signo));
1350     }
1351   else
1352     {
1353       if (debug_linux_nat)
1354         fprintf_unfiltered (gdb_stdlog,
1355                             "GPT: lwp %s has pending signal %s\n",
1356                             target_pid_to_str (lp->ptid).c_str (),
1357                             gdb_signal_to_string (signo));
1358
1359       return gdb_signal_to_host (signo);
1360     }
1361
1362   return 0;
1363 }
1364
1365 /* Detach from LP.  If SIGNO_P is non-NULL, then it points to the
1366    signal number that should be passed to the LWP when detaching.
1367    Otherwise pass any pending signal the LWP may have, if any.  */
1368
1369 static void
1370 detach_one_lwp (struct lwp_info *lp, int *signo_p)
1371 {
1372   int lwpid = lp->ptid.lwp ();
1373   int signo;
1374
1375   gdb_assert (lp->status == 0 || WIFSTOPPED (lp->status));
1376
1377   if (debug_linux_nat && lp->status)
1378     fprintf_unfiltered (gdb_stdlog, "DC:  Pending %s for %s on detach.\n",
1379                         strsignal (WSTOPSIG (lp->status)),
1380                         target_pid_to_str (lp->ptid).c_str ());
1381
1382   /* If there is a pending SIGSTOP, get rid of it.  */
1383   if (lp->signalled)
1384     {
1385       if (debug_linux_nat)
1386         fprintf_unfiltered (gdb_stdlog,
1387                             "DC: Sending SIGCONT to %s\n",
1388                             target_pid_to_str (lp->ptid).c_str ());
1389
1390       kill_lwp (lwpid, SIGCONT);
1391       lp->signalled = 0;
1392     }
1393
1394   if (signo_p == NULL)
1395     {
1396       /* Pass on any pending signal for this LWP.  */
1397       signo = get_detach_signal (lp);
1398     }
1399   else
1400     signo = *signo_p;
1401
1402   /* Preparing to resume may try to write registers, and fail if the
1403      lwp is zombie.  If that happens, ignore the error.  We'll handle
1404      it below, when detach fails with ESRCH.  */
1405   TRY
1406     {
1407       linux_target->low_prepare_to_resume (lp);
1408     }
1409   CATCH (ex, RETURN_MASK_ERROR)
1410     {
1411       if (!check_ptrace_stopped_lwp_gone (lp))
1412         throw_exception (ex);
1413     }
1414   END_CATCH
1415
1416   if (ptrace (PTRACE_DETACH, lwpid, 0, signo) < 0)
1417     {
1418       int save_errno = errno;
1419
1420       /* We know the thread exists, so ESRCH must mean the lwp is
1421          zombie.  This can happen if one of the already-detached
1422          threads exits the whole thread group.  In that case we're
1423          still attached, and must reap the lwp.  */
1424       if (save_errno == ESRCH)
1425         {
1426           int ret, status;
1427
1428           ret = my_waitpid (lwpid, &status, __WALL);
1429           if (ret == -1)
1430             {
1431               warning (_("Couldn't reap LWP %d while detaching: %s"),
1432                        lwpid, strerror (errno));
1433             }
1434           else if (!WIFEXITED (status) && !WIFSIGNALED (status))
1435             {
1436               warning (_("Reaping LWP %d while detaching "
1437                          "returned unexpected status 0x%x"),
1438                        lwpid, status);
1439             }
1440         }
1441       else
1442         {
1443           error (_("Can't detach %s: %s"),
1444                  target_pid_to_str (lp->ptid).c_str (),
1445                  safe_strerror (save_errno));
1446         }
1447     }
1448   else if (debug_linux_nat)
1449     {
1450       fprintf_unfiltered (gdb_stdlog,
1451                           "PTRACE_DETACH (%s, %s, 0) (OK)\n",
1452                           target_pid_to_str (lp->ptid).c_str (),
1453                           strsignal (signo));
1454     }
1455
1456   delete_lwp (lp->ptid);
1457 }
1458
1459 static int
1460 detach_callback (struct lwp_info *lp)
1461 {
1462   /* We don't actually detach from the thread group leader just yet.
1463      If the thread group exits, we must reap the zombie clone lwps
1464      before we're able to reap the leader.  */
1465   if (lp->ptid.lwp () != lp->ptid.pid ())
1466     detach_one_lwp (lp, NULL);
1467   return 0;
1468 }
1469
1470 void
1471 linux_nat_target::detach (inferior *inf, int from_tty)
1472 {
1473   struct lwp_info *main_lwp;
1474   int pid = inf->pid;
1475
1476   /* Don't unregister from the event loop, as there may be other
1477      inferiors running. */
1478
1479   /* Stop all threads before detaching.  ptrace requires that the
1480      thread is stopped to sucessfully detach.  */
1481   iterate_over_lwps (ptid_t (pid), stop_callback);
1482   /* ... and wait until all of them have reported back that
1483      they're no longer running.  */
1484   iterate_over_lwps (ptid_t (pid), stop_wait_callback);
1485
1486   iterate_over_lwps (ptid_t (pid), detach_callback);
1487
1488   /* Only the initial process should be left right now.  */
1489   gdb_assert (num_lwps (pid) == 1);
1490
1491   main_lwp = find_lwp_pid (ptid_t (pid));
1492
1493   if (forks_exist_p ())
1494     {
1495       /* Multi-fork case.  The current inferior_ptid is being detached
1496          from, but there are other viable forks to debug.  Detach from
1497          the current fork, and context-switch to the first
1498          available.  */
1499       linux_fork_detach (from_tty);
1500     }
1501   else
1502     {
1503       target_announce_detach (from_tty);
1504
1505       /* Pass on any pending signal for the last LWP.  */
1506       int signo = get_detach_signal (main_lwp);
1507
1508       detach_one_lwp (main_lwp, &signo);
1509
1510       detach_success (inf);
1511     }
1512 }
1513
1514 /* Resume execution of the inferior process.  If STEP is nonzero,
1515    single-step it.  If SIGNAL is nonzero, give it that signal.  */
1516
1517 static void
1518 linux_resume_one_lwp_throw (struct lwp_info *lp, int step,
1519                             enum gdb_signal signo)
1520 {
1521   lp->step = step;
1522
1523   /* stop_pc doubles as the PC the LWP had when it was last resumed.
1524      We only presently need that if the LWP is stepped though (to
1525      handle the case of stepping a breakpoint instruction).  */
1526   if (step)
1527     {
1528       struct regcache *regcache = get_thread_regcache (lp->ptid);
1529
1530       lp->stop_pc = regcache_read_pc (regcache);
1531     }
1532   else
1533     lp->stop_pc = 0;
1534
1535   linux_target->low_prepare_to_resume (lp);
1536   linux_target->low_resume (lp->ptid, step, signo);
1537
1538   /* Successfully resumed.  Clear state that no longer makes sense,
1539      and mark the LWP as running.  Must not do this before resuming
1540      otherwise if that fails other code will be confused.  E.g., we'd
1541      later try to stop the LWP and hang forever waiting for a stop
1542      status.  Note that we must not throw after this is cleared,
1543      otherwise handle_zombie_lwp_error would get confused.  */
1544   lp->stopped = 0;
1545   lp->core = -1;
1546   lp->stop_reason = TARGET_STOPPED_BY_NO_REASON;
1547   registers_changed_ptid (lp->ptid);
1548 }
1549
1550 /* Called when we try to resume a stopped LWP and that errors out.  If
1551    the LWP is no longer in ptrace-stopped state (meaning it's zombie,
1552    or about to become), discard the error, clear any pending status
1553    the LWP may have, and return true (we'll collect the exit status
1554    soon enough).  Otherwise, return false.  */
1555
1556 static int
1557 check_ptrace_stopped_lwp_gone (struct lwp_info *lp)
1558 {
1559   /* If we get an error after resuming the LWP successfully, we'd
1560      confuse !T state for the LWP being gone.  */
1561   gdb_assert (lp->stopped);
1562
1563   /* We can't just check whether the LWP is in 'Z (Zombie)' state,
1564      because even if ptrace failed with ESRCH, the tracee may be "not
1565      yet fully dead", but already refusing ptrace requests.  In that
1566      case the tracee has 'R (Running)' state for a little bit
1567      (observed in Linux 3.18).  See also the note on ESRCH in the
1568      ptrace(2) man page.  Instead, check whether the LWP has any state
1569      other than ptrace-stopped.  */
1570
1571   /* Don't assume anything if /proc/PID/status can't be read.  */
1572   if (linux_proc_pid_is_trace_stopped_nowarn (lp->ptid.lwp ()) == 0)
1573     {
1574       lp->stop_reason = TARGET_STOPPED_BY_NO_REASON;
1575       lp->status = 0;
1576       lp->waitstatus.kind = TARGET_WAITKIND_IGNORE;
1577       return 1;
1578     }
1579   return 0;
1580 }
1581
1582 /* Like linux_resume_one_lwp_throw, but no error is thrown if the LWP
1583    disappears while we try to resume it.  */
1584
1585 static void
1586 linux_resume_one_lwp (struct lwp_info *lp, int step, enum gdb_signal signo)
1587 {
1588   TRY
1589     {
1590       linux_resume_one_lwp_throw (lp, step, signo);
1591     }
1592   CATCH (ex, RETURN_MASK_ERROR)
1593     {
1594       if (!check_ptrace_stopped_lwp_gone (lp))
1595         throw_exception (ex);
1596     }
1597   END_CATCH
1598 }
1599
1600 /* Resume LP.  */
1601
1602 static void
1603 resume_lwp (struct lwp_info *lp, int step, enum gdb_signal signo)
1604 {
1605   if (lp->stopped)
1606     {
1607       struct inferior *inf = find_inferior_ptid (lp->ptid);
1608
1609       if (inf->vfork_child != NULL)
1610         {
1611           if (debug_linux_nat)
1612             fprintf_unfiltered (gdb_stdlog,
1613                                 "RC: Not resuming %s (vfork parent)\n",
1614                                 target_pid_to_str (lp->ptid).c_str ());
1615         }
1616       else if (!lwp_status_pending_p (lp))
1617         {
1618           if (debug_linux_nat)
1619             fprintf_unfiltered (gdb_stdlog,
1620                                 "RC: Resuming sibling %s, %s, %s\n",
1621                                 target_pid_to_str (lp->ptid).c_str (),
1622                                 (signo != GDB_SIGNAL_0
1623                                  ? strsignal (gdb_signal_to_host (signo))
1624                                  : "0"),
1625                                 step ? "step" : "resume");
1626
1627           linux_resume_one_lwp (lp, step, signo);
1628         }
1629       else
1630         {
1631           if (debug_linux_nat)
1632             fprintf_unfiltered (gdb_stdlog,
1633                                 "RC: Not resuming sibling %s (has pending)\n",
1634                                 target_pid_to_str (lp->ptid).c_str ());
1635         }
1636     }
1637   else
1638     {
1639       if (debug_linux_nat)
1640         fprintf_unfiltered (gdb_stdlog,
1641                             "RC: Not resuming sibling %s (not stopped)\n",
1642                             target_pid_to_str (lp->ptid).c_str ());
1643     }
1644 }
1645
1646 /* Callback for iterate_over_lwps.  If LWP is EXCEPT, do nothing.
1647    Resume LWP with the last stop signal, if it is in pass state.  */
1648
1649 static int
1650 linux_nat_resume_callback (struct lwp_info *lp, struct lwp_info *except)
1651 {
1652   enum gdb_signal signo = GDB_SIGNAL_0;
1653
1654   if (lp == except)
1655     return 0;
1656
1657   if (lp->stopped)
1658     {
1659       struct thread_info *thread;
1660
1661       thread = find_thread_ptid (lp->ptid);
1662       if (thread != NULL)
1663         {
1664           signo = thread->suspend.stop_signal;
1665           thread->suspend.stop_signal = GDB_SIGNAL_0;
1666         }
1667     }
1668
1669   resume_lwp (lp, 0, signo);
1670   return 0;
1671 }
1672
1673 static int
1674 resume_clear_callback (struct lwp_info *lp)
1675 {
1676   lp->resumed = 0;
1677   lp->last_resume_kind = resume_stop;
1678   return 0;
1679 }
1680
1681 static int
1682 resume_set_callback (struct lwp_info *lp)
1683 {
1684   lp->resumed = 1;
1685   lp->last_resume_kind = resume_continue;
1686   return 0;
1687 }
1688
1689 void
1690 linux_nat_target::resume (ptid_t ptid, int step, enum gdb_signal signo)
1691 {
1692   struct lwp_info *lp;
1693   int resume_many;
1694
1695   if (debug_linux_nat)
1696     fprintf_unfiltered (gdb_stdlog,
1697                         "LLR: Preparing to %s %s, %s, inferior_ptid %s\n",
1698                         step ? "step" : "resume",
1699                         target_pid_to_str (ptid).c_str (),
1700                         (signo != GDB_SIGNAL_0
1701                          ? strsignal (gdb_signal_to_host (signo)) : "0"),
1702                         target_pid_to_str (inferior_ptid).c_str ());
1703
1704   /* A specific PTID means `step only this process id'.  */
1705   resume_many = (minus_one_ptid == ptid
1706                  || ptid.is_pid ());
1707
1708   /* Mark the lwps we're resuming as resumed.  */
1709   iterate_over_lwps (ptid, resume_set_callback);
1710
1711   /* See if it's the current inferior that should be handled
1712      specially.  */
1713   if (resume_many)
1714     lp = find_lwp_pid (inferior_ptid);
1715   else
1716     lp = find_lwp_pid (ptid);
1717   gdb_assert (lp != NULL);
1718
1719   /* Remember if we're stepping.  */
1720   lp->last_resume_kind = step ? resume_step : resume_continue;
1721
1722   /* If we have a pending wait status for this thread, there is no
1723      point in resuming the process.  But first make sure that
1724      linux_nat_wait won't preemptively handle the event - we
1725      should never take this short-circuit if we are going to
1726      leave LP running, since we have skipped resuming all the
1727      other threads.  This bit of code needs to be synchronized
1728      with linux_nat_wait.  */
1729
1730   if (lp->status && WIFSTOPPED (lp->status))
1731     {
1732       if (!lp->step
1733           && WSTOPSIG (lp->status)
1734           && sigismember (&pass_mask, WSTOPSIG (lp->status)))
1735         {
1736           if (debug_linux_nat)
1737             fprintf_unfiltered (gdb_stdlog,
1738                                 "LLR: Not short circuiting for ignored "
1739                                 "status 0x%x\n", lp->status);
1740
1741           /* FIXME: What should we do if we are supposed to continue
1742              this thread with a signal?  */
1743           gdb_assert (signo == GDB_SIGNAL_0);
1744           signo = gdb_signal_from_host (WSTOPSIG (lp->status));
1745           lp->status = 0;
1746         }
1747     }
1748
1749   if (lwp_status_pending_p (lp))
1750     {
1751       /* FIXME: What should we do if we are supposed to continue
1752          this thread with a signal?  */
1753       gdb_assert (signo == GDB_SIGNAL_0);
1754
1755       if (debug_linux_nat)
1756         fprintf_unfiltered (gdb_stdlog,
1757                             "LLR: Short circuiting for status 0x%x\n",
1758                             lp->status);
1759
1760       if (target_can_async_p ())
1761         {
1762           target_async (1);
1763           /* Tell the event loop we have something to process.  */
1764           async_file_mark ();
1765         }
1766       return;
1767     }
1768
1769   if (resume_many)
1770     iterate_over_lwps (ptid, [=] (struct lwp_info *info)
1771                              {
1772                                return linux_nat_resume_callback (info, lp);
1773                              });
1774
1775   if (debug_linux_nat)
1776     fprintf_unfiltered (gdb_stdlog,
1777                         "LLR: %s %s, %s (resume event thread)\n",
1778                         step ? "PTRACE_SINGLESTEP" : "PTRACE_CONT",
1779                         target_pid_to_str (lp->ptid).c_str (),
1780                         (signo != GDB_SIGNAL_0
1781                          ? strsignal (gdb_signal_to_host (signo)) : "0"));
1782
1783   linux_resume_one_lwp (lp, step, signo);
1784
1785   if (target_can_async_p ())
1786     target_async (1);
1787 }
1788
1789 /* Send a signal to an LWP.  */
1790
1791 static int
1792 kill_lwp (int lwpid, int signo)
1793 {
1794   int ret;
1795
1796   errno = 0;
1797   ret = syscall (__NR_tkill, lwpid, signo);
1798   if (errno == ENOSYS)
1799     {
1800       /* If tkill fails, then we are not using nptl threads, a
1801          configuration we no longer support.  */
1802       perror_with_name (("tkill"));
1803     }
1804   return ret;
1805 }
1806
1807 /* Handle a GNU/Linux syscall trap wait response.  If we see a syscall
1808    event, check if the core is interested in it: if not, ignore the
1809    event, and keep waiting; otherwise, we need to toggle the LWP's
1810    syscall entry/exit status, since the ptrace event itself doesn't
1811    indicate it, and report the trap to higher layers.  */
1812
1813 static int
1814 linux_handle_syscall_trap (struct lwp_info *lp, int stopping)
1815 {
1816   struct target_waitstatus *ourstatus = &lp->waitstatus;
1817   struct gdbarch *gdbarch = target_thread_architecture (lp->ptid);
1818   thread_info *thread = find_thread_ptid (lp->ptid);
1819   int syscall_number = (int) gdbarch_get_syscall_number (gdbarch, thread);
1820
1821   if (stopping)
1822     {
1823       /* If we're stopping threads, there's a SIGSTOP pending, which
1824          makes it so that the LWP reports an immediate syscall return,
1825          followed by the SIGSTOP.  Skip seeing that "return" using
1826          PTRACE_CONT directly, and let stop_wait_callback collect the
1827          SIGSTOP.  Later when the thread is resumed, a new syscall
1828          entry event.  If we didn't do this (and returned 0), we'd
1829          leave a syscall entry pending, and our caller, by using
1830          PTRACE_CONT to collect the SIGSTOP, skips the syscall return
1831          itself.  Later, when the user re-resumes this LWP, we'd see
1832          another syscall entry event and we'd mistake it for a return.
1833
1834          If stop_wait_callback didn't force the SIGSTOP out of the LWP
1835          (leaving immediately with LWP->signalled set, without issuing
1836          a PTRACE_CONT), it would still be problematic to leave this
1837          syscall enter pending, as later when the thread is resumed,
1838          it would then see the same syscall exit mentioned above,
1839          followed by the delayed SIGSTOP, while the syscall didn't
1840          actually get to execute.  It seems it would be even more
1841          confusing to the user.  */
1842
1843       if (debug_linux_nat)
1844         fprintf_unfiltered (gdb_stdlog,
1845                             "LHST: ignoring syscall %d "
1846                             "for LWP %ld (stopping threads), "
1847                             "resuming with PTRACE_CONT for SIGSTOP\n",
1848                             syscall_number,
1849                             lp->ptid.lwp ());
1850
1851       lp->syscall_state = TARGET_WAITKIND_IGNORE;
1852       ptrace (PTRACE_CONT, lp->ptid.lwp (), 0, 0);
1853       lp->stopped = 0;
1854       return 1;
1855     }
1856
1857   /* Always update the entry/return state, even if this particular
1858      syscall isn't interesting to the core now.  In async mode,
1859      the user could install a new catchpoint for this syscall
1860      between syscall enter/return, and we'll need to know to
1861      report a syscall return if that happens.  */
1862   lp->syscall_state = (lp->syscall_state == TARGET_WAITKIND_SYSCALL_ENTRY
1863                        ? TARGET_WAITKIND_SYSCALL_RETURN
1864                        : TARGET_WAITKIND_SYSCALL_ENTRY);
1865
1866   if (catch_syscall_enabled ())
1867     {
1868       if (catching_syscall_number (syscall_number))
1869         {
1870           /* Alright, an event to report.  */
1871           ourstatus->kind = lp->syscall_state;
1872           ourstatus->value.syscall_number = syscall_number;
1873
1874           if (debug_linux_nat)
1875             fprintf_unfiltered (gdb_stdlog,
1876                                 "LHST: stopping for %s of syscall %d"
1877                                 " for LWP %ld\n",
1878                                 lp->syscall_state
1879                                 == TARGET_WAITKIND_SYSCALL_ENTRY
1880                                 ? "entry" : "return",
1881                                 syscall_number,
1882                                 lp->ptid.lwp ());
1883           return 0;
1884         }
1885
1886       if (debug_linux_nat)
1887         fprintf_unfiltered (gdb_stdlog,
1888                             "LHST: ignoring %s of syscall %d "
1889                             "for LWP %ld\n",
1890                             lp->syscall_state == TARGET_WAITKIND_SYSCALL_ENTRY
1891                             ? "entry" : "return",
1892                             syscall_number,
1893                             lp->ptid.lwp ());
1894     }
1895   else
1896     {
1897       /* If we had been syscall tracing, and hence used PT_SYSCALL
1898          before on this LWP, it could happen that the user removes all
1899          syscall catchpoints before we get to process this event.
1900          There are two noteworthy issues here:
1901
1902          - When stopped at a syscall entry event, resuming with
1903            PT_STEP still resumes executing the syscall and reports a
1904            syscall return.
1905
1906          - Only PT_SYSCALL catches syscall enters.  If we last
1907            single-stepped this thread, then this event can't be a
1908            syscall enter.  If we last single-stepped this thread, this
1909            has to be a syscall exit.
1910
1911          The points above mean that the next resume, be it PT_STEP or
1912          PT_CONTINUE, can not trigger a syscall trace event.  */
1913       if (debug_linux_nat)
1914         fprintf_unfiltered (gdb_stdlog,
1915                             "LHST: caught syscall event "
1916                             "with no syscall catchpoints."
1917                             " %d for LWP %ld, ignoring\n",
1918                             syscall_number,
1919                             lp->ptid.lwp ());
1920       lp->syscall_state = TARGET_WAITKIND_IGNORE;
1921     }
1922
1923   /* The core isn't interested in this event.  For efficiency, avoid
1924      stopping all threads only to have the core resume them all again.
1925      Since we're not stopping threads, if we're still syscall tracing
1926      and not stepping, we can't use PTRACE_CONT here, as we'd miss any
1927      subsequent syscall.  Simply resume using the inf-ptrace layer,
1928      which knows when to use PT_SYSCALL or PT_CONTINUE.  */
1929
1930   linux_resume_one_lwp (lp, lp->step, GDB_SIGNAL_0);
1931   return 1;
1932 }
1933
1934 /* Handle a GNU/Linux extended wait response.  If we see a clone
1935    event, we need to add the new LWP to our list (and not report the
1936    trap to higher layers).  This function returns non-zero if the
1937    event should be ignored and we should wait again.  If STOPPING is
1938    true, the new LWP remains stopped, otherwise it is continued.  */
1939
1940 static int
1941 linux_handle_extended_wait (struct lwp_info *lp, int status)
1942 {
1943   int pid = lp->ptid.lwp ();
1944   struct target_waitstatus *ourstatus = &lp->waitstatus;
1945   int event = linux_ptrace_get_extended_event (status);
1946
1947   /* All extended events we currently use are mid-syscall.  Only
1948      PTRACE_EVENT_STOP is delivered more like a signal-stop, but
1949      you have to be using PTRACE_SEIZE to get that.  */
1950   lp->syscall_state = TARGET_WAITKIND_SYSCALL_ENTRY;
1951
1952   if (event == PTRACE_EVENT_FORK || event == PTRACE_EVENT_VFORK
1953       || event == PTRACE_EVENT_CLONE)
1954     {
1955       unsigned long new_pid;
1956       int ret;
1957
1958       ptrace (PTRACE_GETEVENTMSG, pid, 0, &new_pid);
1959
1960       /* If we haven't already seen the new PID stop, wait for it now.  */
1961       if (! pull_pid_from_list (&stopped_pids, new_pid, &status))
1962         {
1963           /* The new child has a pending SIGSTOP.  We can't affect it until it
1964              hits the SIGSTOP, but we're already attached.  */
1965           ret = my_waitpid (new_pid, &status, __WALL);
1966           if (ret == -1)
1967             perror_with_name (_("waiting for new child"));
1968           else if (ret != new_pid)
1969             internal_error (__FILE__, __LINE__,
1970                             _("wait returned unexpected PID %d"), ret);
1971           else if (!WIFSTOPPED (status))
1972             internal_error (__FILE__, __LINE__,
1973                             _("wait returned unexpected status 0x%x"), status);
1974         }
1975
1976       ourstatus->value.related_pid = ptid_t (new_pid, new_pid, 0);
1977
1978       if (event == PTRACE_EVENT_FORK || event == PTRACE_EVENT_VFORK)
1979         {
1980           /* The arch-specific native code may need to know about new
1981              forks even if those end up never mapped to an
1982              inferior.  */
1983           linux_target->low_new_fork (lp, new_pid);
1984         }
1985
1986       if (event == PTRACE_EVENT_FORK
1987           && linux_fork_checkpointing_p (lp->ptid.pid ()))
1988         {
1989           /* Handle checkpointing by linux-fork.c here as a special
1990              case.  We don't want the follow-fork-mode or 'catch fork'
1991              to interfere with this.  */
1992
1993           /* This won't actually modify the breakpoint list, but will
1994              physically remove the breakpoints from the child.  */
1995           detach_breakpoints (ptid_t (new_pid, new_pid, 0));
1996
1997           /* Retain child fork in ptrace (stopped) state.  */
1998           if (!find_fork_pid (new_pid))
1999             add_fork (new_pid);
2000
2001           /* Report as spurious, so that infrun doesn't want to follow
2002              this fork.  We're actually doing an infcall in
2003              linux-fork.c.  */
2004           ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
2005
2006           /* Report the stop to the core.  */
2007           return 0;
2008         }
2009
2010       if (event == PTRACE_EVENT_FORK)
2011         ourstatus->kind = TARGET_WAITKIND_FORKED;
2012       else if (event == PTRACE_EVENT_VFORK)
2013         ourstatus->kind = TARGET_WAITKIND_VFORKED;
2014       else if (event == PTRACE_EVENT_CLONE)
2015         {
2016           struct lwp_info *new_lp;
2017
2018           ourstatus->kind = TARGET_WAITKIND_IGNORE;
2019
2020           if (debug_linux_nat)
2021             fprintf_unfiltered (gdb_stdlog,
2022                                 "LHEW: Got clone event "
2023                                 "from LWP %d, new child is LWP %ld\n",
2024                                 pid, new_pid);
2025
2026           new_lp = add_lwp (ptid_t (lp->ptid.pid (), new_pid, 0));
2027           new_lp->stopped = 1;
2028           new_lp->resumed = 1;
2029
2030           /* If the thread_db layer is active, let it record the user
2031              level thread id and status, and add the thread to GDB's
2032              list.  */
2033           if (!thread_db_notice_clone (lp->ptid, new_lp->ptid))
2034             {
2035               /* The process is not using thread_db.  Add the LWP to
2036                  GDB's list.  */
2037               target_post_attach (new_lp->ptid.lwp ());
2038               add_thread (new_lp->ptid);
2039             }
2040
2041           /* Even if we're stopping the thread for some reason
2042              internal to this module, from the perspective of infrun
2043              and the user/frontend, this new thread is running until
2044              it next reports a stop.  */
2045           set_running (new_lp->ptid, 1);
2046           set_executing (new_lp->ptid, 1);
2047
2048           if (WSTOPSIG (status) != SIGSTOP)
2049             {
2050               /* This can happen if someone starts sending signals to
2051                  the new thread before it gets a chance to run, which
2052                  have a lower number than SIGSTOP (e.g. SIGUSR1).
2053                  This is an unlikely case, and harder to handle for
2054                  fork / vfork than for clone, so we do not try - but
2055                  we handle it for clone events here.  */
2056
2057               new_lp->signalled = 1;
2058
2059               /* We created NEW_LP so it cannot yet contain STATUS.  */
2060               gdb_assert (new_lp->status == 0);
2061
2062               /* Save the wait status to report later.  */
2063               if (debug_linux_nat)
2064                 fprintf_unfiltered (gdb_stdlog,
2065                                     "LHEW: waitpid of new LWP %ld, "
2066                                     "saving status %s\n",
2067                                     (long) new_lp->ptid.lwp (),
2068                                     status_to_str (status));
2069               new_lp->status = status;
2070             }
2071           else if (report_thread_events)
2072             {
2073               new_lp->waitstatus.kind = TARGET_WAITKIND_THREAD_CREATED;
2074               new_lp->status = status;
2075             }
2076
2077           return 1;
2078         }
2079
2080       return 0;
2081     }
2082
2083   if (event == PTRACE_EVENT_EXEC)
2084     {
2085       if (debug_linux_nat)
2086         fprintf_unfiltered (gdb_stdlog,
2087                             "LHEW: Got exec event from LWP %ld\n",
2088                             lp->ptid.lwp ());
2089
2090       ourstatus->kind = TARGET_WAITKIND_EXECD;
2091       ourstatus->value.execd_pathname
2092         = xstrdup (linux_proc_pid_to_exec_file (pid));
2093
2094       /* The thread that execed must have been resumed, but, when a
2095          thread execs, it changes its tid to the tgid, and the old
2096          tgid thread might have not been resumed.  */
2097       lp->resumed = 1;
2098       return 0;
2099     }
2100
2101   if (event == PTRACE_EVENT_VFORK_DONE)
2102     {
2103       if (current_inferior ()->waiting_for_vfork_done)
2104         {
2105           if (debug_linux_nat)
2106             fprintf_unfiltered (gdb_stdlog,
2107                                 "LHEW: Got expected PTRACE_EVENT_"
2108                                 "VFORK_DONE from LWP %ld: stopping\n",
2109                                 lp->ptid.lwp ());
2110
2111           ourstatus->kind = TARGET_WAITKIND_VFORK_DONE;
2112           return 0;
2113         }
2114
2115       if (debug_linux_nat)
2116         fprintf_unfiltered (gdb_stdlog,
2117                             "LHEW: Got PTRACE_EVENT_VFORK_DONE "
2118                             "from LWP %ld: ignoring\n",
2119                             lp->ptid.lwp ());
2120       return 1;
2121     }
2122
2123   internal_error (__FILE__, __LINE__,
2124                   _("unknown ptrace event %d"), event);
2125 }
2126
2127 /* Suspend waiting for a signal.  We're mostly interested in
2128    SIGCHLD/SIGINT.  */
2129
2130 static void
2131 wait_for_signal ()
2132 {
2133   if (debug_linux_nat)
2134     fprintf_unfiltered (gdb_stdlog, "linux-nat: about to sigsuspend\n");
2135   sigsuspend (&suspend_mask);
2136
2137   /* If the quit flag is set, it means that the user pressed Ctrl-C
2138      and we're debugging a process that is running on a separate
2139      terminal, so we must forward the Ctrl-C to the inferior.  (If the
2140      inferior is sharing GDB's terminal, then the Ctrl-C reaches the
2141      inferior directly.)  We must do this here because functions that
2142      need to block waiting for a signal loop forever until there's an
2143      event to report before returning back to the event loop.  */
2144   if (!target_terminal::is_ours ())
2145     {
2146       if (check_quit_flag ())
2147         target_pass_ctrlc ();
2148     }
2149 }
2150
2151 /* Wait for LP to stop.  Returns the wait status, or 0 if the LWP has
2152    exited.  */
2153
2154 static int
2155 wait_lwp (struct lwp_info *lp)
2156 {
2157   pid_t pid;
2158   int status = 0;
2159   int thread_dead = 0;
2160   sigset_t prev_mask;
2161
2162   gdb_assert (!lp->stopped);
2163   gdb_assert (lp->status == 0);
2164
2165   /* Make sure SIGCHLD is blocked for sigsuspend avoiding a race below.  */
2166   block_child_signals (&prev_mask);
2167
2168   for (;;)
2169     {
2170       pid = my_waitpid (lp->ptid.lwp (), &status, __WALL | WNOHANG);
2171       if (pid == -1 && errno == ECHILD)
2172         {
2173           /* The thread has previously exited.  We need to delete it
2174              now because if this was a non-leader thread execing, we
2175              won't get an exit event.  See comments on exec events at
2176              the top of the file.  */
2177           thread_dead = 1;
2178           if (debug_linux_nat)
2179             fprintf_unfiltered (gdb_stdlog, "WL: %s vanished.\n",
2180                                 target_pid_to_str (lp->ptid).c_str ());
2181         }
2182       if (pid != 0)
2183         break;
2184
2185       /* Bugs 10970, 12702.
2186          Thread group leader may have exited in which case we'll lock up in
2187          waitpid if there are other threads, even if they are all zombies too.
2188          Basically, we're not supposed to use waitpid this way.
2189           tkill(pid,0) cannot be used here as it gets ESRCH for both
2190          for zombie and running processes.
2191
2192          As a workaround, check if we're waiting for the thread group leader and
2193          if it's a zombie, and avoid calling waitpid if it is.
2194
2195          This is racy, what if the tgl becomes a zombie right after we check?
2196          Therefore always use WNOHANG with sigsuspend - it is equivalent to
2197          waiting waitpid but linux_proc_pid_is_zombie is safe this way.  */
2198
2199       if (lp->ptid.pid () == lp->ptid.lwp ()
2200           && linux_proc_pid_is_zombie (lp->ptid.lwp ()))
2201         {
2202           thread_dead = 1;
2203           if (debug_linux_nat)
2204             fprintf_unfiltered (gdb_stdlog,
2205                                 "WL: Thread group leader %s vanished.\n",
2206                                 target_pid_to_str (lp->ptid).c_str ());
2207           break;
2208         }
2209
2210       /* Wait for next SIGCHLD and try again.  This may let SIGCHLD handlers
2211          get invoked despite our caller had them intentionally blocked by
2212          block_child_signals.  This is sensitive only to the loop of
2213          linux_nat_wait_1 and there if we get called my_waitpid gets called
2214          again before it gets to sigsuspend so we can safely let the handlers
2215          get executed here.  */
2216       wait_for_signal ();
2217     }
2218
2219   restore_child_signals_mask (&prev_mask);
2220
2221   if (!thread_dead)
2222     {
2223       gdb_assert (pid == lp->ptid.lwp ());
2224
2225       if (debug_linux_nat)
2226         {
2227           fprintf_unfiltered (gdb_stdlog,
2228                               "WL: waitpid %s received %s\n",
2229                               target_pid_to_str (lp->ptid).c_str (),
2230                               status_to_str (status));
2231         }
2232
2233       /* Check if the thread has exited.  */
2234       if (WIFEXITED (status) || WIFSIGNALED (status))
2235         {
2236           if (report_thread_events
2237               || lp->ptid.pid () == lp->ptid.lwp ())
2238             {
2239               if (debug_linux_nat)
2240                 fprintf_unfiltered (gdb_stdlog, "WL: LWP %d exited.\n",
2241                                     lp->ptid.pid ());
2242
2243               /* If this is the leader exiting, it means the whole
2244                  process is gone.  Store the status to report to the
2245                  core.  Store it in lp->waitstatus, because lp->status
2246                  would be ambiguous (W_EXITCODE(0,0) == 0).  */
2247               store_waitstatus (&lp->waitstatus, status);
2248               return 0;
2249             }
2250
2251           thread_dead = 1;
2252           if (debug_linux_nat)
2253             fprintf_unfiltered (gdb_stdlog, "WL: %s exited.\n",
2254                                 target_pid_to_str (lp->ptid).c_str ());
2255         }
2256     }
2257
2258   if (thread_dead)
2259     {
2260       exit_lwp (lp);
2261       return 0;
2262     }
2263
2264   gdb_assert (WIFSTOPPED (status));
2265   lp->stopped = 1;
2266
2267   if (lp->must_set_ptrace_flags)
2268     {
2269       struct inferior *inf = find_inferior_pid (lp->ptid.pid ());
2270       int options = linux_nat_ptrace_options (inf->attach_flag);
2271
2272       linux_enable_event_reporting (lp->ptid.lwp (), options);
2273       lp->must_set_ptrace_flags = 0;
2274     }
2275
2276   /* Handle GNU/Linux's syscall SIGTRAPs.  */
2277   if (WIFSTOPPED (status) && WSTOPSIG (status) == SYSCALL_SIGTRAP)
2278     {
2279       /* No longer need the sysgood bit.  The ptrace event ends up
2280          recorded in lp->waitstatus if we care for it.  We can carry
2281          on handling the event like a regular SIGTRAP from here
2282          on.  */
2283       status = W_STOPCODE (SIGTRAP);
2284       if (linux_handle_syscall_trap (lp, 1))
2285         return wait_lwp (lp);
2286     }
2287   else
2288     {
2289       /* Almost all other ptrace-stops are known to be outside of system
2290          calls, with further exceptions in linux_handle_extended_wait.  */
2291       lp->syscall_state = TARGET_WAITKIND_IGNORE;
2292     }
2293
2294   /* Handle GNU/Linux's extended waitstatus for trace events.  */
2295   if (WIFSTOPPED (status) && WSTOPSIG (status) == SIGTRAP
2296       && linux_is_extended_waitstatus (status))
2297     {
2298       if (debug_linux_nat)
2299         fprintf_unfiltered (gdb_stdlog,
2300                             "WL: Handling extended status 0x%06x\n",
2301                             status);
2302       linux_handle_extended_wait (lp, status);
2303       return 0;
2304     }
2305
2306   return status;
2307 }
2308
2309 /* Send a SIGSTOP to LP.  */
2310
2311 static int
2312 stop_callback (struct lwp_info *lp)
2313 {
2314   if (!lp->stopped && !lp->signalled)
2315     {
2316       int ret;
2317
2318       if (debug_linux_nat)
2319         {
2320           fprintf_unfiltered (gdb_stdlog,
2321                               "SC:  kill %s **<SIGSTOP>**\n",
2322                               target_pid_to_str (lp->ptid).c_str ());
2323         }
2324       errno = 0;
2325       ret = kill_lwp (lp->ptid.lwp (), SIGSTOP);
2326       if (debug_linux_nat)
2327         {
2328           fprintf_unfiltered (gdb_stdlog,
2329                               "SC:  lwp kill %d %s\n",
2330                               ret,
2331                               errno ? safe_strerror (errno) : "ERRNO-OK");
2332         }
2333
2334       lp->signalled = 1;
2335       gdb_assert (lp->status == 0);
2336     }
2337
2338   return 0;
2339 }
2340
2341 /* Request a stop on LWP.  */
2342
2343 void
2344 linux_stop_lwp (struct lwp_info *lwp)
2345 {
2346   stop_callback (lwp);
2347 }
2348
2349 /* See linux-nat.h  */
2350
2351 void
2352 linux_stop_and_wait_all_lwps (void)
2353 {
2354   /* Stop all LWP's ...  */
2355   iterate_over_lwps (minus_one_ptid, stop_callback);
2356
2357   /* ... and wait until all of them have reported back that
2358      they're no longer running.  */
2359   iterate_over_lwps (minus_one_ptid, stop_wait_callback);
2360 }
2361
2362 /* See linux-nat.h  */
2363
2364 void
2365 linux_unstop_all_lwps (void)
2366 {
2367   iterate_over_lwps (minus_one_ptid,
2368                      [] (struct lwp_info *info)
2369                      {
2370                        return resume_stopped_resumed_lwps (info, minus_one_ptid);
2371                      });
2372 }
2373
2374 /* Return non-zero if LWP PID has a pending SIGINT.  */
2375
2376 static int
2377 linux_nat_has_pending_sigint (int pid)
2378 {
2379   sigset_t pending, blocked, ignored;
2380
2381   linux_proc_pending_signals (pid, &pending, &blocked, &ignored);
2382
2383   if (sigismember (&pending, SIGINT)
2384       && !sigismember (&ignored, SIGINT))
2385     return 1;
2386
2387   return 0;
2388 }
2389
2390 /* Set a flag in LP indicating that we should ignore its next SIGINT.  */
2391
2392 static int
2393 set_ignore_sigint (struct lwp_info *lp)
2394 {
2395   /* If a thread has a pending SIGINT, consume it; otherwise, set a
2396      flag to consume the next one.  */
2397   if (lp->stopped && lp->status != 0 && WIFSTOPPED (lp->status)
2398       && WSTOPSIG (lp->status) == SIGINT)
2399     lp->status = 0;
2400   else
2401     lp->ignore_sigint = 1;
2402
2403   return 0;
2404 }
2405
2406 /* If LP does not have a SIGINT pending, then clear the ignore_sigint flag.
2407    This function is called after we know the LWP has stopped; if the LWP
2408    stopped before the expected SIGINT was delivered, then it will never have
2409    arrived.  Also, if the signal was delivered to a shared queue and consumed
2410    by a different thread, it will never be delivered to this LWP.  */
2411
2412 static void
2413 maybe_clear_ignore_sigint (struct lwp_info *lp)
2414 {
2415   if (!lp->ignore_sigint)
2416     return;
2417
2418   if (!linux_nat_has_pending_sigint (lp->ptid.lwp ()))
2419     {
2420       if (debug_linux_nat)
2421         fprintf_unfiltered (gdb_stdlog,
2422                             "MCIS: Clearing bogus flag for %s\n",
2423                             target_pid_to_str (lp->ptid).c_str ());
2424       lp->ignore_sigint = 0;
2425     }
2426 }
2427
2428 /* Fetch the possible triggered data watchpoint info and store it in
2429    LP.
2430
2431    On some archs, like x86, that use debug registers to set
2432    watchpoints, it's possible that the way to know which watched
2433    address trapped, is to check the register that is used to select
2434    which address to watch.  Problem is, between setting the watchpoint
2435    and reading back which data address trapped, the user may change
2436    the set of watchpoints, and, as a consequence, GDB changes the
2437    debug registers in the inferior.  To avoid reading back a stale
2438    stopped-data-address when that happens, we cache in LP the fact
2439    that a watchpoint trapped, and the corresponding data address, as
2440    soon as we see LP stop with a SIGTRAP.  If GDB changes the debug
2441    registers meanwhile, we have the cached data we can rely on.  */
2442
2443 static int
2444 check_stopped_by_watchpoint (struct lwp_info *lp)
2445 {
2446   scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
2447   inferior_ptid = lp->ptid;
2448
2449   if (linux_target->low_stopped_by_watchpoint ())
2450     {
2451       lp->stop_reason = TARGET_STOPPED_BY_WATCHPOINT;
2452       lp->stopped_data_address_p
2453         = linux_target->low_stopped_data_address (&lp->stopped_data_address);
2454     }
2455
2456   return lp->stop_reason == TARGET_STOPPED_BY_WATCHPOINT;
2457 }
2458
2459 /* Returns true if the LWP had stopped for a watchpoint.  */
2460
2461 bool
2462 linux_nat_target::stopped_by_watchpoint ()
2463 {
2464   struct lwp_info *lp = find_lwp_pid (inferior_ptid);
2465
2466   gdb_assert (lp != NULL);
2467
2468   return lp->stop_reason == TARGET_STOPPED_BY_WATCHPOINT;
2469 }
2470
2471 bool
2472 linux_nat_target::stopped_data_address (CORE_ADDR *addr_p)
2473 {
2474   struct lwp_info *lp = find_lwp_pid (inferior_ptid);
2475
2476   gdb_assert (lp != NULL);
2477
2478   *addr_p = lp->stopped_data_address;
2479
2480   return lp->stopped_data_address_p;
2481 }
2482
2483 /* Commonly any breakpoint / watchpoint generate only SIGTRAP.  */
2484
2485 bool
2486 linux_nat_target::low_status_is_event (int status)
2487 {
2488   return WIFSTOPPED (status) && WSTOPSIG (status) == SIGTRAP;
2489 }
2490
2491 /* Wait until LP is stopped.  */
2492
2493 static int
2494 stop_wait_callback (struct lwp_info *lp)
2495 {
2496   struct inferior *inf = find_inferior_ptid (lp->ptid);
2497
2498   /* If this is a vfork parent, bail out, it is not going to report
2499      any SIGSTOP until the vfork is done with.  */
2500   if (inf->vfork_child != NULL)
2501     return 0;
2502
2503   if (!lp->stopped)
2504     {
2505       int status;
2506
2507       status = wait_lwp (lp);
2508       if (status == 0)
2509         return 0;
2510
2511       if (lp->ignore_sigint && WIFSTOPPED (status)
2512           && WSTOPSIG (status) == SIGINT)
2513         {
2514           lp->ignore_sigint = 0;
2515
2516           errno = 0;
2517           ptrace (PTRACE_CONT, lp->ptid.lwp (), 0, 0);
2518           lp->stopped = 0;
2519           if (debug_linux_nat)
2520             fprintf_unfiltered (gdb_stdlog,
2521                                 "PTRACE_CONT %s, 0, 0 (%s) "
2522                                 "(discarding SIGINT)\n",
2523                                 target_pid_to_str (lp->ptid).c_str (),
2524                                 errno ? safe_strerror (errno) : "OK");
2525
2526           return stop_wait_callback (lp);
2527         }
2528
2529       maybe_clear_ignore_sigint (lp);
2530
2531       if (WSTOPSIG (status) != SIGSTOP)
2532         {
2533           /* The thread was stopped with a signal other than SIGSTOP.  */
2534
2535           if (debug_linux_nat)
2536             fprintf_unfiltered (gdb_stdlog,
2537                                 "SWC: Pending event %s in %s\n",
2538                                 status_to_str ((int) status),
2539                                 target_pid_to_str (lp->ptid).c_str ());
2540
2541           /* Save the sigtrap event.  */
2542           lp->status = status;
2543           gdb_assert (lp->signalled);
2544           save_stop_reason (lp);
2545         }
2546       else
2547         {
2548           /* We caught the SIGSTOP that we intended to catch.  */
2549
2550           if (debug_linux_nat)
2551             fprintf_unfiltered (gdb_stdlog,
2552                                 "SWC: Expected SIGSTOP caught for %s.\n",
2553                                 target_pid_to_str (lp->ptid).c_str ());
2554
2555           lp->signalled = 0;
2556
2557           /* If we are waiting for this stop so we can report the thread
2558              stopped then we need to record this status.  Otherwise, we can
2559              now discard this stop event.  */
2560           if (lp->last_resume_kind == resume_stop)
2561             {
2562               lp->status = status;
2563               save_stop_reason (lp);
2564             }
2565         }
2566     }
2567
2568   return 0;
2569 }
2570
2571 /* Return non-zero if LP has a wait status pending.  Discard the
2572    pending event and resume the LWP if the event that originally
2573    caused the stop became uninteresting.  */
2574
2575 static int
2576 status_callback (struct lwp_info *lp)
2577 {
2578   /* Only report a pending wait status if we pretend that this has
2579      indeed been resumed.  */
2580   if (!lp->resumed)
2581     return 0;
2582
2583   if (!lwp_status_pending_p (lp))
2584     return 0;
2585
2586   if (lp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
2587       || lp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT)
2588     {
2589       struct regcache *regcache = get_thread_regcache (lp->ptid);
2590       CORE_ADDR pc;
2591       int discard = 0;
2592
2593       pc = regcache_read_pc (regcache);
2594
2595       if (pc != lp->stop_pc)
2596         {
2597           if (debug_linux_nat)
2598             fprintf_unfiltered (gdb_stdlog,
2599                                 "SC: PC of %s changed.  was=%s, now=%s\n",
2600                                 target_pid_to_str (lp->ptid).c_str (),
2601                                 paddress (target_gdbarch (), lp->stop_pc),
2602                                 paddress (target_gdbarch (), pc));
2603           discard = 1;
2604         }
2605
2606 #if !USE_SIGTRAP_SIGINFO
2607       else if (!breakpoint_inserted_here_p (regcache->aspace (), pc))
2608         {
2609           if (debug_linux_nat)
2610             fprintf_unfiltered (gdb_stdlog,
2611                                 "SC: previous breakpoint of %s, at %s gone\n",
2612                                 target_pid_to_str (lp->ptid).c_str (),
2613                                 paddress (target_gdbarch (), lp->stop_pc));
2614
2615           discard = 1;
2616         }
2617 #endif
2618
2619       if (discard)
2620         {
2621           if (debug_linux_nat)
2622             fprintf_unfiltered (gdb_stdlog,
2623                                 "SC: pending event of %s cancelled.\n",
2624                                 target_pid_to_str (lp->ptid).c_str ());
2625
2626           lp->status = 0;
2627           linux_resume_one_lwp (lp, lp->step, GDB_SIGNAL_0);
2628           return 0;
2629         }
2630     }
2631
2632   return 1;
2633 }
2634
2635 /* Count the LWP's that have had events.  */
2636
2637 static int
2638 count_events_callback (struct lwp_info *lp, int *count)
2639 {
2640   gdb_assert (count != NULL);
2641
2642   /* Select only resumed LWPs that have an event pending.  */
2643   if (lp->resumed && lwp_status_pending_p (lp))
2644     (*count)++;
2645
2646   return 0;
2647 }
2648
2649 /* Select the LWP (if any) that is currently being single-stepped.  */
2650
2651 static int
2652 select_singlestep_lwp_callback (struct lwp_info *lp)
2653 {
2654   if (lp->last_resume_kind == resume_step
2655       && lp->status != 0)
2656     return 1;
2657   else
2658     return 0;
2659 }
2660
2661 /* Returns true if LP has a status pending.  */
2662
2663 static int
2664 lwp_status_pending_p (struct lwp_info *lp)
2665 {
2666   /* We check for lp->waitstatus in addition to lp->status, because we
2667      can have pending process exits recorded in lp->status and
2668      W_EXITCODE(0,0) happens to be 0.  */
2669   return lp->status != 0 || lp->waitstatus.kind != TARGET_WAITKIND_IGNORE;
2670 }
2671
2672 /* Select the Nth LWP that has had an event.  */
2673
2674 static int
2675 select_event_lwp_callback (struct lwp_info *lp, int *selector)
2676 {
2677   gdb_assert (selector != NULL);
2678
2679   /* Select only resumed LWPs that have an event pending.  */
2680   if (lp->resumed && lwp_status_pending_p (lp))
2681     if ((*selector)-- == 0)
2682       return 1;
2683
2684   return 0;
2685 }
2686
2687 /* Called when the LWP stopped for a signal/trap.  If it stopped for a
2688    trap check what caused it (breakpoint, watchpoint, trace, etc.),
2689    and save the result in the LWP's stop_reason field.  If it stopped
2690    for a breakpoint, decrement the PC if necessary on the lwp's
2691    architecture.  */
2692
2693 static void
2694 save_stop_reason (struct lwp_info *lp)
2695 {
2696   struct regcache *regcache;
2697   struct gdbarch *gdbarch;
2698   CORE_ADDR pc;
2699   CORE_ADDR sw_bp_pc;
2700 #if USE_SIGTRAP_SIGINFO
2701   siginfo_t siginfo;
2702 #endif
2703
2704   gdb_assert (lp->stop_reason == TARGET_STOPPED_BY_NO_REASON);
2705   gdb_assert (lp->status != 0);
2706
2707   if (!linux_target->low_status_is_event (lp->status))
2708     return;
2709
2710   regcache = get_thread_regcache (lp->ptid);
2711   gdbarch = regcache->arch ();
2712
2713   pc = regcache_read_pc (regcache);
2714   sw_bp_pc = pc - gdbarch_decr_pc_after_break (gdbarch);
2715
2716 #if USE_SIGTRAP_SIGINFO
2717   if (linux_nat_get_siginfo (lp->ptid, &siginfo))
2718     {
2719       if (siginfo.si_signo == SIGTRAP)
2720         {
2721           if (GDB_ARCH_IS_TRAP_BRKPT (siginfo.si_code)
2722               && GDB_ARCH_IS_TRAP_HWBKPT (siginfo.si_code))
2723             {
2724               /* The si_code is ambiguous on this arch -- check debug
2725                  registers.  */
2726               if (!check_stopped_by_watchpoint (lp))
2727                 lp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT;
2728             }
2729           else if (GDB_ARCH_IS_TRAP_BRKPT (siginfo.si_code))
2730             {
2731               /* If we determine the LWP stopped for a SW breakpoint,
2732                  trust it.  Particularly don't check watchpoint
2733                  registers, because at least on s390, we'd find
2734                  stopped-by-watchpoint as long as there's a watchpoint
2735                  set.  */
2736               lp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT;
2737             }
2738           else if (GDB_ARCH_IS_TRAP_HWBKPT (siginfo.si_code))
2739             {
2740               /* This can indicate either a hardware breakpoint or
2741                  hardware watchpoint.  Check debug registers.  */
2742               if (!check_stopped_by_watchpoint (lp))
2743                 lp->stop_reason = TARGET_STOPPED_BY_HW_BREAKPOINT;
2744             }
2745           else if (siginfo.si_code == TRAP_TRACE)
2746             {
2747               if (debug_linux_nat)
2748                 fprintf_unfiltered (gdb_stdlog,
2749                                     "CSBB: %s stopped by trace\n",
2750                                     target_pid_to_str (lp->ptid).c_str ());
2751
2752               /* We may have single stepped an instruction that
2753                  triggered a watchpoint.  In that case, on some
2754                  architectures (such as x86), instead of TRAP_HWBKPT,
2755                  si_code indicates TRAP_TRACE, and we need to check
2756                  the debug registers separately.  */
2757               check_stopped_by_watchpoint (lp);
2758             }
2759         }
2760     }
2761 #else
2762   if ((!lp->step || lp->stop_pc == sw_bp_pc)
2763       && software_breakpoint_inserted_here_p (regcache->aspace (),
2764                                               sw_bp_pc))
2765     {
2766       /* The LWP was either continued, or stepped a software
2767          breakpoint instruction.  */
2768       lp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT;
2769     }
2770
2771   if (hardware_breakpoint_inserted_here_p (regcache->aspace (), pc))
2772     lp->stop_reason = TARGET_STOPPED_BY_HW_BREAKPOINT;
2773
2774   if (lp->stop_reason == TARGET_STOPPED_BY_NO_REASON)
2775     check_stopped_by_watchpoint (lp);
2776 #endif
2777
2778   if (lp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT)
2779     {
2780       if (debug_linux_nat)
2781         fprintf_unfiltered (gdb_stdlog,
2782                             "CSBB: %s stopped by software breakpoint\n",
2783                             target_pid_to_str (lp->ptid).c_str ());
2784
2785       /* Back up the PC if necessary.  */
2786       if (pc != sw_bp_pc)
2787         regcache_write_pc (regcache, sw_bp_pc);
2788
2789       /* Update this so we record the correct stop PC below.  */
2790       pc = sw_bp_pc;
2791     }
2792   else if (lp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT)
2793     {
2794       if (debug_linux_nat)
2795         fprintf_unfiltered (gdb_stdlog,
2796                             "CSBB: %s stopped by hardware breakpoint\n",
2797                             target_pid_to_str (lp->ptid).c_str ());
2798     }
2799   else if (lp->stop_reason == TARGET_STOPPED_BY_WATCHPOINT)
2800     {
2801       if (debug_linux_nat)
2802         fprintf_unfiltered (gdb_stdlog,
2803                             "CSBB: %s stopped by hardware watchpoint\n",
2804                             target_pid_to_str (lp->ptid).c_str ());
2805     }
2806
2807   lp->stop_pc = pc;
2808 }
2809
2810
2811 /* Returns true if the LWP had stopped for a software breakpoint.  */
2812
2813 bool
2814 linux_nat_target::stopped_by_sw_breakpoint ()
2815 {
2816   struct lwp_info *lp = find_lwp_pid (inferior_ptid);
2817
2818   gdb_assert (lp != NULL);
2819
2820   return lp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT;
2821 }
2822
2823 /* Implement the supports_stopped_by_sw_breakpoint method.  */
2824
2825 bool
2826 linux_nat_target::supports_stopped_by_sw_breakpoint ()
2827 {
2828   return USE_SIGTRAP_SIGINFO;
2829 }
2830
2831 /* Returns true if the LWP had stopped for a hardware
2832    breakpoint/watchpoint.  */
2833
2834 bool
2835 linux_nat_target::stopped_by_hw_breakpoint ()
2836 {
2837   struct lwp_info *lp = find_lwp_pid (inferior_ptid);
2838
2839   gdb_assert (lp != NULL);
2840
2841   return lp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT;
2842 }
2843
2844 /* Implement the supports_stopped_by_hw_breakpoint method.  */
2845
2846 bool
2847 linux_nat_target::supports_stopped_by_hw_breakpoint ()
2848 {
2849   return USE_SIGTRAP_SIGINFO;
2850 }
2851
2852 /* Select one LWP out of those that have events pending.  */
2853
2854 static void
2855 select_event_lwp (ptid_t filter, struct lwp_info **orig_lp, int *status)
2856 {
2857   int num_events = 0;
2858   int random_selector;
2859   struct lwp_info *event_lp = NULL;
2860
2861   /* Record the wait status for the original LWP.  */
2862   (*orig_lp)->status = *status;
2863
2864   /* In all-stop, give preference to the LWP that is being
2865      single-stepped.  There will be at most one, and it will be the
2866      LWP that the core is most interested in.  If we didn't do this,
2867      then we'd have to handle pending step SIGTRAPs somehow in case
2868      the core later continues the previously-stepped thread, as
2869      otherwise we'd report the pending SIGTRAP then, and the core, not
2870      having stepped the thread, wouldn't understand what the trap was
2871      for, and therefore would report it to the user as a random
2872      signal.  */
2873   if (!target_is_non_stop_p ())
2874     {
2875       event_lp = iterate_over_lwps (filter, select_singlestep_lwp_callback);
2876       if (event_lp != NULL)
2877         {
2878           if (debug_linux_nat)
2879             fprintf_unfiltered (gdb_stdlog,
2880                                 "SEL: Select single-step %s\n",
2881                                 target_pid_to_str (event_lp->ptid).c_str ());
2882         }
2883     }
2884
2885   if (event_lp == NULL)
2886     {
2887       /* Pick one at random, out of those which have had events.  */
2888
2889       /* First see how many events we have.  */
2890       iterate_over_lwps (filter,
2891                          [&] (struct lwp_info *info)
2892                          {
2893                            return count_events_callback (info, &num_events);
2894                          });
2895       gdb_assert (num_events > 0);
2896
2897       /* Now randomly pick a LWP out of those that have had
2898          events.  */
2899       random_selector = (int)
2900         ((num_events * (double) rand ()) / (RAND_MAX + 1.0));
2901
2902       if (debug_linux_nat && num_events > 1)
2903         fprintf_unfiltered (gdb_stdlog,
2904                             "SEL: Found %d events, selecting #%d\n",
2905                             num_events, random_selector);
2906
2907       event_lp
2908         = (iterate_over_lwps
2909            (filter,
2910             [&] (struct lwp_info *info)
2911             {
2912               return select_event_lwp_callback (info,
2913                                                 &random_selector);
2914             }));
2915     }
2916
2917   if (event_lp != NULL)
2918     {
2919       /* Switch the event LWP.  */
2920       *orig_lp = event_lp;
2921       *status = event_lp->status;
2922     }
2923
2924   /* Flush the wait status for the event LWP.  */
2925   (*orig_lp)->status = 0;
2926 }
2927
2928 /* Return non-zero if LP has been resumed.  */
2929
2930 static int
2931 resumed_callback (struct lwp_info *lp)
2932 {
2933   return lp->resumed;
2934 }
2935
2936 /* Check if we should go on and pass this event to common code.
2937    Return the affected lwp if we are, or NULL otherwise.  */
2938
2939 static struct lwp_info *
2940 linux_nat_filter_event (int lwpid, int status)
2941 {
2942   struct lwp_info *lp;
2943   int event = linux_ptrace_get_extended_event (status);
2944
2945   lp = find_lwp_pid (ptid_t (lwpid));
2946
2947   /* Check for stop events reported by a process we didn't already
2948      know about - anything not already in our LWP list.
2949
2950      If we're expecting to receive stopped processes after
2951      fork, vfork, and clone events, then we'll just add the
2952      new one to our list and go back to waiting for the event
2953      to be reported - the stopped process might be returned
2954      from waitpid before or after the event is.
2955
2956      But note the case of a non-leader thread exec'ing after the
2957      leader having exited, and gone from our lists.  The non-leader
2958      thread changes its tid to the tgid.  */
2959
2960   if (WIFSTOPPED (status) && lp == NULL
2961       && (WSTOPSIG (status) == SIGTRAP && event == PTRACE_EVENT_EXEC))
2962     {
2963       /* A multi-thread exec after we had seen the leader exiting.  */
2964       if (debug_linux_nat)
2965         fprintf_unfiltered (gdb_stdlog,
2966                             "LLW: Re-adding thread group leader LWP %d.\n",
2967                             lwpid);
2968
2969       lp = add_lwp (ptid_t (lwpid, lwpid, 0));
2970       lp->stopped = 1;
2971       lp->resumed = 1;
2972       add_thread (lp->ptid);
2973     }
2974
2975   if (WIFSTOPPED (status) && !lp)
2976     {
2977       if (debug_linux_nat)
2978         fprintf_unfiltered (gdb_stdlog,
2979                             "LHEW: saving LWP %ld status %s in stopped_pids list\n",
2980                             (long) lwpid, status_to_str (status));
2981       add_to_pid_list (&stopped_pids, lwpid, status);
2982       return NULL;
2983     }
2984
2985   /* Make sure we don't report an event for the exit of an LWP not in
2986      our list, i.e. not part of the current process.  This can happen
2987      if we detach from a program we originally forked and then it
2988      exits.  */
2989   if (!WIFSTOPPED (status) && !lp)
2990     return NULL;
2991
2992   /* This LWP is stopped now.  (And if dead, this prevents it from
2993      ever being continued.)  */
2994   lp->stopped = 1;
2995
2996   if (WIFSTOPPED (status) && lp->must_set_ptrace_flags)
2997     {
2998       struct inferior *inf = find_inferior_pid (lp->ptid.pid ());
2999       int options = linux_nat_ptrace_options (inf->attach_flag);
3000
3001       linux_enable_event_reporting (lp->ptid.lwp (), options);
3002       lp->must_set_ptrace_flags = 0;
3003     }
3004
3005   /* Handle GNU/Linux's syscall SIGTRAPs.  */
3006   if (WIFSTOPPED (status) && WSTOPSIG (status) == SYSCALL_SIGTRAP)
3007     {
3008       /* No longer need the sysgood bit.  The ptrace event ends up
3009          recorded in lp->waitstatus if we care for it.  We can carry
3010          on handling the event like a regular SIGTRAP from here
3011          on.  */
3012       status = W_STOPCODE (SIGTRAP);
3013       if (linux_handle_syscall_trap (lp, 0))
3014         return NULL;
3015     }
3016   else
3017     {
3018       /* Almost all other ptrace-stops are known to be outside of system
3019          calls, with further exceptions in linux_handle_extended_wait.  */
3020       lp->syscall_state = TARGET_WAITKIND_IGNORE;
3021     }
3022
3023   /* Handle GNU/Linux's extended waitstatus for trace events.  */
3024   if (WIFSTOPPED (status) && WSTOPSIG (status) == SIGTRAP
3025       && linux_is_extended_waitstatus (status))
3026     {
3027       if (debug_linux_nat)
3028         fprintf_unfiltered (gdb_stdlog,
3029                             "LLW: Handling extended status 0x%06x\n",
3030                             status);
3031       if (linux_handle_extended_wait (lp, status))
3032         return NULL;
3033     }
3034
3035   /* Check if the thread has exited.  */
3036   if (WIFEXITED (status) || WIFSIGNALED (status))
3037     {
3038       if (!report_thread_events
3039           && num_lwps (lp->ptid.pid ()) > 1)
3040         {
3041           if (debug_linux_nat)
3042             fprintf_unfiltered (gdb_stdlog,
3043                                 "LLW: %s exited.\n",
3044                                 target_pid_to_str (lp->ptid).c_str ());
3045
3046           /* If there is at least one more LWP, then the exit signal
3047              was not the end of the debugged application and should be
3048              ignored.  */
3049           exit_lwp (lp);
3050           return NULL;
3051         }
3052
3053       /* Note that even if the leader was ptrace-stopped, it can still
3054          exit, if e.g., some other thread brings down the whole
3055          process (calls `exit').  So don't assert that the lwp is
3056          resumed.  */
3057       if (debug_linux_nat)
3058         fprintf_unfiltered (gdb_stdlog,
3059                             "LWP %ld exited (resumed=%d)\n",
3060                             lp->ptid.lwp (), lp->resumed);
3061
3062       /* Dead LWP's aren't expected to reported a pending sigstop.  */
3063       lp->signalled = 0;
3064
3065       /* Store the pending event in the waitstatus, because
3066          W_EXITCODE(0,0) == 0.  */
3067       store_waitstatus (&lp->waitstatus, status);
3068       return lp;
3069     }
3070
3071   /* Make sure we don't report a SIGSTOP that we sent ourselves in
3072      an attempt to stop an LWP.  */
3073   if (lp->signalled
3074       && WIFSTOPPED (status) && WSTOPSIG (status) == SIGSTOP)
3075     {
3076       lp->signalled = 0;
3077
3078       if (lp->last_resume_kind == resume_stop)
3079         {
3080           if (debug_linux_nat)
3081             fprintf_unfiltered (gdb_stdlog,
3082                                 "LLW: resume_stop SIGSTOP caught for %s.\n",
3083                                 target_pid_to_str (lp->ptid).c_str ());
3084         }
3085       else
3086         {
3087           /* This is a delayed SIGSTOP.  Filter out the event.  */
3088
3089           if (debug_linux_nat)
3090             fprintf_unfiltered (gdb_stdlog,
3091                                 "LLW: %s %s, 0, 0 (discard delayed SIGSTOP)\n",
3092                                 lp->step ?
3093                                 "PTRACE_SINGLESTEP" : "PTRACE_CONT",
3094                                 target_pid_to_str (lp->ptid).c_str ());
3095
3096           linux_resume_one_lwp (lp, lp->step, GDB_SIGNAL_0);
3097           gdb_assert (lp->resumed);
3098           return NULL;
3099         }
3100     }
3101
3102   /* Make sure we don't report a SIGINT that we have already displayed
3103      for another thread.  */
3104   if (lp->ignore_sigint
3105       && WIFSTOPPED (status) && WSTOPSIG (status) == SIGINT)
3106     {
3107       if (debug_linux_nat)
3108         fprintf_unfiltered (gdb_stdlog,
3109                             "LLW: Delayed SIGINT caught for %s.\n",
3110                             target_pid_to_str (lp->ptid).c_str ());
3111
3112       /* This is a delayed SIGINT.  */
3113       lp->ignore_sigint = 0;
3114
3115       linux_resume_one_lwp (lp, lp->step, GDB_SIGNAL_0);
3116       if (debug_linux_nat)
3117         fprintf_unfiltered (gdb_stdlog,
3118                             "LLW: %s %s, 0, 0 (discard SIGINT)\n",
3119                             lp->step ?
3120                             "PTRACE_SINGLESTEP" : "PTRACE_CONT",
3121                             target_pid_to_str (lp->ptid).c_str ());
3122       gdb_assert (lp->resumed);
3123
3124       /* Discard the event.  */
3125       return NULL;
3126     }
3127
3128   /* Don't report signals that GDB isn't interested in, such as
3129      signals that are neither printed nor stopped upon.  Stopping all
3130      threads can be a bit time-consuming so if we want decent
3131      performance with heavily multi-threaded programs, especially when
3132      they're using a high frequency timer, we'd better avoid it if we
3133      can.  */
3134   if (WIFSTOPPED (status))
3135     {
3136       enum gdb_signal signo = gdb_signal_from_host (WSTOPSIG (status));
3137
3138       if (!target_is_non_stop_p ())
3139         {
3140           /* Only do the below in all-stop, as we currently use SIGSTOP
3141              to implement target_stop (see linux_nat_stop) in
3142              non-stop.  */
3143           if (signo == GDB_SIGNAL_INT && signal_pass_state (signo) == 0)
3144             {
3145               /* If ^C/BREAK is typed at the tty/console, SIGINT gets
3146                  forwarded to the entire process group, that is, all LWPs
3147                  will receive it - unless they're using CLONE_THREAD to
3148                  share signals.  Since we only want to report it once, we
3149                  mark it as ignored for all LWPs except this one.  */
3150               iterate_over_lwps (ptid_t (lp->ptid.pid ()), set_ignore_sigint);
3151               lp->ignore_sigint = 0;
3152             }
3153           else
3154             maybe_clear_ignore_sigint (lp);
3155         }
3156
3157       /* When using hardware single-step, we need to report every signal.
3158          Otherwise, signals in pass_mask may be short-circuited
3159          except signals that might be caused by a breakpoint.  */
3160       if (!lp->step
3161           && WSTOPSIG (status) && sigismember (&pass_mask, WSTOPSIG (status))
3162           && !linux_wstatus_maybe_breakpoint (status))
3163         {
3164           linux_resume_one_lwp (lp, lp->step, signo);
3165           if (debug_linux_nat)
3166             fprintf_unfiltered (gdb_stdlog,
3167                                 "LLW: %s %s, %s (preempt 'handle')\n",
3168                                 lp->step ?
3169                                 "PTRACE_SINGLESTEP" : "PTRACE_CONT",
3170                                 target_pid_to_str (lp->ptid).c_str (),
3171                                 (signo != GDB_SIGNAL_0
3172                                  ? strsignal (gdb_signal_to_host (signo))
3173                                  : "0"));
3174           return NULL;
3175         }
3176     }
3177
3178   /* An interesting event.  */
3179   gdb_assert (lp);
3180   lp->status = status;
3181   save_stop_reason (lp);
3182   return lp;
3183 }
3184
3185 /* Detect zombie thread group leaders, and "exit" them.  We can't reap
3186    their exits until all other threads in the group have exited.  */
3187
3188 static void
3189 check_zombie_leaders (void)
3190 {
3191   for (inferior *inf : all_inferiors ())
3192     {
3193       struct lwp_info *leader_lp;
3194
3195       if (inf->pid == 0)
3196         continue;
3197
3198       leader_lp = find_lwp_pid (ptid_t (inf->pid));
3199       if (leader_lp != NULL
3200           /* Check if there are other threads in the group, as we may
3201              have raced with the inferior simply exiting.  */
3202           && num_lwps (inf->pid) > 1
3203           && linux_proc_pid_is_zombie (inf->pid))
3204         {
3205           if (debug_linux_nat)
3206             fprintf_unfiltered (gdb_stdlog,
3207                                 "CZL: Thread group leader %d zombie "
3208                                 "(it exited, or another thread execd).\n",
3209                                 inf->pid);
3210
3211           /* A leader zombie can mean one of two things:
3212
3213              - It exited, and there's an exit status pending
3214              available, or only the leader exited (not the whole
3215              program).  In the latter case, we can't waitpid the
3216              leader's exit status until all other threads are gone.
3217
3218              - There are 3 or more threads in the group, and a thread
3219              other than the leader exec'd.  See comments on exec
3220              events at the top of the file.  We could try
3221              distinguishing the exit and exec cases, by waiting once
3222              more, and seeing if something comes out, but it doesn't
3223              sound useful.  The previous leader _does_ go away, and
3224              we'll re-add the new one once we see the exec event
3225              (which is just the same as what would happen if the
3226              previous leader did exit voluntarily before some other
3227              thread execs).  */
3228
3229           if (debug_linux_nat)
3230             fprintf_unfiltered (gdb_stdlog,
3231                                 "CZL: Thread group leader %d vanished.\n",
3232                                 inf->pid);
3233           exit_lwp (leader_lp);
3234         }
3235     }
3236 }
3237
3238 /* Convenience function that is called when the kernel reports an exit
3239    event.  This decides whether to report the event to GDB as a
3240    process exit event, a thread exit event, or to suppress the
3241    event.  */
3242
3243 static ptid_t
3244 filter_exit_event (struct lwp_info *event_child,
3245                    struct target_waitstatus *ourstatus)
3246 {
3247   ptid_t ptid = event_child->ptid;
3248
3249   if (num_lwps (ptid.pid ()) > 1)
3250     {
3251       if (report_thread_events)
3252         ourstatus->kind = TARGET_WAITKIND_THREAD_EXITED;
3253       else
3254         ourstatus->kind = TARGET_WAITKIND_IGNORE;
3255
3256       exit_lwp (event_child);
3257     }
3258
3259   return ptid;
3260 }
3261
3262 static ptid_t
3263 linux_nat_wait_1 (ptid_t ptid, struct target_waitstatus *ourstatus,
3264                   int target_options)
3265 {
3266   sigset_t prev_mask;
3267   enum resume_kind last_resume_kind;
3268   struct lwp_info *lp;
3269   int status;
3270
3271   if (debug_linux_nat)
3272     fprintf_unfiltered (gdb_stdlog, "LLW: enter\n");
3273
3274   /* The first time we get here after starting a new inferior, we may
3275      not have added it to the LWP list yet - this is the earliest
3276      moment at which we know its PID.  */
3277   if (inferior_ptid.is_pid ())
3278     {
3279       /* Upgrade the main thread's ptid.  */
3280       thread_change_ptid (inferior_ptid,
3281                           ptid_t (inferior_ptid.pid (),
3282                                   inferior_ptid.pid (), 0));
3283
3284       lp = add_initial_lwp (inferior_ptid);
3285       lp->resumed = 1;
3286     }
3287
3288   /* Make sure SIGCHLD is blocked until the sigsuspend below.  */
3289   block_child_signals (&prev_mask);
3290
3291   /* First check if there is a LWP with a wait status pending.  */
3292   lp = iterate_over_lwps (ptid, status_callback);
3293   if (lp != NULL)
3294     {
3295       if (debug_linux_nat)
3296         fprintf_unfiltered (gdb_stdlog,
3297                             "LLW: Using pending wait status %s for %s.\n",
3298                             status_to_str (lp->status),
3299                             target_pid_to_str (lp->ptid).c_str ());
3300     }
3301
3302   /* But if we don't find a pending event, we'll have to wait.  Always
3303      pull all events out of the kernel.  We'll randomly select an
3304      event LWP out of all that have events, to prevent starvation.  */
3305
3306   while (lp == NULL)
3307     {
3308       pid_t lwpid;
3309
3310       /* Always use -1 and WNOHANG, due to couple of a kernel/ptrace
3311          quirks:
3312
3313          - If the thread group leader exits while other threads in the
3314            thread group still exist, waitpid(TGID, ...) hangs.  That
3315            waitpid won't return an exit status until the other threads
3316            in the group are reapped.
3317
3318          - When a non-leader thread execs, that thread just vanishes
3319            without reporting an exit (so we'd hang if we waited for it
3320            explicitly in that case).  The exec event is reported to
3321            the TGID pid.  */
3322
3323       errno = 0;
3324       lwpid = my_waitpid (-1, &status,  __WALL | WNOHANG);
3325
3326       if (debug_linux_nat)
3327         fprintf_unfiltered (gdb_stdlog,
3328                             "LNW: waitpid(-1, ...) returned %d, %s\n",
3329                             lwpid, errno ? safe_strerror (errno) : "ERRNO-OK");
3330
3331       if (lwpid > 0)
3332         {
3333           if (debug_linux_nat)
3334             {
3335               fprintf_unfiltered (gdb_stdlog,
3336                                   "LLW: waitpid %ld received %s\n",
3337                                   (long) lwpid, status_to_str (status));
3338             }
3339
3340           linux_nat_filter_event (lwpid, status);
3341           /* Retry until nothing comes out of waitpid.  A single
3342              SIGCHLD can indicate more than one child stopped.  */
3343           continue;
3344         }
3345
3346       /* Now that we've pulled all events out of the kernel, resume
3347          LWPs that don't have an interesting event to report.  */
3348       iterate_over_lwps (minus_one_ptid,
3349                          [] (struct lwp_info *info)
3350                          {
3351                            return resume_stopped_resumed_lwps (info, minus_one_ptid);
3352                          });
3353
3354       /* ... and find an LWP with a status to report to the core, if
3355          any.  */
3356       lp = iterate_over_lwps (ptid, status_callback);
3357       if (lp != NULL)
3358         break;
3359
3360       /* Check for zombie thread group leaders.  Those can't be reaped
3361          until all other threads in the thread group are.  */
3362       check_zombie_leaders ();
3363
3364       /* If there are no resumed children left, bail.  We'd be stuck
3365          forever in the sigsuspend call below otherwise.  */
3366       if (iterate_over_lwps (ptid, resumed_callback) == NULL)
3367         {
3368           if (debug_linux_nat)
3369             fprintf_unfiltered (gdb_stdlog, "LLW: exit (no resumed LWP)\n");
3370
3371           ourstatus->kind = TARGET_WAITKIND_NO_RESUMED;
3372
3373           restore_child_signals_mask (&prev_mask);
3374           return minus_one_ptid;
3375         }
3376
3377       /* No interesting event to report to the core.  */
3378
3379       if (target_options & TARGET_WNOHANG)
3380         {
3381           if (debug_linux_nat)
3382             fprintf_unfiltered (gdb_stdlog, "LLW: exit (ignore)\n");
3383
3384           ourstatus->kind = TARGET_WAITKIND_IGNORE;
3385           restore_child_signals_mask (&prev_mask);
3386           return minus_one_ptid;
3387         }
3388
3389       /* We shouldn't end up here unless we want to try again.  */
3390       gdb_assert (lp == NULL);
3391
3392       /* Block until we get an event reported with SIGCHLD.  */
3393       wait_for_signal ();
3394     }
3395
3396   gdb_assert (lp);
3397
3398   status = lp->status;
3399   lp->status = 0;
3400
3401   if (!target_is_non_stop_p ())
3402     {
3403       /* Now stop all other LWP's ...  */
3404       iterate_over_lwps (minus_one_ptid, stop_callback);
3405
3406       /* ... and wait until all of them have reported back that
3407          they're no longer running.  */
3408       iterate_over_lwps (minus_one_ptid, stop_wait_callback);
3409     }
3410
3411   /* If we're not waiting for a specific LWP, choose an event LWP from
3412      among those that have had events.  Giving equal priority to all
3413      LWPs that have had events helps prevent starvation.  */
3414   if (ptid == minus_one_ptid || ptid.is_pid ())
3415     select_event_lwp (ptid, &lp, &status);
3416
3417   gdb_assert (lp != NULL);
3418
3419   /* Now that we've selected our final event LWP, un-adjust its PC if
3420      it was a software breakpoint, and we can't reliably support the
3421      "stopped by software breakpoint" stop reason.  */
3422   if (lp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
3423       && !USE_SIGTRAP_SIGINFO)
3424     {
3425       struct regcache *regcache = get_thread_regcache (lp->ptid);
3426       struct gdbarch *gdbarch = regcache->arch ();
3427       int decr_pc = gdbarch_decr_pc_after_break (gdbarch);
3428
3429       if (decr_pc != 0)
3430         {
3431           CORE_ADDR pc;
3432
3433           pc = regcache_read_pc (regcache);
3434           regcache_write_pc (regcache, pc + decr_pc);
3435         }
3436     }
3437
3438   /* We'll need this to determine whether to report a SIGSTOP as
3439      GDB_SIGNAL_0.  Need to take a copy because resume_clear_callback
3440      clears it.  */
3441   last_resume_kind = lp->last_resume_kind;
3442
3443   if (!target_is_non_stop_p ())
3444     {
3445       /* In all-stop, from the core's perspective, all LWPs are now
3446          stopped until a new resume action is sent over.  */
3447       iterate_over_lwps (minus_one_ptid, resume_clear_callback);
3448     }
3449   else
3450     {
3451       resume_clear_callback (lp);
3452     }
3453
3454   if (linux_target->low_status_is_event (status))
3455     {
3456       if (debug_linux_nat)
3457         fprintf_unfiltered (gdb_stdlog,
3458                             "LLW: trap ptid is %s.\n",
3459                             target_pid_to_str (lp->ptid).c_str ());
3460     }
3461
3462   if (lp->waitstatus.kind != TARGET_WAITKIND_IGNORE)
3463     {
3464       *ourstatus = lp->waitstatus;
3465       lp->waitstatus.kind = TARGET_WAITKIND_IGNORE;
3466     }
3467   else
3468     store_waitstatus (ourstatus, status);
3469
3470   if (debug_linux_nat)
3471     fprintf_unfiltered (gdb_stdlog, "LLW: exit\n");
3472
3473   restore_child_signals_mask (&prev_mask);
3474
3475   if (last_resume_kind == resume_stop
3476       && ourstatus->kind == TARGET_WAITKIND_STOPPED
3477       && WSTOPSIG (status) == SIGSTOP)
3478     {
3479       /* A thread that has been requested to stop by GDB with
3480          target_stop, and it stopped cleanly, so report as SIG0.  The
3481          use of SIGSTOP is an implementation detail.  */
3482       ourstatus->value.sig = GDB_SIGNAL_0;
3483     }
3484
3485   if (ourstatus->kind == TARGET_WAITKIND_EXITED
3486       || ourstatus->kind == TARGET_WAITKIND_SIGNALLED)
3487     lp->core = -1;
3488   else
3489     lp->core = linux_common_core_of_thread (lp->ptid);
3490
3491   if (ourstatus->kind == TARGET_WAITKIND_EXITED)
3492     return filter_exit_event (lp, ourstatus);
3493
3494   return lp->ptid;
3495 }
3496
3497 /* Resume LWPs that are currently stopped without any pending status
3498    to report, but are resumed from the core's perspective.  */
3499
3500 static int
3501 resume_stopped_resumed_lwps (struct lwp_info *lp, const ptid_t wait_ptid)
3502 {
3503   if (!lp->stopped)
3504     {
3505       if (debug_linux_nat)
3506         fprintf_unfiltered (gdb_stdlog,
3507                             "RSRL: NOT resuming LWP %s, not stopped\n",
3508                             target_pid_to_str (lp->ptid).c_str ());
3509     }
3510   else if (!lp->resumed)
3511     {
3512       if (debug_linux_nat)
3513         fprintf_unfiltered (gdb_stdlog,
3514                             "RSRL: NOT resuming LWP %s, not resumed\n",
3515                             target_pid_to_str (lp->ptid).c_str ());
3516     }
3517   else if (lwp_status_pending_p (lp))
3518     {
3519       if (debug_linux_nat)
3520         fprintf_unfiltered (gdb_stdlog,
3521                             "RSRL: NOT resuming LWP %s, has pending status\n",
3522                             target_pid_to_str (lp->ptid).c_str ());
3523     }
3524   else
3525     {
3526       struct regcache *regcache = get_thread_regcache (lp->ptid);
3527       struct gdbarch *gdbarch = regcache->arch ();
3528
3529       TRY
3530         {
3531           CORE_ADDR pc = regcache_read_pc (regcache);
3532           int leave_stopped = 0;
3533
3534           /* Don't bother if there's a breakpoint at PC that we'd hit
3535              immediately, and we're not waiting for this LWP.  */
3536           if (!lp->ptid.matches (wait_ptid))
3537             {
3538               if (breakpoint_inserted_here_p (regcache->aspace (), pc))
3539                 leave_stopped = 1;
3540             }
3541
3542           if (!leave_stopped)
3543             {
3544               if (debug_linux_nat)
3545                 fprintf_unfiltered (gdb_stdlog,
3546                                     "RSRL: resuming stopped-resumed LWP %s at "
3547                                     "%s: step=%d\n",
3548                                     target_pid_to_str (lp->ptid).c_str (),
3549                                     paddress (gdbarch, pc),
3550                                     lp->step);
3551
3552               linux_resume_one_lwp_throw (lp, lp->step, GDB_SIGNAL_0);
3553             }
3554         }
3555       CATCH (ex, RETURN_MASK_ERROR)
3556         {
3557           if (!check_ptrace_stopped_lwp_gone (lp))
3558             throw_exception (ex);
3559         }
3560       END_CATCH
3561     }
3562
3563   return 0;
3564 }
3565
3566 ptid_t
3567 linux_nat_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus,
3568                         int target_options)
3569 {
3570   ptid_t event_ptid;
3571
3572   if (debug_linux_nat)
3573     {
3574       std::string options_string = target_options_to_string (target_options);
3575       fprintf_unfiltered (gdb_stdlog,
3576                           "linux_nat_wait: [%s], [%s]\n",
3577                           target_pid_to_str (ptid).c_str (),
3578                           options_string.c_str ());
3579     }
3580
3581   /* Flush the async file first.  */
3582   if (target_is_async_p ())
3583     async_file_flush ();
3584
3585   /* Resume LWPs that are currently stopped without any pending status
3586      to report, but are resumed from the core's perspective.  LWPs get
3587      in this state if we find them stopping at a time we're not
3588      interested in reporting the event (target_wait on a
3589      specific_process, for example, see linux_nat_wait_1), and
3590      meanwhile the event became uninteresting.  Don't bother resuming
3591      LWPs we're not going to wait for if they'd stop immediately.  */
3592   if (target_is_non_stop_p ())
3593     iterate_over_lwps (minus_one_ptid,
3594                        [=] (struct lwp_info *info)
3595                        {
3596                          return resume_stopped_resumed_lwps (info, ptid);
3597                        });
3598
3599   event_ptid = linux_nat_wait_1 (ptid, ourstatus, target_options);
3600
3601   /* If we requested any event, and something came out, assume there
3602      may be more.  If we requested a specific lwp or process, also
3603      assume there may be more.  */
3604   if (target_is_async_p ()
3605       && ((ourstatus->kind != TARGET_WAITKIND_IGNORE
3606            && ourstatus->kind != TARGET_WAITKIND_NO_RESUMED)
3607           || ptid != minus_one_ptid))
3608     async_file_mark ();
3609
3610   return event_ptid;
3611 }
3612
3613 /* Kill one LWP.  */
3614
3615 static void
3616 kill_one_lwp (pid_t pid)
3617 {
3618   /* PTRACE_KILL may resume the inferior.  Send SIGKILL first.  */
3619
3620   errno = 0;
3621   kill_lwp (pid, SIGKILL);
3622   if (debug_linux_nat)
3623     {
3624       int save_errno = errno;
3625
3626       fprintf_unfiltered (gdb_stdlog,
3627                           "KC:  kill (SIGKILL) %ld, 0, 0 (%s)\n", (long) pid,
3628                           save_errno ? safe_strerror (save_errno) : "OK");
3629     }
3630
3631   /* Some kernels ignore even SIGKILL for processes under ptrace.  */
3632
3633   errno = 0;
3634   ptrace (PTRACE_KILL, pid, 0, 0);
3635   if (debug_linux_nat)
3636     {
3637       int save_errno = errno;
3638
3639       fprintf_unfiltered (gdb_stdlog,
3640                           "KC:  PTRACE_KILL %ld, 0, 0 (%s)\n", (long) pid,
3641                           save_errno ? safe_strerror (save_errno) : "OK");
3642     }
3643 }
3644
3645 /* Wait for an LWP to die.  */
3646
3647 static void
3648 kill_wait_one_lwp (pid_t pid)
3649 {
3650   pid_t res;
3651
3652   /* We must make sure that there are no pending events (delayed
3653      SIGSTOPs, pending SIGTRAPs, etc.) to make sure the current
3654      program doesn't interfere with any following debugging session.  */
3655
3656   do
3657     {
3658       res = my_waitpid (pid, NULL, __WALL);
3659       if (res != (pid_t) -1)
3660         {
3661           if (debug_linux_nat)
3662             fprintf_unfiltered (gdb_stdlog,
3663                                 "KWC: wait %ld received unknown.\n",
3664                                 (long) pid);
3665           /* The Linux kernel sometimes fails to kill a thread
3666              completely after PTRACE_KILL; that goes from the stop
3667              point in do_fork out to the one in get_signal_to_deliver
3668              and waits again.  So kill it again.  */
3669           kill_one_lwp (pid);
3670         }
3671     }
3672   while (res == pid);
3673
3674   gdb_assert (res == -1 && errno == ECHILD);
3675 }
3676
3677 /* Callback for iterate_over_lwps.  */
3678
3679 static int
3680 kill_callback (struct lwp_info *lp)
3681 {
3682   kill_one_lwp (lp->ptid.lwp ());
3683   return 0;
3684 }
3685
3686 /* Callback for iterate_over_lwps.  */
3687
3688 static int
3689 kill_wait_callback (struct lwp_info *lp)
3690 {
3691   kill_wait_one_lwp (lp->ptid.lwp ());
3692   return 0;
3693 }
3694
3695 /* Kill the fork children of any threads of inferior INF that are
3696    stopped at a fork event.  */
3697
3698 static void
3699 kill_unfollowed_fork_children (struct inferior *inf)
3700 {
3701   for (thread_info *thread : inf->non_exited_threads ())
3702     {
3703       struct target_waitstatus *ws = &thread->pending_follow;
3704
3705       if (ws->kind == TARGET_WAITKIND_FORKED
3706           || ws->kind == TARGET_WAITKIND_VFORKED)
3707         {
3708           ptid_t child_ptid = ws->value.related_pid;
3709           int child_pid = child_ptid.pid ();
3710           int child_lwp = child_ptid.lwp ();
3711
3712           kill_one_lwp (child_lwp);
3713           kill_wait_one_lwp (child_lwp);
3714
3715           /* Let the arch-specific native code know this process is
3716              gone.  */
3717           linux_target->low_forget_process (child_pid);
3718         }
3719     }
3720 }
3721
3722 void
3723 linux_nat_target::kill ()
3724 {
3725   /* If we're stopped while forking and we haven't followed yet,
3726      kill the other task.  We need to do this first because the
3727      parent will be sleeping if this is a vfork.  */
3728   kill_unfollowed_fork_children (current_inferior ());
3729
3730   if (forks_exist_p ())
3731     linux_fork_killall ();
3732   else
3733     {
3734       ptid_t ptid = ptid_t (inferior_ptid.pid ());
3735
3736       /* Stop all threads before killing them, since ptrace requires
3737          that the thread is stopped to sucessfully PTRACE_KILL.  */
3738       iterate_over_lwps (ptid, stop_callback);
3739       /* ... and wait until all of them have reported back that
3740          they're no longer running.  */
3741       iterate_over_lwps (ptid, stop_wait_callback);
3742
3743       /* Kill all LWP's ...  */
3744       iterate_over_lwps (ptid, kill_callback);
3745
3746       /* ... and wait until we've flushed all events.  */
3747       iterate_over_lwps (ptid, kill_wait_callback);
3748     }
3749
3750   target_mourn_inferior (inferior_ptid);
3751 }
3752
3753 void
3754 linux_nat_target::mourn_inferior ()
3755 {
3756   int pid = inferior_ptid.pid ();
3757
3758   purge_lwp_list (pid);
3759
3760   if (! forks_exist_p ())
3761     /* Normal case, no other forks available.  */
3762     inf_ptrace_target::mourn_inferior ();
3763   else
3764     /* Multi-fork case.  The current inferior_ptid has exited, but
3765        there are other viable forks to debug.  Delete the exiting
3766        one and context-switch to the first available.  */
3767     linux_fork_mourn_inferior ();
3768
3769   /* Let the arch-specific native code know this process is gone.  */
3770   linux_target->low_forget_process (pid);
3771 }
3772
3773 /* Convert a native/host siginfo object, into/from the siginfo in the
3774    layout of the inferiors' architecture.  */
3775
3776 static void
3777 siginfo_fixup (siginfo_t *siginfo, gdb_byte *inf_siginfo, int direction)
3778 {
3779   /* If the low target didn't do anything, then just do a straight
3780      memcpy.  */
3781   if (!linux_target->low_siginfo_fixup (siginfo, inf_siginfo, direction))
3782     {
3783       if (direction == 1)
3784         memcpy (siginfo, inf_siginfo, sizeof (siginfo_t));
3785       else
3786         memcpy (inf_siginfo, siginfo, sizeof (siginfo_t));
3787     }
3788 }
3789
3790 static enum target_xfer_status
3791 linux_xfer_siginfo (enum target_object object,
3792                     const char *annex, gdb_byte *readbuf,
3793                     const gdb_byte *writebuf, ULONGEST offset, ULONGEST len,
3794                     ULONGEST *xfered_len)
3795 {
3796   int pid;
3797   siginfo_t siginfo;
3798   gdb_byte inf_siginfo[sizeof (siginfo_t)];
3799
3800   gdb_assert (object == TARGET_OBJECT_SIGNAL_INFO);
3801   gdb_assert (readbuf || writebuf);
3802
3803   pid = inferior_ptid.lwp ();
3804   if (pid == 0)
3805     pid = inferior_ptid.pid ();
3806
3807   if (offset > sizeof (siginfo))
3808     return TARGET_XFER_E_IO;
3809
3810   errno = 0;
3811   ptrace (PTRACE_GETSIGINFO, pid, (PTRACE_TYPE_ARG3) 0, &siginfo);
3812   if (errno != 0)
3813     return TARGET_XFER_E_IO;
3814
3815   /* When GDB is built as a 64-bit application, ptrace writes into
3816      SIGINFO an object with 64-bit layout.  Since debugging a 32-bit
3817      inferior with a 64-bit GDB should look the same as debugging it
3818      with a 32-bit GDB, we need to convert it.  GDB core always sees
3819      the converted layout, so any read/write will have to be done
3820      post-conversion.  */
3821   siginfo_fixup (&siginfo, inf_siginfo, 0);
3822
3823   if (offset + len > sizeof (siginfo))
3824     len = sizeof (siginfo) - offset;
3825
3826   if (readbuf != NULL)
3827     memcpy (readbuf, inf_siginfo + offset, len);
3828   else
3829     {
3830       memcpy (inf_siginfo + offset, writebuf, len);
3831
3832       /* Convert back to ptrace layout before flushing it out.  */
3833       siginfo_fixup (&siginfo, inf_siginfo, 1);
3834
3835       errno = 0;
3836       ptrace (PTRACE_SETSIGINFO, pid, (PTRACE_TYPE_ARG3) 0, &siginfo);
3837       if (errno != 0)
3838         return TARGET_XFER_E_IO;
3839     }
3840
3841   *xfered_len = len;
3842   return TARGET_XFER_OK;
3843 }
3844
3845 static enum target_xfer_status
3846 linux_nat_xfer_osdata (enum target_object object,
3847                        const char *annex, gdb_byte *readbuf,
3848                        const gdb_byte *writebuf, ULONGEST offset, ULONGEST len,
3849                        ULONGEST *xfered_len);
3850
3851 static enum target_xfer_status
3852 linux_proc_xfer_spu (enum target_object object,
3853                      const char *annex, gdb_byte *readbuf,
3854                      const gdb_byte *writebuf,
3855                      ULONGEST offset, ULONGEST len, ULONGEST *xfered_len);
3856
3857 static enum target_xfer_status
3858 linux_proc_xfer_partial (enum target_object object,
3859                          const char *annex, gdb_byte *readbuf,
3860                          const gdb_byte *writebuf,
3861                          ULONGEST offset, LONGEST len, ULONGEST *xfered_len);
3862
3863 enum target_xfer_status
3864 linux_nat_target::xfer_partial (enum target_object object,
3865                                 const char *annex, gdb_byte *readbuf,
3866                                 const gdb_byte *writebuf,
3867                                 ULONGEST offset, ULONGEST len, ULONGEST *xfered_len)
3868 {
3869   enum target_xfer_status xfer;
3870
3871   if (object == TARGET_OBJECT_SIGNAL_INFO)
3872     return linux_xfer_siginfo (object, annex, readbuf, writebuf,
3873                                offset, len, xfered_len);
3874
3875   /* The target is connected but no live inferior is selected.  Pass
3876      this request down to a lower stratum (e.g., the executable
3877      file).  */
3878   if (object == TARGET_OBJECT_MEMORY && inferior_ptid == null_ptid)
3879     return TARGET_XFER_EOF;
3880
3881   if (object == TARGET_OBJECT_AUXV)
3882     return memory_xfer_auxv (this, object, annex, readbuf, writebuf,
3883                              offset, len, xfered_len);
3884
3885   if (object == TARGET_OBJECT_OSDATA)
3886     return linux_nat_xfer_osdata (object, annex, readbuf, writebuf,
3887                                   offset, len, xfered_len);
3888
3889   if (object == TARGET_OBJECT_SPU)
3890     return linux_proc_xfer_spu (object, annex, readbuf, writebuf,
3891                                 offset, len, xfered_len);
3892
3893   /* GDB calculates all addresses in the largest possible address
3894      width.
3895      The address width must be masked before its final use - either by
3896      linux_proc_xfer_partial or inf_ptrace_target::xfer_partial.
3897
3898      Compare ADDR_BIT first to avoid a compiler warning on shift overflow.  */
3899
3900   if (object == TARGET_OBJECT_MEMORY)
3901     {
3902       int addr_bit = gdbarch_addr_bit (target_gdbarch ());
3903
3904       if (addr_bit < (sizeof (ULONGEST) * HOST_CHAR_BIT))
3905         offset &= ((ULONGEST) 1 << addr_bit) - 1;
3906     }
3907
3908   xfer = linux_proc_xfer_partial (object, annex, readbuf, writebuf,
3909                                   offset, len, xfered_len);
3910   if (xfer != TARGET_XFER_EOF)
3911     return xfer;
3912
3913   return inf_ptrace_target::xfer_partial (object, annex, readbuf, writebuf,
3914                                           offset, len, xfered_len);
3915 }
3916
3917 bool
3918 linux_nat_target::thread_alive (ptid_t ptid)
3919 {
3920   /* As long as a PTID is in lwp list, consider it alive.  */
3921   return find_lwp_pid (ptid) != NULL;
3922 }
3923
3924 /* Implement the to_update_thread_list target method for this
3925    target.  */
3926
3927 void
3928 linux_nat_target::update_thread_list ()
3929 {
3930   struct lwp_info *lwp;
3931
3932   /* We add/delete threads from the list as clone/exit events are
3933      processed, so just try deleting exited threads still in the
3934      thread list.  */
3935   delete_exited_threads ();
3936
3937   /* Update the processor core that each lwp/thread was last seen
3938      running on.  */
3939   ALL_LWPS (lwp)
3940     {
3941       /* Avoid accessing /proc if the thread hasn't run since we last
3942          time we fetched the thread's core.  Accessing /proc becomes
3943          noticeably expensive when we have thousands of LWPs.  */
3944       if (lwp->core == -1)
3945         lwp->core = linux_common_core_of_thread (lwp->ptid);
3946     }
3947 }
3948
3949 std::string
3950 linux_nat_target::pid_to_str (ptid_t ptid)
3951 {
3952   if (ptid.lwp_p ()
3953       && (ptid.pid () != ptid.lwp ()
3954           || num_lwps (ptid.pid ()) > 1))
3955     return string_printf ("LWP %ld", ptid.lwp ());
3956
3957   return normal_pid_to_str (ptid);
3958 }
3959
3960 const char *
3961 linux_nat_target::thread_name (struct thread_info *thr)
3962 {
3963   return linux_proc_tid_get_name (thr->ptid);
3964 }
3965
3966 /* Accepts an integer PID; Returns a string representing a file that
3967    can be opened to get the symbols for the child process.  */
3968
3969 char *
3970 linux_nat_target::pid_to_exec_file (int pid)
3971 {
3972   return linux_proc_pid_to_exec_file (pid);
3973 }
3974
3975 /* Implement the to_xfer_partial target method using /proc/<pid>/mem.
3976    Because we can use a single read/write call, this can be much more
3977    efficient than banging away at PTRACE_PEEKTEXT.  */
3978
3979 static enum target_xfer_status
3980 linux_proc_xfer_partial (enum target_object object,
3981                          const char *annex, gdb_byte *readbuf,
3982                          const gdb_byte *writebuf,
3983                          ULONGEST offset, LONGEST len, ULONGEST *xfered_len)
3984 {
3985   LONGEST ret;
3986   int fd;
3987   char filename[64];
3988
3989   if (object != TARGET_OBJECT_MEMORY)
3990     return TARGET_XFER_EOF;
3991
3992   /* Don't bother for one word.  */
3993   if (len < 3 * sizeof (long))
3994     return TARGET_XFER_EOF;
3995
3996   /* We could keep this file open and cache it - possibly one per
3997      thread.  That requires some juggling, but is even faster.  */
3998   xsnprintf (filename, sizeof filename, "/proc/%ld/mem",
3999              inferior_ptid.lwp ());
4000   fd = gdb_open_cloexec (filename, ((readbuf ? O_RDONLY : O_WRONLY)
4001                                     | O_LARGEFILE), 0);
4002   if (fd == -1)
4003     return TARGET_XFER_EOF;
4004
4005   /* Use pread64/pwrite64 if available, since they save a syscall and can
4006      handle 64-bit offsets even on 32-bit platforms (for instance, SPARC
4007      debugging a SPARC64 application).  */
4008 #ifdef HAVE_PREAD64
4009   ret = (readbuf ? pread64 (fd, readbuf, len, offset)
4010          : pwrite64 (fd, writebuf, len, offset));
4011 #else
4012   ret = lseek (fd, offset, SEEK_SET);
4013   if (ret != -1)
4014     ret = (readbuf ? read (fd, readbuf, len)
4015            : write (fd, writebuf, len));
4016 #endif
4017
4018   close (fd);
4019
4020   if (ret == -1 || ret == 0)
4021     return TARGET_XFER_EOF;
4022   else
4023     {
4024       *xfered_len = ret;
4025       return TARGET_XFER_OK;
4026     }
4027 }
4028
4029
4030 /* Enumerate spufs IDs for process PID.  */
4031 static LONGEST
4032 spu_enumerate_spu_ids (int pid, gdb_byte *buf, ULONGEST offset, ULONGEST len)
4033 {
4034   enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
4035   LONGEST pos = 0;
4036   LONGEST written = 0;
4037   char path[128];
4038   DIR *dir;
4039   struct dirent *entry;
4040
4041   xsnprintf (path, sizeof path, "/proc/%d/fd", pid);
4042   dir = opendir (path);
4043   if (!dir)
4044     return -1;
4045
4046   rewinddir (dir);
4047   while ((entry = readdir (dir)) != NULL)
4048     {
4049       struct stat st;
4050       struct statfs stfs;
4051       int fd;
4052
4053       fd = atoi (entry->d_name);
4054       if (!fd)
4055         continue;
4056
4057       xsnprintf (path, sizeof path, "/proc/%d/fd/%d", pid, fd);
4058       if (stat (path, &st) != 0)
4059         continue;
4060       if (!S_ISDIR (st.st_mode))
4061         continue;
4062
4063       if (statfs (path, &stfs) != 0)
4064         continue;
4065       if (stfs.f_type != SPUFS_MAGIC)
4066         continue;
4067
4068       if (pos >= offset && pos + 4 <= offset + len)
4069         {
4070           store_unsigned_integer (buf + pos - offset, 4, byte_order, fd);
4071           written += 4;
4072         }
4073       pos += 4;
4074     }
4075
4076   closedir (dir);
4077   return written;
4078 }
4079
4080 /* Implement the to_xfer_partial interface for the TARGET_OBJECT_SPU
4081    object type, using the /proc file system.  */
4082
4083 static enum target_xfer_status
4084 linux_proc_xfer_spu (enum target_object object,
4085                      const char *annex, gdb_byte *readbuf,
4086                      const gdb_byte *writebuf,
4087                      ULONGEST offset, ULONGEST len, ULONGEST *xfered_len)
4088 {
4089   char buf[128];
4090   int fd = 0;
4091   int ret = -1;
4092   int pid = inferior_ptid.lwp ();
4093
4094   if (!annex)
4095     {
4096       if (!readbuf)
4097         return TARGET_XFER_E_IO;
4098       else
4099         {
4100           LONGEST l = spu_enumerate_spu_ids (pid, readbuf, offset, len);
4101
4102           if (l < 0)
4103             return TARGET_XFER_E_IO;
4104           else if (l == 0)
4105             return TARGET_XFER_EOF;
4106           else
4107             {
4108               *xfered_len = (ULONGEST) l;
4109               return TARGET_XFER_OK;
4110             }
4111         }
4112     }
4113
4114   xsnprintf (buf, sizeof buf, "/proc/%d/fd/%s", pid, annex);
4115   fd = gdb_open_cloexec (buf, writebuf? O_WRONLY : O_RDONLY, 0);
4116   if (fd <= 0)
4117     return TARGET_XFER_E_IO;
4118
4119   if (offset != 0
4120       && lseek (fd, (off_t) offset, SEEK_SET) != (off_t) offset)
4121     {
4122       close (fd);
4123       return TARGET_XFER_EOF;
4124     }
4125
4126   if (writebuf)
4127     ret = write (fd, writebuf, (size_t) len);
4128   else if (readbuf)
4129     ret = read (fd, readbuf, (size_t) len);
4130
4131   close (fd);
4132
4133   if (ret < 0)
4134     return TARGET_XFER_E_IO;
4135   else if (ret == 0)
4136     return TARGET_XFER_EOF;
4137   else
4138     {
4139       *xfered_len = (ULONGEST) ret;
4140       return TARGET_XFER_OK;
4141     }
4142 }
4143
4144
4145 /* Parse LINE as a signal set and add its set bits to SIGS.  */
4146
4147 static void
4148 add_line_to_sigset (const char *line, sigset_t *sigs)
4149 {
4150   int len = strlen (line) - 1;
4151   const char *p;
4152   int signum;
4153
4154   if (line[len] != '\n')
4155     error (_("Could not parse signal set: %s"), line);
4156
4157   p = line;
4158   signum = len * 4;
4159   while (len-- > 0)
4160     {
4161       int digit;
4162
4163       if (*p >= '0' && *p <= '9')
4164         digit = *p - '0';
4165       else if (*p >= 'a' && *p <= 'f')
4166         digit = *p - 'a' + 10;
4167       else
4168         error (_("Could not parse signal set: %s"), line);
4169
4170       signum -= 4;
4171
4172       if (digit & 1)
4173         sigaddset (sigs, signum + 1);
4174       if (digit & 2)
4175         sigaddset (sigs, signum + 2);
4176       if (digit & 4)
4177         sigaddset (sigs, signum + 3);
4178       if (digit & 8)
4179         sigaddset (sigs, signum + 4);
4180
4181       p++;
4182     }
4183 }
4184
4185 /* Find process PID's pending signals from /proc/pid/status and set
4186    SIGS to match.  */
4187
4188 void
4189 linux_proc_pending_signals (int pid, sigset_t *pending,
4190                             sigset_t *blocked, sigset_t *ignored)
4191 {
4192   char buffer[PATH_MAX], fname[PATH_MAX];
4193
4194   sigemptyset (pending);
4195   sigemptyset (blocked);
4196   sigemptyset (ignored);
4197   xsnprintf (fname, sizeof fname, "/proc/%d/status", pid);
4198   gdb_file_up procfile = gdb_fopen_cloexec (fname, "r");
4199   if (procfile == NULL)
4200     error (_("Could not open %s"), fname);
4201
4202   while (fgets (buffer, PATH_MAX, procfile.get ()) != NULL)
4203     {
4204       /* Normal queued signals are on the SigPnd line in the status
4205          file.  However, 2.6 kernels also have a "shared" pending
4206          queue for delivering signals to a thread group, so check for
4207          a ShdPnd line also.
4208
4209          Unfortunately some Red Hat kernels include the shared pending
4210          queue but not the ShdPnd status field.  */
4211
4212       if (startswith (buffer, "SigPnd:\t"))
4213         add_line_to_sigset (buffer + 8, pending);
4214       else if (startswith (buffer, "ShdPnd:\t"))
4215         add_line_to_sigset (buffer + 8, pending);
4216       else if (startswith (buffer, "SigBlk:\t"))
4217         add_line_to_sigset (buffer + 8, blocked);
4218       else if (startswith (buffer, "SigIgn:\t"))
4219         add_line_to_sigset (buffer + 8, ignored);
4220     }
4221 }
4222
4223 static enum target_xfer_status
4224 linux_nat_xfer_osdata (enum target_object object,
4225                        const char *annex, gdb_byte *readbuf,
4226                        const gdb_byte *writebuf, ULONGEST offset, ULONGEST len,
4227                        ULONGEST *xfered_len)
4228 {
4229   gdb_assert (object == TARGET_OBJECT_OSDATA);
4230
4231   *xfered_len = linux_common_xfer_osdata (annex, readbuf, offset, len);
4232   if (*xfered_len == 0)
4233     return TARGET_XFER_EOF;
4234   else
4235     return TARGET_XFER_OK;
4236 }
4237
4238 std::vector<static_tracepoint_marker>
4239 linux_nat_target::static_tracepoint_markers_by_strid (const char *strid)
4240 {
4241   char s[IPA_CMD_BUF_SIZE];
4242   int pid = inferior_ptid.pid ();
4243   std::vector<static_tracepoint_marker> markers;
4244   const char *p = s;
4245   ptid_t ptid = ptid_t (pid, 0, 0);
4246   static_tracepoint_marker marker;
4247
4248   /* Pause all */
4249   target_stop (ptid);
4250
4251   memcpy (s, "qTfSTM", sizeof ("qTfSTM"));
4252   s[sizeof ("qTfSTM")] = 0;
4253
4254   agent_run_command (pid, s, strlen (s) + 1);
4255
4256   /* Unpause all.  */
4257   SCOPE_EXIT { target_continue_no_signal (ptid); };
4258
4259   while (*p++ == 'm')
4260     {
4261       do
4262         {
4263           parse_static_tracepoint_marker_definition (p, &p, &marker);
4264
4265           if (strid == NULL || marker.str_id == strid)
4266             markers.push_back (std::move (marker));
4267         }
4268       while (*p++ == ',');      /* comma-separated list */
4269
4270       memcpy (s, "qTsSTM", sizeof ("qTsSTM"));
4271       s[sizeof ("qTsSTM")] = 0;
4272       agent_run_command (pid, s, strlen (s) + 1);
4273       p = s;
4274     }
4275
4276   return markers;
4277 }
4278
4279 /* target_is_async_p implementation.  */
4280
4281 bool
4282 linux_nat_target::is_async_p ()
4283 {
4284   return linux_is_async_p ();
4285 }
4286
4287 /* target_can_async_p implementation.  */
4288
4289 bool
4290 linux_nat_target::can_async_p ()
4291 {
4292   /* We're always async, unless the user explicitly prevented it with the
4293      "maint set target-async" command.  */
4294   return target_async_permitted;
4295 }
4296
4297 bool
4298 linux_nat_target::supports_non_stop ()
4299 {
4300   return 1;
4301 }
4302
4303 /* to_always_non_stop_p implementation.  */
4304
4305 bool
4306 linux_nat_target::always_non_stop_p ()
4307 {
4308   return 1;
4309 }
4310
4311 /* True if we want to support multi-process.  To be removed when GDB
4312    supports multi-exec.  */
4313
4314 int linux_multi_process = 1;
4315
4316 bool
4317 linux_nat_target::supports_multi_process ()
4318 {
4319   return linux_multi_process;
4320 }
4321
4322 bool
4323 linux_nat_target::supports_disable_randomization ()
4324 {
4325 #ifdef HAVE_PERSONALITY
4326   return 1;
4327 #else
4328   return 0;
4329 #endif
4330 }
4331
4332 /* SIGCHLD handler that serves two purposes: In non-stop/async mode,
4333    so we notice when any child changes state, and notify the
4334    event-loop; it allows us to use sigsuspend in linux_nat_wait_1
4335    above to wait for the arrival of a SIGCHLD.  */
4336
4337 static void
4338 sigchld_handler (int signo)
4339 {
4340   int old_errno = errno;
4341
4342   if (debug_linux_nat)
4343     ui_file_write_async_safe (gdb_stdlog,
4344                               "sigchld\n", sizeof ("sigchld\n") - 1);
4345
4346   if (signo == SIGCHLD
4347       && linux_nat_event_pipe[0] != -1)
4348     async_file_mark (); /* Let the event loop know that there are
4349                            events to handle.  */
4350
4351   errno = old_errno;
4352 }
4353
4354 /* Callback registered with the target events file descriptor.  */
4355
4356 static void
4357 handle_target_event (int error, gdb_client_data client_data)
4358 {
4359   inferior_event_handler (INF_REG_EVENT, NULL);
4360 }
4361
4362 /* Create/destroy the target events pipe.  Returns previous state.  */
4363
4364 static int
4365 linux_async_pipe (int enable)
4366 {
4367   int previous = linux_is_async_p ();
4368
4369   if (previous != enable)
4370     {
4371       sigset_t prev_mask;
4372
4373       /* Block child signals while we create/destroy the pipe, as
4374          their handler writes to it.  */
4375       block_child_signals (&prev_mask);
4376
4377       if (enable)
4378         {
4379           if (gdb_pipe_cloexec (linux_nat_event_pipe) == -1)
4380             internal_error (__FILE__, __LINE__,
4381                             "creating event pipe failed.");
4382
4383           fcntl (linux_nat_event_pipe[0], F_SETFL, O_NONBLOCK);
4384           fcntl (linux_nat_event_pipe[1], F_SETFL, O_NONBLOCK);
4385         }
4386       else
4387         {
4388           close (linux_nat_event_pipe[0]);
4389           close (linux_nat_event_pipe[1]);
4390           linux_nat_event_pipe[0] = -1;
4391           linux_nat_event_pipe[1] = -1;
4392         }
4393
4394       restore_child_signals_mask (&prev_mask);
4395     }
4396
4397   return previous;
4398 }
4399
4400 /* target_async implementation.  */
4401
4402 void
4403 linux_nat_target::async (int enable)
4404 {
4405   if (enable)
4406     {
4407       if (!linux_async_pipe (1))
4408         {
4409           add_file_handler (linux_nat_event_pipe[0],
4410                             handle_target_event, NULL);
4411           /* There may be pending events to handle.  Tell the event loop
4412              to poll them.  */
4413           async_file_mark ();
4414         }
4415     }
4416   else
4417     {
4418       delete_file_handler (linux_nat_event_pipe[0]);
4419       linux_async_pipe (0);
4420     }
4421   return;
4422 }
4423
4424 /* Stop an LWP, and push a GDB_SIGNAL_0 stop status if no other
4425    event came out.  */
4426
4427 static int
4428 linux_nat_stop_lwp (struct lwp_info *lwp)
4429 {
4430   if (!lwp->stopped)
4431     {
4432       if (debug_linux_nat)
4433         fprintf_unfiltered (gdb_stdlog,
4434                             "LNSL: running -> suspending %s\n",
4435                             target_pid_to_str (lwp->ptid).c_str ());
4436
4437
4438       if (lwp->last_resume_kind == resume_stop)
4439         {
4440           if (debug_linux_nat)
4441             fprintf_unfiltered (gdb_stdlog,
4442                                 "linux-nat: already stopping LWP %ld at "
4443                                 "GDB's request\n",
4444                                 lwp->ptid.lwp ());
4445           return 0;
4446         }
4447
4448       stop_callback (lwp);
4449       lwp->last_resume_kind = resume_stop;
4450     }
4451   else
4452     {
4453       /* Already known to be stopped; do nothing.  */
4454
4455       if (debug_linux_nat)
4456         {
4457           if (find_thread_ptid (lwp->ptid)->stop_requested)
4458             fprintf_unfiltered (gdb_stdlog,
4459                                 "LNSL: already stopped/stop_requested %s\n",
4460                                 target_pid_to_str (lwp->ptid).c_str ());
4461           else
4462             fprintf_unfiltered (gdb_stdlog,
4463                                 "LNSL: already stopped/no "
4464                                 "stop_requested yet %s\n",
4465                                 target_pid_to_str (lwp->ptid).c_str ());
4466         }
4467     }
4468   return 0;
4469 }
4470
4471 void
4472 linux_nat_target::stop (ptid_t ptid)
4473 {
4474   iterate_over_lwps (ptid, linux_nat_stop_lwp);
4475 }
4476
4477 void
4478 linux_nat_target::close ()
4479 {
4480   /* Unregister from the event loop.  */
4481   if (is_async_p ())
4482     async (0);
4483
4484   inf_ptrace_target::close ();
4485 }
4486
4487 /* When requests are passed down from the linux-nat layer to the
4488    single threaded inf-ptrace layer, ptids of (lwpid,0,0) form are
4489    used.  The address space pointer is stored in the inferior object,
4490    but the common code that is passed such ptid can't tell whether
4491    lwpid is a "main" process id or not (it assumes so).  We reverse
4492    look up the "main" process id from the lwp here.  */
4493
4494 struct address_space *
4495 linux_nat_target::thread_address_space (ptid_t ptid)
4496 {
4497   struct lwp_info *lwp;
4498   struct inferior *inf;
4499   int pid;
4500
4501   if (ptid.lwp () == 0)
4502     {
4503       /* An (lwpid,0,0) ptid.  Look up the lwp object to get at the
4504          tgid.  */
4505       lwp = find_lwp_pid (ptid);
4506       pid = lwp->ptid.pid ();
4507     }
4508   else
4509     {
4510       /* A (pid,lwpid,0) ptid.  */
4511       pid = ptid.pid ();
4512     }
4513
4514   inf = find_inferior_pid (pid);
4515   gdb_assert (inf != NULL);
4516   return inf->aspace;
4517 }
4518
4519 /* Return the cached value of the processor core for thread PTID.  */
4520
4521 int
4522 linux_nat_target::core_of_thread (ptid_t ptid)
4523 {
4524   struct lwp_info *info = find_lwp_pid (ptid);
4525
4526   if (info)
4527     return info->core;
4528   return -1;
4529 }
4530
4531 /* Implementation of to_filesystem_is_local.  */
4532
4533 bool
4534 linux_nat_target::filesystem_is_local ()
4535 {
4536   struct inferior *inf = current_inferior ();
4537
4538   if (inf->fake_pid_p || inf->pid == 0)
4539     return true;
4540
4541   return linux_ns_same (inf->pid, LINUX_NS_MNT);
4542 }
4543
4544 /* Convert the INF argument passed to a to_fileio_* method
4545    to a process ID suitable for passing to its corresponding
4546    linux_mntns_* function.  If INF is non-NULL then the
4547    caller is requesting the filesystem seen by INF.  If INF
4548    is NULL then the caller is requesting the filesystem seen
4549    by the GDB.  We fall back to GDB's filesystem in the case
4550    that INF is non-NULL but its PID is unknown.  */
4551
4552 static pid_t
4553 linux_nat_fileio_pid_of (struct inferior *inf)
4554 {
4555   if (inf == NULL || inf->fake_pid_p || inf->pid == 0)
4556     return getpid ();
4557   else
4558     return inf->pid;
4559 }
4560
4561 /* Implementation of to_fileio_open.  */
4562
4563 int
4564 linux_nat_target::fileio_open (struct inferior *inf, const char *filename,
4565                                int flags, int mode, int warn_if_slow,
4566                                int *target_errno)
4567 {
4568   int nat_flags;
4569   mode_t nat_mode;
4570   int fd;
4571
4572   if (fileio_to_host_openflags (flags, &nat_flags) == -1
4573       || fileio_to_host_mode (mode, &nat_mode) == -1)
4574     {
4575       *target_errno = FILEIO_EINVAL;
4576       return -1;
4577     }
4578
4579   fd = linux_mntns_open_cloexec (linux_nat_fileio_pid_of (inf),
4580                                  filename, nat_flags, nat_mode);
4581   if (fd == -1)
4582     *target_errno = host_to_fileio_error (errno);
4583
4584   return fd;
4585 }
4586
4587 /* Implementation of to_fileio_readlink.  */
4588
4589 gdb::optional<std::string>
4590 linux_nat_target::fileio_readlink (struct inferior *inf, const char *filename,
4591                                    int *target_errno)
4592 {
4593   char buf[PATH_MAX];
4594   int len;
4595
4596   len = linux_mntns_readlink (linux_nat_fileio_pid_of (inf),
4597                               filename, buf, sizeof (buf));
4598   if (len < 0)
4599     {
4600       *target_errno = host_to_fileio_error (errno);
4601       return {};
4602     }
4603
4604   return std::string (buf, len);
4605 }
4606
4607 /* Implementation of to_fileio_unlink.  */
4608
4609 int
4610 linux_nat_target::fileio_unlink (struct inferior *inf, const char *filename,
4611                                  int *target_errno)
4612 {
4613   int ret;
4614
4615   ret = linux_mntns_unlink (linux_nat_fileio_pid_of (inf),
4616                             filename);
4617   if (ret == -1)
4618     *target_errno = host_to_fileio_error (errno);
4619
4620   return ret;
4621 }
4622
4623 /* Implementation of the to_thread_events method.  */
4624
4625 void
4626 linux_nat_target::thread_events (int enable)
4627 {
4628   report_thread_events = enable;
4629 }
4630
4631 linux_nat_target::linux_nat_target ()
4632 {
4633   /* We don't change the stratum; this target will sit at
4634      process_stratum and thread_db will set at thread_stratum.  This
4635      is a little strange, since this is a multi-threaded-capable
4636      target, but we want to be on the stack below thread_db, and we
4637      also want to be used for single-threaded processes.  */
4638 }
4639
4640 /* See linux-nat.h.  */
4641
4642 int
4643 linux_nat_get_siginfo (ptid_t ptid, siginfo_t *siginfo)
4644 {
4645   int pid;
4646
4647   pid = ptid.lwp ();
4648   if (pid == 0)
4649     pid = ptid.pid ();
4650
4651   errno = 0;
4652   ptrace (PTRACE_GETSIGINFO, pid, (PTRACE_TYPE_ARG3) 0, siginfo);
4653   if (errno != 0)
4654     {
4655       memset (siginfo, 0, sizeof (*siginfo));
4656       return 0;
4657     }
4658   return 1;
4659 }
4660
4661 /* See nat/linux-nat.h.  */
4662
4663 ptid_t
4664 current_lwp_ptid (void)
4665 {
4666   gdb_assert (inferior_ptid.lwp_p ());
4667   return inferior_ptid;
4668 }
4669
4670 void
4671 _initialize_linux_nat (void)
4672 {
4673   add_setshow_zuinteger_cmd ("lin-lwp", class_maintenance,
4674                              &debug_linux_nat, _("\
4675 Set debugging of GNU/Linux lwp module."), _("\
4676 Show debugging of GNU/Linux lwp module."), _("\
4677 Enables printf debugging output."),
4678                              NULL,
4679                              show_debug_linux_nat,
4680                              &setdebuglist, &showdebuglist);
4681
4682   add_setshow_boolean_cmd ("linux-namespaces", class_maintenance,
4683                            &debug_linux_namespaces, _("\
4684 Set debugging of GNU/Linux namespaces module."), _("\
4685 Show debugging of GNU/Linux namespaces module."), _("\
4686 Enables printf debugging output."),
4687                            NULL,
4688                            NULL,
4689                            &setdebuglist, &showdebuglist);
4690
4691   /* Save this mask as the default.  */
4692   sigprocmask (SIG_SETMASK, NULL, &normal_mask);
4693
4694   /* Install a SIGCHLD handler.  */
4695   sigchld_action.sa_handler = sigchld_handler;
4696   sigemptyset (&sigchld_action.sa_mask);
4697   sigchld_action.sa_flags = SA_RESTART;
4698
4699   /* Make it the default.  */
4700   sigaction (SIGCHLD, &sigchld_action, NULL);
4701
4702   /* Make sure we don't block SIGCHLD during a sigsuspend.  */
4703   sigprocmask (SIG_SETMASK, NULL, &suspend_mask);
4704   sigdelset (&suspend_mask, SIGCHLD);
4705
4706   sigemptyset (&blocked_mask);
4707
4708   lwp_lwpid_htab_create ();
4709 }
4710 \f
4711
4712 /* FIXME: kettenis/2000-08-26: The stuff on this page is specific to
4713    the GNU/Linux Threads library and therefore doesn't really belong
4714    here.  */
4715
4716 /* Return the set of signals used by the threads library in *SET.  */
4717
4718 void
4719 lin_thread_get_thread_signals (sigset_t *set)
4720 {
4721   sigemptyset (set);
4722
4723   /* NPTL reserves the first two RT signals, but does not provide any
4724      way for the debugger to query the signal numbers - fortunately
4725      they don't change.  */
4726   sigaddset (set, __SIGRTMIN);
4727   sigaddset (set, __SIGRTMIN + 1);
4728 }