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