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