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