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