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