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