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