gdbserver: Leave already-vCont-resumed threads as they were
[external/binutils.git] / gdb / gdbserver / linux-low.c
1 /* Low level interface to ptrace, for the remote server for GDB.
2    Copyright (C) 1995-2016 Free Software Foundation, Inc.
3
4    This file is part of GDB.
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 3 of the License, or
9    (at your option) any later version.
10
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
18
19 #include "server.h"
20 #include "linux-low.h"
21 #include "nat/linux-osdata.h"
22 #include "agent.h"
23 #include "tdesc.h"
24 #include "rsp-low.h"
25 #include "signals-state-save-restore.h"
26 #include "nat/linux-nat.h"
27 #include "nat/linux-waitpid.h"
28 #include "gdb_wait.h"
29 #include "nat/gdb_ptrace.h"
30 #include "nat/linux-ptrace.h"
31 #include "nat/linux-procfs.h"
32 #include "nat/linux-personality.h"
33 #include <signal.h>
34 #include <sys/ioctl.h>
35 #include <fcntl.h>
36 #include <unistd.h>
37 #include <sys/syscall.h>
38 #include <sched.h>
39 #include <ctype.h>
40 #include <pwd.h>
41 #include <sys/types.h>
42 #include <dirent.h>
43 #include <sys/stat.h>
44 #include <sys/vfs.h>
45 #include <sys/uio.h>
46 #include "filestuff.h"
47 #include "tracepoint.h"
48 #include "hostio.h"
49 #include <inttypes.h>
50 #ifndef ELFMAG0
51 /* Don't include <linux/elf.h> here.  If it got included by gdb_proc_service.h
52    then ELFMAG0 will have been defined.  If it didn't get included by
53    gdb_proc_service.h then including it will likely introduce a duplicate
54    definition of elf_fpregset_t.  */
55 #include <elf.h>
56 #endif
57 #include "nat/linux-namespaces.h"
58
59 #ifndef SPUFS_MAGIC
60 #define SPUFS_MAGIC 0x23c9b64e
61 #endif
62
63 #ifdef HAVE_PERSONALITY
64 # include <sys/personality.h>
65 # if !HAVE_DECL_ADDR_NO_RANDOMIZE
66 #  define ADDR_NO_RANDOMIZE 0x0040000
67 # endif
68 #endif
69
70 #ifndef O_LARGEFILE
71 #define O_LARGEFILE 0
72 #endif
73
74 /* Some targets did not define these ptrace constants from the start,
75    so gdbserver defines them locally here.  In the future, these may
76    be removed after they are added to asm/ptrace.h.  */
77 #if !(defined(PT_TEXT_ADDR) \
78       || defined(PT_DATA_ADDR) \
79       || defined(PT_TEXT_END_ADDR))
80 #if defined(__mcoldfire__)
81 /* These are still undefined in 3.10 kernels.  */
82 #define PT_TEXT_ADDR 49*4
83 #define PT_DATA_ADDR 50*4
84 #define PT_TEXT_END_ADDR  51*4
85 /* BFIN already defines these since at least 2.6.32 kernels.  */
86 #elif defined(BFIN)
87 #define PT_TEXT_ADDR 220
88 #define PT_TEXT_END_ADDR 224
89 #define PT_DATA_ADDR 228
90 /* These are still undefined in 3.10 kernels.  */
91 #elif defined(__TMS320C6X__)
92 #define PT_TEXT_ADDR     (0x10000*4)
93 #define PT_DATA_ADDR     (0x10004*4)
94 #define PT_TEXT_END_ADDR (0x10008*4)
95 #endif
96 #endif
97
98 #ifdef HAVE_LINUX_BTRACE
99 # include "nat/linux-btrace.h"
100 # include "btrace-common.h"
101 #endif
102
103 #ifndef HAVE_ELF32_AUXV_T
104 /* Copied from glibc's elf.h.  */
105 typedef struct
106 {
107   uint32_t a_type;              /* Entry type */
108   union
109     {
110       uint32_t a_val;           /* Integer value */
111       /* We use to have pointer elements added here.  We cannot do that,
112          though, since it does not work when using 32-bit definitions
113          on 64-bit platforms and vice versa.  */
114     } a_un;
115 } Elf32_auxv_t;
116 #endif
117
118 #ifndef HAVE_ELF64_AUXV_T
119 /* Copied from glibc's elf.h.  */
120 typedef struct
121 {
122   uint64_t a_type;              /* Entry type */
123   union
124     {
125       uint64_t a_val;           /* Integer value */
126       /* We use to have pointer elements added here.  We cannot do that,
127          though, since it does not work when using 32-bit definitions
128          on 64-bit platforms and vice versa.  */
129     } a_un;
130 } Elf64_auxv_t;
131 #endif
132
133 /* Does the current host support PTRACE_GETREGSET?  */
134 int have_ptrace_getregset = -1;
135
136 /* LWP accessors.  */
137
138 /* See nat/linux-nat.h.  */
139
140 ptid_t
141 ptid_of_lwp (struct lwp_info *lwp)
142 {
143   return ptid_of (get_lwp_thread (lwp));
144 }
145
146 /* See nat/linux-nat.h.  */
147
148 void
149 lwp_set_arch_private_info (struct lwp_info *lwp,
150                            struct arch_lwp_info *info)
151 {
152   lwp->arch_private = info;
153 }
154
155 /* See nat/linux-nat.h.  */
156
157 struct arch_lwp_info *
158 lwp_arch_private_info (struct lwp_info *lwp)
159 {
160   return lwp->arch_private;
161 }
162
163 /* See nat/linux-nat.h.  */
164
165 int
166 lwp_is_stopped (struct lwp_info *lwp)
167 {
168   return lwp->stopped;
169 }
170
171 /* See nat/linux-nat.h.  */
172
173 enum target_stop_reason
174 lwp_stop_reason (struct lwp_info *lwp)
175 {
176   return lwp->stop_reason;
177 }
178
179 /* See nat/linux-nat.h.  */
180
181 int
182 lwp_is_stepping (struct lwp_info *lwp)
183 {
184   return lwp->stepping;
185 }
186
187 /* A list of all unknown processes which receive stop signals.  Some
188    other process will presumably claim each of these as forked
189    children momentarily.  */
190
191 struct simple_pid_list
192 {
193   /* The process ID.  */
194   int pid;
195
196   /* The status as reported by waitpid.  */
197   int status;
198
199   /* Next in chain.  */
200   struct simple_pid_list *next;
201 };
202 struct simple_pid_list *stopped_pids;
203
204 /* Trivial list manipulation functions to keep track of a list of new
205    stopped processes.  */
206
207 static void
208 add_to_pid_list (struct simple_pid_list **listp, int pid, int status)
209 {
210   struct simple_pid_list *new_pid = XNEW (struct simple_pid_list);
211
212   new_pid->pid = pid;
213   new_pid->status = status;
214   new_pid->next = *listp;
215   *listp = new_pid;
216 }
217
218 static int
219 pull_pid_from_list (struct simple_pid_list **listp, int pid, int *statusp)
220 {
221   struct simple_pid_list **p;
222
223   for (p = listp; *p != NULL; p = &(*p)->next)
224     if ((*p)->pid == pid)
225       {
226         struct simple_pid_list *next = (*p)->next;
227
228         *statusp = (*p)->status;
229         xfree (*p);
230         *p = next;
231         return 1;
232       }
233   return 0;
234 }
235
236 enum stopping_threads_kind
237   {
238     /* Not stopping threads presently.  */
239     NOT_STOPPING_THREADS,
240
241     /* Stopping threads.  */
242     STOPPING_THREADS,
243
244     /* Stopping and suspending threads.  */
245     STOPPING_AND_SUSPENDING_THREADS
246   };
247
248 /* This is set while stop_all_lwps is in effect.  */
249 enum stopping_threads_kind stopping_threads = NOT_STOPPING_THREADS;
250
251 /* FIXME make into a target method?  */
252 int using_threads = 1;
253
254 /* True if we're presently stabilizing threads (moving them out of
255    jump pads).  */
256 static int stabilizing_threads;
257
258 static void linux_resume_one_lwp (struct lwp_info *lwp,
259                                   int step, int signal, siginfo_t *info);
260 static void linux_resume (struct thread_resume *resume_info, size_t n);
261 static void stop_all_lwps (int suspend, struct lwp_info *except);
262 static void unstop_all_lwps (int unsuspend, struct lwp_info *except);
263 static void unsuspend_all_lwps (struct lwp_info *except);
264 static int linux_wait_for_event_filtered (ptid_t wait_ptid, ptid_t filter_ptid,
265                                           int *wstat, int options);
266 static int linux_wait_for_event (ptid_t ptid, int *wstat, int options);
267 static struct lwp_info *add_lwp (ptid_t ptid);
268 static void linux_mourn (struct process_info *process);
269 static int linux_stopped_by_watchpoint (void);
270 static void mark_lwp_dead (struct lwp_info *lwp, int wstat);
271 static int lwp_is_marked_dead (struct lwp_info *lwp);
272 static void proceed_all_lwps (void);
273 static int finish_step_over (struct lwp_info *lwp);
274 static int kill_lwp (unsigned long lwpid, int signo);
275 static void enqueue_pending_signal (struct lwp_info *lwp, int signal, siginfo_t *info);
276 static void complete_ongoing_step_over (void);
277 static int linux_low_ptrace_options (int attached);
278 static int check_ptrace_stopped_lwp_gone (struct lwp_info *lp);
279 static int proceed_one_lwp (struct inferior_list_entry *entry, void *except);
280
281 /* When the event-loop is doing a step-over, this points at the thread
282    being stepped.  */
283 ptid_t step_over_bkpt;
284
285 /* True if the low target can hardware single-step.  */
286
287 static int
288 can_hardware_single_step (void)
289 {
290   if (the_low_target.supports_hardware_single_step != NULL)
291     return the_low_target.supports_hardware_single_step ();
292   else
293     return 0;
294 }
295
296 /* True if the low target can software single-step.  Such targets
297    implement the GET_NEXT_PCS callback.  */
298
299 static int
300 can_software_single_step (void)
301 {
302   return (the_low_target.get_next_pcs != NULL);
303 }
304
305 /* True if the low target supports memory breakpoints.  If so, we'll
306    have a GET_PC implementation.  */
307
308 static int
309 supports_breakpoints (void)
310 {
311   return (the_low_target.get_pc != NULL);
312 }
313
314 /* Returns true if this target can support fast tracepoints.  This
315    does not mean that the in-process agent has been loaded in the
316    inferior.  */
317
318 static int
319 supports_fast_tracepoints (void)
320 {
321   return the_low_target.install_fast_tracepoint_jump_pad != NULL;
322 }
323
324 /* True if LWP is stopped in its stepping range.  */
325
326 static int
327 lwp_in_step_range (struct lwp_info *lwp)
328 {
329   CORE_ADDR pc = lwp->stop_pc;
330
331   return (pc >= lwp->step_range_start && pc < lwp->step_range_end);
332 }
333
334 struct pending_signals
335 {
336   int signal;
337   siginfo_t info;
338   struct pending_signals *prev;
339 };
340
341 /* The read/write ends of the pipe registered as waitable file in the
342    event loop.  */
343 static int linux_event_pipe[2] = { -1, -1 };
344
345 /* True if we're currently in async mode.  */
346 #define target_is_async_p() (linux_event_pipe[0] != -1)
347
348 static void send_sigstop (struct lwp_info *lwp);
349 static void wait_for_sigstop (void);
350
351 /* Return non-zero if HEADER is a 64-bit ELF file.  */
352
353 static int
354 elf_64_header_p (const Elf64_Ehdr *header, unsigned int *machine)
355 {
356   if (header->e_ident[EI_MAG0] == ELFMAG0
357       && header->e_ident[EI_MAG1] == ELFMAG1
358       && header->e_ident[EI_MAG2] == ELFMAG2
359       && header->e_ident[EI_MAG3] == ELFMAG3)
360     {
361       *machine = header->e_machine;
362       return header->e_ident[EI_CLASS] == ELFCLASS64;
363
364     }
365   *machine = EM_NONE;
366   return -1;
367 }
368
369 /* Return non-zero if FILE is a 64-bit ELF file,
370    zero if the file is not a 64-bit ELF file,
371    and -1 if the file is not accessible or doesn't exist.  */
372
373 static int
374 elf_64_file_p (const char *file, unsigned int *machine)
375 {
376   Elf64_Ehdr header;
377   int fd;
378
379   fd = open (file, O_RDONLY);
380   if (fd < 0)
381     return -1;
382
383   if (read (fd, &header, sizeof (header)) != sizeof (header))
384     {
385       close (fd);
386       return 0;
387     }
388   close (fd);
389
390   return elf_64_header_p (&header, machine);
391 }
392
393 /* Accepts an integer PID; Returns true if the executable PID is
394    running is a 64-bit ELF file..  */
395
396 int
397 linux_pid_exe_is_elf_64_file (int pid, unsigned int *machine)
398 {
399   char file[PATH_MAX];
400
401   sprintf (file, "/proc/%d/exe", pid);
402   return elf_64_file_p (file, machine);
403 }
404
405 static void
406 delete_lwp (struct lwp_info *lwp)
407 {
408   struct thread_info *thr = get_lwp_thread (lwp);
409
410   if (debug_threads)
411     debug_printf ("deleting %ld\n", lwpid_of (thr));
412
413   remove_thread (thr);
414   free (lwp->arch_private);
415   free (lwp);
416 }
417
418 /* Add a process to the common process list, and set its private
419    data.  */
420
421 static struct process_info *
422 linux_add_process (int pid, int attached)
423 {
424   struct process_info *proc;
425
426   proc = add_process (pid, attached);
427   proc->priv = XCNEW (struct process_info_private);
428
429   if (the_low_target.new_process != NULL)
430     proc->priv->arch_private = the_low_target.new_process ();
431
432   return proc;
433 }
434
435 static CORE_ADDR get_pc (struct lwp_info *lwp);
436
437 /* Call the target arch_setup function on the current thread.  */
438
439 static void
440 linux_arch_setup (void)
441 {
442   the_low_target.arch_setup ();
443 }
444
445 /* Call the target arch_setup function on THREAD.  */
446
447 static void
448 linux_arch_setup_thread (struct thread_info *thread)
449 {
450   struct thread_info *saved_thread;
451
452   saved_thread = current_thread;
453   current_thread = thread;
454
455   linux_arch_setup ();
456
457   current_thread = saved_thread;
458 }
459
460 /* Handle a GNU/Linux extended wait response.  If we see a clone,
461    fork, or vfork event, we need to add the new LWP to our list
462    (and return 0 so as not to report the trap to higher layers).
463    If we see an exec event, we will modify ORIG_EVENT_LWP to point
464    to a new LWP representing the new program.  */
465
466 static int
467 handle_extended_wait (struct lwp_info **orig_event_lwp, int wstat)
468 {
469   struct lwp_info *event_lwp = *orig_event_lwp;
470   int event = linux_ptrace_get_extended_event (wstat);
471   struct thread_info *event_thr = get_lwp_thread (event_lwp);
472   struct lwp_info *new_lwp;
473
474   gdb_assert (event_lwp->waitstatus.kind == TARGET_WAITKIND_IGNORE);
475
476   /* All extended events we currently use are mid-syscall.  Only
477      PTRACE_EVENT_STOP is delivered more like a signal-stop, but
478      you have to be using PTRACE_SEIZE to get that.  */
479   event_lwp->syscall_state = TARGET_WAITKIND_SYSCALL_ENTRY;
480
481   if ((event == PTRACE_EVENT_FORK) || (event == PTRACE_EVENT_VFORK)
482       || (event == PTRACE_EVENT_CLONE))
483     {
484       ptid_t ptid;
485       unsigned long new_pid;
486       int ret, status;
487
488       /* Get the pid of the new lwp.  */
489       ptrace (PTRACE_GETEVENTMSG, lwpid_of (event_thr), (PTRACE_TYPE_ARG3) 0,
490               &new_pid);
491
492       /* If we haven't already seen the new PID stop, wait for it now.  */
493       if (!pull_pid_from_list (&stopped_pids, new_pid, &status))
494         {
495           /* The new child has a pending SIGSTOP.  We can't affect it until it
496              hits the SIGSTOP, but we're already attached.  */
497
498           ret = my_waitpid (new_pid, &status, __WALL);
499
500           if (ret == -1)
501             perror_with_name ("waiting for new child");
502           else if (ret != new_pid)
503             warning ("wait returned unexpected PID %d", ret);
504           else if (!WIFSTOPPED (status))
505             warning ("wait returned unexpected status 0x%x", status);
506         }
507
508       if (event == PTRACE_EVENT_FORK || event == PTRACE_EVENT_VFORK)
509         {
510           struct process_info *parent_proc;
511           struct process_info *child_proc;
512           struct lwp_info *child_lwp;
513           struct thread_info *child_thr;
514           struct target_desc *tdesc;
515
516           ptid = ptid_build (new_pid, new_pid, 0);
517
518           if (debug_threads)
519             {
520               debug_printf ("HEW: Got fork event from LWP %ld, "
521                             "new child is %d\n",
522                             ptid_get_lwp (ptid_of (event_thr)),
523                             ptid_get_pid (ptid));
524             }
525
526           /* Add the new process to the tables and clone the breakpoint
527              lists of the parent.  We need to do this even if the new process
528              will be detached, since we will need the process object and the
529              breakpoints to remove any breakpoints from memory when we
530              detach, and the client side will access registers.  */
531           child_proc = linux_add_process (new_pid, 0);
532           gdb_assert (child_proc != NULL);
533           child_lwp = add_lwp (ptid);
534           gdb_assert (child_lwp != NULL);
535           child_lwp->stopped = 1;
536           child_lwp->must_set_ptrace_flags = 1;
537           child_lwp->status_pending_p = 0;
538           child_thr = get_lwp_thread (child_lwp);
539           child_thr->last_resume_kind = resume_stop;
540           child_thr->last_status.kind = TARGET_WAITKIND_STOPPED;
541
542           /* If we're suspending all threads, leave this one suspended
543              too.  If the fork/clone parent is stepping over a breakpoint,
544              all other threads have been suspended already.  Leave the
545              child suspended too.  */
546           if (stopping_threads == STOPPING_AND_SUSPENDING_THREADS
547               || event_lwp->bp_reinsert != 0)
548             {
549               if (debug_threads)
550                 debug_printf ("HEW: leaving child suspended\n");
551               child_lwp->suspended = 1;
552             }
553
554           parent_proc = get_thread_process (event_thr);
555           child_proc->attached = parent_proc->attached;
556
557           if (event_lwp->bp_reinsert != 0
558               && can_software_single_step ()
559               && event == PTRACE_EVENT_VFORK)
560             {
561               /* If we leave single-step breakpoints there, child will
562                  hit it, so uninsert single-step breakpoints from parent
563                  (and child).  Once vfork child is done, reinsert
564                  them back to parent.  */
565               uninsert_single_step_breakpoints (event_thr);
566             }
567
568           clone_all_breakpoints (child_thr, event_thr);
569
570           tdesc = XNEW (struct target_desc);
571           copy_target_description (tdesc, parent_proc->tdesc);
572           child_proc->tdesc = tdesc;
573
574           /* Clone arch-specific process data.  */
575           if (the_low_target.new_fork != NULL)
576             the_low_target.new_fork (parent_proc, child_proc);
577
578           /* Save fork info in the parent thread.  */
579           if (event == PTRACE_EVENT_FORK)
580             event_lwp->waitstatus.kind = TARGET_WAITKIND_FORKED;
581           else if (event == PTRACE_EVENT_VFORK)
582             event_lwp->waitstatus.kind = TARGET_WAITKIND_VFORKED;
583
584           event_lwp->waitstatus.value.related_pid = ptid;
585
586           /* The status_pending field contains bits denoting the
587              extended event, so when the pending event is handled,
588              the handler will look at lwp->waitstatus.  */
589           event_lwp->status_pending_p = 1;
590           event_lwp->status_pending = wstat;
591
592           /* Link the threads until the parent event is passed on to
593              higher layers.  */
594           event_lwp->fork_relative = child_lwp;
595           child_lwp->fork_relative = event_lwp;
596
597           /* If the parent thread is doing step-over with single-step
598              breakpoints, the list of single-step breakpoints are cloned
599              from the parent's.  Remove them from the child process.
600              In case of vfork, we'll reinsert them back once vforked
601              child is done.  */
602           if (event_lwp->bp_reinsert != 0
603               && can_software_single_step ())
604             {
605               /* The child process is forked and stopped, so it is safe
606                  to access its memory without stopping all other threads
607                  from other processes.  */
608               delete_single_step_breakpoints (child_thr);
609
610               gdb_assert (has_single_step_breakpoints (event_thr));
611               gdb_assert (!has_single_step_breakpoints (child_thr));
612             }
613
614           /* Report the event.  */
615           return 0;
616         }
617
618       if (debug_threads)
619         debug_printf ("HEW: Got clone event "
620                       "from LWP %ld, new child is LWP %ld\n",
621                       lwpid_of (event_thr), new_pid);
622
623       ptid = ptid_build (pid_of (event_thr), new_pid, 0);
624       new_lwp = add_lwp (ptid);
625
626       /* Either we're going to immediately resume the new thread
627          or leave it stopped.  linux_resume_one_lwp is a nop if it
628          thinks the thread is currently running, so set this first
629          before calling linux_resume_one_lwp.  */
630       new_lwp->stopped = 1;
631
632       /* If we're suspending all threads, leave this one suspended
633          too.  If the fork/clone parent is stepping over a breakpoint,
634          all other threads have been suspended already.  Leave the
635          child suspended too.  */
636       if (stopping_threads == STOPPING_AND_SUSPENDING_THREADS
637           || event_lwp->bp_reinsert != 0)
638         new_lwp->suspended = 1;
639
640       /* Normally we will get the pending SIGSTOP.  But in some cases
641          we might get another signal delivered to the group first.
642          If we do get another signal, be sure not to lose it.  */
643       if (WSTOPSIG (status) != SIGSTOP)
644         {
645           new_lwp->stop_expected = 1;
646           new_lwp->status_pending_p = 1;
647           new_lwp->status_pending = status;
648         }
649       else if (report_thread_events)
650         {
651           new_lwp->waitstatus.kind = TARGET_WAITKIND_THREAD_CREATED;
652           new_lwp->status_pending_p = 1;
653           new_lwp->status_pending = status;
654         }
655
656       /* Don't report the event.  */
657       return 1;
658     }
659   else if (event == PTRACE_EVENT_VFORK_DONE)
660     {
661       event_lwp->waitstatus.kind = TARGET_WAITKIND_VFORK_DONE;
662
663       if (event_lwp->bp_reinsert != 0 && can_software_single_step ())
664         {
665           reinsert_single_step_breakpoints (event_thr);
666
667           gdb_assert (has_single_step_breakpoints (event_thr));
668         }
669
670       /* Report the event.  */
671       return 0;
672     }
673   else if (event == PTRACE_EVENT_EXEC && report_exec_events)
674     {
675       struct process_info *proc;
676       VEC (int) *syscalls_to_catch;
677       ptid_t event_ptid;
678       pid_t event_pid;
679
680       if (debug_threads)
681         {
682           debug_printf ("HEW: Got exec event from LWP %ld\n",
683                         lwpid_of (event_thr));
684         }
685
686       /* Get the event ptid.  */
687       event_ptid = ptid_of (event_thr);
688       event_pid = ptid_get_pid (event_ptid);
689
690       /* Save the syscall list from the execing process.  */
691       proc = get_thread_process (event_thr);
692       syscalls_to_catch = proc->syscalls_to_catch;
693       proc->syscalls_to_catch = NULL;
694
695       /* Delete the execing process and all its threads.  */
696       linux_mourn (proc);
697       current_thread = NULL;
698
699       /* Create a new process/lwp/thread.  */
700       proc = linux_add_process (event_pid, 0);
701       event_lwp = add_lwp (event_ptid);
702       event_thr = get_lwp_thread (event_lwp);
703       gdb_assert (current_thread == event_thr);
704       linux_arch_setup_thread (event_thr);
705
706       /* Set the event status.  */
707       event_lwp->waitstatus.kind = TARGET_WAITKIND_EXECD;
708       event_lwp->waitstatus.value.execd_pathname
709         = xstrdup (linux_proc_pid_to_exec_file (lwpid_of (event_thr)));
710
711       /* Mark the exec status as pending.  */
712       event_lwp->stopped = 1;
713       event_lwp->status_pending_p = 1;
714       event_lwp->status_pending = wstat;
715       event_thr->last_resume_kind = resume_continue;
716       event_thr->last_status.kind = TARGET_WAITKIND_IGNORE;
717
718       /* Update syscall state in the new lwp, effectively mid-syscall too.  */
719       event_lwp->syscall_state = TARGET_WAITKIND_SYSCALL_ENTRY;
720
721       /* Restore the list to catch.  Don't rely on the client, which is free
722          to avoid sending a new list when the architecture doesn't change.
723          Also, for ANY_SYSCALL, the architecture doesn't really matter.  */
724       proc->syscalls_to_catch = syscalls_to_catch;
725
726       /* Report the event.  */
727       *orig_event_lwp = event_lwp;
728       return 0;
729     }
730
731   internal_error (__FILE__, __LINE__, _("unknown ptrace event %d"), event);
732 }
733
734 /* Return the PC as read from the regcache of LWP, without any
735    adjustment.  */
736
737 static CORE_ADDR
738 get_pc (struct lwp_info *lwp)
739 {
740   struct thread_info *saved_thread;
741   struct regcache *regcache;
742   CORE_ADDR pc;
743
744   if (the_low_target.get_pc == NULL)
745     return 0;
746
747   saved_thread = current_thread;
748   current_thread = get_lwp_thread (lwp);
749
750   regcache = get_thread_regcache (current_thread, 1);
751   pc = (*the_low_target.get_pc) (regcache);
752
753   if (debug_threads)
754     debug_printf ("pc is 0x%lx\n", (long) pc);
755
756   current_thread = saved_thread;
757   return pc;
758 }
759
760 /* This function should only be called if LWP got a SYSCALL_SIGTRAP.
761    Fill *SYSNO with the syscall nr trapped.  */
762
763 static void
764 get_syscall_trapinfo (struct lwp_info *lwp, int *sysno)
765 {
766   struct thread_info *saved_thread;
767   struct regcache *regcache;
768
769   if (the_low_target.get_syscall_trapinfo == NULL)
770     {
771       /* If we cannot get the syscall trapinfo, report an unknown
772          system call number.  */
773       *sysno = UNKNOWN_SYSCALL;
774       return;
775     }
776
777   saved_thread = current_thread;
778   current_thread = get_lwp_thread (lwp);
779
780   regcache = get_thread_regcache (current_thread, 1);
781   (*the_low_target.get_syscall_trapinfo) (regcache, sysno);
782
783   if (debug_threads)
784     debug_printf ("get_syscall_trapinfo sysno %d\n", *sysno);
785
786   current_thread = saved_thread;
787 }
788
789 static int check_stopped_by_watchpoint (struct lwp_info *child);
790
791 /* Called when the LWP stopped for a signal/trap.  If it stopped for a
792    trap check what caused it (breakpoint, watchpoint, trace, etc.),
793    and save the result in the LWP's stop_reason field.  If it stopped
794    for a breakpoint, decrement the PC if necessary on the lwp's
795    architecture.  Returns true if we now have the LWP's stop PC.  */
796
797 static int
798 save_stop_reason (struct lwp_info *lwp)
799 {
800   CORE_ADDR pc;
801   CORE_ADDR sw_breakpoint_pc;
802   struct thread_info *saved_thread;
803 #if USE_SIGTRAP_SIGINFO
804   siginfo_t siginfo;
805 #endif
806
807   if (the_low_target.get_pc == NULL)
808     return 0;
809
810   pc = get_pc (lwp);
811   sw_breakpoint_pc = pc - the_low_target.decr_pc_after_break;
812
813   /* breakpoint_at reads from the current thread.  */
814   saved_thread = current_thread;
815   current_thread = get_lwp_thread (lwp);
816
817 #if USE_SIGTRAP_SIGINFO
818   if (ptrace (PTRACE_GETSIGINFO, lwpid_of (current_thread),
819               (PTRACE_TYPE_ARG3) 0, &siginfo) == 0)
820     {
821       if (siginfo.si_signo == SIGTRAP)
822         {
823           if (GDB_ARCH_IS_TRAP_BRKPT (siginfo.si_code)
824               && GDB_ARCH_IS_TRAP_HWBKPT (siginfo.si_code))
825             {
826               /* The si_code is ambiguous on this arch -- check debug
827                  registers.  */
828               if (!check_stopped_by_watchpoint (lwp))
829                 lwp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT;
830             }
831           else if (GDB_ARCH_IS_TRAP_BRKPT (siginfo.si_code))
832             {
833               /* If we determine the LWP stopped for a SW breakpoint,
834                  trust it.  Particularly don't check watchpoint
835                  registers, because at least on s390, we'd find
836                  stopped-by-watchpoint as long as there's a watchpoint
837                  set.  */
838               lwp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT;
839             }
840           else if (GDB_ARCH_IS_TRAP_HWBKPT (siginfo.si_code))
841             {
842               /* This can indicate either a hardware breakpoint or
843                  hardware watchpoint.  Check debug registers.  */
844               if (!check_stopped_by_watchpoint (lwp))
845                 lwp->stop_reason = TARGET_STOPPED_BY_HW_BREAKPOINT;
846             }
847           else if (siginfo.si_code == TRAP_TRACE)
848             {
849               /* We may have single stepped an instruction that
850                  triggered a watchpoint.  In that case, on some
851                  architectures (such as x86), instead of TRAP_HWBKPT,
852                  si_code indicates TRAP_TRACE, and we need to check
853                  the debug registers separately.  */
854               if (!check_stopped_by_watchpoint (lwp))
855                 lwp->stop_reason = TARGET_STOPPED_BY_SINGLE_STEP;
856             }
857         }
858     }
859 #else
860   /* We may have just stepped a breakpoint instruction.  E.g., in
861      non-stop mode, GDB first tells the thread A to step a range, and
862      then the user inserts a breakpoint inside the range.  In that
863      case we need to report the breakpoint PC.  */
864   if ((!lwp->stepping || lwp->stop_pc == sw_breakpoint_pc)
865       && (*the_low_target.breakpoint_at) (sw_breakpoint_pc))
866     lwp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT;
867
868   if (hardware_breakpoint_inserted_here (pc))
869     lwp->stop_reason = TARGET_STOPPED_BY_HW_BREAKPOINT;
870
871   if (lwp->stop_reason == TARGET_STOPPED_BY_NO_REASON)
872     check_stopped_by_watchpoint (lwp);
873 #endif
874
875   if (lwp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT)
876     {
877       if (debug_threads)
878         {
879           struct thread_info *thr = get_lwp_thread (lwp);
880
881           debug_printf ("CSBB: %s stopped by software breakpoint\n",
882                         target_pid_to_str (ptid_of (thr)));
883         }
884
885       /* Back up the PC if necessary.  */
886       if (pc != sw_breakpoint_pc)
887         {
888           struct regcache *regcache
889             = get_thread_regcache (current_thread, 1);
890           (*the_low_target.set_pc) (regcache, sw_breakpoint_pc);
891         }
892
893       /* Update this so we record the correct stop PC below.  */
894       pc = sw_breakpoint_pc;
895     }
896   else if (lwp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT)
897     {
898       if (debug_threads)
899         {
900           struct thread_info *thr = get_lwp_thread (lwp);
901
902           debug_printf ("CSBB: %s stopped by hardware breakpoint\n",
903                         target_pid_to_str (ptid_of (thr)));
904         }
905     }
906   else if (lwp->stop_reason == TARGET_STOPPED_BY_WATCHPOINT)
907     {
908       if (debug_threads)
909         {
910           struct thread_info *thr = get_lwp_thread (lwp);
911
912           debug_printf ("CSBB: %s stopped by hardware watchpoint\n",
913                         target_pid_to_str (ptid_of (thr)));
914         }
915     }
916   else if (lwp->stop_reason == TARGET_STOPPED_BY_SINGLE_STEP)
917     {
918       if (debug_threads)
919         {
920           struct thread_info *thr = get_lwp_thread (lwp);
921
922           debug_printf ("CSBB: %s stopped by trace\n",
923                         target_pid_to_str (ptid_of (thr)));
924         }
925     }
926
927   lwp->stop_pc = pc;
928   current_thread = saved_thread;
929   return 1;
930 }
931
932 static struct lwp_info *
933 add_lwp (ptid_t ptid)
934 {
935   struct lwp_info *lwp;
936
937   lwp = XCNEW (struct lwp_info);
938
939   lwp->waitstatus.kind = TARGET_WAITKIND_IGNORE;
940
941   if (the_low_target.new_thread != NULL)
942     the_low_target.new_thread (lwp);
943
944   lwp->thread = add_thread (ptid, lwp);
945
946   return lwp;
947 }
948
949 /* Start an inferior process and returns its pid.
950    ALLARGS is a vector of program-name and args. */
951
952 static int
953 linux_create_inferior (char *program, char **allargs)
954 {
955   struct lwp_info *new_lwp;
956   int pid;
957   ptid_t ptid;
958   struct cleanup *restore_personality
959     = maybe_disable_address_space_randomization (disable_randomization);
960
961 #if defined(__UCLIBC__) && defined(HAS_NOMMU)
962   pid = vfork ();
963 #else
964   pid = fork ();
965 #endif
966   if (pid < 0)
967     perror_with_name ("fork");
968
969   if (pid == 0)
970     {
971       close_most_fds ();
972       ptrace (PTRACE_TRACEME, 0, (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) 0);
973
974       setpgid (0, 0);
975
976       /* If gdbserver is connected to gdb via stdio, redirect the inferior's
977          stdout to stderr so that inferior i/o doesn't corrupt the connection.
978          Also, redirect stdin to /dev/null.  */
979       if (remote_connection_is_stdio ())
980         {
981           close (0);
982           open ("/dev/null", O_RDONLY);
983           dup2 (2, 1);
984           if (write (2, "stdin/stdout redirected\n",
985                      sizeof ("stdin/stdout redirected\n") - 1) < 0)
986             {
987               /* Errors ignored.  */;
988             }
989         }
990
991       restore_original_signals_state ();
992
993       execv (program, allargs);
994       if (errno == ENOENT)
995         execvp (program, allargs);
996
997       fprintf (stderr, "Cannot exec %s: %s.\n", program,
998                strerror (errno));
999       fflush (stderr);
1000       _exit (0177);
1001     }
1002
1003   do_cleanups (restore_personality);
1004
1005   linux_add_process (pid, 0);
1006
1007   ptid = ptid_build (pid, pid, 0);
1008   new_lwp = add_lwp (ptid);
1009   new_lwp->must_set_ptrace_flags = 1;
1010
1011   return pid;
1012 }
1013
1014 /* Implement the post_create_inferior target_ops method.  */
1015
1016 static void
1017 linux_post_create_inferior (void)
1018 {
1019   struct lwp_info *lwp = get_thread_lwp (current_thread);
1020
1021   linux_arch_setup ();
1022
1023   if (lwp->must_set_ptrace_flags)
1024     {
1025       struct process_info *proc = current_process ();
1026       int options = linux_low_ptrace_options (proc->attached);
1027
1028       linux_enable_event_reporting (lwpid_of (current_thread), options);
1029       lwp->must_set_ptrace_flags = 0;
1030     }
1031 }
1032
1033 /* Attach to an inferior process.  Returns 0 on success, ERRNO on
1034    error.  */
1035
1036 int
1037 linux_attach_lwp (ptid_t ptid)
1038 {
1039   struct lwp_info *new_lwp;
1040   int lwpid = ptid_get_lwp (ptid);
1041
1042   if (ptrace (PTRACE_ATTACH, lwpid, (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) 0)
1043       != 0)
1044     return errno;
1045
1046   new_lwp = add_lwp (ptid);
1047
1048   /* We need to wait for SIGSTOP before being able to make the next
1049      ptrace call on this LWP.  */
1050   new_lwp->must_set_ptrace_flags = 1;
1051
1052   if (linux_proc_pid_is_stopped (lwpid))
1053     {
1054       if (debug_threads)
1055         debug_printf ("Attached to a stopped process\n");
1056
1057       /* The process is definitely stopped.  It is in a job control
1058          stop, unless the kernel predates the TASK_STOPPED /
1059          TASK_TRACED distinction, in which case it might be in a
1060          ptrace stop.  Make sure it is in a ptrace stop; from there we
1061          can kill it, signal it, et cetera.
1062
1063          First make sure there is a pending SIGSTOP.  Since we are
1064          already attached, the process can not transition from stopped
1065          to running without a PTRACE_CONT; so we know this signal will
1066          go into the queue.  The SIGSTOP generated by PTRACE_ATTACH is
1067          probably already in the queue (unless this kernel is old
1068          enough to use TASK_STOPPED for ptrace stops); but since
1069          SIGSTOP is not an RT signal, it can only be queued once.  */
1070       kill_lwp (lwpid, SIGSTOP);
1071
1072       /* Finally, resume the stopped process.  This will deliver the
1073          SIGSTOP (or a higher priority signal, just like normal
1074          PTRACE_ATTACH), which we'll catch later on.  */
1075       ptrace (PTRACE_CONT, lwpid, (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) 0);
1076     }
1077
1078   /* The next time we wait for this LWP we'll see a SIGSTOP as PTRACE_ATTACH
1079      brings it to a halt.
1080
1081      There are several cases to consider here:
1082
1083      1) gdbserver has already attached to the process and is being notified
1084         of a new thread that is being created.
1085         In this case we should ignore that SIGSTOP and resume the
1086         process.  This is handled below by setting stop_expected = 1,
1087         and the fact that add_thread sets last_resume_kind ==
1088         resume_continue.
1089
1090      2) This is the first thread (the process thread), and we're attaching
1091         to it via attach_inferior.
1092         In this case we want the process thread to stop.
1093         This is handled by having linux_attach set last_resume_kind ==
1094         resume_stop after we return.
1095
1096         If the pid we are attaching to is also the tgid, we attach to and
1097         stop all the existing threads.  Otherwise, we attach to pid and
1098         ignore any other threads in the same group as this pid.
1099
1100      3) GDB is connecting to gdbserver and is requesting an enumeration of all
1101         existing threads.
1102         In this case we want the thread to stop.
1103         FIXME: This case is currently not properly handled.
1104         We should wait for the SIGSTOP but don't.  Things work apparently
1105         because enough time passes between when we ptrace (ATTACH) and when
1106         gdb makes the next ptrace call on the thread.
1107
1108      On the other hand, if we are currently trying to stop all threads, we
1109      should treat the new thread as if we had sent it a SIGSTOP.  This works
1110      because we are guaranteed that the add_lwp call above added us to the
1111      end of the list, and so the new thread has not yet reached
1112      wait_for_sigstop (but will).  */
1113   new_lwp->stop_expected = 1;
1114
1115   return 0;
1116 }
1117
1118 /* Callback for linux_proc_attach_tgid_threads.  Attach to PTID if not
1119    already attached.  Returns true if a new LWP is found, false
1120    otherwise.  */
1121
1122 static int
1123 attach_proc_task_lwp_callback (ptid_t ptid)
1124 {
1125   /* Is this a new thread?  */
1126   if (find_thread_ptid (ptid) == NULL)
1127     {
1128       int lwpid = ptid_get_lwp (ptid);
1129       int err;
1130
1131       if (debug_threads)
1132         debug_printf ("Found new lwp %d\n", lwpid);
1133
1134       err = linux_attach_lwp (ptid);
1135
1136       /* Be quiet if we simply raced with the thread exiting.  EPERM
1137          is returned if the thread's task still exists, and is marked
1138          as exited or zombie, as well as other conditions, so in that
1139          case, confirm the status in /proc/PID/status.  */
1140       if (err == ESRCH
1141           || (err == EPERM && linux_proc_pid_is_gone (lwpid)))
1142         {
1143           if (debug_threads)
1144             {
1145               debug_printf ("Cannot attach to lwp %d: "
1146                             "thread is gone (%d: %s)\n",
1147                             lwpid, err, strerror (err));
1148             }
1149         }
1150       else if (err != 0)
1151         {
1152           warning (_("Cannot attach to lwp %d: %s"),
1153                    lwpid,
1154                    linux_ptrace_attach_fail_reason_string (ptid, err));
1155         }
1156
1157       return 1;
1158     }
1159   return 0;
1160 }
1161
1162 static void async_file_mark (void);
1163
1164 /* Attach to PID.  If PID is the tgid, attach to it and all
1165    of its threads.  */
1166
1167 static int
1168 linux_attach (unsigned long pid)
1169 {
1170   struct process_info *proc;
1171   struct thread_info *initial_thread;
1172   ptid_t ptid = ptid_build (pid, pid, 0);
1173   int err;
1174
1175   /* Attach to PID.  We will check for other threads
1176      soon.  */
1177   err = linux_attach_lwp (ptid);
1178   if (err != 0)
1179     error ("Cannot attach to process %ld: %s",
1180            pid, linux_ptrace_attach_fail_reason_string (ptid, err));
1181
1182   proc = linux_add_process (pid, 1);
1183
1184   /* Don't ignore the initial SIGSTOP if we just attached to this
1185      process.  It will be collected by wait shortly.  */
1186   initial_thread = find_thread_ptid (ptid_build (pid, pid, 0));
1187   initial_thread->last_resume_kind = resume_stop;
1188
1189   /* We must attach to every LWP.  If /proc is mounted, use that to
1190      find them now.  On the one hand, the inferior may be using raw
1191      clone instead of using pthreads.  On the other hand, even if it
1192      is using pthreads, GDB may not be connected yet (thread_db needs
1193      to do symbol lookups, through qSymbol).  Also, thread_db walks
1194      structures in the inferior's address space to find the list of
1195      threads/LWPs, and those structures may well be corrupted.  Note
1196      that once thread_db is loaded, we'll still use it to list threads
1197      and associate pthread info with each LWP.  */
1198   linux_proc_attach_tgid_threads (pid, attach_proc_task_lwp_callback);
1199
1200   /* GDB will shortly read the xml target description for this
1201      process, to figure out the process' architecture.  But the target
1202      description is only filled in when the first process/thread in
1203      the thread group reports its initial PTRACE_ATTACH SIGSTOP.  Do
1204      that now, otherwise, if GDB is fast enough, it could read the
1205      target description _before_ that initial stop.  */
1206   if (non_stop)
1207     {
1208       struct lwp_info *lwp;
1209       int wstat, lwpid;
1210       ptid_t pid_ptid = pid_to_ptid (pid);
1211
1212       lwpid = linux_wait_for_event_filtered (pid_ptid, pid_ptid,
1213                                              &wstat, __WALL);
1214       gdb_assert (lwpid > 0);
1215
1216       lwp = find_lwp_pid (pid_to_ptid (lwpid));
1217
1218       if (!WIFSTOPPED (wstat) || WSTOPSIG (wstat) != SIGSTOP)
1219         {
1220           lwp->status_pending_p = 1;
1221           lwp->status_pending = wstat;
1222         }
1223
1224       initial_thread->last_resume_kind = resume_continue;
1225
1226       async_file_mark ();
1227
1228       gdb_assert (proc->tdesc != NULL);
1229     }
1230
1231   return 0;
1232 }
1233
1234 struct counter
1235 {
1236   int pid;
1237   int count;
1238 };
1239
1240 static int
1241 second_thread_of_pid_p (struct inferior_list_entry *entry, void *args)
1242 {
1243   struct counter *counter = (struct counter *) args;
1244
1245   if (ptid_get_pid (entry->id) == counter->pid)
1246     {
1247       if (++counter->count > 1)
1248         return 1;
1249     }
1250
1251   return 0;
1252 }
1253
1254 static int
1255 last_thread_of_process_p (int pid)
1256 {
1257   struct counter counter = { pid , 0 };
1258
1259   return (find_inferior (&all_threads,
1260                          second_thread_of_pid_p, &counter) == NULL);
1261 }
1262
1263 /* Kill LWP.  */
1264
1265 static void
1266 linux_kill_one_lwp (struct lwp_info *lwp)
1267 {
1268   struct thread_info *thr = get_lwp_thread (lwp);
1269   int pid = lwpid_of (thr);
1270
1271   /* PTRACE_KILL is unreliable.  After stepping into a signal handler,
1272      there is no signal context, and ptrace(PTRACE_KILL) (or
1273      ptrace(PTRACE_CONT, SIGKILL), pretty much the same) acts like
1274      ptrace(CONT, pid, 0,0) and just resumes the tracee.  A better
1275      alternative is to kill with SIGKILL.  We only need one SIGKILL
1276      per process, not one for each thread.  But since we still support
1277      support debugging programs using raw clone without CLONE_THREAD,
1278      we send one for each thread.  For years, we used PTRACE_KILL
1279      only, so we're being a bit paranoid about some old kernels where
1280      PTRACE_KILL might work better (dubious if there are any such, but
1281      that's why it's paranoia), so we try SIGKILL first, PTRACE_KILL
1282      second, and so we're fine everywhere.  */
1283
1284   errno = 0;
1285   kill_lwp (pid, SIGKILL);
1286   if (debug_threads)
1287     {
1288       int save_errno = errno;
1289
1290       debug_printf ("LKL:  kill_lwp (SIGKILL) %s, 0, 0 (%s)\n",
1291                     target_pid_to_str (ptid_of (thr)),
1292                     save_errno ? strerror (save_errno) : "OK");
1293     }
1294
1295   errno = 0;
1296   ptrace (PTRACE_KILL, pid, (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) 0);
1297   if (debug_threads)
1298     {
1299       int save_errno = errno;
1300
1301       debug_printf ("LKL:  PTRACE_KILL %s, 0, 0 (%s)\n",
1302                     target_pid_to_str (ptid_of (thr)),
1303                     save_errno ? strerror (save_errno) : "OK");
1304     }
1305 }
1306
1307 /* Kill LWP and wait for it to die.  */
1308
1309 static void
1310 kill_wait_lwp (struct lwp_info *lwp)
1311 {
1312   struct thread_info *thr = get_lwp_thread (lwp);
1313   int pid = ptid_get_pid (ptid_of (thr));
1314   int lwpid = ptid_get_lwp (ptid_of (thr));
1315   int wstat;
1316   int res;
1317
1318   if (debug_threads)
1319     debug_printf ("kwl: killing lwp %d, for pid: %d\n", lwpid, pid);
1320
1321   do
1322     {
1323       linux_kill_one_lwp (lwp);
1324
1325       /* Make sure it died.  Notes:
1326
1327          - The loop is most likely unnecessary.
1328
1329          - We don't use linux_wait_for_event as that could delete lwps
1330            while we're iterating over them.  We're not interested in
1331            any pending status at this point, only in making sure all
1332            wait status on the kernel side are collected until the
1333            process is reaped.
1334
1335          - We don't use __WALL here as the __WALL emulation relies on
1336            SIGCHLD, and killing a stopped process doesn't generate
1337            one, nor an exit status.
1338       */
1339       res = my_waitpid (lwpid, &wstat, 0);
1340       if (res == -1 && errno == ECHILD)
1341         res = my_waitpid (lwpid, &wstat, __WCLONE);
1342     } while (res > 0 && WIFSTOPPED (wstat));
1343
1344   /* Even if it was stopped, the child may have already disappeared.
1345      E.g., if it was killed by SIGKILL.  */
1346   if (res < 0 && errno != ECHILD)
1347     perror_with_name ("kill_wait_lwp");
1348 }
1349
1350 /* Callback for `find_inferior'.  Kills an lwp of a given process,
1351    except the leader.  */
1352
1353 static int
1354 kill_one_lwp_callback (struct inferior_list_entry *entry, void *args)
1355 {
1356   struct thread_info *thread = (struct thread_info *) entry;
1357   struct lwp_info *lwp = get_thread_lwp (thread);
1358   int pid = * (int *) args;
1359
1360   if (ptid_get_pid (entry->id) != pid)
1361     return 0;
1362
1363   /* We avoid killing the first thread here, because of a Linux kernel (at
1364      least 2.6.0-test7 through 2.6.8-rc4) bug; if we kill the parent before
1365      the children get a chance to be reaped, it will remain a zombie
1366      forever.  */
1367
1368   if (lwpid_of (thread) == pid)
1369     {
1370       if (debug_threads)
1371         debug_printf ("lkop: is last of process %s\n",
1372                       target_pid_to_str (entry->id));
1373       return 0;
1374     }
1375
1376   kill_wait_lwp (lwp);
1377   return 0;
1378 }
1379
1380 static int
1381 linux_kill (int pid)
1382 {
1383   struct process_info *process;
1384   struct lwp_info *lwp;
1385
1386   process = find_process_pid (pid);
1387   if (process == NULL)
1388     return -1;
1389
1390   /* If we're killing a running inferior, make sure it is stopped
1391      first, as PTRACE_KILL will not work otherwise.  */
1392   stop_all_lwps (0, NULL);
1393
1394   find_inferior (&all_threads, kill_one_lwp_callback , &pid);
1395
1396   /* See the comment in linux_kill_one_lwp.  We did not kill the first
1397      thread in the list, so do so now.  */
1398   lwp = find_lwp_pid (pid_to_ptid (pid));
1399
1400   if (lwp == NULL)
1401     {
1402       if (debug_threads)
1403         debug_printf ("lk_1: cannot find lwp for pid: %d\n",
1404                       pid);
1405     }
1406   else
1407     kill_wait_lwp (lwp);
1408
1409   the_target->mourn (process);
1410
1411   /* Since we presently can only stop all lwps of all processes, we
1412      need to unstop lwps of other processes.  */
1413   unstop_all_lwps (0, NULL);
1414   return 0;
1415 }
1416
1417 /* Get pending signal of THREAD, for detaching purposes.  This is the
1418    signal the thread last stopped for, which we need to deliver to the
1419    thread when detaching, otherwise, it'd be suppressed/lost.  */
1420
1421 static int
1422 get_detach_signal (struct thread_info *thread)
1423 {
1424   enum gdb_signal signo = GDB_SIGNAL_0;
1425   int status;
1426   struct lwp_info *lp = get_thread_lwp (thread);
1427
1428   if (lp->status_pending_p)
1429     status = lp->status_pending;
1430   else
1431     {
1432       /* If the thread had been suspended by gdbserver, and it stopped
1433          cleanly, then it'll have stopped with SIGSTOP.  But we don't
1434          want to deliver that SIGSTOP.  */
1435       if (thread->last_status.kind != TARGET_WAITKIND_STOPPED
1436           || thread->last_status.value.sig == GDB_SIGNAL_0)
1437         return 0;
1438
1439       /* Otherwise, we may need to deliver the signal we
1440          intercepted.  */
1441       status = lp->last_status;
1442     }
1443
1444   if (!WIFSTOPPED (status))
1445     {
1446       if (debug_threads)
1447         debug_printf ("GPS: lwp %s hasn't stopped: no pending signal\n",
1448                       target_pid_to_str (ptid_of (thread)));
1449       return 0;
1450     }
1451
1452   /* Extended wait statuses aren't real SIGTRAPs.  */
1453   if (WSTOPSIG (status) == SIGTRAP && linux_is_extended_waitstatus (status))
1454     {
1455       if (debug_threads)
1456         debug_printf ("GPS: lwp %s had stopped with extended "
1457                       "status: no pending signal\n",
1458                       target_pid_to_str (ptid_of (thread)));
1459       return 0;
1460     }
1461
1462   signo = gdb_signal_from_host (WSTOPSIG (status));
1463
1464   if (program_signals_p && !program_signals[signo])
1465     {
1466       if (debug_threads)
1467         debug_printf ("GPS: lwp %s had signal %s, but it is in nopass state\n",
1468                       target_pid_to_str (ptid_of (thread)),
1469                       gdb_signal_to_string (signo));
1470       return 0;
1471     }
1472   else if (!program_signals_p
1473            /* If we have no way to know which signals GDB does not
1474               want to have passed to the program, assume
1475               SIGTRAP/SIGINT, which is GDB's default.  */
1476            && (signo == GDB_SIGNAL_TRAP || signo == GDB_SIGNAL_INT))
1477     {
1478       if (debug_threads)
1479         debug_printf ("GPS: lwp %s had signal %s, "
1480                       "but we don't know if we should pass it. "
1481                       "Default to not.\n",
1482                       target_pid_to_str (ptid_of (thread)),
1483                       gdb_signal_to_string (signo));
1484       return 0;
1485     }
1486   else
1487     {
1488       if (debug_threads)
1489         debug_printf ("GPS: lwp %s has pending signal %s: delivering it.\n",
1490                       target_pid_to_str (ptid_of (thread)),
1491                       gdb_signal_to_string (signo));
1492
1493       return WSTOPSIG (status);
1494     }
1495 }
1496
1497 /* Detach from LWP.  */
1498
1499 static void
1500 linux_detach_one_lwp (struct lwp_info *lwp)
1501 {
1502   struct thread_info *thread = get_lwp_thread (lwp);
1503   int sig;
1504   int lwpid;
1505
1506   /* If there is a pending SIGSTOP, get rid of it.  */
1507   if (lwp->stop_expected)
1508     {
1509       if (debug_threads)
1510         debug_printf ("Sending SIGCONT to %s\n",
1511                       target_pid_to_str (ptid_of (thread)));
1512
1513       kill_lwp (lwpid_of (thread), SIGCONT);
1514       lwp->stop_expected = 0;
1515     }
1516
1517   /* Pass on any pending signal for this thread.  */
1518   sig = get_detach_signal (thread);
1519
1520   /* Preparing to resume may try to write registers, and fail if the
1521      lwp is zombie.  If that happens, ignore the error.  We'll handle
1522      it below, when detach fails with ESRCH.  */
1523   TRY
1524     {
1525       /* Flush any pending changes to the process's registers.  */
1526       regcache_invalidate_thread (thread);
1527
1528       /* Finally, let it resume.  */
1529       if (the_low_target.prepare_to_resume != NULL)
1530         the_low_target.prepare_to_resume (lwp);
1531     }
1532   CATCH (ex, RETURN_MASK_ERROR)
1533     {
1534       if (!check_ptrace_stopped_lwp_gone (lwp))
1535         throw_exception (ex);
1536     }
1537   END_CATCH
1538
1539   lwpid = lwpid_of (thread);
1540   if (ptrace (PTRACE_DETACH, lwpid, (PTRACE_TYPE_ARG3) 0,
1541               (PTRACE_TYPE_ARG4) (long) sig) < 0)
1542     {
1543       int save_errno = errno;
1544
1545       /* We know the thread exists, so ESRCH must mean the lwp is
1546          zombie.  This can happen if one of the already-detached
1547          threads exits the whole thread group.  In that case we're
1548          still attached, and must reap the lwp.  */
1549       if (save_errno == ESRCH)
1550         {
1551           int ret, status;
1552
1553           ret = my_waitpid (lwpid, &status, __WALL);
1554           if (ret == -1)
1555             {
1556               warning (_("Couldn't reap LWP %d while detaching: %s"),
1557                        lwpid, strerror (errno));
1558             }
1559           else if (!WIFEXITED (status) && !WIFSIGNALED (status))
1560             {
1561               warning (_("Reaping LWP %d while detaching "
1562                          "returned unexpected status 0x%x"),
1563                        lwpid, status);
1564             }
1565         }
1566       else
1567         {
1568           error (_("Can't detach %s: %s"),
1569                  target_pid_to_str (ptid_of (thread)),
1570                  strerror (save_errno));
1571         }
1572     }
1573   else if (debug_threads)
1574     {
1575       debug_printf ("PTRACE_DETACH (%s, %s, 0) (OK)\n",
1576                     target_pid_to_str (ptid_of (thread)),
1577                     strsignal (sig));
1578     }
1579
1580   delete_lwp (lwp);
1581 }
1582
1583 /* Callback for find_inferior.  Detaches from non-leader threads of a
1584    given process.  */
1585
1586 static int
1587 linux_detach_lwp_callback (struct inferior_list_entry *entry, void *args)
1588 {
1589   struct thread_info *thread = (struct thread_info *) entry;
1590   struct lwp_info *lwp = get_thread_lwp (thread);
1591   int pid = *(int *) args;
1592   int lwpid = lwpid_of (thread);
1593
1594   /* Skip other processes.  */
1595   if (ptid_get_pid (entry->id) != pid)
1596     return 0;
1597
1598   /* We don't actually detach from the thread group leader just yet.
1599      If the thread group exits, we must reap the zombie clone lwps
1600      before we're able to reap the leader.  */
1601   if (ptid_get_pid (entry->id) == lwpid)
1602     return 0;
1603
1604   linux_detach_one_lwp (lwp);
1605   return 0;
1606 }
1607
1608 static int
1609 linux_detach (int pid)
1610 {
1611   struct process_info *process;
1612   struct lwp_info *main_lwp;
1613
1614   process = find_process_pid (pid);
1615   if (process == NULL)
1616     return -1;
1617
1618   /* As there's a step over already in progress, let it finish first,
1619      otherwise nesting a stabilize_threads operation on top gets real
1620      messy.  */
1621   complete_ongoing_step_over ();
1622
1623   /* Stop all threads before detaching.  First, ptrace requires that
1624      the thread is stopped to sucessfully detach.  Second, thread_db
1625      may need to uninstall thread event breakpoints from memory, which
1626      only works with a stopped process anyway.  */
1627   stop_all_lwps (0, NULL);
1628
1629 #ifdef USE_THREAD_DB
1630   thread_db_detach (process);
1631 #endif
1632
1633   /* Stabilize threads (move out of jump pads).  */
1634   stabilize_threads ();
1635
1636   /* Detach from the clone lwps first.  If the thread group exits just
1637      while we're detaching, we must reap the clone lwps before we're
1638      able to reap the leader.  */
1639   find_inferior (&all_threads, linux_detach_lwp_callback, &pid);
1640
1641   main_lwp = find_lwp_pid (pid_to_ptid (pid));
1642   linux_detach_one_lwp (main_lwp);
1643
1644   the_target->mourn (process);
1645
1646   /* Since we presently can only stop all lwps of all processes, we
1647      need to unstop lwps of other processes.  */
1648   unstop_all_lwps (0, NULL);
1649   return 0;
1650 }
1651
1652 /* Remove all LWPs that belong to process PROC from the lwp list.  */
1653
1654 static int
1655 delete_lwp_callback (struct inferior_list_entry *entry, void *proc)
1656 {
1657   struct thread_info *thread = (struct thread_info *) entry;
1658   struct lwp_info *lwp = get_thread_lwp (thread);
1659   struct process_info *process = (struct process_info *) proc;
1660
1661   if (pid_of (thread) == pid_of (process))
1662     delete_lwp (lwp);
1663
1664   return 0;
1665 }
1666
1667 static void
1668 linux_mourn (struct process_info *process)
1669 {
1670   struct process_info_private *priv;
1671
1672 #ifdef USE_THREAD_DB
1673   thread_db_mourn (process);
1674 #endif
1675
1676   find_inferior (&all_threads, delete_lwp_callback, process);
1677
1678   /* Freeing all private data.  */
1679   priv = process->priv;
1680   free (priv->arch_private);
1681   free (priv);
1682   process->priv = NULL;
1683
1684   remove_process (process);
1685 }
1686
1687 static void
1688 linux_join (int pid)
1689 {
1690   int status, ret;
1691
1692   do {
1693     ret = my_waitpid (pid, &status, 0);
1694     if (WIFEXITED (status) || WIFSIGNALED (status))
1695       break;
1696   } while (ret != -1 || errno != ECHILD);
1697 }
1698
1699 /* Return nonzero if the given thread is still alive.  */
1700 static int
1701 linux_thread_alive (ptid_t ptid)
1702 {
1703   struct lwp_info *lwp = find_lwp_pid (ptid);
1704
1705   /* We assume we always know if a thread exits.  If a whole process
1706      exited but we still haven't been able to report it to GDB, we'll
1707      hold on to the last lwp of the dead process.  */
1708   if (lwp != NULL)
1709     return !lwp_is_marked_dead (lwp);
1710   else
1711     return 0;
1712 }
1713
1714 /* Return 1 if this lwp still has an interesting status pending.  If
1715    not (e.g., it had stopped for a breakpoint that is gone), return
1716    false.  */
1717
1718 static int
1719 thread_still_has_status_pending_p (struct thread_info *thread)
1720 {
1721   struct lwp_info *lp = get_thread_lwp (thread);
1722
1723   if (!lp->status_pending_p)
1724     return 0;
1725
1726   if (thread->last_resume_kind != resume_stop
1727       && (lp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
1728           || lp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT))
1729     {
1730       struct thread_info *saved_thread;
1731       CORE_ADDR pc;
1732       int discard = 0;
1733
1734       gdb_assert (lp->last_status != 0);
1735
1736       pc = get_pc (lp);
1737
1738       saved_thread = current_thread;
1739       current_thread = thread;
1740
1741       if (pc != lp->stop_pc)
1742         {
1743           if (debug_threads)
1744             debug_printf ("PC of %ld changed\n",
1745                           lwpid_of (thread));
1746           discard = 1;
1747         }
1748
1749 #if !USE_SIGTRAP_SIGINFO
1750       else if (lp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
1751                && !(*the_low_target.breakpoint_at) (pc))
1752         {
1753           if (debug_threads)
1754             debug_printf ("previous SW breakpoint of %ld gone\n",
1755                           lwpid_of (thread));
1756           discard = 1;
1757         }
1758       else if (lp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT
1759                && !hardware_breakpoint_inserted_here (pc))
1760         {
1761           if (debug_threads)
1762             debug_printf ("previous HW breakpoint of %ld gone\n",
1763                           lwpid_of (thread));
1764           discard = 1;
1765         }
1766 #endif
1767
1768       current_thread = saved_thread;
1769
1770       if (discard)
1771         {
1772           if (debug_threads)
1773             debug_printf ("discarding pending breakpoint status\n");
1774           lp->status_pending_p = 0;
1775           return 0;
1776         }
1777     }
1778
1779   return 1;
1780 }
1781
1782 /* Returns true if LWP is resumed from the client's perspective.  */
1783
1784 static int
1785 lwp_resumed (struct lwp_info *lwp)
1786 {
1787   struct thread_info *thread = get_lwp_thread (lwp);
1788
1789   if (thread->last_resume_kind != resume_stop)
1790     return 1;
1791
1792   /* Did gdb send us a `vCont;t', but we haven't reported the
1793      corresponding stop to gdb yet?  If so, the thread is still
1794      resumed/running from gdb's perspective.  */
1795   if (thread->last_resume_kind == resume_stop
1796       && thread->last_status.kind == TARGET_WAITKIND_IGNORE)
1797     return 1;
1798
1799   return 0;
1800 }
1801
1802 /* Return 1 if this lwp has an interesting status pending.  */
1803 static int
1804 status_pending_p_callback (struct inferior_list_entry *entry, void *arg)
1805 {
1806   struct thread_info *thread = (struct thread_info *) entry;
1807   struct lwp_info *lp = get_thread_lwp (thread);
1808   ptid_t ptid = * (ptid_t *) arg;
1809
1810   /* Check if we're only interested in events from a specific process
1811      or a specific LWP.  */
1812   if (!ptid_match (ptid_of (thread), ptid))
1813     return 0;
1814
1815   if (!lwp_resumed (lp))
1816     return 0;
1817
1818   if (lp->status_pending_p
1819       && !thread_still_has_status_pending_p (thread))
1820     {
1821       linux_resume_one_lwp (lp, lp->stepping, GDB_SIGNAL_0, NULL);
1822       return 0;
1823     }
1824
1825   return lp->status_pending_p;
1826 }
1827
1828 static int
1829 same_lwp (struct inferior_list_entry *entry, void *data)
1830 {
1831   ptid_t ptid = *(ptid_t *) data;
1832   int lwp;
1833
1834   if (ptid_get_lwp (ptid) != 0)
1835     lwp = ptid_get_lwp (ptid);
1836   else
1837     lwp = ptid_get_pid (ptid);
1838
1839   if (ptid_get_lwp (entry->id) == lwp)
1840     return 1;
1841
1842   return 0;
1843 }
1844
1845 struct lwp_info *
1846 find_lwp_pid (ptid_t ptid)
1847 {
1848   struct inferior_list_entry *thread
1849     = find_inferior (&all_threads, same_lwp, &ptid);
1850
1851   if (thread == NULL)
1852     return NULL;
1853
1854   return get_thread_lwp ((struct thread_info *) thread);
1855 }
1856
1857 /* Return the number of known LWPs in the tgid given by PID.  */
1858
1859 static int
1860 num_lwps (int pid)
1861 {
1862   struct inferior_list_entry *inf, *tmp;
1863   int count = 0;
1864
1865   ALL_INFERIORS (&all_threads, inf, tmp)
1866     {
1867       if (ptid_get_pid (inf->id) == pid)
1868         count++;
1869     }
1870
1871   return count;
1872 }
1873
1874 /* The arguments passed to iterate_over_lwps.  */
1875
1876 struct iterate_over_lwps_args
1877 {
1878   /* The FILTER argument passed to iterate_over_lwps.  */
1879   ptid_t filter;
1880
1881   /* The CALLBACK argument passed to iterate_over_lwps.  */
1882   iterate_over_lwps_ftype *callback;
1883
1884   /* The DATA argument passed to iterate_over_lwps.  */
1885   void *data;
1886 };
1887
1888 /* Callback for find_inferior used by iterate_over_lwps to filter
1889    calls to the callback supplied to that function.  Returning a
1890    nonzero value causes find_inferiors to stop iterating and return
1891    the current inferior_list_entry.  Returning zero indicates that
1892    find_inferiors should continue iterating.  */
1893
1894 static int
1895 iterate_over_lwps_filter (struct inferior_list_entry *entry, void *args_p)
1896 {
1897   struct iterate_over_lwps_args *args
1898     = (struct iterate_over_lwps_args *) args_p;
1899
1900   if (ptid_match (entry->id, args->filter))
1901     {
1902       struct thread_info *thr = (struct thread_info *) entry;
1903       struct lwp_info *lwp = get_thread_lwp (thr);
1904
1905       return (*args->callback) (lwp, args->data);
1906     }
1907
1908   return 0;
1909 }
1910
1911 /* See nat/linux-nat.h.  */
1912
1913 struct lwp_info *
1914 iterate_over_lwps (ptid_t filter,
1915                    iterate_over_lwps_ftype callback,
1916                    void *data)
1917 {
1918   struct iterate_over_lwps_args args = {filter, callback, data};
1919   struct inferior_list_entry *entry;
1920
1921   entry = find_inferior (&all_threads, iterate_over_lwps_filter, &args);
1922   if (entry == NULL)
1923     return NULL;
1924
1925   return get_thread_lwp ((struct thread_info *) entry);
1926 }
1927
1928 /* Detect zombie thread group leaders, and "exit" them.  We can't reap
1929    their exits until all other threads in the group have exited.  */
1930
1931 static void
1932 check_zombie_leaders (void)
1933 {
1934   struct process_info *proc, *tmp;
1935
1936   ALL_PROCESSES (proc, tmp)
1937     {
1938       pid_t leader_pid = pid_of (proc);
1939       struct lwp_info *leader_lp;
1940
1941       leader_lp = find_lwp_pid (pid_to_ptid (leader_pid));
1942
1943       if (debug_threads)
1944         debug_printf ("leader_pid=%d, leader_lp!=NULL=%d, "
1945                       "num_lwps=%d, zombie=%d\n",
1946                       leader_pid, leader_lp!= NULL, num_lwps (leader_pid),
1947                       linux_proc_pid_is_zombie (leader_pid));
1948
1949       if (leader_lp != NULL && !leader_lp->stopped
1950           /* Check if there are other threads in the group, as we may
1951              have raced with the inferior simply exiting.  */
1952           && !last_thread_of_process_p (leader_pid)
1953           && linux_proc_pid_is_zombie (leader_pid))
1954         {
1955           /* A leader zombie can mean one of two things:
1956
1957              - It exited, and there's an exit status pending
1958              available, or only the leader exited (not the whole
1959              program).  In the latter case, we can't waitpid the
1960              leader's exit status until all other threads are gone.
1961
1962              - There are 3 or more threads in the group, and a thread
1963              other than the leader exec'd.  On an exec, the Linux
1964              kernel destroys all other threads (except the execing
1965              one) in the thread group, and resets the execing thread's
1966              tid to the tgid.  No exit notification is sent for the
1967              execing thread -- from the ptracer's perspective, it
1968              appears as though the execing thread just vanishes.
1969              Until we reap all other threads except the leader and the
1970              execing thread, the leader will be zombie, and the
1971              execing thread will be in `D (disc sleep)'.  As soon as
1972              all other threads are reaped, the execing thread changes
1973              it's tid to the tgid, and the previous (zombie) leader
1974              vanishes, giving place to the "new" leader.  We could try
1975              distinguishing the exit and exec cases, by waiting once
1976              more, and seeing if something comes out, but it doesn't
1977              sound useful.  The previous leader _does_ go away, and
1978              we'll re-add the new one once we see the exec event
1979              (which is just the same as what would happen if the
1980              previous leader did exit voluntarily before some other
1981              thread execs).  */
1982
1983           if (debug_threads)
1984             fprintf (stderr,
1985                      "CZL: Thread group leader %d zombie "
1986                      "(it exited, or another thread execd).\n",
1987                      leader_pid);
1988
1989           delete_lwp (leader_lp);
1990         }
1991     }
1992 }
1993
1994 /* Callback for `find_inferior'.  Returns the first LWP that is not
1995    stopped.  ARG is a PTID filter.  */
1996
1997 static int
1998 not_stopped_callback (struct inferior_list_entry *entry, void *arg)
1999 {
2000   struct thread_info *thr = (struct thread_info *) entry;
2001   struct lwp_info *lwp;
2002   ptid_t filter = *(ptid_t *) arg;
2003
2004   if (!ptid_match (ptid_of (thr), filter))
2005     return 0;
2006
2007   lwp = get_thread_lwp (thr);
2008   if (!lwp->stopped)
2009     return 1;
2010
2011   return 0;
2012 }
2013
2014 /* Increment LWP's suspend count.  */
2015
2016 static void
2017 lwp_suspended_inc (struct lwp_info *lwp)
2018 {
2019   lwp->suspended++;
2020
2021   if (debug_threads && lwp->suspended > 4)
2022     {
2023       struct thread_info *thread = get_lwp_thread (lwp);
2024
2025       debug_printf ("LWP %ld has a suspiciously high suspend count,"
2026                     " suspended=%d\n", lwpid_of (thread), lwp->suspended);
2027     }
2028 }
2029
2030 /* Decrement LWP's suspend count.  */
2031
2032 static void
2033 lwp_suspended_decr (struct lwp_info *lwp)
2034 {
2035   lwp->suspended--;
2036
2037   if (lwp->suspended < 0)
2038     {
2039       struct thread_info *thread = get_lwp_thread (lwp);
2040
2041       internal_error (__FILE__, __LINE__,
2042                       "unsuspend LWP %ld, suspended=%d\n", lwpid_of (thread),
2043                       lwp->suspended);
2044     }
2045 }
2046
2047 /* This function should only be called if the LWP got a SIGTRAP.
2048
2049    Handle any tracepoint steps or hits.  Return true if a tracepoint
2050    event was handled, 0 otherwise.  */
2051
2052 static int
2053 handle_tracepoints (struct lwp_info *lwp)
2054 {
2055   struct thread_info *tinfo = get_lwp_thread (lwp);
2056   int tpoint_related_event = 0;
2057
2058   gdb_assert (lwp->suspended == 0);
2059
2060   /* If this tracepoint hit causes a tracing stop, we'll immediately
2061      uninsert tracepoints.  To do this, we temporarily pause all
2062      threads, unpatch away, and then unpause threads.  We need to make
2063      sure the unpausing doesn't resume LWP too.  */
2064   lwp_suspended_inc (lwp);
2065
2066   /* And we need to be sure that any all-threads-stopping doesn't try
2067      to move threads out of the jump pads, as it could deadlock the
2068      inferior (LWP could be in the jump pad, maybe even holding the
2069      lock.)  */
2070
2071   /* Do any necessary step collect actions.  */
2072   tpoint_related_event |= tracepoint_finished_step (tinfo, lwp->stop_pc);
2073
2074   tpoint_related_event |= handle_tracepoint_bkpts (tinfo, lwp->stop_pc);
2075
2076   /* See if we just hit a tracepoint and do its main collect
2077      actions.  */
2078   tpoint_related_event |= tracepoint_was_hit (tinfo, lwp->stop_pc);
2079
2080   lwp_suspended_decr (lwp);
2081
2082   gdb_assert (lwp->suspended == 0);
2083   gdb_assert (!stabilizing_threads || lwp->collecting_fast_tracepoint);
2084
2085   if (tpoint_related_event)
2086     {
2087       if (debug_threads)
2088         debug_printf ("got a tracepoint event\n");
2089       return 1;
2090     }
2091
2092   return 0;
2093 }
2094
2095 /* Convenience wrapper.  Returns true if LWP is presently collecting a
2096    fast tracepoint.  */
2097
2098 static int
2099 linux_fast_tracepoint_collecting (struct lwp_info *lwp,
2100                                   struct fast_tpoint_collect_status *status)
2101 {
2102   CORE_ADDR thread_area;
2103   struct thread_info *thread = get_lwp_thread (lwp);
2104
2105   if (the_low_target.get_thread_area == NULL)
2106     return 0;
2107
2108   /* Get the thread area address.  This is used to recognize which
2109      thread is which when tracing with the in-process agent library.
2110      We don't read anything from the address, and treat it as opaque;
2111      it's the address itself that we assume is unique per-thread.  */
2112   if ((*the_low_target.get_thread_area) (lwpid_of (thread), &thread_area) == -1)
2113     return 0;
2114
2115   return fast_tracepoint_collecting (thread_area, lwp->stop_pc, status);
2116 }
2117
2118 /* The reason we resume in the caller, is because we want to be able
2119    to pass lwp->status_pending as WSTAT, and we need to clear
2120    status_pending_p before resuming, otherwise, linux_resume_one_lwp
2121    refuses to resume.  */
2122
2123 static int
2124 maybe_move_out_of_jump_pad (struct lwp_info *lwp, int *wstat)
2125 {
2126   struct thread_info *saved_thread;
2127
2128   saved_thread = current_thread;
2129   current_thread = get_lwp_thread (lwp);
2130
2131   if ((wstat == NULL
2132        || (WIFSTOPPED (*wstat) && WSTOPSIG (*wstat) != SIGTRAP))
2133       && supports_fast_tracepoints ()
2134       && agent_loaded_p ())
2135     {
2136       struct fast_tpoint_collect_status status;
2137       int r;
2138
2139       if (debug_threads)
2140         debug_printf ("Checking whether LWP %ld needs to move out of the "
2141                       "jump pad.\n",
2142                       lwpid_of (current_thread));
2143
2144       r = linux_fast_tracepoint_collecting (lwp, &status);
2145
2146       if (wstat == NULL
2147           || (WSTOPSIG (*wstat) != SIGILL
2148               && WSTOPSIG (*wstat) != SIGFPE
2149               && WSTOPSIG (*wstat) != SIGSEGV
2150               && WSTOPSIG (*wstat) != SIGBUS))
2151         {
2152           lwp->collecting_fast_tracepoint = r;
2153
2154           if (r != 0)
2155             {
2156               if (r == 1 && lwp->exit_jump_pad_bkpt == NULL)
2157                 {
2158                   /* Haven't executed the original instruction yet.
2159                      Set breakpoint there, and wait till it's hit,
2160                      then single-step until exiting the jump pad.  */
2161                   lwp->exit_jump_pad_bkpt
2162                     = set_breakpoint_at (status.adjusted_insn_addr, NULL);
2163                 }
2164
2165               if (debug_threads)
2166                 debug_printf ("Checking whether LWP %ld needs to move out of "
2167                               "the jump pad...it does\n",
2168                               lwpid_of (current_thread));
2169               current_thread = saved_thread;
2170
2171               return 1;
2172             }
2173         }
2174       else
2175         {
2176           /* If we get a synchronous signal while collecting, *and*
2177              while executing the (relocated) original instruction,
2178              reset the PC to point at the tpoint address, before
2179              reporting to GDB.  Otherwise, it's an IPA lib bug: just
2180              report the signal to GDB, and pray for the best.  */
2181
2182           lwp->collecting_fast_tracepoint = 0;
2183
2184           if (r != 0
2185               && (status.adjusted_insn_addr <= lwp->stop_pc
2186                   && lwp->stop_pc < status.adjusted_insn_addr_end))
2187             {
2188               siginfo_t info;
2189               struct regcache *regcache;
2190
2191               /* The si_addr on a few signals references the address
2192                  of the faulting instruction.  Adjust that as
2193                  well.  */
2194               if ((WSTOPSIG (*wstat) == SIGILL
2195                    || WSTOPSIG (*wstat) == SIGFPE
2196                    || WSTOPSIG (*wstat) == SIGBUS
2197                    || WSTOPSIG (*wstat) == SIGSEGV)
2198                   && ptrace (PTRACE_GETSIGINFO, lwpid_of (current_thread),
2199                              (PTRACE_TYPE_ARG3) 0, &info) == 0
2200                   /* Final check just to make sure we don't clobber
2201                      the siginfo of non-kernel-sent signals.  */
2202                   && (uintptr_t) info.si_addr == lwp->stop_pc)
2203                 {
2204                   info.si_addr = (void *) (uintptr_t) status.tpoint_addr;
2205                   ptrace (PTRACE_SETSIGINFO, lwpid_of (current_thread),
2206                           (PTRACE_TYPE_ARG3) 0, &info);
2207                 }
2208
2209               regcache = get_thread_regcache (current_thread, 1);
2210               (*the_low_target.set_pc) (regcache, status.tpoint_addr);
2211               lwp->stop_pc = status.tpoint_addr;
2212
2213               /* Cancel any fast tracepoint lock this thread was
2214                  holding.  */
2215               force_unlock_trace_buffer ();
2216             }
2217
2218           if (lwp->exit_jump_pad_bkpt != NULL)
2219             {
2220               if (debug_threads)
2221                 debug_printf ("Cancelling fast exit-jump-pad: removing bkpt. "
2222                               "stopping all threads momentarily.\n");
2223
2224               stop_all_lwps (1, lwp);
2225
2226               delete_breakpoint (lwp->exit_jump_pad_bkpt);
2227               lwp->exit_jump_pad_bkpt = NULL;
2228
2229               unstop_all_lwps (1, lwp);
2230
2231               gdb_assert (lwp->suspended >= 0);
2232             }
2233         }
2234     }
2235
2236   if (debug_threads)
2237     debug_printf ("Checking whether LWP %ld needs to move out of the "
2238                   "jump pad...no\n",
2239                   lwpid_of (current_thread));
2240
2241   current_thread = saved_thread;
2242   return 0;
2243 }
2244
2245 /* Enqueue one signal in the "signals to report later when out of the
2246    jump pad" list.  */
2247
2248 static void
2249 enqueue_one_deferred_signal (struct lwp_info *lwp, int *wstat)
2250 {
2251   struct pending_signals *p_sig;
2252   struct thread_info *thread = get_lwp_thread (lwp);
2253
2254   if (debug_threads)
2255     debug_printf ("Deferring signal %d for LWP %ld.\n",
2256                   WSTOPSIG (*wstat), lwpid_of (thread));
2257
2258   if (debug_threads)
2259     {
2260       struct pending_signals *sig;
2261
2262       for (sig = lwp->pending_signals_to_report;
2263            sig != NULL;
2264            sig = sig->prev)
2265         debug_printf ("   Already queued %d\n",
2266                       sig->signal);
2267
2268       debug_printf ("   (no more currently queued signals)\n");
2269     }
2270
2271   /* Don't enqueue non-RT signals if they are already in the deferred
2272      queue.  (SIGSTOP being the easiest signal to see ending up here
2273      twice)  */
2274   if (WSTOPSIG (*wstat) < __SIGRTMIN)
2275     {
2276       struct pending_signals *sig;
2277
2278       for (sig = lwp->pending_signals_to_report;
2279            sig != NULL;
2280            sig = sig->prev)
2281         {
2282           if (sig->signal == WSTOPSIG (*wstat))
2283             {
2284               if (debug_threads)
2285                 debug_printf ("Not requeuing already queued non-RT signal %d"
2286                               " for LWP %ld\n",
2287                               sig->signal,
2288                               lwpid_of (thread));
2289               return;
2290             }
2291         }
2292     }
2293
2294   p_sig = XCNEW (struct pending_signals);
2295   p_sig->prev = lwp->pending_signals_to_report;
2296   p_sig->signal = WSTOPSIG (*wstat);
2297
2298   ptrace (PTRACE_GETSIGINFO, lwpid_of (thread), (PTRACE_TYPE_ARG3) 0,
2299           &p_sig->info);
2300
2301   lwp->pending_signals_to_report = p_sig;
2302 }
2303
2304 /* Dequeue one signal from the "signals to report later when out of
2305    the jump pad" list.  */
2306
2307 static int
2308 dequeue_one_deferred_signal (struct lwp_info *lwp, int *wstat)
2309 {
2310   struct thread_info *thread = get_lwp_thread (lwp);
2311
2312   if (lwp->pending_signals_to_report != NULL)
2313     {
2314       struct pending_signals **p_sig;
2315
2316       p_sig = &lwp->pending_signals_to_report;
2317       while ((*p_sig)->prev != NULL)
2318         p_sig = &(*p_sig)->prev;
2319
2320       *wstat = W_STOPCODE ((*p_sig)->signal);
2321       if ((*p_sig)->info.si_signo != 0)
2322         ptrace (PTRACE_SETSIGINFO, lwpid_of (thread), (PTRACE_TYPE_ARG3) 0,
2323                 &(*p_sig)->info);
2324       free (*p_sig);
2325       *p_sig = NULL;
2326
2327       if (debug_threads)
2328         debug_printf ("Reporting deferred signal %d for LWP %ld.\n",
2329                       WSTOPSIG (*wstat), lwpid_of (thread));
2330
2331       if (debug_threads)
2332         {
2333           struct pending_signals *sig;
2334
2335           for (sig = lwp->pending_signals_to_report;
2336                sig != NULL;
2337                sig = sig->prev)
2338             debug_printf ("   Still queued %d\n",
2339                           sig->signal);
2340
2341           debug_printf ("   (no more queued signals)\n");
2342         }
2343
2344       return 1;
2345     }
2346
2347   return 0;
2348 }
2349
2350 /* Fetch the possibly triggered data watchpoint info and store it in
2351    CHILD.
2352
2353    On some archs, like x86, that use debug registers to set
2354    watchpoints, it's possible that the way to know which watched
2355    address trapped, is to check the register that is used to select
2356    which address to watch.  Problem is, between setting the watchpoint
2357    and reading back which data address trapped, the user may change
2358    the set of watchpoints, and, as a consequence, GDB changes the
2359    debug registers in the inferior.  To avoid reading back a stale
2360    stopped-data-address when that happens, we cache in LP the fact
2361    that a watchpoint trapped, and the corresponding data address, as
2362    soon as we see CHILD stop with a SIGTRAP.  If GDB changes the debug
2363    registers meanwhile, we have the cached data we can rely on.  */
2364
2365 static int
2366 check_stopped_by_watchpoint (struct lwp_info *child)
2367 {
2368   if (the_low_target.stopped_by_watchpoint != NULL)
2369     {
2370       struct thread_info *saved_thread;
2371
2372       saved_thread = current_thread;
2373       current_thread = get_lwp_thread (child);
2374
2375       if (the_low_target.stopped_by_watchpoint ())
2376         {
2377           child->stop_reason = TARGET_STOPPED_BY_WATCHPOINT;
2378
2379           if (the_low_target.stopped_data_address != NULL)
2380             child->stopped_data_address
2381               = the_low_target.stopped_data_address ();
2382           else
2383             child->stopped_data_address = 0;
2384         }
2385
2386       current_thread = saved_thread;
2387     }
2388
2389   return child->stop_reason == TARGET_STOPPED_BY_WATCHPOINT;
2390 }
2391
2392 /* Return the ptrace options that we want to try to enable.  */
2393
2394 static int
2395 linux_low_ptrace_options (int attached)
2396 {
2397   int options = 0;
2398
2399   if (!attached)
2400     options |= PTRACE_O_EXITKILL;
2401
2402   if (report_fork_events)
2403     options |= PTRACE_O_TRACEFORK;
2404
2405   if (report_vfork_events)
2406     options |= (PTRACE_O_TRACEVFORK | PTRACE_O_TRACEVFORKDONE);
2407
2408   if (report_exec_events)
2409     options |= PTRACE_O_TRACEEXEC;
2410
2411   options |= PTRACE_O_TRACESYSGOOD;
2412
2413   return options;
2414 }
2415
2416 /* Do low-level handling of the event, and check if we should go on
2417    and pass it to caller code.  Return the affected lwp if we are, or
2418    NULL otherwise.  */
2419
2420 static struct lwp_info *
2421 linux_low_filter_event (int lwpid, int wstat)
2422 {
2423   struct lwp_info *child;
2424   struct thread_info *thread;
2425   int have_stop_pc = 0;
2426
2427   child = find_lwp_pid (pid_to_ptid (lwpid));
2428
2429   /* Check for stop events reported by a process we didn't already
2430      know about - anything not already in our LWP list.
2431
2432      If we're expecting to receive stopped processes after
2433      fork, vfork, and clone events, then we'll just add the
2434      new one to our list and go back to waiting for the event
2435      to be reported - the stopped process might be returned
2436      from waitpid before or after the event is.
2437
2438      But note the case of a non-leader thread exec'ing after the
2439      leader having exited, and gone from our lists (because
2440      check_zombie_leaders deleted it).  The non-leader thread
2441      changes its tid to the tgid.  */
2442
2443   if (WIFSTOPPED (wstat) && child == NULL && WSTOPSIG (wstat) == SIGTRAP
2444       && linux_ptrace_get_extended_event (wstat) == PTRACE_EVENT_EXEC)
2445     {
2446       ptid_t child_ptid;
2447
2448       /* A multi-thread exec after we had seen the leader exiting.  */
2449       if (debug_threads)
2450         {
2451           debug_printf ("LLW: Re-adding thread group leader LWP %d"
2452                         "after exec.\n", lwpid);
2453         }
2454
2455       child_ptid = ptid_build (lwpid, lwpid, 0);
2456       child = add_lwp (child_ptid);
2457       child->stopped = 1;
2458       current_thread = child->thread;
2459     }
2460
2461   /* If we didn't find a process, one of two things presumably happened:
2462      - A process we started and then detached from has exited.  Ignore it.
2463      - A process we are controlling has forked and the new child's stop
2464      was reported to us by the kernel.  Save its PID.  */
2465   if (child == NULL && WIFSTOPPED (wstat))
2466     {
2467       add_to_pid_list (&stopped_pids, lwpid, wstat);
2468       return NULL;
2469     }
2470   else if (child == NULL)
2471     return NULL;
2472
2473   thread = get_lwp_thread (child);
2474
2475   child->stopped = 1;
2476
2477   child->last_status = wstat;
2478
2479   /* Check if the thread has exited.  */
2480   if ((WIFEXITED (wstat) || WIFSIGNALED (wstat)))
2481     {
2482       if (debug_threads)
2483         debug_printf ("LLFE: %d exited.\n", lwpid);
2484
2485       if (finish_step_over (child))
2486         {
2487           /* Unsuspend all other LWPs, and set them back running again.  */
2488           unsuspend_all_lwps (child);
2489         }
2490
2491       /* If there is at least one more LWP, then the exit signal was
2492          not the end of the debugged application and should be
2493          ignored, unless GDB wants to hear about thread exits.  */
2494       if (report_thread_events
2495           || last_thread_of_process_p (pid_of (thread)))
2496         {
2497           /* Since events are serialized to GDB core, and we can't
2498              report this one right now.  Leave the status pending for
2499              the next time we're able to report it.  */
2500           mark_lwp_dead (child, wstat);
2501           return child;
2502         }
2503       else
2504         {
2505           delete_lwp (child);
2506           return NULL;
2507         }
2508     }
2509
2510   gdb_assert (WIFSTOPPED (wstat));
2511
2512   if (WIFSTOPPED (wstat))
2513     {
2514       struct process_info *proc;
2515
2516       /* Architecture-specific setup after inferior is running.  */
2517       proc = find_process_pid (pid_of (thread));
2518       if (proc->tdesc == NULL)
2519         {
2520           if (proc->attached)
2521             {
2522               /* This needs to happen after we have attached to the
2523                  inferior and it is stopped for the first time, but
2524                  before we access any inferior registers.  */
2525               linux_arch_setup_thread (thread);
2526             }
2527           else
2528             {
2529               /* The process is started, but GDBserver will do
2530                  architecture-specific setup after the program stops at
2531                  the first instruction.  */
2532               child->status_pending_p = 1;
2533               child->status_pending = wstat;
2534               return child;
2535             }
2536         }
2537     }
2538
2539   if (WIFSTOPPED (wstat) && child->must_set_ptrace_flags)
2540     {
2541       struct process_info *proc = find_process_pid (pid_of (thread));
2542       int options = linux_low_ptrace_options (proc->attached);
2543
2544       linux_enable_event_reporting (lwpid, options);
2545       child->must_set_ptrace_flags = 0;
2546     }
2547
2548   /* Always update syscall_state, even if it will be filtered later.  */
2549   if (WIFSTOPPED (wstat) && WSTOPSIG (wstat) == SYSCALL_SIGTRAP)
2550     {
2551       child->syscall_state
2552         = (child->syscall_state == TARGET_WAITKIND_SYSCALL_ENTRY
2553            ? TARGET_WAITKIND_SYSCALL_RETURN
2554            : TARGET_WAITKIND_SYSCALL_ENTRY);
2555     }
2556   else
2557     {
2558       /* Almost all other ptrace-stops are known to be outside of system
2559          calls, with further exceptions in handle_extended_wait.  */
2560       child->syscall_state = TARGET_WAITKIND_IGNORE;
2561     }
2562
2563   /* Be careful to not overwrite stop_pc until save_stop_reason is
2564      called.  */
2565   if (WIFSTOPPED (wstat) && WSTOPSIG (wstat) == SIGTRAP
2566       && linux_is_extended_waitstatus (wstat))
2567     {
2568       child->stop_pc = get_pc (child);
2569       if (handle_extended_wait (&child, wstat))
2570         {
2571           /* The event has been handled, so just return without
2572              reporting it.  */
2573           return NULL;
2574         }
2575     }
2576
2577   if (linux_wstatus_maybe_breakpoint (wstat))
2578     {
2579       if (save_stop_reason (child))
2580         have_stop_pc = 1;
2581     }
2582
2583   if (!have_stop_pc)
2584     child->stop_pc = get_pc (child);
2585
2586   if (WIFSTOPPED (wstat) && WSTOPSIG (wstat) == SIGSTOP
2587       && child->stop_expected)
2588     {
2589       if (debug_threads)
2590         debug_printf ("Expected stop.\n");
2591       child->stop_expected = 0;
2592
2593       if (thread->last_resume_kind == resume_stop)
2594         {
2595           /* We want to report the stop to the core.  Treat the
2596              SIGSTOP as a normal event.  */
2597           if (debug_threads)
2598             debug_printf ("LLW: resume_stop SIGSTOP caught for %s.\n",
2599                           target_pid_to_str (ptid_of (thread)));
2600         }
2601       else if (stopping_threads != NOT_STOPPING_THREADS)
2602         {
2603           /* Stopping threads.  We don't want this SIGSTOP to end up
2604              pending.  */
2605           if (debug_threads)
2606             debug_printf ("LLW: SIGSTOP caught for %s "
2607                           "while stopping threads.\n",
2608                           target_pid_to_str (ptid_of (thread)));
2609           return NULL;
2610         }
2611       else
2612         {
2613           /* This is a delayed SIGSTOP.  Filter out the event.  */
2614           if (debug_threads)
2615             debug_printf ("LLW: %s %s, 0, 0 (discard delayed SIGSTOP)\n",
2616                           child->stepping ? "step" : "continue",
2617                           target_pid_to_str (ptid_of (thread)));
2618
2619           linux_resume_one_lwp (child, child->stepping, 0, NULL);
2620           return NULL;
2621         }
2622     }
2623
2624   child->status_pending_p = 1;
2625   child->status_pending = wstat;
2626   return child;
2627 }
2628
2629 /* Return true if THREAD is doing hardware single step.  */
2630
2631 static int
2632 maybe_hw_step (struct thread_info *thread)
2633 {
2634   if (can_hardware_single_step ())
2635     return 1;
2636   else
2637     {
2638       /* GDBserver must insert single-step breakpoint for software
2639          single step.  */
2640       gdb_assert (has_single_step_breakpoints (thread));
2641       return 0;
2642     }
2643 }
2644
2645 /* Resume LWPs that are currently stopped without any pending status
2646    to report, but are resumed from the core's perspective.  */
2647
2648 static void
2649 resume_stopped_resumed_lwps (struct inferior_list_entry *entry)
2650 {
2651   struct thread_info *thread = (struct thread_info *) entry;
2652   struct lwp_info *lp = get_thread_lwp (thread);
2653
2654   if (lp->stopped
2655       && !lp->suspended
2656       && !lp->status_pending_p
2657       && thread->last_status.kind == TARGET_WAITKIND_IGNORE)
2658     {
2659       int step = 0;
2660
2661       if (thread->last_resume_kind == resume_step)
2662         step = maybe_hw_step (thread);
2663
2664       if (debug_threads)
2665         debug_printf ("RSRL: resuming stopped-resumed LWP %s at %s: step=%d\n",
2666                       target_pid_to_str (ptid_of (thread)),
2667                       paddress (lp->stop_pc),
2668                       step);
2669
2670       linux_resume_one_lwp (lp, step, GDB_SIGNAL_0, NULL);
2671     }
2672 }
2673
2674 /* Wait for an event from child(ren) WAIT_PTID, and return any that
2675    match FILTER_PTID (leaving others pending).  The PTIDs can be:
2676    minus_one_ptid, to specify any child; a pid PTID, specifying all
2677    lwps of a thread group; or a PTID representing a single lwp.  Store
2678    the stop status through the status pointer WSTAT.  OPTIONS is
2679    passed to the waitpid call.  Return 0 if no event was found and
2680    OPTIONS contains WNOHANG.  Return -1 if no unwaited-for children
2681    was found.  Return the PID of the stopped child otherwise.  */
2682
2683 static int
2684 linux_wait_for_event_filtered (ptid_t wait_ptid, ptid_t filter_ptid,
2685                                int *wstatp, int options)
2686 {
2687   struct thread_info *event_thread;
2688   struct lwp_info *event_child, *requested_child;
2689   sigset_t block_mask, prev_mask;
2690
2691  retry:
2692   /* N.B. event_thread points to the thread_info struct that contains
2693      event_child.  Keep them in sync.  */
2694   event_thread = NULL;
2695   event_child = NULL;
2696   requested_child = NULL;
2697
2698   /* Check for a lwp with a pending status.  */
2699
2700   if (ptid_equal (filter_ptid, minus_one_ptid) || ptid_is_pid (filter_ptid))
2701     {
2702       event_thread = (struct thread_info *)
2703         find_inferior (&all_threads, status_pending_p_callback, &filter_ptid);
2704       if (event_thread != NULL)
2705         event_child = get_thread_lwp (event_thread);
2706       if (debug_threads && event_thread)
2707         debug_printf ("Got a pending child %ld\n", lwpid_of (event_thread));
2708     }
2709   else if (!ptid_equal (filter_ptid, null_ptid))
2710     {
2711       requested_child = find_lwp_pid (filter_ptid);
2712
2713       if (stopping_threads == NOT_STOPPING_THREADS
2714           && requested_child->status_pending_p
2715           && requested_child->collecting_fast_tracepoint)
2716         {
2717           enqueue_one_deferred_signal (requested_child,
2718                                        &requested_child->status_pending);
2719           requested_child->status_pending_p = 0;
2720           requested_child->status_pending = 0;
2721           linux_resume_one_lwp (requested_child, 0, 0, NULL);
2722         }
2723
2724       if (requested_child->suspended
2725           && requested_child->status_pending_p)
2726         {
2727           internal_error (__FILE__, __LINE__,
2728                           "requesting an event out of a"
2729                           " suspended child?");
2730         }
2731
2732       if (requested_child->status_pending_p)
2733         {
2734           event_child = requested_child;
2735           event_thread = get_lwp_thread (event_child);
2736         }
2737     }
2738
2739   if (event_child != NULL)
2740     {
2741       if (debug_threads)
2742         debug_printf ("Got an event from pending child %ld (%04x)\n",
2743                       lwpid_of (event_thread), event_child->status_pending);
2744       *wstatp = event_child->status_pending;
2745       event_child->status_pending_p = 0;
2746       event_child->status_pending = 0;
2747       current_thread = event_thread;
2748       return lwpid_of (event_thread);
2749     }
2750
2751   /* But if we don't find a pending event, we'll have to wait.
2752
2753      We only enter this loop if no process has a pending wait status.
2754      Thus any action taken in response to a wait status inside this
2755      loop is responding as soon as we detect the status, not after any
2756      pending events.  */
2757
2758   /* Make sure SIGCHLD is blocked until the sigsuspend below.  Block
2759      all signals while here.  */
2760   sigfillset (&block_mask);
2761   sigprocmask (SIG_BLOCK, &block_mask, &prev_mask);
2762
2763   /* Always pull all events out of the kernel.  We'll randomly select
2764      an event LWP out of all that have events, to prevent
2765      starvation.  */
2766   while (event_child == NULL)
2767     {
2768       pid_t ret = 0;
2769
2770       /* Always use -1 and WNOHANG, due to couple of a kernel/ptrace
2771          quirks:
2772
2773          - If the thread group leader exits while other threads in the
2774            thread group still exist, waitpid(TGID, ...) hangs.  That
2775            waitpid won't return an exit status until the other threads
2776            in the group are reaped.
2777
2778          - When a non-leader thread execs, that thread just vanishes
2779            without reporting an exit (so we'd hang if we waited for it
2780            explicitly in that case).  The exec event is reported to
2781            the TGID pid.  */
2782       errno = 0;
2783       ret = my_waitpid (-1, wstatp, options | WNOHANG);
2784
2785       if (debug_threads)
2786         debug_printf ("LWFE: waitpid(-1, ...) returned %d, %s\n",
2787                       ret, errno ? strerror (errno) : "ERRNO-OK");
2788
2789       if (ret > 0)
2790         {
2791           if (debug_threads)
2792             {
2793               debug_printf ("LLW: waitpid %ld received %s\n",
2794                             (long) ret, status_to_str (*wstatp));
2795             }
2796
2797           /* Filter all events.  IOW, leave all events pending.  We'll
2798              randomly select an event LWP out of all that have events
2799              below.  */
2800           linux_low_filter_event (ret, *wstatp);
2801           /* Retry until nothing comes out of waitpid.  A single
2802              SIGCHLD can indicate more than one child stopped.  */
2803           continue;
2804         }
2805
2806       /* Now that we've pulled all events out of the kernel, resume
2807          LWPs that don't have an interesting event to report.  */
2808       if (stopping_threads == NOT_STOPPING_THREADS)
2809         for_each_inferior (&all_threads, resume_stopped_resumed_lwps);
2810
2811       /* ... and find an LWP with a status to report to the core, if
2812          any.  */
2813       event_thread = (struct thread_info *)
2814         find_inferior (&all_threads, status_pending_p_callback, &filter_ptid);
2815       if (event_thread != NULL)
2816         {
2817           event_child = get_thread_lwp (event_thread);
2818           *wstatp = event_child->status_pending;
2819           event_child->status_pending_p = 0;
2820           event_child->status_pending = 0;
2821           break;
2822         }
2823
2824       /* Check for zombie thread group leaders.  Those can't be reaped
2825          until all other threads in the thread group are.  */
2826       check_zombie_leaders ();
2827
2828       /* If there are no resumed children left in the set of LWPs we
2829          want to wait for, bail.  We can't just block in
2830          waitpid/sigsuspend, because lwps might have been left stopped
2831          in trace-stop state, and we'd be stuck forever waiting for
2832          their status to change (which would only happen if we resumed
2833          them).  Even if WNOHANG is set, this return code is preferred
2834          over 0 (below), as it is more detailed.  */
2835       if ((find_inferior (&all_threads,
2836                           not_stopped_callback,
2837                           &wait_ptid) == NULL))
2838         {
2839           if (debug_threads)
2840             debug_printf ("LLW: exit (no unwaited-for LWP)\n");
2841           sigprocmask (SIG_SETMASK, &prev_mask, NULL);
2842           return -1;
2843         }
2844
2845       /* No interesting event to report to the caller.  */
2846       if ((options & WNOHANG))
2847         {
2848           if (debug_threads)
2849             debug_printf ("WNOHANG set, no event found\n");
2850
2851           sigprocmask (SIG_SETMASK, &prev_mask, NULL);
2852           return 0;
2853         }
2854
2855       /* Block until we get an event reported with SIGCHLD.  */
2856       if (debug_threads)
2857         debug_printf ("sigsuspend'ing\n");
2858
2859       sigsuspend (&prev_mask);
2860       sigprocmask (SIG_SETMASK, &prev_mask, NULL);
2861       goto retry;
2862     }
2863
2864   sigprocmask (SIG_SETMASK, &prev_mask, NULL);
2865
2866   current_thread = event_thread;
2867
2868   return lwpid_of (event_thread);
2869 }
2870
2871 /* Wait for an event from child(ren) PTID.  PTIDs can be:
2872    minus_one_ptid, to specify any child; a pid PTID, specifying all
2873    lwps of a thread group; or a PTID representing a single lwp.  Store
2874    the stop status through the status pointer WSTAT.  OPTIONS is
2875    passed to the waitpid call.  Return 0 if no event was found and
2876    OPTIONS contains WNOHANG.  Return -1 if no unwaited-for children
2877    was found.  Return the PID of the stopped child otherwise.  */
2878
2879 static int
2880 linux_wait_for_event (ptid_t ptid, int *wstatp, int options)
2881 {
2882   return linux_wait_for_event_filtered (ptid, ptid, wstatp, options);
2883 }
2884
2885 /* Count the LWP's that have had events.  */
2886
2887 static int
2888 count_events_callback (struct inferior_list_entry *entry, void *data)
2889 {
2890   struct thread_info *thread = (struct thread_info *) entry;
2891   struct lwp_info *lp = get_thread_lwp (thread);
2892   int *count = (int *) data;
2893
2894   gdb_assert (count != NULL);
2895
2896   /* Count only resumed LWPs that have an event pending. */
2897   if (thread->last_status.kind == TARGET_WAITKIND_IGNORE
2898       && lp->status_pending_p)
2899     (*count)++;
2900
2901   return 0;
2902 }
2903
2904 /* Select the LWP (if any) that is currently being single-stepped.  */
2905
2906 static int
2907 select_singlestep_lwp_callback (struct inferior_list_entry *entry, void *data)
2908 {
2909   struct thread_info *thread = (struct thread_info *) entry;
2910   struct lwp_info *lp = get_thread_lwp (thread);
2911
2912   if (thread->last_status.kind == TARGET_WAITKIND_IGNORE
2913       && thread->last_resume_kind == resume_step
2914       && lp->status_pending_p)
2915     return 1;
2916   else
2917     return 0;
2918 }
2919
2920 /* Select the Nth LWP that has had an event.  */
2921
2922 static int
2923 select_event_lwp_callback (struct inferior_list_entry *entry, void *data)
2924 {
2925   struct thread_info *thread = (struct thread_info *) entry;
2926   struct lwp_info *lp = get_thread_lwp (thread);
2927   int *selector = (int *) data;
2928
2929   gdb_assert (selector != NULL);
2930
2931   /* Select only resumed LWPs that have an event pending. */
2932   if (thread->last_status.kind == TARGET_WAITKIND_IGNORE
2933       && lp->status_pending_p)
2934     if ((*selector)-- == 0)
2935       return 1;
2936
2937   return 0;
2938 }
2939
2940 /* Select one LWP out of those that have events pending.  */
2941
2942 static void
2943 select_event_lwp (struct lwp_info **orig_lp)
2944 {
2945   int num_events = 0;
2946   int random_selector;
2947   struct thread_info *event_thread = NULL;
2948
2949   /* In all-stop, give preference to the LWP that is being
2950      single-stepped.  There will be at most one, and it's the LWP that
2951      the core is most interested in.  If we didn't do this, then we'd
2952      have to handle pending step SIGTRAPs somehow in case the core
2953      later continues the previously-stepped thread, otherwise we'd
2954      report the pending SIGTRAP, and the core, not having stepped the
2955      thread, wouldn't understand what the trap was for, and therefore
2956      would report it to the user as a random signal.  */
2957   if (!non_stop)
2958     {
2959       event_thread
2960         = (struct thread_info *) find_inferior (&all_threads,
2961                                                 select_singlestep_lwp_callback,
2962                                                 NULL);
2963       if (event_thread != NULL)
2964         {
2965           if (debug_threads)
2966             debug_printf ("SEL: Select single-step %s\n",
2967                           target_pid_to_str (ptid_of (event_thread)));
2968         }
2969     }
2970   if (event_thread == NULL)
2971     {
2972       /* No single-stepping LWP.  Select one at random, out of those
2973          which have had events.  */
2974
2975       /* First see how many events we have.  */
2976       find_inferior (&all_threads, count_events_callback, &num_events);
2977       gdb_assert (num_events > 0);
2978
2979       /* Now randomly pick a LWP out of those that have had
2980          events.  */
2981       random_selector = (int)
2982         ((num_events * (double) rand ()) / (RAND_MAX + 1.0));
2983
2984       if (debug_threads && num_events > 1)
2985         debug_printf ("SEL: Found %d SIGTRAP events, selecting #%d\n",
2986                       num_events, random_selector);
2987
2988       event_thread
2989         = (struct thread_info *) find_inferior (&all_threads,
2990                                                 select_event_lwp_callback,
2991                                                 &random_selector);
2992     }
2993
2994   if (event_thread != NULL)
2995     {
2996       struct lwp_info *event_lp = get_thread_lwp (event_thread);
2997
2998       /* Switch the event LWP.  */
2999       *orig_lp = event_lp;
3000     }
3001 }
3002
3003 /* Decrement the suspend count of an LWP.  */
3004
3005 static int
3006 unsuspend_one_lwp (struct inferior_list_entry *entry, void *except)
3007 {
3008   struct thread_info *thread = (struct thread_info *) entry;
3009   struct lwp_info *lwp = get_thread_lwp (thread);
3010
3011   /* Ignore EXCEPT.  */
3012   if (lwp == except)
3013     return 0;
3014
3015   lwp_suspended_decr (lwp);
3016   return 0;
3017 }
3018
3019 /* Decrement the suspend count of all LWPs, except EXCEPT, if non
3020    NULL.  */
3021
3022 static void
3023 unsuspend_all_lwps (struct lwp_info *except)
3024 {
3025   find_inferior (&all_threads, unsuspend_one_lwp, except);
3026 }
3027
3028 static void move_out_of_jump_pad_callback (struct inferior_list_entry *entry);
3029 static int stuck_in_jump_pad_callback (struct inferior_list_entry *entry,
3030                                        void *data);
3031 static int lwp_running (struct inferior_list_entry *entry, void *data);
3032 static ptid_t linux_wait_1 (ptid_t ptid,
3033                             struct target_waitstatus *ourstatus,
3034                             int target_options);
3035
3036 /* Stabilize threads (move out of jump pads).
3037
3038    If a thread is midway collecting a fast tracepoint, we need to
3039    finish the collection and move it out of the jump pad before
3040    reporting the signal.
3041
3042    This avoids recursion while collecting (when a signal arrives
3043    midway, and the signal handler itself collects), which would trash
3044    the trace buffer.  In case the user set a breakpoint in a signal
3045    handler, this avoids the backtrace showing the jump pad, etc..
3046    Most importantly, there are certain things we can't do safely if
3047    threads are stopped in a jump pad (or in its callee's).  For
3048    example:
3049
3050      - starting a new trace run.  A thread still collecting the
3051    previous run, could trash the trace buffer when resumed.  The trace
3052    buffer control structures would have been reset but the thread had
3053    no way to tell.  The thread could even midway memcpy'ing to the
3054    buffer, which would mean that when resumed, it would clobber the
3055    trace buffer that had been set for a new run.
3056
3057      - we can't rewrite/reuse the jump pads for new tracepoints
3058    safely.  Say you do tstart while a thread is stopped midway while
3059    collecting.  When the thread is later resumed, it finishes the
3060    collection, and returns to the jump pad, to execute the original
3061    instruction that was under the tracepoint jump at the time the
3062    older run had been started.  If the jump pad had been rewritten
3063    since for something else in the new run, the thread would now
3064    execute the wrong / random instructions.  */
3065
3066 static void
3067 linux_stabilize_threads (void)
3068 {
3069   struct thread_info *saved_thread;
3070   struct thread_info *thread_stuck;
3071
3072   thread_stuck
3073     = (struct thread_info *) find_inferior (&all_threads,
3074                                             stuck_in_jump_pad_callback,
3075                                             NULL);
3076   if (thread_stuck != NULL)
3077     {
3078       if (debug_threads)
3079         debug_printf ("can't stabilize, LWP %ld is stuck in jump pad\n",
3080                       lwpid_of (thread_stuck));
3081       return;
3082     }
3083
3084   saved_thread = current_thread;
3085
3086   stabilizing_threads = 1;
3087
3088   /* Kick 'em all.  */
3089   for_each_inferior (&all_threads, move_out_of_jump_pad_callback);
3090
3091   /* Loop until all are stopped out of the jump pads.  */
3092   while (find_inferior (&all_threads, lwp_running, NULL) != NULL)
3093     {
3094       struct target_waitstatus ourstatus;
3095       struct lwp_info *lwp;
3096       int wstat;
3097
3098       /* Note that we go through the full wait even loop.  While
3099          moving threads out of jump pad, we need to be able to step
3100          over internal breakpoints and such.  */
3101       linux_wait_1 (minus_one_ptid, &ourstatus, 0);
3102
3103       if (ourstatus.kind == TARGET_WAITKIND_STOPPED)
3104         {
3105           lwp = get_thread_lwp (current_thread);
3106
3107           /* Lock it.  */
3108           lwp_suspended_inc (lwp);
3109
3110           if (ourstatus.value.sig != GDB_SIGNAL_0
3111               || current_thread->last_resume_kind == resume_stop)
3112             {
3113               wstat = W_STOPCODE (gdb_signal_to_host (ourstatus.value.sig));
3114               enqueue_one_deferred_signal (lwp, &wstat);
3115             }
3116         }
3117     }
3118
3119   unsuspend_all_lwps (NULL);
3120
3121   stabilizing_threads = 0;
3122
3123   current_thread = saved_thread;
3124
3125   if (debug_threads)
3126     {
3127       thread_stuck
3128         = (struct thread_info *) find_inferior (&all_threads,
3129                                                 stuck_in_jump_pad_callback,
3130                                                 NULL);
3131       if (thread_stuck != NULL)
3132         debug_printf ("couldn't stabilize, LWP %ld got stuck in jump pad\n",
3133                       lwpid_of (thread_stuck));
3134     }
3135 }
3136
3137 /* Convenience function that is called when the kernel reports an
3138    event that is not passed out to GDB.  */
3139
3140 static ptid_t
3141 ignore_event (struct target_waitstatus *ourstatus)
3142 {
3143   /* If we got an event, there may still be others, as a single
3144      SIGCHLD can indicate more than one child stopped.  This forces
3145      another target_wait call.  */
3146   async_file_mark ();
3147
3148   ourstatus->kind = TARGET_WAITKIND_IGNORE;
3149   return null_ptid;
3150 }
3151
3152 /* Convenience function that is called when the kernel reports an exit
3153    event.  This decides whether to report the event to GDB as a
3154    process exit event, a thread exit event, or to suppress the
3155    event.  */
3156
3157 static ptid_t
3158 filter_exit_event (struct lwp_info *event_child,
3159                    struct target_waitstatus *ourstatus)
3160 {
3161   struct thread_info *thread = get_lwp_thread (event_child);
3162   ptid_t ptid = ptid_of (thread);
3163
3164   if (!last_thread_of_process_p (pid_of (thread)))
3165     {
3166       if (report_thread_events)
3167         ourstatus->kind = TARGET_WAITKIND_THREAD_EXITED;
3168       else
3169         ourstatus->kind = TARGET_WAITKIND_IGNORE;
3170
3171       delete_lwp (event_child);
3172     }
3173   return ptid;
3174 }
3175
3176 /* Returns 1 if GDB is interested in any event_child syscalls.  */
3177
3178 static int
3179 gdb_catching_syscalls_p (struct lwp_info *event_child)
3180 {
3181   struct thread_info *thread = get_lwp_thread (event_child);
3182   struct process_info *proc = get_thread_process (thread);
3183
3184   return !VEC_empty (int, proc->syscalls_to_catch);
3185 }
3186
3187 /* Returns 1 if GDB is interested in the event_child syscall.
3188    Only to be called when stopped reason is SYSCALL_SIGTRAP.  */
3189
3190 static int
3191 gdb_catch_this_syscall_p (struct lwp_info *event_child)
3192 {
3193   int i, iter;
3194   int sysno;
3195   struct thread_info *thread = get_lwp_thread (event_child);
3196   struct process_info *proc = get_thread_process (thread);
3197
3198   if (VEC_empty (int, proc->syscalls_to_catch))
3199     return 0;
3200
3201   if (VEC_index (int, proc->syscalls_to_catch, 0) == ANY_SYSCALL)
3202     return 1;
3203
3204   get_syscall_trapinfo (event_child, &sysno);
3205   for (i = 0;
3206        VEC_iterate (int, proc->syscalls_to_catch, i, iter);
3207        i++)
3208     if (iter == sysno)
3209       return 1;
3210
3211   return 0;
3212 }
3213
3214 /* Wait for process, returns status.  */
3215
3216 static ptid_t
3217 linux_wait_1 (ptid_t ptid,
3218               struct target_waitstatus *ourstatus, int target_options)
3219 {
3220   int w;
3221   struct lwp_info *event_child;
3222   int options;
3223   int pid;
3224   int step_over_finished;
3225   int bp_explains_trap;
3226   int maybe_internal_trap;
3227   int report_to_gdb;
3228   int trace_event;
3229   int in_step_range;
3230   int any_resumed;
3231
3232   if (debug_threads)
3233     {
3234       debug_enter ();
3235       debug_printf ("linux_wait_1: [%s]\n", target_pid_to_str (ptid));
3236     }
3237
3238   /* Translate generic target options into linux options.  */
3239   options = __WALL;
3240   if (target_options & TARGET_WNOHANG)
3241     options |= WNOHANG;
3242
3243   bp_explains_trap = 0;
3244   trace_event = 0;
3245   in_step_range = 0;
3246   ourstatus->kind = TARGET_WAITKIND_IGNORE;
3247
3248   /* Find a resumed LWP, if any.  */
3249   if (find_inferior (&all_threads,
3250                      status_pending_p_callback,
3251                      &minus_one_ptid) != NULL)
3252     any_resumed = 1;
3253   else if ((find_inferior (&all_threads,
3254                            not_stopped_callback,
3255                            &minus_one_ptid) != NULL))
3256     any_resumed = 1;
3257   else
3258     any_resumed = 0;
3259
3260   if (ptid_equal (step_over_bkpt, null_ptid))
3261     pid = linux_wait_for_event (ptid, &w, options);
3262   else
3263     {
3264       if (debug_threads)
3265         debug_printf ("step_over_bkpt set [%s], doing a blocking wait\n",
3266                       target_pid_to_str (step_over_bkpt));
3267       pid = linux_wait_for_event (step_over_bkpt, &w, options & ~WNOHANG);
3268     }
3269
3270   if (pid == 0 || (pid == -1 && !any_resumed))
3271     {
3272       gdb_assert (target_options & TARGET_WNOHANG);
3273
3274       if (debug_threads)
3275         {
3276           debug_printf ("linux_wait_1 ret = null_ptid, "
3277                         "TARGET_WAITKIND_IGNORE\n");
3278           debug_exit ();
3279         }
3280
3281       ourstatus->kind = TARGET_WAITKIND_IGNORE;
3282       return null_ptid;
3283     }
3284   else if (pid == -1)
3285     {
3286       if (debug_threads)
3287         {
3288           debug_printf ("linux_wait_1 ret = null_ptid, "
3289                         "TARGET_WAITKIND_NO_RESUMED\n");
3290           debug_exit ();
3291         }
3292
3293       ourstatus->kind = TARGET_WAITKIND_NO_RESUMED;
3294       return null_ptid;
3295     }
3296
3297   event_child = get_thread_lwp (current_thread);
3298
3299   /* linux_wait_for_event only returns an exit status for the last
3300      child of a process.  Report it.  */
3301   if (WIFEXITED (w) || WIFSIGNALED (w))
3302     {
3303       if (WIFEXITED (w))
3304         {
3305           ourstatus->kind = TARGET_WAITKIND_EXITED;
3306           ourstatus->value.integer = WEXITSTATUS (w);
3307
3308           if (debug_threads)
3309             {
3310               debug_printf ("linux_wait_1 ret = %s, exited with "
3311                             "retcode %d\n",
3312                             target_pid_to_str (ptid_of (current_thread)),
3313                             WEXITSTATUS (w));
3314               debug_exit ();
3315             }
3316         }
3317       else
3318         {
3319           ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
3320           ourstatus->value.sig = gdb_signal_from_host (WTERMSIG (w));
3321
3322           if (debug_threads)
3323             {
3324               debug_printf ("linux_wait_1 ret = %s, terminated with "
3325                             "signal %d\n",
3326                             target_pid_to_str (ptid_of (current_thread)),
3327                             WTERMSIG (w));
3328               debug_exit ();
3329             }
3330         }
3331
3332       if (ourstatus->kind == TARGET_WAITKIND_EXITED)
3333         return filter_exit_event (event_child, ourstatus);
3334
3335       return ptid_of (current_thread);
3336     }
3337
3338   /* If step-over executes a breakpoint instruction, in the case of a
3339      hardware single step it means a gdb/gdbserver breakpoint had been
3340      planted on top of a permanent breakpoint, in the case of a software
3341      single step it may just mean that gdbserver hit the reinsert breakpoint.
3342      The PC has been adjusted by save_stop_reason to point at
3343      the breakpoint address.
3344      So in the case of the hardware single step advance the PC manually
3345      past the breakpoint and in the case of software single step advance only
3346      if it's not the single_step_breakpoint we are hitting.
3347      This avoids that a program would keep trapping a permanent breakpoint
3348      forever.  */
3349   if (!ptid_equal (step_over_bkpt, null_ptid)
3350       && event_child->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
3351       && (event_child->stepping
3352           || !single_step_breakpoint_inserted_here (event_child->stop_pc)))
3353     {
3354       int increment_pc = 0;
3355       int breakpoint_kind = 0;
3356       CORE_ADDR stop_pc = event_child->stop_pc;
3357
3358       breakpoint_kind =
3359         the_target->breakpoint_kind_from_current_state (&stop_pc);
3360       the_target->sw_breakpoint_from_kind (breakpoint_kind, &increment_pc);
3361
3362       if (debug_threads)
3363         {
3364           debug_printf ("step-over for %s executed software breakpoint\n",
3365                         target_pid_to_str (ptid_of (current_thread)));
3366         }
3367
3368       if (increment_pc != 0)
3369         {
3370           struct regcache *regcache
3371             = get_thread_regcache (current_thread, 1);
3372
3373           event_child->stop_pc += increment_pc;
3374           (*the_low_target.set_pc) (regcache, event_child->stop_pc);
3375
3376           if (!(*the_low_target.breakpoint_at) (event_child->stop_pc))
3377             event_child->stop_reason = TARGET_STOPPED_BY_NO_REASON;
3378         }
3379     }
3380
3381   /* If this event was not handled before, and is not a SIGTRAP, we
3382      report it.  SIGILL and SIGSEGV are also treated as traps in case
3383      a breakpoint is inserted at the current PC.  If this target does
3384      not support internal breakpoints at all, we also report the
3385      SIGTRAP without further processing; it's of no concern to us.  */
3386   maybe_internal_trap
3387     = (supports_breakpoints ()
3388        && (WSTOPSIG (w) == SIGTRAP
3389            || ((WSTOPSIG (w) == SIGILL
3390                 || WSTOPSIG (w) == SIGSEGV)
3391                && (*the_low_target.breakpoint_at) (event_child->stop_pc))));
3392
3393   if (maybe_internal_trap)
3394     {
3395       /* Handle anything that requires bookkeeping before deciding to
3396          report the event or continue waiting.  */
3397
3398       /* First check if we can explain the SIGTRAP with an internal
3399          breakpoint, or if we should possibly report the event to GDB.
3400          Do this before anything that may remove or insert a
3401          breakpoint.  */
3402       bp_explains_trap = breakpoint_inserted_here (event_child->stop_pc);
3403
3404       /* We have a SIGTRAP, possibly a step-over dance has just
3405          finished.  If so, tweak the state machine accordingly,
3406          reinsert breakpoints and delete any single-step
3407          breakpoints.  */
3408       step_over_finished = finish_step_over (event_child);
3409
3410       /* Now invoke the callbacks of any internal breakpoints there.  */
3411       check_breakpoints (event_child->stop_pc);
3412
3413       /* Handle tracepoint data collecting.  This may overflow the
3414          trace buffer, and cause a tracing stop, removing
3415          breakpoints.  */
3416       trace_event = handle_tracepoints (event_child);
3417
3418       if (bp_explains_trap)
3419         {
3420           if (debug_threads)
3421             debug_printf ("Hit a gdbserver breakpoint.\n");
3422         }
3423     }
3424   else
3425     {
3426       /* We have some other signal, possibly a step-over dance was in
3427          progress, and it should be cancelled too.  */
3428       step_over_finished = finish_step_over (event_child);
3429     }
3430
3431   /* We have all the data we need.  Either report the event to GDB, or
3432      resume threads and keep waiting for more.  */
3433
3434   /* If we're collecting a fast tracepoint, finish the collection and
3435      move out of the jump pad before delivering a signal.  See
3436      linux_stabilize_threads.  */
3437
3438   if (WIFSTOPPED (w)
3439       && WSTOPSIG (w) != SIGTRAP
3440       && supports_fast_tracepoints ()
3441       && agent_loaded_p ())
3442     {
3443       if (debug_threads)
3444         debug_printf ("Got signal %d for LWP %ld.  Check if we need "
3445                       "to defer or adjust it.\n",
3446                       WSTOPSIG (w), lwpid_of (current_thread));
3447
3448       /* Allow debugging the jump pad itself.  */
3449       if (current_thread->last_resume_kind != resume_step
3450           && maybe_move_out_of_jump_pad (event_child, &w))
3451         {
3452           enqueue_one_deferred_signal (event_child, &w);
3453
3454           if (debug_threads)
3455             debug_printf ("Signal %d for LWP %ld deferred (in jump pad)\n",
3456                           WSTOPSIG (w), lwpid_of (current_thread));
3457
3458           linux_resume_one_lwp (event_child, 0, 0, NULL);
3459
3460           if (debug_threads)
3461             debug_exit ();
3462           return ignore_event (ourstatus);
3463         }
3464     }
3465
3466   if (event_child->collecting_fast_tracepoint)
3467     {
3468       if (debug_threads)
3469         debug_printf ("LWP %ld was trying to move out of the jump pad (%d). "
3470                       "Check if we're already there.\n",
3471                       lwpid_of (current_thread),
3472                       event_child->collecting_fast_tracepoint);
3473
3474       trace_event = 1;
3475
3476       event_child->collecting_fast_tracepoint
3477         = linux_fast_tracepoint_collecting (event_child, NULL);
3478
3479       if (event_child->collecting_fast_tracepoint != 1)
3480         {
3481           /* No longer need this breakpoint.  */
3482           if (event_child->exit_jump_pad_bkpt != NULL)
3483             {
3484               if (debug_threads)
3485                 debug_printf ("No longer need exit-jump-pad bkpt; removing it."
3486                               "stopping all threads momentarily.\n");
3487
3488               /* Other running threads could hit this breakpoint.
3489                  We don't handle moribund locations like GDB does,
3490                  instead we always pause all threads when removing
3491                  breakpoints, so that any step-over or
3492                  decr_pc_after_break adjustment is always taken
3493                  care of while the breakpoint is still
3494                  inserted.  */
3495               stop_all_lwps (1, event_child);
3496
3497               delete_breakpoint (event_child->exit_jump_pad_bkpt);
3498               event_child->exit_jump_pad_bkpt = NULL;
3499
3500               unstop_all_lwps (1, event_child);
3501
3502               gdb_assert (event_child->suspended >= 0);
3503             }
3504         }
3505
3506       if (event_child->collecting_fast_tracepoint == 0)
3507         {
3508           if (debug_threads)
3509             debug_printf ("fast tracepoint finished "
3510                           "collecting successfully.\n");
3511
3512           /* We may have a deferred signal to report.  */
3513           if (dequeue_one_deferred_signal (event_child, &w))
3514             {
3515               if (debug_threads)
3516                 debug_printf ("dequeued one signal.\n");
3517             }
3518           else
3519             {
3520               if (debug_threads)
3521                 debug_printf ("no deferred signals.\n");
3522
3523               if (stabilizing_threads)
3524                 {
3525                   ourstatus->kind = TARGET_WAITKIND_STOPPED;
3526                   ourstatus->value.sig = GDB_SIGNAL_0;
3527
3528                   if (debug_threads)
3529                     {
3530                       debug_printf ("linux_wait_1 ret = %s, stopped "
3531                                     "while stabilizing threads\n",
3532                                     target_pid_to_str (ptid_of (current_thread)));
3533                       debug_exit ();
3534                     }
3535
3536                   return ptid_of (current_thread);
3537                 }
3538             }
3539         }
3540     }
3541
3542   /* Check whether GDB would be interested in this event.  */
3543
3544   /* Check if GDB is interested in this syscall.  */
3545   if (WIFSTOPPED (w)
3546       && WSTOPSIG (w) == SYSCALL_SIGTRAP
3547       && !gdb_catch_this_syscall_p (event_child))
3548     {
3549       if (debug_threads)
3550         {
3551           debug_printf ("Ignored syscall for LWP %ld.\n",
3552                         lwpid_of (current_thread));
3553         }
3554
3555       linux_resume_one_lwp (event_child, event_child->stepping,
3556                             0, NULL);
3557
3558       if (debug_threads)
3559         debug_exit ();
3560       return ignore_event (ourstatus);
3561     }
3562
3563   /* If GDB is not interested in this signal, don't stop other
3564      threads, and don't report it to GDB.  Just resume the inferior
3565      right away.  We do this for threading-related signals as well as
3566      any that GDB specifically requested we ignore.  But never ignore
3567      SIGSTOP if we sent it ourselves, and do not ignore signals when
3568      stepping - they may require special handling to skip the signal
3569      handler. Also never ignore signals that could be caused by a
3570      breakpoint.  */
3571   if (WIFSTOPPED (w)
3572       && current_thread->last_resume_kind != resume_step
3573       && (
3574 #if defined (USE_THREAD_DB) && !defined (__ANDROID__)
3575           (current_process ()->priv->thread_db != NULL
3576            && (WSTOPSIG (w) == __SIGRTMIN
3577                || WSTOPSIG (w) == __SIGRTMIN + 1))
3578           ||
3579 #endif
3580           (pass_signals[gdb_signal_from_host (WSTOPSIG (w))]
3581            && !(WSTOPSIG (w) == SIGSTOP
3582                 && current_thread->last_resume_kind == resume_stop)
3583            && !linux_wstatus_maybe_breakpoint (w))))
3584     {
3585       siginfo_t info, *info_p;
3586
3587       if (debug_threads)
3588         debug_printf ("Ignored signal %d for LWP %ld.\n",
3589                       WSTOPSIG (w), lwpid_of (current_thread));
3590
3591       if (ptrace (PTRACE_GETSIGINFO, lwpid_of (current_thread),
3592                   (PTRACE_TYPE_ARG3) 0, &info) == 0)
3593         info_p = &info;
3594       else
3595         info_p = NULL;
3596
3597       if (step_over_finished)
3598         {
3599           /* We cancelled this thread's step-over above.  We still
3600              need to unsuspend all other LWPs, and set them back
3601              running again while the signal handler runs.  */
3602           unsuspend_all_lwps (event_child);
3603
3604           /* Enqueue the pending signal info so that proceed_all_lwps
3605              doesn't lose it.  */
3606           enqueue_pending_signal (event_child, WSTOPSIG (w), info_p);
3607
3608           proceed_all_lwps ();
3609         }
3610       else
3611         {
3612           linux_resume_one_lwp (event_child, event_child->stepping,
3613                                 WSTOPSIG (w), info_p);
3614         }
3615
3616       if (debug_threads)
3617         debug_exit ();
3618
3619       return ignore_event (ourstatus);
3620     }
3621
3622   /* Note that all addresses are always "out of the step range" when
3623      there's no range to begin with.  */
3624   in_step_range = lwp_in_step_range (event_child);
3625
3626   /* If GDB wanted this thread to single step, and the thread is out
3627      of the step range, we always want to report the SIGTRAP, and let
3628      GDB handle it.  Watchpoints should always be reported.  So should
3629      signals we can't explain.  A SIGTRAP we can't explain could be a
3630      GDB breakpoint --- we may or not support Z0 breakpoints.  If we
3631      do, we're be able to handle GDB breakpoints on top of internal
3632      breakpoints, by handling the internal breakpoint and still
3633      reporting the event to GDB.  If we don't, we're out of luck, GDB
3634      won't see the breakpoint hit.  If we see a single-step event but
3635      the thread should be continuing, don't pass the trap to gdb.
3636      That indicates that we had previously finished a single-step but
3637      left the single-step pending -- see
3638      complete_ongoing_step_over.  */
3639   report_to_gdb = (!maybe_internal_trap
3640                    || (current_thread->last_resume_kind == resume_step
3641                        && !in_step_range)
3642                    || event_child->stop_reason == TARGET_STOPPED_BY_WATCHPOINT
3643                    || (!in_step_range
3644                        && !bp_explains_trap
3645                        && !trace_event
3646                        && !step_over_finished
3647                        && !(current_thread->last_resume_kind == resume_continue
3648                             && event_child->stop_reason == TARGET_STOPPED_BY_SINGLE_STEP))
3649                    || (gdb_breakpoint_here (event_child->stop_pc)
3650                        && gdb_condition_true_at_breakpoint (event_child->stop_pc)
3651                        && gdb_no_commands_at_breakpoint (event_child->stop_pc))
3652                    || event_child->waitstatus.kind != TARGET_WAITKIND_IGNORE);
3653
3654   run_breakpoint_commands (event_child->stop_pc);
3655
3656   /* We found no reason GDB would want us to stop.  We either hit one
3657      of our own breakpoints, or finished an internal step GDB
3658      shouldn't know about.  */
3659   if (!report_to_gdb)
3660     {
3661       if (debug_threads)
3662         {
3663           if (bp_explains_trap)
3664             debug_printf ("Hit a gdbserver breakpoint.\n");
3665           if (step_over_finished)
3666             debug_printf ("Step-over finished.\n");
3667           if (trace_event)
3668             debug_printf ("Tracepoint event.\n");
3669           if (lwp_in_step_range (event_child))
3670             debug_printf ("Range stepping pc 0x%s [0x%s, 0x%s).\n",
3671                           paddress (event_child->stop_pc),
3672                           paddress (event_child->step_range_start),
3673                           paddress (event_child->step_range_end));
3674         }
3675
3676       /* We're not reporting this breakpoint to GDB, so apply the
3677          decr_pc_after_break adjustment to the inferior's regcache
3678          ourselves.  */
3679
3680       if (the_low_target.set_pc != NULL)
3681         {
3682           struct regcache *regcache
3683             = get_thread_regcache (current_thread, 1);
3684           (*the_low_target.set_pc) (regcache, event_child->stop_pc);
3685         }
3686
3687       /* We may have finished stepping over a breakpoint.  If so,
3688          we've stopped and suspended all LWPs momentarily except the
3689          stepping one.  This is where we resume them all again.  We're
3690          going to keep waiting, so use proceed, which handles stepping
3691          over the next breakpoint.  */
3692       if (debug_threads)
3693         debug_printf ("proceeding all threads.\n");
3694
3695       if (step_over_finished)
3696         unsuspend_all_lwps (event_child);
3697
3698       proceed_all_lwps ();
3699
3700       if (debug_threads)
3701         debug_exit ();
3702
3703       return ignore_event (ourstatus);
3704     }
3705
3706   if (debug_threads)
3707     {
3708       if (event_child->waitstatus.kind != TARGET_WAITKIND_IGNORE)
3709         {
3710           char *str;
3711
3712           str = target_waitstatus_to_string (&event_child->waitstatus);
3713           debug_printf ("LWP %ld: extended event with waitstatus %s\n",
3714                         lwpid_of (get_lwp_thread (event_child)), str);
3715           xfree (str);
3716         }
3717       if (current_thread->last_resume_kind == resume_step)
3718         {
3719           if (event_child->step_range_start == event_child->step_range_end)
3720             debug_printf ("GDB wanted to single-step, reporting event.\n");
3721           else if (!lwp_in_step_range (event_child))
3722             debug_printf ("Out of step range, reporting event.\n");
3723         }
3724       if (event_child->stop_reason == TARGET_STOPPED_BY_WATCHPOINT)
3725         debug_printf ("Stopped by watchpoint.\n");
3726       else if (gdb_breakpoint_here (event_child->stop_pc))
3727         debug_printf ("Stopped by GDB breakpoint.\n");
3728       if (debug_threads)
3729         debug_printf ("Hit a non-gdbserver trap event.\n");
3730     }
3731
3732   /* Alright, we're going to report a stop.  */
3733
3734   /* Remove single-step breakpoints.  */
3735   if (can_software_single_step ())
3736     {
3737       /* Remove single-step breakpoints or not.  It it is true, stop all
3738          lwps, so that other threads won't hit the breakpoint in the
3739          staled memory.  */
3740       int remove_single_step_breakpoints_p = 0;
3741
3742       if (non_stop)
3743         {
3744           remove_single_step_breakpoints_p
3745             = has_single_step_breakpoints (current_thread);
3746         }
3747       else
3748         {
3749           /* In all-stop, a stop reply cancels all previous resume
3750              requests.  Delete all single-step breakpoints.  */
3751           struct inferior_list_entry *inf, *tmp;
3752
3753           ALL_INFERIORS (&all_threads, inf, tmp)
3754             {
3755               struct thread_info *thread = (struct thread_info *) inf;
3756
3757               if (has_single_step_breakpoints (thread))
3758                 {
3759                   remove_single_step_breakpoints_p = 1;
3760                   break;
3761                 }
3762             }
3763         }
3764
3765       if (remove_single_step_breakpoints_p)
3766         {
3767           /* If we remove single-step breakpoints from memory, stop all lwps,
3768              so that other threads won't hit the breakpoint in the staled
3769              memory.  */
3770           stop_all_lwps (0, event_child);
3771
3772           if (non_stop)
3773             {
3774               gdb_assert (has_single_step_breakpoints (current_thread));
3775               delete_single_step_breakpoints (current_thread);
3776             }
3777           else
3778             {
3779               struct inferior_list_entry *inf, *tmp;
3780
3781               ALL_INFERIORS (&all_threads, inf, tmp)
3782                 {
3783                   struct thread_info *thread = (struct thread_info *) inf;
3784
3785                   if (has_single_step_breakpoints (thread))
3786                     delete_single_step_breakpoints (thread);
3787                 }
3788             }
3789
3790           unstop_all_lwps (0, event_child);
3791         }
3792     }
3793
3794   if (!stabilizing_threads)
3795     {
3796       /* In all-stop, stop all threads.  */
3797       if (!non_stop)
3798         stop_all_lwps (0, NULL);
3799
3800       if (step_over_finished)
3801         {
3802           if (!non_stop)
3803             {
3804               /* If we were doing a step-over, all other threads but
3805                  the stepping one had been paused in start_step_over,
3806                  with their suspend counts incremented.  We don't want
3807                  to do a full unstop/unpause, because we're in
3808                  all-stop mode (so we want threads stopped), but we
3809                  still need to unsuspend the other threads, to
3810                  decrement their `suspended' count back.  */
3811               unsuspend_all_lwps (event_child);
3812             }
3813           else
3814             {
3815               /* If we just finished a step-over, then all threads had
3816                  been momentarily paused.  In all-stop, that's fine,
3817                  we want threads stopped by now anyway.  In non-stop,
3818                  we need to re-resume threads that GDB wanted to be
3819                  running.  */
3820               unstop_all_lwps (1, event_child);
3821             }
3822         }
3823
3824       /* If we're not waiting for a specific LWP, choose an event LWP
3825          from among those that have had events.  Giving equal priority
3826          to all LWPs that have had events helps prevent
3827          starvation.  */
3828       if (ptid_equal (ptid, minus_one_ptid))
3829         {
3830           event_child->status_pending_p = 1;
3831           event_child->status_pending = w;
3832
3833           select_event_lwp (&event_child);
3834
3835           /* current_thread and event_child must stay in sync.  */
3836           current_thread = get_lwp_thread (event_child);
3837
3838           event_child->status_pending_p = 0;
3839           w = event_child->status_pending;
3840         }
3841
3842
3843       /* Stabilize threads (move out of jump pads).  */
3844       if (!non_stop)
3845         stabilize_threads ();
3846     }
3847   else
3848     {
3849       /* If we just finished a step-over, then all threads had been
3850          momentarily paused.  In all-stop, that's fine, we want
3851          threads stopped by now anyway.  In non-stop, we need to
3852          re-resume threads that GDB wanted to be running.  */
3853       if (step_over_finished)
3854         unstop_all_lwps (1, event_child);
3855     }
3856
3857   if (event_child->waitstatus.kind != TARGET_WAITKIND_IGNORE)
3858     {
3859       /* If the reported event is an exit, fork, vfork or exec, let
3860          GDB know.  */
3861
3862       /* Break the unreported fork relationship chain.  */
3863       if (event_child->waitstatus.kind == TARGET_WAITKIND_FORKED
3864           || event_child->waitstatus.kind == TARGET_WAITKIND_VFORKED)
3865         {
3866           event_child->fork_relative->fork_relative = NULL;
3867           event_child->fork_relative = NULL;
3868         }
3869
3870       *ourstatus = event_child->waitstatus;
3871       /* Clear the event lwp's waitstatus since we handled it already.  */
3872       event_child->waitstatus.kind = TARGET_WAITKIND_IGNORE;
3873     }
3874   else
3875     ourstatus->kind = TARGET_WAITKIND_STOPPED;
3876
3877   /* Now that we've selected our final event LWP, un-adjust its PC if
3878      it was a software breakpoint, and the client doesn't know we can
3879      adjust the breakpoint ourselves.  */
3880   if (event_child->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
3881       && !swbreak_feature)
3882     {
3883       int decr_pc = the_low_target.decr_pc_after_break;
3884
3885       if (decr_pc != 0)
3886         {
3887           struct regcache *regcache
3888             = get_thread_regcache (current_thread, 1);
3889           (*the_low_target.set_pc) (regcache, event_child->stop_pc + decr_pc);
3890         }
3891     }
3892
3893   if (WSTOPSIG (w) == SYSCALL_SIGTRAP)
3894     {
3895       get_syscall_trapinfo (event_child,
3896                             &ourstatus->value.syscall_number);
3897       ourstatus->kind = event_child->syscall_state;
3898     }
3899   else if (current_thread->last_resume_kind == resume_stop
3900            && WSTOPSIG (w) == SIGSTOP)
3901     {
3902       /* A thread that has been requested to stop by GDB with vCont;t,
3903          and it stopped cleanly, so report as SIG0.  The use of
3904          SIGSTOP is an implementation detail.  */
3905       ourstatus->value.sig = GDB_SIGNAL_0;
3906     }
3907   else if (current_thread->last_resume_kind == resume_stop
3908            && WSTOPSIG (w) != SIGSTOP)
3909     {
3910       /* A thread that has been requested to stop by GDB with vCont;t,
3911          but, it stopped for other reasons.  */
3912       ourstatus->value.sig = gdb_signal_from_host (WSTOPSIG (w));
3913     }
3914   else if (ourstatus->kind == TARGET_WAITKIND_STOPPED)
3915     {
3916       ourstatus->value.sig = gdb_signal_from_host (WSTOPSIG (w));
3917     }
3918
3919   gdb_assert (ptid_equal (step_over_bkpt, null_ptid));
3920
3921   if (debug_threads)
3922     {
3923       debug_printf ("linux_wait_1 ret = %s, %d, %d\n",
3924                     target_pid_to_str (ptid_of (current_thread)),
3925                     ourstatus->kind, ourstatus->value.sig);
3926       debug_exit ();
3927     }
3928
3929   if (ourstatus->kind == TARGET_WAITKIND_EXITED)
3930     return filter_exit_event (event_child, ourstatus);
3931
3932   return ptid_of (current_thread);
3933 }
3934
3935 /* Get rid of any pending event in the pipe.  */
3936 static void
3937 async_file_flush (void)
3938 {
3939   int ret;
3940   char buf;
3941
3942   do
3943     ret = read (linux_event_pipe[0], &buf, 1);
3944   while (ret >= 0 || (ret == -1 && errno == EINTR));
3945 }
3946
3947 /* Put something in the pipe, so the event loop wakes up.  */
3948 static void
3949 async_file_mark (void)
3950 {
3951   int ret;
3952
3953   async_file_flush ();
3954
3955   do
3956     ret = write (linux_event_pipe[1], "+", 1);
3957   while (ret == 0 || (ret == -1 && errno == EINTR));
3958
3959   /* Ignore EAGAIN.  If the pipe is full, the event loop will already
3960      be awakened anyway.  */
3961 }
3962
3963 static ptid_t
3964 linux_wait (ptid_t ptid,
3965             struct target_waitstatus *ourstatus, int target_options)
3966 {
3967   ptid_t event_ptid;
3968
3969   /* Flush the async file first.  */
3970   if (target_is_async_p ())
3971     async_file_flush ();
3972
3973   do
3974     {
3975       event_ptid = linux_wait_1 (ptid, ourstatus, target_options);
3976     }
3977   while ((target_options & TARGET_WNOHANG) == 0
3978          && ptid_equal (event_ptid, null_ptid)
3979          && ourstatus->kind == TARGET_WAITKIND_IGNORE);
3980
3981   /* If at least one stop was reported, there may be more.  A single
3982      SIGCHLD can signal more than one child stop.  */
3983   if (target_is_async_p ()
3984       && (target_options & TARGET_WNOHANG) != 0
3985       && !ptid_equal (event_ptid, null_ptid))
3986     async_file_mark ();
3987
3988   return event_ptid;
3989 }
3990
3991 /* Send a signal to an LWP.  */
3992
3993 static int
3994 kill_lwp (unsigned long lwpid, int signo)
3995 {
3996   int ret;
3997
3998   errno = 0;
3999   ret = syscall (__NR_tkill, lwpid, signo);
4000   if (errno == ENOSYS)
4001     {
4002       /* If tkill fails, then we are not using nptl threads, a
4003          configuration we no longer support.  */
4004       perror_with_name (("tkill"));
4005     }
4006   return ret;
4007 }
4008
4009 void
4010 linux_stop_lwp (struct lwp_info *lwp)
4011 {
4012   send_sigstop (lwp);
4013 }
4014
4015 static void
4016 send_sigstop (struct lwp_info *lwp)
4017 {
4018   int pid;
4019
4020   pid = lwpid_of (get_lwp_thread (lwp));
4021
4022   /* If we already have a pending stop signal for this process, don't
4023      send another.  */
4024   if (lwp->stop_expected)
4025     {
4026       if (debug_threads)
4027         debug_printf ("Have pending sigstop for lwp %d\n", pid);
4028
4029       return;
4030     }
4031
4032   if (debug_threads)
4033     debug_printf ("Sending sigstop to lwp %d\n", pid);
4034
4035   lwp->stop_expected = 1;
4036   kill_lwp (pid, SIGSTOP);
4037 }
4038
4039 static int
4040 send_sigstop_callback (struct inferior_list_entry *entry, void *except)
4041 {
4042   struct thread_info *thread = (struct thread_info *) entry;
4043   struct lwp_info *lwp = get_thread_lwp (thread);
4044
4045   /* Ignore EXCEPT.  */
4046   if (lwp == except)
4047     return 0;
4048
4049   if (lwp->stopped)
4050     return 0;
4051
4052   send_sigstop (lwp);
4053   return 0;
4054 }
4055
4056 /* Increment the suspend count of an LWP, and stop it, if not stopped
4057    yet.  */
4058 static int
4059 suspend_and_send_sigstop_callback (struct inferior_list_entry *entry,
4060                                    void *except)
4061 {
4062   struct thread_info *thread = (struct thread_info *) entry;
4063   struct lwp_info *lwp = get_thread_lwp (thread);
4064
4065   /* Ignore EXCEPT.  */
4066   if (lwp == except)
4067     return 0;
4068
4069   lwp_suspended_inc (lwp);
4070
4071   return send_sigstop_callback (entry, except);
4072 }
4073
4074 static void
4075 mark_lwp_dead (struct lwp_info *lwp, int wstat)
4076 {
4077   /* Store the exit status for later.  */
4078   lwp->status_pending_p = 1;
4079   lwp->status_pending = wstat;
4080
4081   /* Store in waitstatus as well, as there's nothing else to process
4082      for this event.  */
4083   if (WIFEXITED (wstat))
4084     {
4085       lwp->waitstatus.kind = TARGET_WAITKIND_EXITED;
4086       lwp->waitstatus.value.integer = WEXITSTATUS (wstat);
4087     }
4088   else if (WIFSIGNALED (wstat))
4089     {
4090       lwp->waitstatus.kind = TARGET_WAITKIND_SIGNALLED;
4091       lwp->waitstatus.value.sig = gdb_signal_from_host (WTERMSIG (wstat));
4092     }
4093
4094   /* Prevent trying to stop it.  */
4095   lwp->stopped = 1;
4096
4097   /* No further stops are expected from a dead lwp.  */
4098   lwp->stop_expected = 0;
4099 }
4100
4101 /* Return true if LWP has exited already, and has a pending exit event
4102    to report to GDB.  */
4103
4104 static int
4105 lwp_is_marked_dead (struct lwp_info *lwp)
4106 {
4107   return (lwp->status_pending_p
4108           && (WIFEXITED (lwp->status_pending)
4109               || WIFSIGNALED (lwp->status_pending)));
4110 }
4111
4112 /* Wait for all children to stop for the SIGSTOPs we just queued.  */
4113
4114 static void
4115 wait_for_sigstop (void)
4116 {
4117   struct thread_info *saved_thread;
4118   ptid_t saved_tid;
4119   int wstat;
4120   int ret;
4121
4122   saved_thread = current_thread;
4123   if (saved_thread != NULL)
4124     saved_tid = saved_thread->entry.id;
4125   else
4126     saved_tid = null_ptid; /* avoid bogus unused warning */
4127
4128   if (debug_threads)
4129     debug_printf ("wait_for_sigstop: pulling events\n");
4130
4131   /* Passing NULL_PTID as filter indicates we want all events to be
4132      left pending.  Eventually this returns when there are no
4133      unwaited-for children left.  */
4134   ret = linux_wait_for_event_filtered (minus_one_ptid, null_ptid,
4135                                        &wstat, __WALL);
4136   gdb_assert (ret == -1);
4137
4138   if (saved_thread == NULL || linux_thread_alive (saved_tid))
4139     current_thread = saved_thread;
4140   else
4141     {
4142       if (debug_threads)
4143         debug_printf ("Previously current thread died.\n");
4144
4145       /* We can't change the current inferior behind GDB's back,
4146          otherwise, a subsequent command may apply to the wrong
4147          process.  */
4148       current_thread = NULL;
4149     }
4150 }
4151
4152 /* Returns true if LWP ENTRY is stopped in a jump pad, and we can't
4153    move it out, because we need to report the stop event to GDB.  For
4154    example, if the user puts a breakpoint in the jump pad, it's
4155    because she wants to debug it.  */
4156
4157 static int
4158 stuck_in_jump_pad_callback (struct inferior_list_entry *entry, void *data)
4159 {
4160   struct thread_info *thread = (struct thread_info *) entry;
4161   struct lwp_info *lwp = get_thread_lwp (thread);
4162
4163   if (lwp->suspended != 0)
4164     {
4165       internal_error (__FILE__, __LINE__,
4166                       "LWP %ld is suspended, suspended=%d\n",
4167                       lwpid_of (thread), lwp->suspended);
4168     }
4169   gdb_assert (lwp->stopped);
4170
4171   /* Allow debugging the jump pad, gdb_collect, etc..  */
4172   return (supports_fast_tracepoints ()
4173           && agent_loaded_p ()
4174           && (gdb_breakpoint_here (lwp->stop_pc)
4175               || lwp->stop_reason == TARGET_STOPPED_BY_WATCHPOINT
4176               || thread->last_resume_kind == resume_step)
4177           && linux_fast_tracepoint_collecting (lwp, NULL));
4178 }
4179
4180 static void
4181 move_out_of_jump_pad_callback (struct inferior_list_entry *entry)
4182 {
4183   struct thread_info *thread = (struct thread_info *) entry;
4184   struct thread_info *saved_thread;
4185   struct lwp_info *lwp = get_thread_lwp (thread);
4186   int *wstat;
4187
4188   if (lwp->suspended != 0)
4189     {
4190       internal_error (__FILE__, __LINE__,
4191                       "LWP %ld is suspended, suspended=%d\n",
4192                       lwpid_of (thread), lwp->suspended);
4193     }
4194   gdb_assert (lwp->stopped);
4195
4196   /* For gdb_breakpoint_here.  */
4197   saved_thread = current_thread;
4198   current_thread = thread;
4199
4200   wstat = lwp->status_pending_p ? &lwp->status_pending : NULL;
4201
4202   /* Allow debugging the jump pad, gdb_collect, etc.  */
4203   if (!gdb_breakpoint_here (lwp->stop_pc)
4204       && lwp->stop_reason != TARGET_STOPPED_BY_WATCHPOINT
4205       && thread->last_resume_kind != resume_step
4206       && maybe_move_out_of_jump_pad (lwp, wstat))
4207     {
4208       if (debug_threads)
4209         debug_printf ("LWP %ld needs stabilizing (in jump pad)\n",
4210                       lwpid_of (thread));
4211
4212       if (wstat)
4213         {
4214           lwp->status_pending_p = 0;
4215           enqueue_one_deferred_signal (lwp, wstat);
4216
4217           if (debug_threads)
4218             debug_printf ("Signal %d for LWP %ld deferred "
4219                           "(in jump pad)\n",
4220                           WSTOPSIG (*wstat), lwpid_of (thread));
4221         }
4222
4223       linux_resume_one_lwp (lwp, 0, 0, NULL);
4224     }
4225   else
4226     lwp_suspended_inc (lwp);
4227
4228   current_thread = saved_thread;
4229 }
4230
4231 static int
4232 lwp_running (struct inferior_list_entry *entry, void *data)
4233 {
4234   struct thread_info *thread = (struct thread_info *) entry;
4235   struct lwp_info *lwp = get_thread_lwp (thread);
4236
4237   if (lwp_is_marked_dead (lwp))
4238     return 0;
4239   if (lwp->stopped)
4240     return 0;
4241   return 1;
4242 }
4243
4244 /* Stop all lwps that aren't stopped yet, except EXCEPT, if not NULL.
4245    If SUSPEND, then also increase the suspend count of every LWP,
4246    except EXCEPT.  */
4247
4248 static void
4249 stop_all_lwps (int suspend, struct lwp_info *except)
4250 {
4251   /* Should not be called recursively.  */
4252   gdb_assert (stopping_threads == NOT_STOPPING_THREADS);
4253
4254   if (debug_threads)
4255     {
4256       debug_enter ();
4257       debug_printf ("stop_all_lwps (%s, except=%s)\n",
4258                     suspend ? "stop-and-suspend" : "stop",
4259                     except != NULL
4260                     ? target_pid_to_str (ptid_of (get_lwp_thread (except)))
4261                     : "none");
4262     }
4263
4264   stopping_threads = (suspend
4265                       ? STOPPING_AND_SUSPENDING_THREADS
4266                       : STOPPING_THREADS);
4267
4268   if (suspend)
4269     find_inferior (&all_threads, suspend_and_send_sigstop_callback, except);
4270   else
4271     find_inferior (&all_threads, send_sigstop_callback, except);
4272   wait_for_sigstop ();
4273   stopping_threads = NOT_STOPPING_THREADS;
4274
4275   if (debug_threads)
4276     {
4277       debug_printf ("stop_all_lwps done, setting stopping_threads "
4278                     "back to !stopping\n");
4279       debug_exit ();
4280     }
4281 }
4282
4283 /* Enqueue one signal in the chain of signals which need to be
4284    delivered to this process on next resume.  */
4285
4286 static void
4287 enqueue_pending_signal (struct lwp_info *lwp, int signal, siginfo_t *info)
4288 {
4289   struct pending_signals *p_sig = XNEW (struct pending_signals);
4290
4291   p_sig->prev = lwp->pending_signals;
4292   p_sig->signal = signal;
4293   if (info == NULL)
4294     memset (&p_sig->info, 0, sizeof (siginfo_t));
4295   else
4296     memcpy (&p_sig->info, info, sizeof (siginfo_t));
4297   lwp->pending_signals = p_sig;
4298 }
4299
4300 /* Install breakpoints for software single stepping.  */
4301
4302 static void
4303 install_software_single_step_breakpoints (struct lwp_info *lwp)
4304 {
4305   int i;
4306   CORE_ADDR pc;
4307   struct thread_info *thread = get_lwp_thread (lwp);
4308   struct regcache *regcache = get_thread_regcache (thread, 1);
4309   VEC (CORE_ADDR) *next_pcs = NULL;
4310   struct cleanup *old_chain = make_cleanup_restore_current_thread ();
4311
4312   make_cleanup (VEC_cleanup (CORE_ADDR), &next_pcs);
4313
4314   current_thread = thread;
4315   next_pcs = (*the_low_target.get_next_pcs) (regcache);
4316
4317   for (i = 0; VEC_iterate (CORE_ADDR, next_pcs, i, pc); ++i)
4318     set_single_step_breakpoint (pc, current_ptid);
4319
4320   do_cleanups (old_chain);
4321 }
4322
4323 /* Single step via hardware or software single step.
4324    Return 1 if hardware single stepping, 0 if software single stepping
4325    or can't single step.  */
4326
4327 static int
4328 single_step (struct lwp_info* lwp)
4329 {
4330   int step = 0;
4331
4332   if (can_hardware_single_step ())
4333     {
4334       step = 1;
4335     }
4336   else if (can_software_single_step ())
4337     {
4338       install_software_single_step_breakpoints (lwp);
4339       step = 0;
4340     }
4341   else
4342     {
4343       if (debug_threads)
4344         debug_printf ("stepping is not implemented on this target");
4345     }
4346
4347   return step;
4348 }
4349
4350 /* The signal can be delivered to the inferior if we are not trying to
4351    finish a fast tracepoint collect.  Since signal can be delivered in
4352    the step-over, the program may go to signal handler and trap again
4353    after return from the signal handler.  We can live with the spurious
4354    double traps.  */
4355
4356 static int
4357 lwp_signal_can_be_delivered (struct lwp_info *lwp)
4358 {
4359   return !lwp->collecting_fast_tracepoint;
4360 }
4361
4362 /* Resume execution of LWP.  If STEP is nonzero, single-step it.  If
4363    SIGNAL is nonzero, give it that signal.  */
4364
4365 static void
4366 linux_resume_one_lwp_throw (struct lwp_info *lwp,
4367                             int step, int signal, siginfo_t *info)
4368 {
4369   struct thread_info *thread = get_lwp_thread (lwp);
4370   struct thread_info *saved_thread;
4371   int fast_tp_collecting;
4372   int ptrace_request;
4373   struct process_info *proc = get_thread_process (thread);
4374
4375   /* Note that target description may not be initialised
4376      (proc->tdesc == NULL) at this point because the program hasn't
4377      stopped at the first instruction yet.  It means GDBserver skips
4378      the extra traps from the wrapper program (see option --wrapper).
4379      Code in this function that requires register access should be
4380      guarded by proc->tdesc == NULL or something else.  */
4381
4382   if (lwp->stopped == 0)
4383     return;
4384
4385   gdb_assert (lwp->waitstatus.kind == TARGET_WAITKIND_IGNORE);
4386
4387   fast_tp_collecting = lwp->collecting_fast_tracepoint;
4388
4389   gdb_assert (!stabilizing_threads || fast_tp_collecting);
4390
4391   /* Cancel actions that rely on GDB not changing the PC (e.g., the
4392      user used the "jump" command, or "set $pc = foo").  */
4393   if (thread->while_stepping != NULL && lwp->stop_pc != get_pc (lwp))
4394     {
4395       /* Collecting 'while-stepping' actions doesn't make sense
4396          anymore.  */
4397       release_while_stepping_state_list (thread);
4398     }
4399
4400   /* If we have pending signals or status, and a new signal, enqueue the
4401      signal.  Also enqueue the signal if it can't be delivered to the
4402      inferior right now.  */
4403   if (signal != 0
4404       && (lwp->status_pending_p
4405           || lwp->pending_signals != NULL
4406           || !lwp_signal_can_be_delivered (lwp)))
4407     {
4408       enqueue_pending_signal (lwp, signal, info);
4409
4410       /* Postpone any pending signal.  It was enqueued above.  */
4411       signal = 0;
4412     }
4413
4414   if (lwp->status_pending_p)
4415     {
4416       if (debug_threads)
4417         debug_printf ("Not resuming lwp %ld (%s, stop %s);"
4418                       " has pending status\n",
4419                       lwpid_of (thread), step ? "step" : "continue",
4420                       lwp->stop_expected ? "expected" : "not expected");
4421       return;
4422     }
4423
4424   saved_thread = current_thread;
4425   current_thread = thread;
4426
4427   /* This bit needs some thinking about.  If we get a signal that
4428      we must report while a single-step reinsert is still pending,
4429      we often end up resuming the thread.  It might be better to
4430      (ew) allow a stack of pending events; then we could be sure that
4431      the reinsert happened right away and not lose any signals.
4432
4433      Making this stack would also shrink the window in which breakpoints are
4434      uninserted (see comment in linux_wait_for_lwp) but not enough for
4435      complete correctness, so it won't solve that problem.  It may be
4436      worthwhile just to solve this one, however.  */
4437   if (lwp->bp_reinsert != 0)
4438     {
4439       if (debug_threads)
4440         debug_printf ("  pending reinsert at 0x%s\n",
4441                       paddress (lwp->bp_reinsert));
4442
4443       if (can_hardware_single_step ())
4444         {
4445           if (fast_tp_collecting == 0)
4446             {
4447               if (step == 0)
4448                 fprintf (stderr, "BAD - reinserting but not stepping.\n");
4449               if (lwp->suspended)
4450                 fprintf (stderr, "BAD - reinserting and suspended(%d).\n",
4451                          lwp->suspended);
4452             }
4453         }
4454
4455       step = maybe_hw_step (thread);
4456     }
4457
4458   if (fast_tp_collecting == 1)
4459     {
4460       if (debug_threads)
4461         debug_printf ("lwp %ld wants to get out of fast tracepoint jump pad"
4462                       " (exit-jump-pad-bkpt)\n",
4463                       lwpid_of (thread));
4464     }
4465   else if (fast_tp_collecting == 2)
4466     {
4467       if (debug_threads)
4468         debug_printf ("lwp %ld wants to get out of fast tracepoint jump pad"
4469                       " single-stepping\n",
4470                       lwpid_of (thread));
4471
4472       if (can_hardware_single_step ())
4473         step = 1;
4474       else
4475         {
4476           internal_error (__FILE__, __LINE__,
4477                           "moving out of jump pad single-stepping"
4478                           " not implemented on this target");
4479         }
4480     }
4481
4482   /* If we have while-stepping actions in this thread set it stepping.
4483      If we have a signal to deliver, it may or may not be set to
4484      SIG_IGN, we don't know.  Assume so, and allow collecting
4485      while-stepping into a signal handler.  A possible smart thing to
4486      do would be to set an internal breakpoint at the signal return
4487      address, continue, and carry on catching this while-stepping
4488      action only when that breakpoint is hit.  A future
4489      enhancement.  */
4490   if (thread->while_stepping != NULL)
4491     {
4492       if (debug_threads)
4493         debug_printf ("lwp %ld has a while-stepping action -> forcing step.\n",
4494                       lwpid_of (thread));
4495
4496       step = single_step (lwp);
4497     }
4498
4499   if (proc->tdesc != NULL && the_low_target.get_pc != NULL)
4500     {
4501       struct regcache *regcache = get_thread_regcache (current_thread, 1);
4502
4503       lwp->stop_pc = (*the_low_target.get_pc) (regcache);
4504
4505       if (debug_threads)
4506         {
4507           debug_printf ("  %s from pc 0x%lx\n", step ? "step" : "continue",
4508                         (long) lwp->stop_pc);
4509         }
4510     }
4511
4512   /* If we have pending signals, consume one if it can be delivered to
4513      the inferior.  */
4514   if (lwp->pending_signals != NULL && lwp_signal_can_be_delivered (lwp))
4515     {
4516       struct pending_signals **p_sig;
4517
4518       p_sig = &lwp->pending_signals;
4519       while ((*p_sig)->prev != NULL)
4520         p_sig = &(*p_sig)->prev;
4521
4522       signal = (*p_sig)->signal;
4523       if ((*p_sig)->info.si_signo != 0)
4524         ptrace (PTRACE_SETSIGINFO, lwpid_of (thread), (PTRACE_TYPE_ARG3) 0,
4525                 &(*p_sig)->info);
4526
4527       free (*p_sig);
4528       *p_sig = NULL;
4529     }
4530
4531   if (debug_threads)
4532     debug_printf ("Resuming lwp %ld (%s, signal %d, stop %s)\n",
4533                   lwpid_of (thread), step ? "step" : "continue", signal,
4534                   lwp->stop_expected ? "expected" : "not expected");
4535
4536   if (the_low_target.prepare_to_resume != NULL)
4537     the_low_target.prepare_to_resume (lwp);
4538
4539   regcache_invalidate_thread (thread);
4540   errno = 0;
4541   lwp->stepping = step;
4542   if (step)
4543     ptrace_request = PTRACE_SINGLESTEP;
4544   else if (gdb_catching_syscalls_p (lwp))
4545     ptrace_request = PTRACE_SYSCALL;
4546   else
4547     ptrace_request = PTRACE_CONT;
4548   ptrace (ptrace_request,
4549           lwpid_of (thread),
4550           (PTRACE_TYPE_ARG3) 0,
4551           /* Coerce to a uintptr_t first to avoid potential gcc warning
4552              of coercing an 8 byte integer to a 4 byte pointer.  */
4553           (PTRACE_TYPE_ARG4) (uintptr_t) signal);
4554
4555   current_thread = saved_thread;
4556   if (errno)
4557     perror_with_name ("resuming thread");
4558
4559   /* Successfully resumed.  Clear state that no longer makes sense,
4560      and mark the LWP as running.  Must not do this before resuming
4561      otherwise if that fails other code will be confused.  E.g., we'd
4562      later try to stop the LWP and hang forever waiting for a stop
4563      status.  Note that we must not throw after this is cleared,
4564      otherwise handle_zombie_lwp_error would get confused.  */
4565   lwp->stopped = 0;
4566   lwp->stop_reason = TARGET_STOPPED_BY_NO_REASON;
4567 }
4568
4569 /* Called when we try to resume a stopped LWP and that errors out.  If
4570    the LWP is no longer in ptrace-stopped state (meaning it's zombie,
4571    or about to become), discard the error, clear any pending status
4572    the LWP may have, and return true (we'll collect the exit status
4573    soon enough).  Otherwise, return false.  */
4574
4575 static int
4576 check_ptrace_stopped_lwp_gone (struct lwp_info *lp)
4577 {
4578   struct thread_info *thread = get_lwp_thread (lp);
4579
4580   /* If we get an error after resuming the LWP successfully, we'd
4581      confuse !T state for the LWP being gone.  */
4582   gdb_assert (lp->stopped);
4583
4584   /* We can't just check whether the LWP is in 'Z (Zombie)' state,
4585      because even if ptrace failed with ESRCH, the tracee may be "not
4586      yet fully dead", but already refusing ptrace requests.  In that
4587      case the tracee has 'R (Running)' state for a little bit
4588      (observed in Linux 3.18).  See also the note on ESRCH in the
4589      ptrace(2) man page.  Instead, check whether the LWP has any state
4590      other than ptrace-stopped.  */
4591
4592   /* Don't assume anything if /proc/PID/status can't be read.  */
4593   if (linux_proc_pid_is_trace_stopped_nowarn (lwpid_of (thread)) == 0)
4594     {
4595       lp->stop_reason = TARGET_STOPPED_BY_NO_REASON;
4596       lp->status_pending_p = 0;
4597       return 1;
4598     }
4599   return 0;
4600 }
4601
4602 /* Like linux_resume_one_lwp_throw, but no error is thrown if the LWP
4603    disappears while we try to resume it.  */
4604
4605 static void
4606 linux_resume_one_lwp (struct lwp_info *lwp,
4607                       int step, int signal, siginfo_t *info)
4608 {
4609   TRY
4610     {
4611       linux_resume_one_lwp_throw (lwp, step, signal, info);
4612     }
4613   CATCH (ex, RETURN_MASK_ERROR)
4614     {
4615       if (!check_ptrace_stopped_lwp_gone (lwp))
4616         throw_exception (ex);
4617     }
4618   END_CATCH
4619 }
4620
4621 struct thread_resume_array
4622 {
4623   struct thread_resume *resume;
4624   size_t n;
4625 };
4626
4627 /* This function is called once per thread via find_inferior.
4628    ARG is a pointer to a thread_resume_array struct.
4629    We look up the thread specified by ENTRY in ARG, and mark the thread
4630    with a pointer to the appropriate resume request.
4631
4632    This algorithm is O(threads * resume elements), but resume elements
4633    is small (and will remain small at least until GDB supports thread
4634    suspension).  */
4635
4636 static int
4637 linux_set_resume_request (struct inferior_list_entry *entry, void *arg)
4638 {
4639   struct thread_info *thread = (struct thread_info *) entry;
4640   struct lwp_info *lwp = get_thread_lwp (thread);
4641   int ndx;
4642   struct thread_resume_array *r;
4643
4644   r = (struct thread_resume_array *) arg;
4645
4646   for (ndx = 0; ndx < r->n; ndx++)
4647     {
4648       ptid_t ptid = r->resume[ndx].thread;
4649       if (ptid_equal (ptid, minus_one_ptid)
4650           || ptid_equal (ptid, entry->id)
4651           /* Handle both 'pPID' and 'pPID.-1' as meaning 'all threads
4652              of PID'.  */
4653           || (ptid_get_pid (ptid) == pid_of (thread)
4654               && (ptid_is_pid (ptid)
4655                   || ptid_get_lwp (ptid) == -1)))
4656         {
4657           if (r->resume[ndx].kind == resume_stop
4658               && thread->last_resume_kind == resume_stop)
4659             {
4660               if (debug_threads)
4661                 debug_printf ("already %s LWP %ld at GDB's request\n",
4662                               (thread->last_status.kind
4663                                == TARGET_WAITKIND_STOPPED)
4664                               ? "stopped"
4665                               : "stopping",
4666                               lwpid_of (thread));
4667
4668               continue;
4669             }
4670
4671           /* Ignore (wildcard) resume requests for already-resumed
4672              threads.  */
4673           if (r->resume[ndx].kind != resume_stop
4674               && thread->last_resume_kind != resume_stop)
4675             {
4676               if (debug_threads)
4677                 debug_printf ("already %s LWP %ld at GDB's request\n",
4678                               (thread->last_resume_kind
4679                                == resume_step)
4680                               ? "stepping"
4681                               : "continuing",
4682                               lwpid_of (thread));
4683               continue;
4684             }
4685
4686           /* Don't let wildcard resumes resume fork children that GDB
4687              does not yet know are new fork children.  */
4688           if (lwp->fork_relative != NULL)
4689             {
4690               struct inferior_list_entry *inf, *tmp;
4691               struct lwp_info *rel = lwp->fork_relative;
4692
4693               if (rel->status_pending_p
4694                   && (rel->waitstatus.kind == TARGET_WAITKIND_FORKED
4695                       || rel->waitstatus.kind == TARGET_WAITKIND_VFORKED))
4696                 {
4697                   if (debug_threads)
4698                     debug_printf ("not resuming LWP %ld: has queued stop reply\n",
4699                                   lwpid_of (thread));
4700                   continue;
4701                 }
4702             }
4703
4704           /* If the thread has a pending event that has already been
4705              reported to GDBserver core, but GDB has not pulled the
4706              event out of the vStopped queue yet, likewise, ignore the
4707              (wildcard) resume request.  */
4708           if (in_queued_stop_replies (entry->id))
4709             {
4710               if (debug_threads)
4711                 debug_printf ("not resuming LWP %ld: has queued stop reply\n",
4712                               lwpid_of (thread));
4713               continue;
4714             }
4715
4716           lwp->resume = &r->resume[ndx];
4717           thread->last_resume_kind = lwp->resume->kind;
4718
4719           lwp->step_range_start = lwp->resume->step_range_start;
4720           lwp->step_range_end = lwp->resume->step_range_end;
4721
4722           /* If we had a deferred signal to report, dequeue one now.
4723              This can happen if LWP gets more than one signal while
4724              trying to get out of a jump pad.  */
4725           if (lwp->stopped
4726               && !lwp->status_pending_p
4727               && dequeue_one_deferred_signal (lwp, &lwp->status_pending))
4728             {
4729               lwp->status_pending_p = 1;
4730
4731               if (debug_threads)
4732                 debug_printf ("Dequeueing deferred signal %d for LWP %ld, "
4733                               "leaving status pending.\n",
4734                               WSTOPSIG (lwp->status_pending),
4735                               lwpid_of (thread));
4736             }
4737
4738           return 0;
4739         }
4740     }
4741
4742   /* No resume action for this thread.  */
4743   lwp->resume = NULL;
4744
4745   return 0;
4746 }
4747
4748 /* find_inferior callback for linux_resume.
4749    Set *FLAG_P if this lwp has an interesting status pending.  */
4750
4751 static int
4752 resume_status_pending_p (struct inferior_list_entry *entry, void *flag_p)
4753 {
4754   struct thread_info *thread = (struct thread_info *) entry;
4755   struct lwp_info *lwp = get_thread_lwp (thread);
4756
4757   /* LWPs which will not be resumed are not interesting, because
4758      we might not wait for them next time through linux_wait.  */
4759   if (lwp->resume == NULL)
4760     return 0;
4761
4762   if (thread_still_has_status_pending_p (thread))
4763     * (int *) flag_p = 1;
4764
4765   return 0;
4766 }
4767
4768 /* Return 1 if this lwp that GDB wants running is stopped at an
4769    internal breakpoint that we need to step over.  It assumes that any
4770    required STOP_PC adjustment has already been propagated to the
4771    inferior's regcache.  */
4772
4773 static int
4774 need_step_over_p (struct inferior_list_entry *entry, void *dummy)
4775 {
4776   struct thread_info *thread = (struct thread_info *) entry;
4777   struct lwp_info *lwp = get_thread_lwp (thread);
4778   struct thread_info *saved_thread;
4779   CORE_ADDR pc;
4780   struct process_info *proc = get_thread_process (thread);
4781
4782   /* GDBserver is skipping the extra traps from the wrapper program,
4783      don't have to do step over.  */
4784   if (proc->tdesc == NULL)
4785     return 0;
4786
4787   /* LWPs which will not be resumed are not interesting, because we
4788      might not wait for them next time through linux_wait.  */
4789
4790   if (!lwp->stopped)
4791     {
4792       if (debug_threads)
4793         debug_printf ("Need step over [LWP %ld]? Ignoring, not stopped\n",
4794                       lwpid_of (thread));
4795       return 0;
4796     }
4797
4798   if (thread->last_resume_kind == resume_stop)
4799     {
4800       if (debug_threads)
4801         debug_printf ("Need step over [LWP %ld]? Ignoring, should remain"
4802                       " stopped\n",
4803                       lwpid_of (thread));
4804       return 0;
4805     }
4806
4807   gdb_assert (lwp->suspended >= 0);
4808
4809   if (lwp->suspended)
4810     {
4811       if (debug_threads)
4812         debug_printf ("Need step over [LWP %ld]? Ignoring, suspended\n",
4813                       lwpid_of (thread));
4814       return 0;
4815     }
4816
4817   if (lwp->status_pending_p)
4818     {
4819       if (debug_threads)
4820         debug_printf ("Need step over [LWP %ld]? Ignoring, has pending"
4821                       " status.\n",
4822                       lwpid_of (thread));
4823       return 0;
4824     }
4825
4826   /* Note: PC, not STOP_PC.  Either GDB has adjusted the PC already,
4827      or we have.  */
4828   pc = get_pc (lwp);
4829
4830   /* If the PC has changed since we stopped, then don't do anything,
4831      and let the breakpoint/tracepoint be hit.  This happens if, for
4832      instance, GDB handled the decr_pc_after_break subtraction itself,
4833      GDB is OOL stepping this thread, or the user has issued a "jump"
4834      command, or poked thread's registers herself.  */
4835   if (pc != lwp->stop_pc)
4836     {
4837       if (debug_threads)
4838         debug_printf ("Need step over [LWP %ld]? Cancelling, PC was changed. "
4839                       "Old stop_pc was 0x%s, PC is now 0x%s\n",
4840                       lwpid_of (thread),
4841                       paddress (lwp->stop_pc), paddress (pc));
4842       return 0;
4843     }
4844
4845   /* On software single step target, resume the inferior with signal
4846      rather than stepping over.  */
4847   if (can_software_single_step ()
4848       && lwp->pending_signals != NULL
4849       && lwp_signal_can_be_delivered (lwp))
4850     {
4851       if (debug_threads)
4852         debug_printf ("Need step over [LWP %ld]? Ignoring, has pending"
4853                       " signals.\n",
4854                       lwpid_of (thread));
4855
4856       return 0;
4857     }
4858
4859   saved_thread = current_thread;
4860   current_thread = thread;
4861
4862   /* We can only step over breakpoints we know about.  */
4863   if (breakpoint_here (pc) || fast_tracepoint_jump_here (pc))
4864     {
4865       /* Don't step over a breakpoint that GDB expects to hit
4866          though.  If the condition is being evaluated on the target's side
4867          and it evaluate to false, step over this breakpoint as well.  */
4868       if (gdb_breakpoint_here (pc)
4869           && gdb_condition_true_at_breakpoint (pc)
4870           && gdb_no_commands_at_breakpoint (pc))
4871         {
4872           if (debug_threads)
4873             debug_printf ("Need step over [LWP %ld]? yes, but found"
4874                           " GDB breakpoint at 0x%s; skipping step over\n",
4875                           lwpid_of (thread), paddress (pc));
4876
4877           current_thread = saved_thread;
4878           return 0;
4879         }
4880       else
4881         {
4882           if (debug_threads)
4883             debug_printf ("Need step over [LWP %ld]? yes, "
4884                           "found breakpoint at 0x%s\n",
4885                           lwpid_of (thread), paddress (pc));
4886
4887           /* We've found an lwp that needs stepping over --- return 1 so
4888              that find_inferior stops looking.  */
4889           current_thread = saved_thread;
4890
4891           return 1;
4892         }
4893     }
4894
4895   current_thread = saved_thread;
4896
4897   if (debug_threads)
4898     debug_printf ("Need step over [LWP %ld]? No, no breakpoint found"
4899                   " at 0x%s\n",
4900                   lwpid_of (thread), paddress (pc));
4901
4902   return 0;
4903 }
4904
4905 /* Start a step-over operation on LWP.  When LWP stopped at a
4906    breakpoint, to make progress, we need to remove the breakpoint out
4907    of the way.  If we let other threads run while we do that, they may
4908    pass by the breakpoint location and miss hitting it.  To avoid
4909    that, a step-over momentarily stops all threads while LWP is
4910    single-stepped by either hardware or software while the breakpoint
4911    is temporarily uninserted from the inferior.  When the single-step
4912    finishes, we reinsert the breakpoint, and let all threads that are
4913    supposed to be running, run again.  */
4914
4915 static int
4916 start_step_over (struct lwp_info *lwp)
4917 {
4918   struct thread_info *thread = get_lwp_thread (lwp);
4919   struct thread_info *saved_thread;
4920   CORE_ADDR pc;
4921   int step;
4922
4923   if (debug_threads)
4924     debug_printf ("Starting step-over on LWP %ld.  Stopping all threads\n",
4925                   lwpid_of (thread));
4926
4927   stop_all_lwps (1, lwp);
4928
4929   if (lwp->suspended != 0)
4930     {
4931       internal_error (__FILE__, __LINE__,
4932                       "LWP %ld suspended=%d\n", lwpid_of (thread),
4933                       lwp->suspended);
4934     }
4935
4936   if (debug_threads)
4937     debug_printf ("Done stopping all threads for step-over.\n");
4938
4939   /* Note, we should always reach here with an already adjusted PC,
4940      either by GDB (if we're resuming due to GDB's request), or by our
4941      caller, if we just finished handling an internal breakpoint GDB
4942      shouldn't care about.  */
4943   pc = get_pc (lwp);
4944
4945   saved_thread = current_thread;
4946   current_thread = thread;
4947
4948   lwp->bp_reinsert = pc;
4949   uninsert_breakpoints_at (pc);
4950   uninsert_fast_tracepoint_jumps_at (pc);
4951
4952   step = single_step (lwp);
4953
4954   current_thread = saved_thread;
4955
4956   linux_resume_one_lwp (lwp, step, 0, NULL);
4957
4958   /* Require next event from this LWP.  */
4959   step_over_bkpt = thread->entry.id;
4960   return 1;
4961 }
4962
4963 /* Finish a step-over.  Reinsert the breakpoint we had uninserted in
4964    start_step_over, if still there, and delete any single-step
4965    breakpoints we've set, on non hardware single-step targets.  */
4966
4967 static int
4968 finish_step_over (struct lwp_info *lwp)
4969 {
4970   if (lwp->bp_reinsert != 0)
4971     {
4972       struct thread_info *saved_thread = current_thread;
4973
4974       if (debug_threads)
4975         debug_printf ("Finished step over.\n");
4976
4977       current_thread = get_lwp_thread (lwp);
4978
4979       /* Reinsert any breakpoint at LWP->BP_REINSERT.  Note that there
4980          may be no breakpoint to reinsert there by now.  */
4981       reinsert_breakpoints_at (lwp->bp_reinsert);
4982       reinsert_fast_tracepoint_jumps_at (lwp->bp_reinsert);
4983
4984       lwp->bp_reinsert = 0;
4985
4986       /* Delete any single-step breakpoints.  No longer needed.  We
4987          don't have to worry about other threads hitting this trap,
4988          and later not being able to explain it, because we were
4989          stepping over a breakpoint, and we hold all threads but
4990          LWP stopped while doing that.  */
4991       if (!can_hardware_single_step ())
4992         {
4993           gdb_assert (has_single_step_breakpoints (current_thread));
4994           delete_single_step_breakpoints (current_thread);
4995         }
4996
4997       step_over_bkpt = null_ptid;
4998       current_thread = saved_thread;
4999       return 1;
5000     }
5001   else
5002     return 0;
5003 }
5004
5005 /* If there's a step over in progress, wait until all threads stop
5006    (that is, until the stepping thread finishes its step), and
5007    unsuspend all lwps.  The stepping thread ends with its status
5008    pending, which is processed later when we get back to processing
5009    events.  */
5010
5011 static void
5012 complete_ongoing_step_over (void)
5013 {
5014   if (!ptid_equal (step_over_bkpt, null_ptid))
5015     {
5016       struct lwp_info *lwp;
5017       int wstat;
5018       int ret;
5019
5020       if (debug_threads)
5021         debug_printf ("detach: step over in progress, finish it first\n");
5022
5023       /* Passing NULL_PTID as filter indicates we want all events to
5024          be left pending.  Eventually this returns when there are no
5025          unwaited-for children left.  */
5026       ret = linux_wait_for_event_filtered (minus_one_ptid, null_ptid,
5027                                            &wstat, __WALL);
5028       gdb_assert (ret == -1);
5029
5030       lwp = find_lwp_pid (step_over_bkpt);
5031       if (lwp != NULL)
5032         finish_step_over (lwp);
5033       step_over_bkpt = null_ptid;
5034       unsuspend_all_lwps (lwp);
5035     }
5036 }
5037
5038 /* This function is called once per thread.  We check the thread's resume
5039    request, which will tell us whether to resume, step, or leave the thread
5040    stopped; and what signal, if any, it should be sent.
5041
5042    For threads which we aren't explicitly told otherwise, we preserve
5043    the stepping flag; this is used for stepping over gdbserver-placed
5044    breakpoints.
5045
5046    If pending_flags was set in any thread, we queue any needed
5047    signals, since we won't actually resume.  We already have a pending
5048    event to report, so we don't need to preserve any step requests;
5049    they should be re-issued if necessary.  */
5050
5051 static int
5052 linux_resume_one_thread (struct inferior_list_entry *entry, void *arg)
5053 {
5054   struct thread_info *thread = (struct thread_info *) entry;
5055   struct lwp_info *lwp = get_thread_lwp (thread);
5056   int leave_all_stopped = * (int *) arg;
5057   int leave_pending;
5058
5059   if (lwp->resume == NULL)
5060     return 0;
5061
5062   if (lwp->resume->kind == resume_stop)
5063     {
5064       if (debug_threads)
5065         debug_printf ("resume_stop request for LWP %ld\n", lwpid_of (thread));
5066
5067       if (!lwp->stopped)
5068         {
5069           if (debug_threads)
5070             debug_printf ("stopping LWP %ld\n", lwpid_of (thread));
5071
5072           /* Stop the thread, and wait for the event asynchronously,
5073              through the event loop.  */
5074           send_sigstop (lwp);
5075         }
5076       else
5077         {
5078           if (debug_threads)
5079             debug_printf ("already stopped LWP %ld\n",
5080                           lwpid_of (thread));
5081
5082           /* The LWP may have been stopped in an internal event that
5083              was not meant to be notified back to GDB (e.g., gdbserver
5084              breakpoint), so we should be reporting a stop event in
5085              this case too.  */
5086
5087           /* If the thread already has a pending SIGSTOP, this is a
5088              no-op.  Otherwise, something later will presumably resume
5089              the thread and this will cause it to cancel any pending
5090              operation, due to last_resume_kind == resume_stop.  If
5091              the thread already has a pending status to report, we
5092              will still report it the next time we wait - see
5093              status_pending_p_callback.  */
5094
5095           /* If we already have a pending signal to report, then
5096              there's no need to queue a SIGSTOP, as this means we're
5097              midway through moving the LWP out of the jumppad, and we
5098              will report the pending signal as soon as that is
5099              finished.  */
5100           if (lwp->pending_signals_to_report == NULL)
5101             send_sigstop (lwp);
5102         }
5103
5104       /* For stop requests, we're done.  */
5105       lwp->resume = NULL;
5106       thread->last_status.kind = TARGET_WAITKIND_IGNORE;
5107       return 0;
5108     }
5109
5110   /* If this thread which is about to be resumed has a pending status,
5111      then don't resume it - we can just report the pending status.
5112      Likewise if it is suspended, because e.g., another thread is
5113      stepping past a breakpoint.  Make sure to queue any signals that
5114      would otherwise be sent.  In all-stop mode, we do this decision
5115      based on if *any* thread has a pending status.  If there's a
5116      thread that needs the step-over-breakpoint dance, then don't
5117      resume any other thread but that particular one.  */
5118   leave_pending = (lwp->suspended
5119                    || lwp->status_pending_p
5120                    || leave_all_stopped);
5121
5122   /* If we have a new signal, enqueue the signal.  */
5123   if (lwp->resume->sig != 0)
5124     {
5125       siginfo_t info, *info_p;
5126
5127       /* If this is the same signal we were previously stopped by,
5128          make sure to queue its siginfo.  */
5129       if (WIFSTOPPED (lwp->last_status)
5130           && WSTOPSIG (lwp->last_status) == lwp->resume->sig
5131           && ptrace (PTRACE_GETSIGINFO, lwpid_of (thread),
5132                      (PTRACE_TYPE_ARG3) 0, &info) == 0)
5133         info_p = &info;
5134       else
5135         info_p = NULL;
5136
5137       enqueue_pending_signal (lwp, lwp->resume->sig, info_p);
5138     }
5139
5140   if (!leave_pending)
5141     {
5142       if (debug_threads)
5143         debug_printf ("resuming LWP %ld\n", lwpid_of (thread));
5144
5145       proceed_one_lwp (entry, NULL);
5146     }
5147   else
5148     {
5149       if (debug_threads)
5150         debug_printf ("leaving LWP %ld stopped\n", lwpid_of (thread));
5151     }
5152
5153   thread->last_status.kind = TARGET_WAITKIND_IGNORE;
5154   lwp->resume = NULL;
5155   return 0;
5156 }
5157
5158 static void
5159 linux_resume (struct thread_resume *resume_info, size_t n)
5160 {
5161   struct thread_resume_array array = { resume_info, n };
5162   struct thread_info *need_step_over = NULL;
5163   int any_pending;
5164   int leave_all_stopped;
5165
5166   if (debug_threads)
5167     {
5168       debug_enter ();
5169       debug_printf ("linux_resume:\n");
5170     }
5171
5172   find_inferior (&all_threads, linux_set_resume_request, &array);
5173
5174   /* If there is a thread which would otherwise be resumed, which has
5175      a pending status, then don't resume any threads - we can just
5176      report the pending status.  Make sure to queue any signals that
5177      would otherwise be sent.  In non-stop mode, we'll apply this
5178      logic to each thread individually.  We consume all pending events
5179      before considering to start a step-over (in all-stop).  */
5180   any_pending = 0;
5181   if (!non_stop)
5182     find_inferior (&all_threads, resume_status_pending_p, &any_pending);
5183
5184   /* If there is a thread which would otherwise be resumed, which is
5185      stopped at a breakpoint that needs stepping over, then don't
5186      resume any threads - have it step over the breakpoint with all
5187      other threads stopped, then resume all threads again.  Make sure
5188      to queue any signals that would otherwise be delivered or
5189      queued.  */
5190   if (!any_pending && supports_breakpoints ())
5191     need_step_over
5192       = (struct thread_info *) find_inferior (&all_threads,
5193                                               need_step_over_p, NULL);
5194
5195   leave_all_stopped = (need_step_over != NULL || any_pending);
5196
5197   if (debug_threads)
5198     {
5199       if (need_step_over != NULL)
5200         debug_printf ("Not resuming all, need step over\n");
5201       else if (any_pending)
5202         debug_printf ("Not resuming, all-stop and found "
5203                       "an LWP with pending status\n");
5204       else
5205         debug_printf ("Resuming, no pending status or step over needed\n");
5206     }
5207
5208   /* Even if we're leaving threads stopped, queue all signals we'd
5209      otherwise deliver.  */
5210   find_inferior (&all_threads, linux_resume_one_thread, &leave_all_stopped);
5211
5212   if (need_step_over)
5213     start_step_over (get_thread_lwp (need_step_over));
5214
5215   if (debug_threads)
5216     {
5217       debug_printf ("linux_resume done\n");
5218       debug_exit ();
5219     }
5220
5221   /* We may have events that were pending that can/should be sent to
5222      the client now.  Trigger a linux_wait call.  */
5223   if (target_is_async_p ())
5224     async_file_mark ();
5225 }
5226
5227 /* This function is called once per thread.  We check the thread's
5228    last resume request, which will tell us whether to resume, step, or
5229    leave the thread stopped.  Any signal the client requested to be
5230    delivered has already been enqueued at this point.
5231
5232    If any thread that GDB wants running is stopped at an internal
5233    breakpoint that needs stepping over, we start a step-over operation
5234    on that particular thread, and leave all others stopped.  */
5235
5236 static int
5237 proceed_one_lwp (struct inferior_list_entry *entry, void *except)
5238 {
5239   struct thread_info *thread = (struct thread_info *) entry;
5240   struct lwp_info *lwp = get_thread_lwp (thread);
5241   int step;
5242
5243   if (lwp == except)
5244     return 0;
5245
5246   if (debug_threads)
5247     debug_printf ("proceed_one_lwp: lwp %ld\n", lwpid_of (thread));
5248
5249   if (!lwp->stopped)
5250     {
5251       if (debug_threads)
5252         debug_printf ("   LWP %ld already running\n", lwpid_of (thread));
5253       return 0;
5254     }
5255
5256   if (thread->last_resume_kind == resume_stop
5257       && thread->last_status.kind != TARGET_WAITKIND_IGNORE)
5258     {
5259       if (debug_threads)
5260         debug_printf ("   client wants LWP to remain %ld stopped\n",
5261                       lwpid_of (thread));
5262       return 0;
5263     }
5264
5265   if (lwp->status_pending_p)
5266     {
5267       if (debug_threads)
5268         debug_printf ("   LWP %ld has pending status, leaving stopped\n",
5269                       lwpid_of (thread));
5270       return 0;
5271     }
5272
5273   gdb_assert (lwp->suspended >= 0);
5274
5275   if (lwp->suspended)
5276     {
5277       if (debug_threads)
5278         debug_printf ("   LWP %ld is suspended\n", lwpid_of (thread));
5279       return 0;
5280     }
5281
5282   if (thread->last_resume_kind == resume_stop
5283       && lwp->pending_signals_to_report == NULL
5284       && lwp->collecting_fast_tracepoint == 0)
5285     {
5286       /* We haven't reported this LWP as stopped yet (otherwise, the
5287          last_status.kind check above would catch it, and we wouldn't
5288          reach here.  This LWP may have been momentarily paused by a
5289          stop_all_lwps call while handling for example, another LWP's
5290          step-over.  In that case, the pending expected SIGSTOP signal
5291          that was queued at vCont;t handling time will have already
5292          been consumed by wait_for_sigstop, and so we need to requeue
5293          another one here.  Note that if the LWP already has a SIGSTOP
5294          pending, this is a no-op.  */
5295
5296       if (debug_threads)
5297         debug_printf ("Client wants LWP %ld to stop. "
5298                       "Making sure it has a SIGSTOP pending\n",
5299                       lwpid_of (thread));
5300
5301       send_sigstop (lwp);
5302     }
5303
5304   if (thread->last_resume_kind == resume_step)
5305     {
5306       if (debug_threads)
5307         debug_printf ("   stepping LWP %ld, client wants it stepping\n",
5308                       lwpid_of (thread));
5309
5310       /* If resume_step is requested by GDB, install single-step
5311          breakpoints when the thread is about to be actually resumed if
5312          the single-step breakpoints weren't removed.  */
5313       if (can_software_single_step ()
5314           && !has_single_step_breakpoints (thread))
5315         install_software_single_step_breakpoints (lwp);
5316
5317       step = maybe_hw_step (thread);
5318     }
5319   else if (lwp->bp_reinsert != 0)
5320     {
5321       if (debug_threads)
5322         debug_printf ("   stepping LWP %ld, reinsert set\n",
5323                       lwpid_of (thread));
5324
5325       step = maybe_hw_step (thread);
5326     }
5327   else
5328     step = 0;
5329
5330   linux_resume_one_lwp (lwp, step, 0, NULL);
5331   return 0;
5332 }
5333
5334 static int
5335 unsuspend_and_proceed_one_lwp (struct inferior_list_entry *entry, void *except)
5336 {
5337   struct thread_info *thread = (struct thread_info *) entry;
5338   struct lwp_info *lwp = get_thread_lwp (thread);
5339
5340   if (lwp == except)
5341     return 0;
5342
5343   lwp_suspended_decr (lwp);
5344
5345   return proceed_one_lwp (entry, except);
5346 }
5347
5348 /* When we finish a step-over, set threads running again.  If there's
5349    another thread that may need a step-over, now's the time to start
5350    it.  Eventually, we'll move all threads past their breakpoints.  */
5351
5352 static void
5353 proceed_all_lwps (void)
5354 {
5355   struct thread_info *need_step_over;
5356
5357   /* If there is a thread which would otherwise be resumed, which is
5358      stopped at a breakpoint that needs stepping over, then don't
5359      resume any threads - have it step over the breakpoint with all
5360      other threads stopped, then resume all threads again.  */
5361
5362   if (supports_breakpoints ())
5363     {
5364       need_step_over
5365         = (struct thread_info *) find_inferior (&all_threads,
5366                                                 need_step_over_p, NULL);
5367
5368       if (need_step_over != NULL)
5369         {
5370           if (debug_threads)
5371             debug_printf ("proceed_all_lwps: found "
5372                           "thread %ld needing a step-over\n",
5373                           lwpid_of (need_step_over));
5374
5375           start_step_over (get_thread_lwp (need_step_over));
5376           return;
5377         }
5378     }
5379
5380   if (debug_threads)
5381     debug_printf ("Proceeding, no step-over needed\n");
5382
5383   find_inferior (&all_threads, proceed_one_lwp, NULL);
5384 }
5385
5386 /* Stopped LWPs that the client wanted to be running, that don't have
5387    pending statuses, are set to run again, except for EXCEPT, if not
5388    NULL.  This undoes a stop_all_lwps call.  */
5389
5390 static void
5391 unstop_all_lwps (int unsuspend, struct lwp_info *except)
5392 {
5393   if (debug_threads)
5394     {
5395       debug_enter ();
5396       if (except)
5397         debug_printf ("unstopping all lwps, except=(LWP %ld)\n",
5398                       lwpid_of (get_lwp_thread (except)));
5399       else
5400         debug_printf ("unstopping all lwps\n");
5401     }
5402
5403   if (unsuspend)
5404     find_inferior (&all_threads, unsuspend_and_proceed_one_lwp, except);
5405   else
5406     find_inferior (&all_threads, proceed_one_lwp, except);
5407
5408   if (debug_threads)
5409     {
5410       debug_printf ("unstop_all_lwps done\n");
5411       debug_exit ();
5412     }
5413 }
5414
5415
5416 #ifdef HAVE_LINUX_REGSETS
5417
5418 #define use_linux_regsets 1
5419
5420 /* Returns true if REGSET has been disabled.  */
5421
5422 static int
5423 regset_disabled (struct regsets_info *info, struct regset_info *regset)
5424 {
5425   return (info->disabled_regsets != NULL
5426           && info->disabled_regsets[regset - info->regsets]);
5427 }
5428
5429 /* Disable REGSET.  */
5430
5431 static void
5432 disable_regset (struct regsets_info *info, struct regset_info *regset)
5433 {
5434   int dr_offset;
5435
5436   dr_offset = regset - info->regsets;
5437   if (info->disabled_regsets == NULL)
5438     info->disabled_regsets = (char *) xcalloc (1, info->num_regsets);
5439   info->disabled_regsets[dr_offset] = 1;
5440 }
5441
5442 static int
5443 regsets_fetch_inferior_registers (struct regsets_info *regsets_info,
5444                                   struct regcache *regcache)
5445 {
5446   struct regset_info *regset;
5447   int saw_general_regs = 0;
5448   int pid;
5449   struct iovec iov;
5450
5451   pid = lwpid_of (current_thread);
5452   for (regset = regsets_info->regsets; regset->size >= 0; regset++)
5453     {
5454       void *buf, *data;
5455       int nt_type, res;
5456
5457       if (regset->size == 0 || regset_disabled (regsets_info, regset))
5458         continue;
5459
5460       buf = xmalloc (regset->size);
5461
5462       nt_type = regset->nt_type;
5463       if (nt_type)
5464         {
5465           iov.iov_base = buf;
5466           iov.iov_len = regset->size;
5467           data = (void *) &iov;
5468         }
5469       else
5470         data = buf;
5471
5472 #ifndef __sparc__
5473       res = ptrace (regset->get_request, pid,
5474                     (PTRACE_TYPE_ARG3) (long) nt_type, data);
5475 #else
5476       res = ptrace (regset->get_request, pid, data, nt_type);
5477 #endif
5478       if (res < 0)
5479         {
5480           if (errno == EIO)
5481             {
5482               /* If we get EIO on a regset, do not try it again for
5483                  this process mode.  */
5484               disable_regset (regsets_info, regset);
5485             }
5486           else if (errno == ENODATA)
5487             {
5488               /* ENODATA may be returned if the regset is currently
5489                  not "active".  This can happen in normal operation,
5490                  so suppress the warning in this case.  */
5491             }
5492           else if (errno == ESRCH)
5493             {
5494               /* At this point, ESRCH should mean the process is
5495                  already gone, in which case we simply ignore attempts
5496                  to read its registers.  */
5497             }
5498           else
5499             {
5500               char s[256];
5501               sprintf (s, "ptrace(regsets_fetch_inferior_registers) PID=%d",
5502                        pid);
5503               perror (s);
5504             }
5505         }
5506       else
5507         {
5508           if (regset->type == GENERAL_REGS)
5509             saw_general_regs = 1;
5510           regset->store_function (regcache, buf);
5511         }
5512       free (buf);
5513     }
5514   if (saw_general_regs)
5515     return 0;
5516   else
5517     return 1;
5518 }
5519
5520 static int
5521 regsets_store_inferior_registers (struct regsets_info *regsets_info,
5522                                   struct regcache *regcache)
5523 {
5524   struct regset_info *regset;
5525   int saw_general_regs = 0;
5526   int pid;
5527   struct iovec iov;
5528
5529   pid = lwpid_of (current_thread);
5530   for (regset = regsets_info->regsets; regset->size >= 0; regset++)
5531     {
5532       void *buf, *data;
5533       int nt_type, res;
5534
5535       if (regset->size == 0 || regset_disabled (regsets_info, regset)
5536           || regset->fill_function == NULL)
5537         continue;
5538
5539       buf = xmalloc (regset->size);
5540
5541       /* First fill the buffer with the current register set contents,
5542          in case there are any items in the kernel's regset that are
5543          not in gdbserver's regcache.  */
5544
5545       nt_type = regset->nt_type;
5546       if (nt_type)
5547         {
5548           iov.iov_base = buf;
5549           iov.iov_len = regset->size;
5550           data = (void *) &iov;
5551         }
5552       else
5553         data = buf;
5554
5555 #ifndef __sparc__
5556       res = ptrace (regset->get_request, pid,
5557                     (PTRACE_TYPE_ARG3) (long) nt_type, data);
5558 #else
5559       res = ptrace (regset->get_request, pid, data, nt_type);
5560 #endif
5561
5562       if (res == 0)
5563         {
5564           /* Then overlay our cached registers on that.  */
5565           regset->fill_function (regcache, buf);
5566
5567           /* Only now do we write the register set.  */
5568 #ifndef __sparc__
5569           res = ptrace (regset->set_request, pid,
5570                         (PTRACE_TYPE_ARG3) (long) nt_type, data);
5571 #else
5572           res = ptrace (regset->set_request, pid, data, nt_type);
5573 #endif
5574         }
5575
5576       if (res < 0)
5577         {
5578           if (errno == EIO)
5579             {
5580               /* If we get EIO on a regset, do not try it again for
5581                  this process mode.  */
5582               disable_regset (regsets_info, regset);
5583             }
5584           else if (errno == ESRCH)
5585             {
5586               /* At this point, ESRCH should mean the process is
5587                  already gone, in which case we simply ignore attempts
5588                  to change its registers.  See also the related
5589                  comment in linux_resume_one_lwp.  */
5590               free (buf);
5591               return 0;
5592             }
5593           else
5594             {
5595               perror ("Warning: ptrace(regsets_store_inferior_registers)");
5596             }
5597         }
5598       else if (regset->type == GENERAL_REGS)
5599         saw_general_regs = 1;
5600       free (buf);
5601     }
5602   if (saw_general_regs)
5603     return 0;
5604   else
5605     return 1;
5606 }
5607
5608 #else /* !HAVE_LINUX_REGSETS */
5609
5610 #define use_linux_regsets 0
5611 #define regsets_fetch_inferior_registers(regsets_info, regcache) 1
5612 #define regsets_store_inferior_registers(regsets_info, regcache) 1
5613
5614 #endif
5615
5616 /* Return 1 if register REGNO is supported by one of the regset ptrace
5617    calls or 0 if it has to be transferred individually.  */
5618
5619 static int
5620 linux_register_in_regsets (const struct regs_info *regs_info, int regno)
5621 {
5622   unsigned char mask = 1 << (regno % 8);
5623   size_t index = regno / 8;
5624
5625   return (use_linux_regsets
5626           && (regs_info->regset_bitmap == NULL
5627               || (regs_info->regset_bitmap[index] & mask) != 0));
5628 }
5629
5630 #ifdef HAVE_LINUX_USRREGS
5631
5632 static int
5633 register_addr (const struct usrregs_info *usrregs, int regnum)
5634 {
5635   int addr;
5636
5637   if (regnum < 0 || regnum >= usrregs->num_regs)
5638     error ("Invalid register number %d.", regnum);
5639
5640   addr = usrregs->regmap[regnum];
5641
5642   return addr;
5643 }
5644
5645 /* Fetch one register.  */
5646 static void
5647 fetch_register (const struct usrregs_info *usrregs,
5648                 struct regcache *regcache, int regno)
5649 {
5650   CORE_ADDR regaddr;
5651   int i, size;
5652   char *buf;
5653   int pid;
5654
5655   if (regno >= usrregs->num_regs)
5656     return;
5657   if ((*the_low_target.cannot_fetch_register) (regno))
5658     return;
5659
5660   regaddr = register_addr (usrregs, regno);
5661   if (regaddr == -1)
5662     return;
5663
5664   size = ((register_size (regcache->tdesc, regno)
5665            + sizeof (PTRACE_XFER_TYPE) - 1)
5666           & -sizeof (PTRACE_XFER_TYPE));
5667   buf = (char *) alloca (size);
5668
5669   pid = lwpid_of (current_thread);
5670   for (i = 0; i < size; i += sizeof (PTRACE_XFER_TYPE))
5671     {
5672       errno = 0;
5673       *(PTRACE_XFER_TYPE *) (buf + i) =
5674         ptrace (PTRACE_PEEKUSER, pid,
5675                 /* Coerce to a uintptr_t first to avoid potential gcc warning
5676                    of coercing an 8 byte integer to a 4 byte pointer.  */
5677                 (PTRACE_TYPE_ARG3) (uintptr_t) regaddr, (PTRACE_TYPE_ARG4) 0);
5678       regaddr += sizeof (PTRACE_XFER_TYPE);
5679       if (errno != 0)
5680         error ("reading register %d: %s", regno, strerror (errno));
5681     }
5682
5683   if (the_low_target.supply_ptrace_register)
5684     the_low_target.supply_ptrace_register (regcache, regno, buf);
5685   else
5686     supply_register (regcache, regno, buf);
5687 }
5688
5689 /* Store one register.  */
5690 static void
5691 store_register (const struct usrregs_info *usrregs,
5692                 struct regcache *regcache, int regno)
5693 {
5694   CORE_ADDR regaddr;
5695   int i, size;
5696   char *buf;
5697   int pid;
5698
5699   if (regno >= usrregs->num_regs)
5700     return;
5701   if ((*the_low_target.cannot_store_register) (regno))
5702     return;
5703
5704   regaddr = register_addr (usrregs, regno);
5705   if (regaddr == -1)
5706     return;
5707
5708   size = ((register_size (regcache->tdesc, regno)
5709            + sizeof (PTRACE_XFER_TYPE) - 1)
5710           & -sizeof (PTRACE_XFER_TYPE));
5711   buf = (char *) alloca (size);
5712   memset (buf, 0, size);
5713
5714   if (the_low_target.collect_ptrace_register)
5715     the_low_target.collect_ptrace_register (regcache, regno, buf);
5716   else
5717     collect_register (regcache, regno, buf);
5718
5719   pid = lwpid_of (current_thread);
5720   for (i = 0; i < size; i += sizeof (PTRACE_XFER_TYPE))
5721     {
5722       errno = 0;
5723       ptrace (PTRACE_POKEUSER, pid,
5724             /* Coerce to a uintptr_t first to avoid potential gcc warning
5725                about coercing an 8 byte integer to a 4 byte pointer.  */
5726               (PTRACE_TYPE_ARG3) (uintptr_t) regaddr,
5727               (PTRACE_TYPE_ARG4) *(PTRACE_XFER_TYPE *) (buf + i));
5728       if (errno != 0)
5729         {
5730           /* At this point, ESRCH should mean the process is
5731              already gone, in which case we simply ignore attempts
5732              to change its registers.  See also the related
5733              comment in linux_resume_one_lwp.  */
5734           if (errno == ESRCH)
5735             return;
5736
5737           if ((*the_low_target.cannot_store_register) (regno) == 0)
5738             error ("writing register %d: %s", regno, strerror (errno));
5739         }
5740       regaddr += sizeof (PTRACE_XFER_TYPE);
5741     }
5742 }
5743
5744 /* Fetch all registers, or just one, from the child process.
5745    If REGNO is -1, do this for all registers, skipping any that are
5746    assumed to have been retrieved by regsets_fetch_inferior_registers,
5747    unless ALL is non-zero.
5748    Otherwise, REGNO specifies which register (so we can save time).  */
5749 static void
5750 usr_fetch_inferior_registers (const struct regs_info *regs_info,
5751                               struct regcache *regcache, int regno, int all)
5752 {
5753   struct usrregs_info *usr = regs_info->usrregs;
5754
5755   if (regno == -1)
5756     {
5757       for (regno = 0; regno < usr->num_regs; regno++)
5758         if (all || !linux_register_in_regsets (regs_info, regno))
5759           fetch_register (usr, regcache, regno);
5760     }
5761   else
5762     fetch_register (usr, regcache, regno);
5763 }
5764
5765 /* Store our register values back into the inferior.
5766    If REGNO is -1, do this for all registers, skipping any that are
5767    assumed to have been saved by regsets_store_inferior_registers,
5768    unless ALL is non-zero.
5769    Otherwise, REGNO specifies which register (so we can save time).  */
5770 static void
5771 usr_store_inferior_registers (const struct regs_info *regs_info,
5772                               struct regcache *regcache, int regno, int all)
5773 {
5774   struct usrregs_info *usr = regs_info->usrregs;
5775
5776   if (regno == -1)
5777     {
5778       for (regno = 0; regno < usr->num_regs; regno++)
5779         if (all || !linux_register_in_regsets (regs_info, regno))
5780           store_register (usr, regcache, regno);
5781     }
5782   else
5783     store_register (usr, regcache, regno);
5784 }
5785
5786 #else /* !HAVE_LINUX_USRREGS */
5787
5788 #define usr_fetch_inferior_registers(regs_info, regcache, regno, all) do {} while (0)
5789 #define usr_store_inferior_registers(regs_info, regcache, regno, all) do {} while (0)
5790
5791 #endif
5792
5793
5794 static void
5795 linux_fetch_registers (struct regcache *regcache, int regno)
5796 {
5797   int use_regsets;
5798   int all = 0;
5799   const struct regs_info *regs_info = (*the_low_target.regs_info) ();
5800
5801   if (regno == -1)
5802     {
5803       if (the_low_target.fetch_register != NULL
5804           && regs_info->usrregs != NULL)
5805         for (regno = 0; regno < regs_info->usrregs->num_regs; regno++)
5806           (*the_low_target.fetch_register) (regcache, regno);
5807
5808       all = regsets_fetch_inferior_registers (regs_info->regsets_info, regcache);
5809       if (regs_info->usrregs != NULL)
5810         usr_fetch_inferior_registers (regs_info, regcache, -1, all);
5811     }
5812   else
5813     {
5814       if (the_low_target.fetch_register != NULL
5815           && (*the_low_target.fetch_register) (regcache, regno))
5816         return;
5817
5818       use_regsets = linux_register_in_regsets (regs_info, regno);
5819       if (use_regsets)
5820         all = regsets_fetch_inferior_registers (regs_info->regsets_info,
5821                                                 regcache);
5822       if ((!use_regsets || all) && regs_info->usrregs != NULL)
5823         usr_fetch_inferior_registers (regs_info, regcache, regno, 1);
5824     }
5825 }
5826
5827 static void
5828 linux_store_registers (struct regcache *regcache, int regno)
5829 {
5830   int use_regsets;
5831   int all = 0;
5832   const struct regs_info *regs_info = (*the_low_target.regs_info) ();
5833
5834   if (regno == -1)
5835     {
5836       all = regsets_store_inferior_registers (regs_info->regsets_info,
5837                                               regcache);
5838       if (regs_info->usrregs != NULL)
5839         usr_store_inferior_registers (regs_info, regcache, regno, all);
5840     }
5841   else
5842     {
5843       use_regsets = linux_register_in_regsets (regs_info, regno);
5844       if (use_regsets)
5845         all = regsets_store_inferior_registers (regs_info->regsets_info,
5846                                                 regcache);
5847       if ((!use_regsets || all) && regs_info->usrregs != NULL)
5848         usr_store_inferior_registers (regs_info, regcache, regno, 1);
5849     }
5850 }
5851
5852
5853 /* Copy LEN bytes from inferior's memory starting at MEMADDR
5854    to debugger memory starting at MYADDR.  */
5855
5856 static int
5857 linux_read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
5858 {
5859   int pid = lwpid_of (current_thread);
5860   register PTRACE_XFER_TYPE *buffer;
5861   register CORE_ADDR addr;
5862   register int count;
5863   char filename[64];
5864   register int i;
5865   int ret;
5866   int fd;
5867
5868   /* Try using /proc.  Don't bother for one word.  */
5869   if (len >= 3 * sizeof (long))
5870     {
5871       int bytes;
5872
5873       /* We could keep this file open and cache it - possibly one per
5874          thread.  That requires some juggling, but is even faster.  */
5875       sprintf (filename, "/proc/%d/mem", pid);
5876       fd = open (filename, O_RDONLY | O_LARGEFILE);
5877       if (fd == -1)
5878         goto no_proc;
5879
5880       /* If pread64 is available, use it.  It's faster if the kernel
5881          supports it (only one syscall), and it's 64-bit safe even on
5882          32-bit platforms (for instance, SPARC debugging a SPARC64
5883          application).  */
5884 #ifdef HAVE_PREAD64
5885       bytes = pread64 (fd, myaddr, len, memaddr);
5886 #else
5887       bytes = -1;
5888       if (lseek (fd, memaddr, SEEK_SET) != -1)
5889         bytes = read (fd, myaddr, len);
5890 #endif
5891
5892       close (fd);
5893       if (bytes == len)
5894         return 0;
5895
5896       /* Some data was read, we'll try to get the rest with ptrace.  */
5897       if (bytes > 0)
5898         {
5899           memaddr += bytes;
5900           myaddr += bytes;
5901           len -= bytes;
5902         }
5903     }
5904
5905  no_proc:
5906   /* Round starting address down to longword boundary.  */
5907   addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_XFER_TYPE);
5908   /* Round ending address up; get number of longwords that makes.  */
5909   count = ((((memaddr + len) - addr) + sizeof (PTRACE_XFER_TYPE) - 1)
5910            / sizeof (PTRACE_XFER_TYPE));
5911   /* Allocate buffer of that many longwords.  */
5912   buffer = XALLOCAVEC (PTRACE_XFER_TYPE, count);
5913
5914   /* Read all the longwords */
5915   errno = 0;
5916   for (i = 0; i < count; i++, addr += sizeof (PTRACE_XFER_TYPE))
5917     {
5918       /* Coerce the 3rd arg to a uintptr_t first to avoid potential gcc warning
5919          about coercing an 8 byte integer to a 4 byte pointer.  */
5920       buffer[i] = ptrace (PTRACE_PEEKTEXT, pid,
5921                           (PTRACE_TYPE_ARG3) (uintptr_t) addr,
5922                           (PTRACE_TYPE_ARG4) 0);
5923       if (errno)
5924         break;
5925     }
5926   ret = errno;
5927
5928   /* Copy appropriate bytes out of the buffer.  */
5929   if (i > 0)
5930     {
5931       i *= sizeof (PTRACE_XFER_TYPE);
5932       i -= memaddr & (sizeof (PTRACE_XFER_TYPE) - 1);
5933       memcpy (myaddr,
5934               (char *) buffer + (memaddr & (sizeof (PTRACE_XFER_TYPE) - 1)),
5935               i < len ? i : len);
5936     }
5937
5938   return ret;
5939 }
5940
5941 /* Copy LEN bytes of data from debugger memory at MYADDR to inferior's
5942    memory at MEMADDR.  On failure (cannot write to the inferior)
5943    returns the value of errno.  Always succeeds if LEN is zero.  */
5944
5945 static int
5946 linux_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int len)
5947 {
5948   register int i;
5949   /* Round starting address down to longword boundary.  */
5950   register CORE_ADDR addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_XFER_TYPE);
5951   /* Round ending address up; get number of longwords that makes.  */
5952   register int count
5953     = (((memaddr + len) - addr) + sizeof (PTRACE_XFER_TYPE) - 1)
5954     / sizeof (PTRACE_XFER_TYPE);
5955
5956   /* Allocate buffer of that many longwords.  */
5957   register PTRACE_XFER_TYPE *buffer = XALLOCAVEC (PTRACE_XFER_TYPE, count);
5958
5959   int pid = lwpid_of (current_thread);
5960
5961   if (len == 0)
5962     {
5963       /* Zero length write always succeeds.  */
5964       return 0;
5965     }
5966
5967   if (debug_threads)
5968     {
5969       /* Dump up to four bytes.  */
5970       char str[4 * 2 + 1];
5971       char *p = str;
5972       int dump = len < 4 ? len : 4;
5973
5974       for (i = 0; i < dump; i++)
5975         {
5976           sprintf (p, "%02x", myaddr[i]);
5977           p += 2;
5978         }
5979       *p = '\0';
5980
5981       debug_printf ("Writing %s to 0x%08lx in process %d\n",
5982                     str, (long) memaddr, pid);
5983     }
5984
5985   /* Fill start and end extra bytes of buffer with existing memory data.  */
5986
5987   errno = 0;
5988   /* Coerce the 3rd arg to a uintptr_t first to avoid potential gcc warning
5989      about coercing an 8 byte integer to a 4 byte pointer.  */
5990   buffer[0] = ptrace (PTRACE_PEEKTEXT, pid,
5991                       (PTRACE_TYPE_ARG3) (uintptr_t) addr,
5992                       (PTRACE_TYPE_ARG4) 0);
5993   if (errno)
5994     return errno;
5995
5996   if (count > 1)
5997     {
5998       errno = 0;
5999       buffer[count - 1]
6000         = ptrace (PTRACE_PEEKTEXT, pid,
6001                   /* Coerce to a uintptr_t first to avoid potential gcc warning
6002                      about coercing an 8 byte integer to a 4 byte pointer.  */
6003                   (PTRACE_TYPE_ARG3) (uintptr_t) (addr + (count - 1)
6004                                                   * sizeof (PTRACE_XFER_TYPE)),
6005                   (PTRACE_TYPE_ARG4) 0);
6006       if (errno)
6007         return errno;
6008     }
6009
6010   /* Copy data to be written over corresponding part of buffer.  */
6011
6012   memcpy ((char *) buffer + (memaddr & (sizeof (PTRACE_XFER_TYPE) - 1)),
6013           myaddr, len);
6014
6015   /* Write the entire buffer.  */
6016
6017   for (i = 0; i < count; i++, addr += sizeof (PTRACE_XFER_TYPE))
6018     {
6019       errno = 0;
6020       ptrace (PTRACE_POKETEXT, pid,
6021               /* Coerce to a uintptr_t first to avoid potential gcc warning
6022                  about coercing an 8 byte integer to a 4 byte pointer.  */
6023               (PTRACE_TYPE_ARG3) (uintptr_t) addr,
6024               (PTRACE_TYPE_ARG4) buffer[i]);
6025       if (errno)
6026         return errno;
6027     }
6028
6029   return 0;
6030 }
6031
6032 static void
6033 linux_look_up_symbols (void)
6034 {
6035 #ifdef USE_THREAD_DB
6036   struct process_info *proc = current_process ();
6037
6038   if (proc->priv->thread_db != NULL)
6039     return;
6040
6041   thread_db_init ();
6042 #endif
6043 }
6044
6045 static void
6046 linux_request_interrupt (void)
6047 {
6048   extern unsigned long signal_pid;
6049
6050   /* Send a SIGINT to the process group.  This acts just like the user
6051      typed a ^C on the controlling terminal.  */
6052   kill (-signal_pid, SIGINT);
6053 }
6054
6055 /* Copy LEN bytes from inferior's auxiliary vector starting at OFFSET
6056    to debugger memory starting at MYADDR.  */
6057
6058 static int
6059 linux_read_auxv (CORE_ADDR offset, unsigned char *myaddr, unsigned int len)
6060 {
6061   char filename[PATH_MAX];
6062   int fd, n;
6063   int pid = lwpid_of (current_thread);
6064
6065   xsnprintf (filename, sizeof filename, "/proc/%d/auxv", pid);
6066
6067   fd = open (filename, O_RDONLY);
6068   if (fd < 0)
6069     return -1;
6070
6071   if (offset != (CORE_ADDR) 0
6072       && lseek (fd, (off_t) offset, SEEK_SET) != (off_t) offset)
6073     n = -1;
6074   else
6075     n = read (fd, myaddr, len);
6076
6077   close (fd);
6078
6079   return n;
6080 }
6081
6082 /* These breakpoint and watchpoint related wrapper functions simply
6083    pass on the function call if the target has registered a
6084    corresponding function.  */
6085
6086 static int
6087 linux_supports_z_point_type (char z_type)
6088 {
6089   return (the_low_target.supports_z_point_type != NULL
6090           && the_low_target.supports_z_point_type (z_type));
6091 }
6092
6093 static int
6094 linux_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
6095                     int size, struct raw_breakpoint *bp)
6096 {
6097   if (type == raw_bkpt_type_sw)
6098     return insert_memory_breakpoint (bp);
6099   else if (the_low_target.insert_point != NULL)
6100     return the_low_target.insert_point (type, addr, size, bp);
6101   else
6102     /* Unsupported (see target.h).  */
6103     return 1;
6104 }
6105
6106 static int
6107 linux_remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
6108                     int size, struct raw_breakpoint *bp)
6109 {
6110   if (type == raw_bkpt_type_sw)
6111     return remove_memory_breakpoint (bp);
6112   else if (the_low_target.remove_point != NULL)
6113     return the_low_target.remove_point (type, addr, size, bp);
6114   else
6115     /* Unsupported (see target.h).  */
6116     return 1;
6117 }
6118
6119 /* Implement the to_stopped_by_sw_breakpoint target_ops
6120    method.  */
6121
6122 static int
6123 linux_stopped_by_sw_breakpoint (void)
6124 {
6125   struct lwp_info *lwp = get_thread_lwp (current_thread);
6126
6127   return (lwp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT);
6128 }
6129
6130 /* Implement the to_supports_stopped_by_sw_breakpoint target_ops
6131    method.  */
6132
6133 static int
6134 linux_supports_stopped_by_sw_breakpoint (void)
6135 {
6136   return USE_SIGTRAP_SIGINFO;
6137 }
6138
6139 /* Implement the to_stopped_by_hw_breakpoint target_ops
6140    method.  */
6141
6142 static int
6143 linux_stopped_by_hw_breakpoint (void)
6144 {
6145   struct lwp_info *lwp = get_thread_lwp (current_thread);
6146
6147   return (lwp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT);
6148 }
6149
6150 /* Implement the to_supports_stopped_by_hw_breakpoint target_ops
6151    method.  */
6152
6153 static int
6154 linux_supports_stopped_by_hw_breakpoint (void)
6155 {
6156   return USE_SIGTRAP_SIGINFO;
6157 }
6158
6159 /* Implement the supports_hardware_single_step target_ops method.  */
6160
6161 static int
6162 linux_supports_hardware_single_step (void)
6163 {
6164   return can_hardware_single_step ();
6165 }
6166
6167 static int
6168 linux_supports_software_single_step (void)
6169 {
6170   return can_software_single_step ();
6171 }
6172
6173 static int
6174 linux_stopped_by_watchpoint (void)
6175 {
6176   struct lwp_info *lwp = get_thread_lwp (current_thread);
6177
6178   return lwp->stop_reason == TARGET_STOPPED_BY_WATCHPOINT;
6179 }
6180
6181 static CORE_ADDR
6182 linux_stopped_data_address (void)
6183 {
6184   struct lwp_info *lwp = get_thread_lwp (current_thread);
6185
6186   return lwp->stopped_data_address;
6187 }
6188
6189 #if defined(__UCLIBC__) && defined(HAS_NOMMU)         \
6190     && defined(PT_TEXT_ADDR) && defined(PT_DATA_ADDR) \
6191     && defined(PT_TEXT_END_ADDR)
6192
6193 /* This is only used for targets that define PT_TEXT_ADDR,
6194    PT_DATA_ADDR and PT_TEXT_END_ADDR.  If those are not defined, supposedly
6195    the target has different ways of acquiring this information, like
6196    loadmaps.  */
6197
6198 /* Under uClinux, programs are loaded at non-zero offsets, which we need
6199    to tell gdb about.  */
6200
6201 static int
6202 linux_read_offsets (CORE_ADDR *text_p, CORE_ADDR *data_p)
6203 {
6204   unsigned long text, text_end, data;
6205   int pid = lwpid_of (current_thread);
6206
6207   errno = 0;
6208
6209   text = ptrace (PTRACE_PEEKUSER, pid, (PTRACE_TYPE_ARG3) PT_TEXT_ADDR,
6210                  (PTRACE_TYPE_ARG4) 0);
6211   text_end = ptrace (PTRACE_PEEKUSER, pid, (PTRACE_TYPE_ARG3) PT_TEXT_END_ADDR,
6212                      (PTRACE_TYPE_ARG4) 0);
6213   data = ptrace (PTRACE_PEEKUSER, pid, (PTRACE_TYPE_ARG3) PT_DATA_ADDR,
6214                  (PTRACE_TYPE_ARG4) 0);
6215
6216   if (errno == 0)
6217     {
6218       /* Both text and data offsets produced at compile-time (and so
6219          used by gdb) are relative to the beginning of the program,
6220          with the data segment immediately following the text segment.
6221          However, the actual runtime layout in memory may put the data
6222          somewhere else, so when we send gdb a data base-address, we
6223          use the real data base address and subtract the compile-time
6224          data base-address from it (which is just the length of the
6225          text segment).  BSS immediately follows data in both
6226          cases.  */
6227       *text_p = text;
6228       *data_p = data - (text_end - text);
6229
6230       return 1;
6231     }
6232  return 0;
6233 }
6234 #endif
6235
6236 static int
6237 linux_qxfer_osdata (const char *annex,
6238                     unsigned char *readbuf, unsigned const char *writebuf,
6239                     CORE_ADDR offset, int len)
6240 {
6241   return linux_common_xfer_osdata (annex, readbuf, offset, len);
6242 }
6243
6244 /* Convert a native/host siginfo object, into/from the siginfo in the
6245    layout of the inferiors' architecture.  */
6246
6247 static void
6248 siginfo_fixup (siginfo_t *siginfo, gdb_byte *inf_siginfo, int direction)
6249 {
6250   int done = 0;
6251
6252   if (the_low_target.siginfo_fixup != NULL)
6253     done = the_low_target.siginfo_fixup (siginfo, inf_siginfo, direction);
6254
6255   /* If there was no callback, or the callback didn't do anything,
6256      then just do a straight memcpy.  */
6257   if (!done)
6258     {
6259       if (direction == 1)
6260         memcpy (siginfo, inf_siginfo, sizeof (siginfo_t));
6261       else
6262         memcpy (inf_siginfo, siginfo, sizeof (siginfo_t));
6263     }
6264 }
6265
6266 static int
6267 linux_xfer_siginfo (const char *annex, unsigned char *readbuf,
6268                     unsigned const char *writebuf, CORE_ADDR offset, int len)
6269 {
6270   int pid;
6271   siginfo_t siginfo;
6272   gdb_byte inf_siginfo[sizeof (siginfo_t)];
6273
6274   if (current_thread == NULL)
6275     return -1;
6276
6277   pid = lwpid_of (current_thread);
6278
6279   if (debug_threads)
6280     debug_printf ("%s siginfo for lwp %d.\n",
6281                   readbuf != NULL ? "Reading" : "Writing",
6282                   pid);
6283
6284   if (offset >= sizeof (siginfo))
6285     return -1;
6286
6287   if (ptrace (PTRACE_GETSIGINFO, pid, (PTRACE_TYPE_ARG3) 0, &siginfo) != 0)
6288     return -1;
6289
6290   /* When GDBSERVER is built as a 64-bit application, ptrace writes into
6291      SIGINFO an object with 64-bit layout.  Since debugging a 32-bit
6292      inferior with a 64-bit GDBSERVER should look the same as debugging it
6293      with a 32-bit GDBSERVER, we need to convert it.  */
6294   siginfo_fixup (&siginfo, inf_siginfo, 0);
6295
6296   if (offset + len > sizeof (siginfo))
6297     len = sizeof (siginfo) - offset;
6298
6299   if (readbuf != NULL)
6300     memcpy (readbuf, inf_siginfo + offset, len);
6301   else
6302     {
6303       memcpy (inf_siginfo + offset, writebuf, len);
6304
6305       /* Convert back to ptrace layout before flushing it out.  */
6306       siginfo_fixup (&siginfo, inf_siginfo, 1);
6307
6308       if (ptrace (PTRACE_SETSIGINFO, pid, (PTRACE_TYPE_ARG3) 0, &siginfo) != 0)
6309         return -1;
6310     }
6311
6312   return len;
6313 }
6314
6315 /* SIGCHLD handler that serves two purposes: In non-stop/async mode,
6316    so we notice when children change state; as the handler for the
6317    sigsuspend in my_waitpid.  */
6318
6319 static void
6320 sigchld_handler (int signo)
6321 {
6322   int old_errno = errno;
6323
6324   if (debug_threads)
6325     {
6326       do
6327         {
6328           /* fprintf is not async-signal-safe, so call write
6329              directly.  */
6330           if (write (2, "sigchld_handler\n",
6331                      sizeof ("sigchld_handler\n") - 1) < 0)
6332             break; /* just ignore */
6333         } while (0);
6334     }
6335
6336   if (target_is_async_p ())
6337     async_file_mark (); /* trigger a linux_wait */
6338
6339   errno = old_errno;
6340 }
6341
6342 static int
6343 linux_supports_non_stop (void)
6344 {
6345   return 1;
6346 }
6347
6348 static int
6349 linux_async (int enable)
6350 {
6351   int previous = target_is_async_p ();
6352
6353   if (debug_threads)
6354     debug_printf ("linux_async (%d), previous=%d\n",
6355                   enable, previous);
6356
6357   if (previous != enable)
6358     {
6359       sigset_t mask;
6360       sigemptyset (&mask);
6361       sigaddset (&mask, SIGCHLD);
6362
6363       sigprocmask (SIG_BLOCK, &mask, NULL);
6364
6365       if (enable)
6366         {
6367           if (pipe (linux_event_pipe) == -1)
6368             {
6369               linux_event_pipe[0] = -1;
6370               linux_event_pipe[1] = -1;
6371               sigprocmask (SIG_UNBLOCK, &mask, NULL);
6372
6373               warning ("creating event pipe failed.");
6374               return previous;
6375             }
6376
6377           fcntl (linux_event_pipe[0], F_SETFL, O_NONBLOCK);
6378           fcntl (linux_event_pipe[1], F_SETFL, O_NONBLOCK);
6379
6380           /* Register the event loop handler.  */
6381           add_file_handler (linux_event_pipe[0],
6382                             handle_target_event, NULL);
6383
6384           /* Always trigger a linux_wait.  */
6385           async_file_mark ();
6386         }
6387       else
6388         {
6389           delete_file_handler (linux_event_pipe[0]);
6390
6391           close (linux_event_pipe[0]);
6392           close (linux_event_pipe[1]);
6393           linux_event_pipe[0] = -1;
6394           linux_event_pipe[1] = -1;
6395         }
6396
6397       sigprocmask (SIG_UNBLOCK, &mask, NULL);
6398     }
6399
6400   return previous;
6401 }
6402
6403 static int
6404 linux_start_non_stop (int nonstop)
6405 {
6406   /* Register or unregister from event-loop accordingly.  */
6407   linux_async (nonstop);
6408
6409   if (target_is_async_p () != (nonstop != 0))
6410     return -1;
6411
6412   return 0;
6413 }
6414
6415 static int
6416 linux_supports_multi_process (void)
6417 {
6418   return 1;
6419 }
6420
6421 /* Check if fork events are supported.  */
6422
6423 static int
6424 linux_supports_fork_events (void)
6425 {
6426   return linux_supports_tracefork ();
6427 }
6428
6429 /* Check if vfork events are supported.  */
6430
6431 static int
6432 linux_supports_vfork_events (void)
6433 {
6434   return linux_supports_tracefork ();
6435 }
6436
6437 /* Check if exec events are supported.  */
6438
6439 static int
6440 linux_supports_exec_events (void)
6441 {
6442   return linux_supports_traceexec ();
6443 }
6444
6445 /* Callback for 'find_inferior'.  Set the (possibly changed) ptrace
6446    options for the specified lwp.  */
6447
6448 static int
6449 reset_lwp_ptrace_options_callback (struct inferior_list_entry *entry,
6450                                    void *args)
6451 {
6452   struct thread_info *thread = (struct thread_info *) entry;
6453   struct lwp_info *lwp = get_thread_lwp (thread);
6454
6455   if (!lwp->stopped)
6456     {
6457       /* Stop the lwp so we can modify its ptrace options.  */
6458       lwp->must_set_ptrace_flags = 1;
6459       linux_stop_lwp (lwp);
6460     }
6461   else
6462     {
6463       /* Already stopped; go ahead and set the ptrace options.  */
6464       struct process_info *proc = find_process_pid (pid_of (thread));
6465       int options = linux_low_ptrace_options (proc->attached);
6466
6467       linux_enable_event_reporting (lwpid_of (thread), options);
6468       lwp->must_set_ptrace_flags = 0;
6469     }
6470
6471   return 0;
6472 }
6473
6474 /* Target hook for 'handle_new_gdb_connection'.  Causes a reset of the
6475    ptrace flags for all inferiors.  This is in case the new GDB connection
6476    doesn't support the same set of events that the previous one did.  */
6477
6478 static void
6479 linux_handle_new_gdb_connection (void)
6480 {
6481   pid_t pid;
6482
6483   /* Request that all the lwps reset their ptrace options.  */
6484   find_inferior (&all_threads, reset_lwp_ptrace_options_callback , &pid);
6485 }
6486
6487 static int
6488 linux_supports_disable_randomization (void)
6489 {
6490 #ifdef HAVE_PERSONALITY
6491   return 1;
6492 #else
6493   return 0;
6494 #endif
6495 }
6496
6497 static int
6498 linux_supports_agent (void)
6499 {
6500   return 1;
6501 }
6502
6503 static int
6504 linux_supports_range_stepping (void)
6505 {
6506   if (*the_low_target.supports_range_stepping == NULL)
6507     return 0;
6508
6509   return (*the_low_target.supports_range_stepping) ();
6510 }
6511
6512 /* Enumerate spufs IDs for process PID.  */
6513 static int
6514 spu_enumerate_spu_ids (long pid, unsigned char *buf, CORE_ADDR offset, int len)
6515 {
6516   int pos = 0;
6517   int written = 0;
6518   char path[128];
6519   DIR *dir;
6520   struct dirent *entry;
6521
6522   sprintf (path, "/proc/%ld/fd", pid);
6523   dir = opendir (path);
6524   if (!dir)
6525     return -1;
6526
6527   rewinddir (dir);
6528   while ((entry = readdir (dir)) != NULL)
6529     {
6530       struct stat st;
6531       struct statfs stfs;
6532       int fd;
6533
6534       fd = atoi (entry->d_name);
6535       if (!fd)
6536         continue;
6537
6538       sprintf (path, "/proc/%ld/fd/%d", pid, fd);
6539       if (stat (path, &st) != 0)
6540         continue;
6541       if (!S_ISDIR (st.st_mode))
6542         continue;
6543
6544       if (statfs (path, &stfs) != 0)
6545         continue;
6546       if (stfs.f_type != SPUFS_MAGIC)
6547         continue;
6548
6549       if (pos >= offset && pos + 4 <= offset + len)
6550         {
6551           *(unsigned int *)(buf + pos - offset) = fd;
6552           written += 4;
6553         }
6554       pos += 4;
6555     }
6556
6557   closedir (dir);
6558   return written;
6559 }
6560
6561 /* Implements the to_xfer_partial interface for the TARGET_OBJECT_SPU
6562    object type, using the /proc file system.  */
6563 static int
6564 linux_qxfer_spu (const char *annex, unsigned char *readbuf,
6565                  unsigned const char *writebuf,
6566                  CORE_ADDR offset, int len)
6567 {
6568   long pid = lwpid_of (current_thread);
6569   char buf[128];
6570   int fd = 0;
6571   int ret = 0;
6572
6573   if (!writebuf && !readbuf)
6574     return -1;
6575
6576   if (!*annex)
6577     {
6578       if (!readbuf)
6579         return -1;
6580       else
6581         return spu_enumerate_spu_ids (pid, readbuf, offset, len);
6582     }
6583
6584   sprintf (buf, "/proc/%ld/fd/%s", pid, annex);
6585   fd = open (buf, writebuf? O_WRONLY : O_RDONLY);
6586   if (fd <= 0)
6587     return -1;
6588
6589   if (offset != 0
6590       && lseek (fd, (off_t) offset, SEEK_SET) != (off_t) offset)
6591     {
6592       close (fd);
6593       return 0;
6594     }
6595
6596   if (writebuf)
6597     ret = write (fd, writebuf, (size_t) len);
6598   else
6599     ret = read (fd, readbuf, (size_t) len);
6600
6601   close (fd);
6602   return ret;
6603 }
6604
6605 #if defined PT_GETDSBT || defined PTRACE_GETFDPIC
6606 struct target_loadseg
6607 {
6608   /* Core address to which the segment is mapped.  */
6609   Elf32_Addr addr;
6610   /* VMA recorded in the program header.  */
6611   Elf32_Addr p_vaddr;
6612   /* Size of this segment in memory.  */
6613   Elf32_Word p_memsz;
6614 };
6615
6616 # if defined PT_GETDSBT
6617 struct target_loadmap
6618 {
6619   /* Protocol version number, must be zero.  */
6620   Elf32_Word version;
6621   /* Pointer to the DSBT table, its size, and the DSBT index.  */
6622   unsigned *dsbt_table;
6623   unsigned dsbt_size, dsbt_index;
6624   /* Number of segments in this map.  */
6625   Elf32_Word nsegs;
6626   /* The actual memory map.  */
6627   struct target_loadseg segs[/*nsegs*/];
6628 };
6629 #  define LINUX_LOADMAP         PT_GETDSBT
6630 #  define LINUX_LOADMAP_EXEC    PTRACE_GETDSBT_EXEC
6631 #  define LINUX_LOADMAP_INTERP  PTRACE_GETDSBT_INTERP
6632 # else
6633 struct target_loadmap
6634 {
6635   /* Protocol version number, must be zero.  */
6636   Elf32_Half version;
6637   /* Number of segments in this map.  */
6638   Elf32_Half nsegs;
6639   /* The actual memory map.  */
6640   struct target_loadseg segs[/*nsegs*/];
6641 };
6642 #  define LINUX_LOADMAP         PTRACE_GETFDPIC
6643 #  define LINUX_LOADMAP_EXEC    PTRACE_GETFDPIC_EXEC
6644 #  define LINUX_LOADMAP_INTERP  PTRACE_GETFDPIC_INTERP
6645 # endif
6646
6647 static int
6648 linux_read_loadmap (const char *annex, CORE_ADDR offset,
6649                     unsigned char *myaddr, unsigned int len)
6650 {
6651   int pid = lwpid_of (current_thread);
6652   int addr = -1;
6653   struct target_loadmap *data = NULL;
6654   unsigned int actual_length, copy_length;
6655
6656   if (strcmp (annex, "exec") == 0)
6657     addr = (int) LINUX_LOADMAP_EXEC;
6658   else if (strcmp (annex, "interp") == 0)
6659     addr = (int) LINUX_LOADMAP_INTERP;
6660   else
6661     return -1;
6662
6663   if (ptrace (LINUX_LOADMAP, pid, addr, &data) != 0)
6664     return -1;
6665
6666   if (data == NULL)
6667     return -1;
6668
6669   actual_length = sizeof (struct target_loadmap)
6670     + sizeof (struct target_loadseg) * data->nsegs;
6671
6672   if (offset < 0 || offset > actual_length)
6673     return -1;
6674
6675   copy_length = actual_length - offset < len ? actual_length - offset : len;
6676   memcpy (myaddr, (char *) data + offset, copy_length);
6677   return copy_length;
6678 }
6679 #else
6680 # define linux_read_loadmap NULL
6681 #endif /* defined PT_GETDSBT || defined PTRACE_GETFDPIC */
6682
6683 static void
6684 linux_process_qsupported (char **features, int count)
6685 {
6686   if (the_low_target.process_qsupported != NULL)
6687     the_low_target.process_qsupported (features, count);
6688 }
6689
6690 static int
6691 linux_supports_catch_syscall (void)
6692 {
6693   return (the_low_target.get_syscall_trapinfo != NULL
6694           && linux_supports_tracesysgood ());
6695 }
6696
6697 static int
6698 linux_get_ipa_tdesc_idx (void)
6699 {
6700   if (the_low_target.get_ipa_tdesc_idx == NULL)
6701     return 0;
6702
6703   return (*the_low_target.get_ipa_tdesc_idx) ();
6704 }
6705
6706 static int
6707 linux_supports_tracepoints (void)
6708 {
6709   if (*the_low_target.supports_tracepoints == NULL)
6710     return 0;
6711
6712   return (*the_low_target.supports_tracepoints) ();
6713 }
6714
6715 static CORE_ADDR
6716 linux_read_pc (struct regcache *regcache)
6717 {
6718   if (the_low_target.get_pc == NULL)
6719     return 0;
6720
6721   return (*the_low_target.get_pc) (regcache);
6722 }
6723
6724 static void
6725 linux_write_pc (struct regcache *regcache, CORE_ADDR pc)
6726 {
6727   gdb_assert (the_low_target.set_pc != NULL);
6728
6729   (*the_low_target.set_pc) (regcache, pc);
6730 }
6731
6732 static int
6733 linux_thread_stopped (struct thread_info *thread)
6734 {
6735   return get_thread_lwp (thread)->stopped;
6736 }
6737
6738 /* This exposes stop-all-threads functionality to other modules.  */
6739
6740 static void
6741 linux_pause_all (int freeze)
6742 {
6743   stop_all_lwps (freeze, NULL);
6744 }
6745
6746 /* This exposes unstop-all-threads functionality to other gdbserver
6747    modules.  */
6748
6749 static void
6750 linux_unpause_all (int unfreeze)
6751 {
6752   unstop_all_lwps (unfreeze, NULL);
6753 }
6754
6755 static int
6756 linux_prepare_to_access_memory (void)
6757 {
6758   /* Neither ptrace nor /proc/PID/mem allow accessing memory through a
6759      running LWP.  */
6760   if (non_stop)
6761     linux_pause_all (1);
6762   return 0;
6763 }
6764
6765 static void
6766 linux_done_accessing_memory (void)
6767 {
6768   /* Neither ptrace nor /proc/PID/mem allow accessing memory through a
6769      running LWP.  */
6770   if (non_stop)
6771     linux_unpause_all (1);
6772 }
6773
6774 static int
6775 linux_install_fast_tracepoint_jump_pad (CORE_ADDR tpoint, CORE_ADDR tpaddr,
6776                                         CORE_ADDR collector,
6777                                         CORE_ADDR lockaddr,
6778                                         ULONGEST orig_size,
6779                                         CORE_ADDR *jump_entry,
6780                                         CORE_ADDR *trampoline,
6781                                         ULONGEST *trampoline_size,
6782                                         unsigned char *jjump_pad_insn,
6783                                         ULONGEST *jjump_pad_insn_size,
6784                                         CORE_ADDR *adjusted_insn_addr,
6785                                         CORE_ADDR *adjusted_insn_addr_end,
6786                                         char *err)
6787 {
6788   return (*the_low_target.install_fast_tracepoint_jump_pad)
6789     (tpoint, tpaddr, collector, lockaddr, orig_size,
6790      jump_entry, trampoline, trampoline_size,
6791      jjump_pad_insn, jjump_pad_insn_size,
6792      adjusted_insn_addr, adjusted_insn_addr_end,
6793      err);
6794 }
6795
6796 static struct emit_ops *
6797 linux_emit_ops (void)
6798 {
6799   if (the_low_target.emit_ops != NULL)
6800     return (*the_low_target.emit_ops) ();
6801   else
6802     return NULL;
6803 }
6804
6805 static int
6806 linux_get_min_fast_tracepoint_insn_len (void)
6807 {
6808   return (*the_low_target.get_min_fast_tracepoint_insn_len) ();
6809 }
6810
6811 /* Extract &phdr and num_phdr in the inferior.  Return 0 on success.  */
6812
6813 static int
6814 get_phdr_phnum_from_proc_auxv (const int pid, const int is_elf64,
6815                                CORE_ADDR *phdr_memaddr, int *num_phdr)
6816 {
6817   char filename[PATH_MAX];
6818   int fd;
6819   const int auxv_size = is_elf64
6820     ? sizeof (Elf64_auxv_t) : sizeof (Elf32_auxv_t);
6821   char buf[sizeof (Elf64_auxv_t)];  /* The larger of the two.  */
6822
6823   xsnprintf (filename, sizeof filename, "/proc/%d/auxv", pid);
6824
6825   fd = open (filename, O_RDONLY);
6826   if (fd < 0)
6827     return 1;
6828
6829   *phdr_memaddr = 0;
6830   *num_phdr = 0;
6831   while (read (fd, buf, auxv_size) == auxv_size
6832          && (*phdr_memaddr == 0 || *num_phdr == 0))
6833     {
6834       if (is_elf64)
6835         {
6836           Elf64_auxv_t *const aux = (Elf64_auxv_t *) buf;
6837
6838           switch (aux->a_type)
6839             {
6840             case AT_PHDR:
6841               *phdr_memaddr = aux->a_un.a_val;
6842               break;
6843             case AT_PHNUM:
6844               *num_phdr = aux->a_un.a_val;
6845               break;
6846             }
6847         }
6848       else
6849         {
6850           Elf32_auxv_t *const aux = (Elf32_auxv_t *) buf;
6851
6852           switch (aux->a_type)
6853             {
6854             case AT_PHDR:
6855               *phdr_memaddr = aux->a_un.a_val;
6856               break;
6857             case AT_PHNUM:
6858               *num_phdr = aux->a_un.a_val;
6859               break;
6860             }
6861         }
6862     }
6863
6864   close (fd);
6865
6866   if (*phdr_memaddr == 0 || *num_phdr == 0)
6867     {
6868       warning ("Unexpected missing AT_PHDR and/or AT_PHNUM: "
6869                "phdr_memaddr = %ld, phdr_num = %d",
6870                (long) *phdr_memaddr, *num_phdr);
6871       return 2;
6872     }
6873
6874   return 0;
6875 }
6876
6877 /* Return &_DYNAMIC (via PT_DYNAMIC) in the inferior, or 0 if not present.  */
6878
6879 static CORE_ADDR
6880 get_dynamic (const int pid, const int is_elf64)
6881 {
6882   CORE_ADDR phdr_memaddr, relocation;
6883   int num_phdr, i;
6884   unsigned char *phdr_buf;
6885   const int phdr_size = is_elf64 ? sizeof (Elf64_Phdr) : sizeof (Elf32_Phdr);
6886
6887   if (get_phdr_phnum_from_proc_auxv (pid, is_elf64, &phdr_memaddr, &num_phdr))
6888     return 0;
6889
6890   gdb_assert (num_phdr < 100);  /* Basic sanity check.  */
6891   phdr_buf = (unsigned char *) alloca (num_phdr * phdr_size);
6892
6893   if (linux_read_memory (phdr_memaddr, phdr_buf, num_phdr * phdr_size))
6894     return 0;
6895
6896   /* Compute relocation: it is expected to be 0 for "regular" executables,
6897      non-zero for PIE ones.  */
6898   relocation = -1;
6899   for (i = 0; relocation == -1 && i < num_phdr; i++)
6900     if (is_elf64)
6901       {
6902         Elf64_Phdr *const p = (Elf64_Phdr *) (phdr_buf + i * phdr_size);
6903
6904         if (p->p_type == PT_PHDR)
6905           relocation = phdr_memaddr - p->p_vaddr;
6906       }
6907     else
6908       {
6909         Elf32_Phdr *const p = (Elf32_Phdr *) (phdr_buf + i * phdr_size);
6910
6911         if (p->p_type == PT_PHDR)
6912           relocation = phdr_memaddr - p->p_vaddr;
6913       }
6914
6915   if (relocation == -1)
6916     {
6917       /* PT_PHDR is optional, but necessary for PIE in general.  Fortunately
6918          any real world executables, including PIE executables, have always
6919          PT_PHDR present.  PT_PHDR is not present in some shared libraries or
6920          in fpc (Free Pascal 2.4) binaries but neither of those have a need for
6921          or present DT_DEBUG anyway (fpc binaries are statically linked).
6922
6923          Therefore if there exists DT_DEBUG there is always also PT_PHDR.
6924
6925          GDB could find RELOCATION also from AT_ENTRY - e_entry.  */
6926
6927       return 0;
6928     }
6929
6930   for (i = 0; i < num_phdr; i++)
6931     {
6932       if (is_elf64)
6933         {
6934           Elf64_Phdr *const p = (Elf64_Phdr *) (phdr_buf + i * phdr_size);
6935
6936           if (p->p_type == PT_DYNAMIC)
6937             return p->p_vaddr + relocation;
6938         }
6939       else
6940         {
6941           Elf32_Phdr *const p = (Elf32_Phdr *) (phdr_buf + i * phdr_size);
6942
6943           if (p->p_type == PT_DYNAMIC)
6944             return p->p_vaddr + relocation;
6945         }
6946     }
6947
6948   return 0;
6949 }
6950
6951 /* Return &_r_debug in the inferior, or -1 if not present.  Return value
6952    can be 0 if the inferior does not yet have the library list initialized.
6953    We look for DT_MIPS_RLD_MAP first.  MIPS executables use this instead of
6954    DT_DEBUG, although they sometimes contain an unused DT_DEBUG entry too.  */
6955
6956 static CORE_ADDR
6957 get_r_debug (const int pid, const int is_elf64)
6958 {
6959   CORE_ADDR dynamic_memaddr;
6960   const int dyn_size = is_elf64 ? sizeof (Elf64_Dyn) : sizeof (Elf32_Dyn);
6961   unsigned char buf[sizeof (Elf64_Dyn)];  /* The larger of the two.  */
6962   CORE_ADDR map = -1;
6963
6964   dynamic_memaddr = get_dynamic (pid, is_elf64);
6965   if (dynamic_memaddr == 0)
6966     return map;
6967
6968   while (linux_read_memory (dynamic_memaddr, buf, dyn_size) == 0)
6969     {
6970       if (is_elf64)
6971         {
6972           Elf64_Dyn *const dyn = (Elf64_Dyn *) buf;
6973 #if defined DT_MIPS_RLD_MAP || defined DT_MIPS_RLD_MAP_REL
6974           union
6975             {
6976               Elf64_Xword map;
6977               unsigned char buf[sizeof (Elf64_Xword)];
6978             }
6979           rld_map;
6980 #endif
6981 #ifdef DT_MIPS_RLD_MAP
6982           if (dyn->d_tag == DT_MIPS_RLD_MAP)
6983             {
6984               if (linux_read_memory (dyn->d_un.d_val,
6985                                      rld_map.buf, sizeof (rld_map.buf)) == 0)
6986                 return rld_map.map;
6987               else
6988                 break;
6989             }
6990 #endif  /* DT_MIPS_RLD_MAP */
6991 #ifdef DT_MIPS_RLD_MAP_REL
6992           if (dyn->d_tag == DT_MIPS_RLD_MAP_REL)
6993             {
6994               if (linux_read_memory (dyn->d_un.d_val + dynamic_memaddr,
6995                                      rld_map.buf, sizeof (rld_map.buf)) == 0)
6996                 return rld_map.map;
6997               else
6998                 break;
6999             }
7000 #endif  /* DT_MIPS_RLD_MAP_REL */
7001
7002           if (dyn->d_tag == DT_DEBUG && map == -1)
7003             map = dyn->d_un.d_val;
7004
7005           if (dyn->d_tag == DT_NULL)
7006             break;
7007         }
7008       else
7009         {
7010           Elf32_Dyn *const dyn = (Elf32_Dyn *) buf;
7011 #if defined DT_MIPS_RLD_MAP || defined DT_MIPS_RLD_MAP_REL
7012           union
7013             {
7014               Elf32_Word map;
7015               unsigned char buf[sizeof (Elf32_Word)];
7016             }
7017           rld_map;
7018 #endif
7019 #ifdef DT_MIPS_RLD_MAP
7020           if (dyn->d_tag == DT_MIPS_RLD_MAP)
7021             {
7022               if (linux_read_memory (dyn->d_un.d_val,
7023                                      rld_map.buf, sizeof (rld_map.buf)) == 0)
7024                 return rld_map.map;
7025               else
7026                 break;
7027             }
7028 #endif  /* DT_MIPS_RLD_MAP */
7029 #ifdef DT_MIPS_RLD_MAP_REL
7030           if (dyn->d_tag == DT_MIPS_RLD_MAP_REL)
7031             {
7032               if (linux_read_memory (dyn->d_un.d_val + dynamic_memaddr,
7033                                      rld_map.buf, sizeof (rld_map.buf)) == 0)
7034                 return rld_map.map;
7035               else
7036                 break;
7037             }
7038 #endif  /* DT_MIPS_RLD_MAP_REL */
7039
7040           if (dyn->d_tag == DT_DEBUG && map == -1)
7041             map = dyn->d_un.d_val;
7042
7043           if (dyn->d_tag == DT_NULL)
7044             break;
7045         }
7046
7047       dynamic_memaddr += dyn_size;
7048     }
7049
7050   return map;
7051 }
7052
7053 /* Read one pointer from MEMADDR in the inferior.  */
7054
7055 static int
7056 read_one_ptr (CORE_ADDR memaddr, CORE_ADDR *ptr, int ptr_size)
7057 {
7058   int ret;
7059
7060   /* Go through a union so this works on either big or little endian
7061      hosts, when the inferior's pointer size is smaller than the size
7062      of CORE_ADDR.  It is assumed the inferior's endianness is the
7063      same of the superior's.  */
7064   union
7065   {
7066     CORE_ADDR core_addr;
7067     unsigned int ui;
7068     unsigned char uc;
7069   } addr;
7070
7071   ret = linux_read_memory (memaddr, &addr.uc, ptr_size);
7072   if (ret == 0)
7073     {
7074       if (ptr_size == sizeof (CORE_ADDR))
7075         *ptr = addr.core_addr;
7076       else if (ptr_size == sizeof (unsigned int))
7077         *ptr = addr.ui;
7078       else
7079         gdb_assert_not_reached ("unhandled pointer size");
7080     }
7081   return ret;
7082 }
7083
7084 struct link_map_offsets
7085   {
7086     /* Offset and size of r_debug.r_version.  */
7087     int r_version_offset;
7088
7089     /* Offset and size of r_debug.r_map.  */
7090     int r_map_offset;
7091
7092     /* Offset to l_addr field in struct link_map.  */
7093     int l_addr_offset;
7094
7095     /* Offset to l_name field in struct link_map.  */
7096     int l_name_offset;
7097
7098     /* Offset to l_ld field in struct link_map.  */
7099     int l_ld_offset;
7100
7101     /* Offset to l_next field in struct link_map.  */
7102     int l_next_offset;
7103
7104     /* Offset to l_prev field in struct link_map.  */
7105     int l_prev_offset;
7106   };
7107
7108 /* Construct qXfer:libraries-svr4:read reply.  */
7109
7110 static int
7111 linux_qxfer_libraries_svr4 (const char *annex, unsigned char *readbuf,
7112                             unsigned const char *writebuf,
7113                             CORE_ADDR offset, int len)
7114 {
7115   char *document;
7116   unsigned document_len;
7117   struct process_info_private *const priv = current_process ()->priv;
7118   char filename[PATH_MAX];
7119   int pid, is_elf64;
7120
7121   static const struct link_map_offsets lmo_32bit_offsets =
7122     {
7123       0,     /* r_version offset. */
7124       4,     /* r_debug.r_map offset.  */
7125       0,     /* l_addr offset in link_map.  */
7126       4,     /* l_name offset in link_map.  */
7127       8,     /* l_ld offset in link_map.  */
7128       12,    /* l_next offset in link_map.  */
7129       16     /* l_prev offset in link_map.  */
7130     };
7131
7132   static const struct link_map_offsets lmo_64bit_offsets =
7133     {
7134       0,     /* r_version offset. */
7135       8,     /* r_debug.r_map offset.  */
7136       0,     /* l_addr offset in link_map.  */
7137       8,     /* l_name offset in link_map.  */
7138       16,    /* l_ld offset in link_map.  */
7139       24,    /* l_next offset in link_map.  */
7140       32     /* l_prev offset in link_map.  */
7141     };
7142   const struct link_map_offsets *lmo;
7143   unsigned int machine;
7144   int ptr_size;
7145   CORE_ADDR lm_addr = 0, lm_prev = 0;
7146   int allocated = 1024;
7147   char *p;
7148   CORE_ADDR l_name, l_addr, l_ld, l_next, l_prev;
7149   int header_done = 0;
7150
7151   if (writebuf != NULL)
7152     return -2;
7153   if (readbuf == NULL)
7154     return -1;
7155
7156   pid = lwpid_of (current_thread);
7157   xsnprintf (filename, sizeof filename, "/proc/%d/exe", pid);
7158   is_elf64 = elf_64_file_p (filename, &machine);
7159   lmo = is_elf64 ? &lmo_64bit_offsets : &lmo_32bit_offsets;
7160   ptr_size = is_elf64 ? 8 : 4;
7161
7162   while (annex[0] != '\0')
7163     {
7164       const char *sep;
7165       CORE_ADDR *addrp;
7166       int len;
7167
7168       sep = strchr (annex, '=');
7169       if (sep == NULL)
7170         break;
7171
7172       len = sep - annex;
7173       if (len == 5 && startswith (annex, "start"))
7174         addrp = &lm_addr;
7175       else if (len == 4 && startswith (annex, "prev"))
7176         addrp = &lm_prev;
7177       else
7178         {
7179           annex = strchr (sep, ';');
7180           if (annex == NULL)
7181             break;
7182           annex++;
7183           continue;
7184         }
7185
7186       annex = decode_address_to_semicolon (addrp, sep + 1);
7187     }
7188
7189   if (lm_addr == 0)
7190     {
7191       int r_version = 0;
7192
7193       if (priv->r_debug == 0)
7194         priv->r_debug = get_r_debug (pid, is_elf64);
7195
7196       /* We failed to find DT_DEBUG.  Such situation will not change
7197          for this inferior - do not retry it.  Report it to GDB as
7198          E01, see for the reasons at the GDB solib-svr4.c side.  */
7199       if (priv->r_debug == (CORE_ADDR) -1)
7200         return -1;
7201
7202       if (priv->r_debug != 0)
7203         {
7204           if (linux_read_memory (priv->r_debug + lmo->r_version_offset,
7205                                  (unsigned char *) &r_version,
7206                                  sizeof (r_version)) != 0
7207               || r_version != 1)
7208             {
7209               warning ("unexpected r_debug version %d", r_version);
7210             }
7211           else if (read_one_ptr (priv->r_debug + lmo->r_map_offset,
7212                                  &lm_addr, ptr_size) != 0)
7213             {
7214               warning ("unable to read r_map from 0x%lx",
7215                        (long) priv->r_debug + lmo->r_map_offset);
7216             }
7217         }
7218     }
7219
7220   document = (char *) xmalloc (allocated);
7221   strcpy (document, "<library-list-svr4 version=\"1.0\"");
7222   p = document + strlen (document);
7223
7224   while (lm_addr
7225          && read_one_ptr (lm_addr + lmo->l_name_offset,
7226                           &l_name, ptr_size) == 0
7227          && read_one_ptr (lm_addr + lmo->l_addr_offset,
7228                           &l_addr, ptr_size) == 0
7229          && read_one_ptr (lm_addr + lmo->l_ld_offset,
7230                           &l_ld, ptr_size) == 0
7231          && read_one_ptr (lm_addr + lmo->l_prev_offset,
7232                           &l_prev, ptr_size) == 0
7233          && read_one_ptr (lm_addr + lmo->l_next_offset,
7234                           &l_next, ptr_size) == 0)
7235     {
7236       unsigned char libname[PATH_MAX];
7237
7238       if (lm_prev != l_prev)
7239         {
7240           warning ("Corrupted shared library list: 0x%lx != 0x%lx",
7241                    (long) lm_prev, (long) l_prev);
7242           break;
7243         }
7244
7245       /* Ignore the first entry even if it has valid name as the first entry
7246          corresponds to the main executable.  The first entry should not be
7247          skipped if the dynamic loader was loaded late by a static executable
7248          (see solib-svr4.c parameter ignore_first).  But in such case the main
7249          executable does not have PT_DYNAMIC present and this function already
7250          exited above due to failed get_r_debug.  */
7251       if (lm_prev == 0)
7252         {
7253           sprintf (p, " main-lm=\"0x%lx\"", (unsigned long) lm_addr);
7254           p = p + strlen (p);
7255         }
7256       else
7257         {
7258           /* Not checking for error because reading may stop before
7259              we've got PATH_MAX worth of characters.  */
7260           libname[0] = '\0';
7261           linux_read_memory (l_name, libname, sizeof (libname) - 1);
7262           libname[sizeof (libname) - 1] = '\0';
7263           if (libname[0] != '\0')
7264             {
7265               /* 6x the size for xml_escape_text below.  */
7266               size_t len = 6 * strlen ((char *) libname);
7267               char *name;
7268
7269               if (!header_done)
7270                 {
7271                   /* Terminate `<library-list-svr4'.  */
7272                   *p++ = '>';
7273                   header_done = 1;
7274                 }
7275
7276               while (allocated < p - document + len + 200)
7277                 {
7278                   /* Expand to guarantee sufficient storage.  */
7279                   uintptr_t document_len = p - document;
7280
7281                   document = (char *) xrealloc (document, 2 * allocated);
7282                   allocated *= 2;
7283                   p = document + document_len;
7284                 }
7285
7286               name = xml_escape_text ((char *) libname);
7287               p += sprintf (p, "<library name=\"%s\" lm=\"0x%lx\" "
7288                             "l_addr=\"0x%lx\" l_ld=\"0x%lx\"/>",
7289                             name, (unsigned long) lm_addr,
7290                             (unsigned long) l_addr, (unsigned long) l_ld);
7291               free (name);
7292             }
7293         }
7294
7295       lm_prev = lm_addr;
7296       lm_addr = l_next;
7297     }
7298
7299   if (!header_done)
7300     {
7301       /* Empty list; terminate `<library-list-svr4'.  */
7302       strcpy (p, "/>");
7303     }
7304   else
7305     strcpy (p, "</library-list-svr4>");
7306
7307   document_len = strlen (document);
7308   if (offset < document_len)
7309     document_len -= offset;
7310   else
7311     document_len = 0;
7312   if (len > document_len)
7313     len = document_len;
7314
7315   memcpy (readbuf, document + offset, len);
7316   xfree (document);
7317
7318   return len;
7319 }
7320
7321 #ifdef HAVE_LINUX_BTRACE
7322
7323 /* See to_disable_btrace target method.  */
7324
7325 static int
7326 linux_low_disable_btrace (struct btrace_target_info *tinfo)
7327 {
7328   enum btrace_error err;
7329
7330   err = linux_disable_btrace (tinfo);
7331   return (err == BTRACE_ERR_NONE ? 0 : -1);
7332 }
7333
7334 /* Encode an Intel Processor Trace configuration.  */
7335
7336 static void
7337 linux_low_encode_pt_config (struct buffer *buffer,
7338                             const struct btrace_data_pt_config *config)
7339 {
7340   buffer_grow_str (buffer, "<pt-config>\n");
7341
7342   switch (config->cpu.vendor)
7343     {
7344     case CV_INTEL:
7345       buffer_xml_printf (buffer, "<cpu vendor=\"GenuineIntel\" family=\"%u\" "
7346                          "model=\"%u\" stepping=\"%u\"/>\n",
7347                          config->cpu.family, config->cpu.model,
7348                          config->cpu.stepping);
7349       break;
7350
7351     default:
7352       break;
7353     }
7354
7355   buffer_grow_str (buffer, "</pt-config>\n");
7356 }
7357
7358 /* Encode a raw buffer.  */
7359
7360 static void
7361 linux_low_encode_raw (struct buffer *buffer, const gdb_byte *data,
7362                       unsigned int size)
7363 {
7364   if (size == 0)
7365     return;
7366
7367   /* We use hex encoding - see common/rsp-low.h.  */
7368   buffer_grow_str (buffer, "<raw>\n");
7369
7370   while (size-- > 0)
7371     {
7372       char elem[2];
7373
7374       elem[0] = tohex ((*data >> 4) & 0xf);
7375       elem[1] = tohex (*data++ & 0xf);
7376
7377       buffer_grow (buffer, elem, 2);
7378     }
7379
7380   buffer_grow_str (buffer, "</raw>\n");
7381 }
7382
7383 /* See to_read_btrace target method.  */
7384
7385 static int
7386 linux_low_read_btrace (struct btrace_target_info *tinfo, struct buffer *buffer,
7387                        enum btrace_read_type type)
7388 {
7389   struct btrace_data btrace;
7390   struct btrace_block *block;
7391   enum btrace_error err;
7392   int i;
7393
7394   btrace_data_init (&btrace);
7395
7396   err = linux_read_btrace (&btrace, tinfo, type);
7397   if (err != BTRACE_ERR_NONE)
7398     {
7399       if (err == BTRACE_ERR_OVERFLOW)
7400         buffer_grow_str0 (buffer, "E.Overflow.");
7401       else
7402         buffer_grow_str0 (buffer, "E.Generic Error.");
7403
7404       goto err;
7405     }
7406
7407   switch (btrace.format)
7408     {
7409     case BTRACE_FORMAT_NONE:
7410       buffer_grow_str0 (buffer, "E.No Trace.");
7411       goto err;
7412
7413     case BTRACE_FORMAT_BTS:
7414       buffer_grow_str (buffer, "<!DOCTYPE btrace SYSTEM \"btrace.dtd\">\n");
7415       buffer_grow_str (buffer, "<btrace version=\"1.0\">\n");
7416
7417       for (i = 0;
7418            VEC_iterate (btrace_block_s, btrace.variant.bts.blocks, i, block);
7419            i++)
7420         buffer_xml_printf (buffer, "<block begin=\"0x%s\" end=\"0x%s\"/>\n",
7421                            paddress (block->begin), paddress (block->end));
7422
7423       buffer_grow_str0 (buffer, "</btrace>\n");
7424       break;
7425
7426     case BTRACE_FORMAT_PT:
7427       buffer_grow_str (buffer, "<!DOCTYPE btrace SYSTEM \"btrace.dtd\">\n");
7428       buffer_grow_str (buffer, "<btrace version=\"1.0\">\n");
7429       buffer_grow_str (buffer, "<pt>\n");
7430
7431       linux_low_encode_pt_config (buffer, &btrace.variant.pt.config);
7432
7433       linux_low_encode_raw (buffer, btrace.variant.pt.data,
7434                             btrace.variant.pt.size);
7435
7436       buffer_grow_str (buffer, "</pt>\n");
7437       buffer_grow_str0 (buffer, "</btrace>\n");
7438       break;
7439
7440     default:
7441       buffer_grow_str0 (buffer, "E.Unsupported Trace Format.");
7442       goto err;
7443     }
7444
7445   btrace_data_fini (&btrace);
7446   return 0;
7447
7448 err:
7449   btrace_data_fini (&btrace);
7450   return -1;
7451 }
7452
7453 /* See to_btrace_conf target method.  */
7454
7455 static int
7456 linux_low_btrace_conf (const struct btrace_target_info *tinfo,
7457                        struct buffer *buffer)
7458 {
7459   const struct btrace_config *conf;
7460
7461   buffer_grow_str (buffer, "<!DOCTYPE btrace-conf SYSTEM \"btrace-conf.dtd\">\n");
7462   buffer_grow_str (buffer, "<btrace-conf version=\"1.0\">\n");
7463
7464   conf = linux_btrace_conf (tinfo);
7465   if (conf != NULL)
7466     {
7467       switch (conf->format)
7468         {
7469         case BTRACE_FORMAT_NONE:
7470           break;
7471
7472         case BTRACE_FORMAT_BTS:
7473           buffer_xml_printf (buffer, "<bts");
7474           buffer_xml_printf (buffer, " size=\"0x%x\"", conf->bts.size);
7475           buffer_xml_printf (buffer, " />\n");
7476           break;
7477
7478         case BTRACE_FORMAT_PT:
7479           buffer_xml_printf (buffer, "<pt");
7480           buffer_xml_printf (buffer, " size=\"0x%x\"", conf->pt.size);
7481           buffer_xml_printf (buffer, "/>\n");
7482           break;
7483         }
7484     }
7485
7486   buffer_grow_str0 (buffer, "</btrace-conf>\n");
7487   return 0;
7488 }
7489 #endif /* HAVE_LINUX_BTRACE */
7490
7491 /* See nat/linux-nat.h.  */
7492
7493 ptid_t
7494 current_lwp_ptid (void)
7495 {
7496   return ptid_of (current_thread);
7497 }
7498
7499 /* Implementation of the target_ops method "breakpoint_kind_from_pc".  */
7500
7501 static int
7502 linux_breakpoint_kind_from_pc (CORE_ADDR *pcptr)
7503 {
7504   if (the_low_target.breakpoint_kind_from_pc != NULL)
7505     return (*the_low_target.breakpoint_kind_from_pc) (pcptr);
7506   else
7507     return default_breakpoint_kind_from_pc (pcptr);
7508 }
7509
7510 /* Implementation of the target_ops method "sw_breakpoint_from_kind".  */
7511
7512 static const gdb_byte *
7513 linux_sw_breakpoint_from_kind (int kind, int *size)
7514 {
7515   gdb_assert (the_low_target.sw_breakpoint_from_kind != NULL);
7516
7517   return (*the_low_target.sw_breakpoint_from_kind) (kind, size);
7518 }
7519
7520 /* Implementation of the target_ops method
7521    "breakpoint_kind_from_current_state".  */
7522
7523 static int
7524 linux_breakpoint_kind_from_current_state (CORE_ADDR *pcptr)
7525 {
7526   if (the_low_target.breakpoint_kind_from_current_state != NULL)
7527     return (*the_low_target.breakpoint_kind_from_current_state) (pcptr);
7528   else
7529     return linux_breakpoint_kind_from_pc (pcptr);
7530 }
7531
7532 /* Default implementation of linux_target_ops method "set_pc" for
7533    32-bit pc register which is literally named "pc".  */
7534
7535 void
7536 linux_set_pc_32bit (struct regcache *regcache, CORE_ADDR pc)
7537 {
7538   uint32_t newpc = pc;
7539
7540   supply_register_by_name (regcache, "pc", &newpc);
7541 }
7542
7543 /* Default implementation of linux_target_ops method "get_pc" for
7544    32-bit pc register which is literally named "pc".  */
7545
7546 CORE_ADDR
7547 linux_get_pc_32bit (struct regcache *regcache)
7548 {
7549   uint32_t pc;
7550
7551   collect_register_by_name (regcache, "pc", &pc);
7552   if (debug_threads)
7553     debug_printf ("stop pc is 0x%" PRIx32 "\n", pc);
7554   return pc;
7555 }
7556
7557 /* Default implementation of linux_target_ops method "set_pc" for
7558    64-bit pc register which is literally named "pc".  */
7559
7560 void
7561 linux_set_pc_64bit (struct regcache *regcache, CORE_ADDR pc)
7562 {
7563   uint64_t newpc = pc;
7564
7565   supply_register_by_name (regcache, "pc", &newpc);
7566 }
7567
7568 /* Default implementation of linux_target_ops method "get_pc" for
7569    64-bit pc register which is literally named "pc".  */
7570
7571 CORE_ADDR
7572 linux_get_pc_64bit (struct regcache *regcache)
7573 {
7574   uint64_t pc;
7575
7576   collect_register_by_name (regcache, "pc", &pc);
7577   if (debug_threads)
7578     debug_printf ("stop pc is 0x%" PRIx64 "\n", pc);
7579   return pc;
7580 }
7581
7582
7583 static struct target_ops linux_target_ops = {
7584   linux_create_inferior,
7585   linux_post_create_inferior,
7586   linux_attach,
7587   linux_kill,
7588   linux_detach,
7589   linux_mourn,
7590   linux_join,
7591   linux_thread_alive,
7592   linux_resume,
7593   linux_wait,
7594   linux_fetch_registers,
7595   linux_store_registers,
7596   linux_prepare_to_access_memory,
7597   linux_done_accessing_memory,
7598   linux_read_memory,
7599   linux_write_memory,
7600   linux_look_up_symbols,
7601   linux_request_interrupt,
7602   linux_read_auxv,
7603   linux_supports_z_point_type,
7604   linux_insert_point,
7605   linux_remove_point,
7606   linux_stopped_by_sw_breakpoint,
7607   linux_supports_stopped_by_sw_breakpoint,
7608   linux_stopped_by_hw_breakpoint,
7609   linux_supports_stopped_by_hw_breakpoint,
7610   linux_supports_hardware_single_step,
7611   linux_stopped_by_watchpoint,
7612   linux_stopped_data_address,
7613 #if defined(__UCLIBC__) && defined(HAS_NOMMU)         \
7614     && defined(PT_TEXT_ADDR) && defined(PT_DATA_ADDR) \
7615     && defined(PT_TEXT_END_ADDR)
7616   linux_read_offsets,
7617 #else
7618   NULL,
7619 #endif
7620 #ifdef USE_THREAD_DB
7621   thread_db_get_tls_address,
7622 #else
7623   NULL,
7624 #endif
7625   linux_qxfer_spu,
7626   hostio_last_error_from_errno,
7627   linux_qxfer_osdata,
7628   linux_xfer_siginfo,
7629   linux_supports_non_stop,
7630   linux_async,
7631   linux_start_non_stop,
7632   linux_supports_multi_process,
7633   linux_supports_fork_events,
7634   linux_supports_vfork_events,
7635   linux_supports_exec_events,
7636   linux_handle_new_gdb_connection,
7637 #ifdef USE_THREAD_DB
7638   thread_db_handle_monitor_command,
7639 #else
7640   NULL,
7641 #endif
7642   linux_common_core_of_thread,
7643   linux_read_loadmap,
7644   linux_process_qsupported,
7645   linux_supports_tracepoints,
7646   linux_read_pc,
7647   linux_write_pc,
7648   linux_thread_stopped,
7649   NULL,
7650   linux_pause_all,
7651   linux_unpause_all,
7652   linux_stabilize_threads,
7653   linux_install_fast_tracepoint_jump_pad,
7654   linux_emit_ops,
7655   linux_supports_disable_randomization,
7656   linux_get_min_fast_tracepoint_insn_len,
7657   linux_qxfer_libraries_svr4,
7658   linux_supports_agent,
7659 #ifdef HAVE_LINUX_BTRACE
7660   linux_supports_btrace,
7661   linux_enable_btrace,
7662   linux_low_disable_btrace,
7663   linux_low_read_btrace,
7664   linux_low_btrace_conf,
7665 #else
7666   NULL,
7667   NULL,
7668   NULL,
7669   NULL,
7670   NULL,
7671 #endif
7672   linux_supports_range_stepping,
7673   linux_proc_pid_to_exec_file,
7674   linux_mntns_open_cloexec,
7675   linux_mntns_unlink,
7676   linux_mntns_readlink,
7677   linux_breakpoint_kind_from_pc,
7678   linux_sw_breakpoint_from_kind,
7679   linux_proc_tid_get_name,
7680   linux_breakpoint_kind_from_current_state,
7681   linux_supports_software_single_step,
7682   linux_supports_catch_syscall,
7683   linux_get_ipa_tdesc_idx,
7684 };
7685
7686 #ifdef HAVE_LINUX_REGSETS
7687 void
7688 initialize_regsets_info (struct regsets_info *info)
7689 {
7690   for (info->num_regsets = 0;
7691        info->regsets[info->num_regsets].size >= 0;
7692        info->num_regsets++)
7693     ;
7694 }
7695 #endif
7696
7697 void
7698 initialize_low (void)
7699 {
7700   struct sigaction sigchld_action;
7701
7702   memset (&sigchld_action, 0, sizeof (sigchld_action));
7703   set_target_ops (&linux_target_ops);
7704
7705   linux_ptrace_init_warnings ();
7706
7707   sigchld_action.sa_handler = sigchld_handler;
7708   sigemptyset (&sigchld_action.sa_mask);
7709   sigchld_action.sa_flags = SA_RESTART;
7710   sigaction (SIGCHLD, &sigchld_action, NULL);
7711
7712   initialize_low_arch ();
7713
7714   linux_check_ptrace_features ();
7715 }