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