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