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