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