Teach GDBserver's Linux backend about no unwaited-for children (TARGET_WAITKIND_NO_RE...
[external/binutils.git] / gdb / gdbserver / server.c
1 /* Main code for remote server for GDB.
2    Copyright (C) 1989-2014 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 "gdbthread.h"
21 #include "agent.h"
22 #include "notif.h"
23 #include "tdesc.h"
24 #include "rsp-low.h"
25
26 #include <ctype.h>
27 #include <unistd.h>
28 #if HAVE_SIGNAL_H
29 #include <signal.h>
30 #endif
31 #include "gdb_vecs.h"
32 #include "gdb_wait.h"
33 #include "btrace-common.h"
34 #include "filestuff.h"
35 #include "tracepoint.h"
36 #include "dll.h"
37 #include "hostio.h"
38
39 /* The thread set with an `Hc' packet.  `Hc' is deprecated in favor of
40    `vCont'.  Note the multi-process extensions made `vCont' a
41    requirement, so `Hc pPID.TID' is pretty much undefined.  So
42    CONT_THREAD can be null_ptid for no `Hc' thread, minus_one_ptid for
43    resuming all threads of the process (again, `Hc' isn't used for
44    multi-process), or a specific thread ptid_t.
45
46    We also set this when handling a single-thread `vCont' resume, as
47    some places in the backends check it to know when (and for which
48    thread) single-thread scheduler-locking is in effect.  */
49 ptid_t cont_thread;
50
51 /* The thread set with an `Hg' packet.  */
52 ptid_t general_thread;
53
54 int server_waiting;
55
56 static int extended_protocol;
57 static int response_needed;
58 static int exit_requested;
59
60 /* --once: Exit after the first connection has closed.  */
61 int run_once;
62
63 int multi_process;
64 int non_stop;
65
66 /* Whether we should attempt to disable the operating system's address
67    space randomization feature before starting an inferior.  */
68 int disable_randomization = 1;
69
70 static char **program_argv, **wrapper_argv;
71
72 /* Enable debugging of h/w breakpoint/watchpoint support.  */
73 int debug_hw_points;
74
75 int pass_signals[GDB_SIGNAL_LAST];
76 int program_signals[GDB_SIGNAL_LAST];
77 int program_signals_p;
78
79 jmp_buf toplevel;
80
81 /* The PID of the originally created or attached inferior.  Used to
82    send signals to the process when GDB sends us an asynchronous interrupt
83    (user hitting Control-C in the client), and to wait for the child to exit
84    when no longer debugging it.  */
85
86 unsigned long signal_pid;
87
88 #ifdef SIGTTOU
89 /* A file descriptor for the controlling terminal.  */
90 int terminal_fd;
91
92 /* TERMINAL_FD's original foreground group.  */
93 pid_t old_foreground_pgrp;
94
95 /* Hand back terminal ownership to the original foreground group.  */
96
97 static void
98 restore_old_foreground_pgrp (void)
99 {
100   tcsetpgrp (terminal_fd, old_foreground_pgrp);
101 }
102 #endif
103
104 /* Set if you want to disable optional thread related packets support
105    in gdbserver, for the sake of testing GDB against stubs that don't
106    support them.  */
107 int disable_packet_vCont;
108 int disable_packet_Tthread;
109 int disable_packet_qC;
110 int disable_packet_qfThreadInfo;
111
112 /* Last status reported to GDB.  */
113 static struct target_waitstatus last_status;
114 static ptid_t last_ptid;
115
116 static char *own_buf;
117 static unsigned char *mem_buf;
118
119 /* A sub-class of 'struct notif_event' for stop, holding information
120    relative to a single stop reply.  We keep a queue of these to
121    push to GDB in non-stop mode.  */
122
123 struct vstop_notif
124 {
125   struct notif_event base;
126
127   /* Thread or process that got the event.  */
128   ptid_t ptid;
129
130   /* Event info.  */
131   struct target_waitstatus status;
132 };
133
134 DEFINE_QUEUE_P (notif_event_p);
135
136 /* Put a stop reply to the stop reply queue.  */
137
138 static void
139 queue_stop_reply (ptid_t ptid, struct target_waitstatus *status)
140 {
141   struct vstop_notif *new_notif = xmalloc (sizeof (*new_notif));
142
143   new_notif->ptid = ptid;
144   new_notif->status = *status;
145
146   notif_event_enque (&notif_stop, (struct notif_event *) new_notif);
147 }
148
149 static int
150 remove_all_on_match_pid (QUEUE (notif_event_p) *q,
151                             QUEUE_ITER (notif_event_p) *iter,
152                             struct notif_event *event,
153                             void *data)
154 {
155   int *pid = data;
156
157   if (*pid == -1
158       || ptid_get_pid (((struct vstop_notif *) event)->ptid) == *pid)
159     {
160       if (q->free_func != NULL)
161         q->free_func (event);
162
163       QUEUE_remove_elem (notif_event_p, q, iter);
164     }
165
166   return 1;
167 }
168
169 /* Get rid of the currently pending stop replies for PID.  If PID is
170    -1, then apply to all processes.  */
171
172 static void
173 discard_queued_stop_replies (int pid)
174 {
175   QUEUE_iterate (notif_event_p, notif_stop.queue,
176                  remove_all_on_match_pid, &pid);
177 }
178
179 static void
180 vstop_notif_reply (struct notif_event *event, char *own_buf)
181 {
182   struct vstop_notif *vstop = (struct vstop_notif *) event;
183
184   prepare_resume_reply (own_buf, vstop->ptid, &vstop->status);
185 }
186
187 struct notif_server notif_stop =
188 {
189   "vStopped", "Stop", NULL, vstop_notif_reply,
190 };
191
192 static int
193 target_running (void)
194 {
195   return get_first_thread () != NULL;
196 }
197
198 static int
199 start_inferior (char **argv)
200 {
201   char **new_argv = argv;
202
203   if (wrapper_argv != NULL)
204     {
205       int i, count = 1;
206
207       for (i = 0; wrapper_argv[i] != NULL; i++)
208         count++;
209       for (i = 0; argv[i] != NULL; i++)
210         count++;
211       new_argv = alloca (sizeof (char *) * count);
212       count = 0;
213       for (i = 0; wrapper_argv[i] != NULL; i++)
214         new_argv[count++] = wrapper_argv[i];
215       for (i = 0; argv[i] != NULL; i++)
216         new_argv[count++] = argv[i];
217       new_argv[count] = NULL;
218     }
219
220   if (debug_threads)
221     {
222       int i;
223       for (i = 0; new_argv[i]; ++i)
224         debug_printf ("new_argv[%d] = \"%s\"\n", i, new_argv[i]);
225       debug_flush ();
226     }
227
228 #ifdef SIGTTOU
229   signal (SIGTTOU, SIG_DFL);
230   signal (SIGTTIN, SIG_DFL);
231 #endif
232
233   /* Clear this so the backend doesn't get confused, thinking
234      CONT_THREAD died, and it needs to resume all threads.  */
235   cont_thread = null_ptid;
236
237   signal_pid = create_inferior (new_argv[0], new_argv);
238
239   /* FIXME: we don't actually know at this point that the create
240      actually succeeded.  We won't know that until we wait.  */
241   fprintf (stderr, "Process %s created; pid = %ld\n", argv[0],
242            signal_pid);
243   fflush (stderr);
244
245 #ifdef SIGTTOU
246   signal (SIGTTOU, SIG_IGN);
247   signal (SIGTTIN, SIG_IGN);
248   terminal_fd = fileno (stderr);
249   old_foreground_pgrp = tcgetpgrp (terminal_fd);
250   tcsetpgrp (terminal_fd, signal_pid);
251   atexit (restore_old_foreground_pgrp);
252 #endif
253
254   if (wrapper_argv != NULL)
255     {
256       struct thread_resume resume_info;
257
258       memset (&resume_info, 0, sizeof (resume_info));
259       resume_info.thread = pid_to_ptid (signal_pid);
260       resume_info.kind = resume_continue;
261       resume_info.sig = 0;
262
263       last_ptid = mywait (pid_to_ptid (signal_pid), &last_status, 0, 0);
264
265       if (last_status.kind != TARGET_WAITKIND_STOPPED)
266         return signal_pid;
267
268       do
269         {
270           (*the_target->resume) (&resume_info, 1);
271
272           last_ptid = mywait (pid_to_ptid (signal_pid), &last_status, 0, 0);
273           if (last_status.kind != TARGET_WAITKIND_STOPPED)
274             return signal_pid;
275
276           current_inferior->last_resume_kind = resume_stop;
277           current_inferior->last_status = last_status;
278         }
279       while (last_status.value.sig != GDB_SIGNAL_TRAP);
280
281       return signal_pid;
282     }
283
284   /* Wait till we are at 1st instruction in program, return new pid
285      (assuming success).  */
286   last_ptid = mywait (pid_to_ptid (signal_pid), &last_status, 0, 0);
287
288   if (last_status.kind != TARGET_WAITKIND_EXITED
289       && last_status.kind != TARGET_WAITKIND_SIGNALLED)
290     {
291       current_inferior->last_resume_kind = resume_stop;
292       current_inferior->last_status = last_status;
293     }
294
295   return signal_pid;
296 }
297
298 static int
299 attach_inferior (int pid)
300 {
301   /* myattach should return -1 if attaching is unsupported,
302      0 if it succeeded, and call error() otherwise.  */
303
304   if (myattach (pid) != 0)
305     return -1;
306
307   fprintf (stderr, "Attached; pid = %d\n", pid);
308   fflush (stderr);
309
310   /* FIXME - It may be that we should get the SIGNAL_PID from the
311      attach function, so that it can be the main thread instead of
312      whichever we were told to attach to.  */
313   signal_pid = pid;
314
315   /* Clear this so the backend doesn't get confused, thinking
316      CONT_THREAD died, and it needs to resume all threads.  */
317   cont_thread = null_ptid;
318
319   if (!non_stop)
320     {
321       last_ptid = mywait (pid_to_ptid (pid), &last_status, 0, 0);
322
323       /* GDB knows to ignore the first SIGSTOP after attaching to a running
324          process using the "attach" command, but this is different; it's
325          just using "target remote".  Pretend it's just starting up.  */
326       if (last_status.kind == TARGET_WAITKIND_STOPPED
327           && last_status.value.sig == GDB_SIGNAL_STOP)
328         last_status.value.sig = GDB_SIGNAL_TRAP;
329
330       current_inferior->last_resume_kind = resume_stop;
331       current_inferior->last_status = last_status;
332     }
333
334   return 0;
335 }
336
337 extern int remote_debug;
338
339 /* Decode a qXfer read request.  Return 0 if everything looks OK,
340    or -1 otherwise.  */
341
342 static int
343 decode_xfer_read (char *buf, CORE_ADDR *ofs, unsigned int *len)
344 {
345   /* After the read marker and annex, qXfer looks like a
346      traditional 'm' packet.  */
347   decode_m_packet (buf, ofs, len);
348
349   return 0;
350 }
351
352 static int
353 decode_xfer (char *buf, char **object, char **rw, char **annex, char **offset)
354 {
355   /* Extract and NUL-terminate the object.  */
356   *object = buf;
357   while (*buf && *buf != ':')
358     buf++;
359   if (*buf == '\0')
360     return -1;
361   *buf++ = 0;
362
363   /* Extract and NUL-terminate the read/write action.  */
364   *rw = buf;
365   while (*buf && *buf != ':')
366     buf++;
367   if (*buf == '\0')
368     return -1;
369   *buf++ = 0;
370
371   /* Extract and NUL-terminate the annex.  */
372   *annex = buf;
373   while (*buf && *buf != ':')
374     buf++;
375   if (*buf == '\0')
376     return -1;
377   *buf++ = 0;
378
379   *offset = buf;
380   return 0;
381 }
382
383 /* Write the response to a successful qXfer read.  Returns the
384    length of the (binary) data stored in BUF, corresponding
385    to as much of DATA/LEN as we could fit.  IS_MORE controls
386    the first character of the response.  */
387 static int
388 write_qxfer_response (char *buf, const void *data, int len, int is_more)
389 {
390   int out_len;
391
392   if (is_more)
393     buf[0] = 'm';
394   else
395     buf[0] = 'l';
396
397   return remote_escape_output (data, len, (unsigned char *) buf + 1, &out_len,
398                                PBUFSIZ - 2) + 1;
399 }
400
401 /* Handle btrace enabling.  */
402
403 static const char *
404 handle_btrace_enable (struct thread_info *thread)
405 {
406   if (thread->btrace != NULL)
407     return "E.Btrace already enabled.";
408
409   thread->btrace = target_enable_btrace (thread->entry.id);
410   if (thread->btrace == NULL)
411     return "E.Could not enable btrace.";
412
413   return NULL;
414 }
415
416 /* Handle btrace disabling.  */
417
418 static const char *
419 handle_btrace_disable (struct thread_info *thread)
420 {
421
422   if (thread->btrace == NULL)
423     return "E.Branch tracing not enabled.";
424
425   if (target_disable_btrace (thread->btrace) != 0)
426     return "E.Could not disable branch tracing.";
427
428   thread->btrace = NULL;
429   return NULL;
430 }
431
432 /* Handle the "Qbtrace" packet.  */
433
434 static int
435 handle_btrace_general_set (char *own_buf)
436 {
437   struct thread_info *thread;
438   const char *err;
439   char *op;
440
441   if (strncmp ("Qbtrace:", own_buf, strlen ("Qbtrace:")) != 0)
442     return 0;
443
444   op = own_buf + strlen ("Qbtrace:");
445
446   if (!target_supports_btrace ())
447     {
448       strcpy (own_buf, "E.Target does not support branch tracing.");
449       return -1;
450     }
451
452   if (ptid_equal (general_thread, null_ptid)
453       || ptid_equal (general_thread, minus_one_ptid))
454     {
455       strcpy (own_buf, "E.Must select a single thread.");
456       return -1;
457     }
458
459   thread = find_thread_ptid (general_thread);
460   if (thread == NULL)
461     {
462       strcpy (own_buf, "E.No such thread.");
463       return -1;
464     }
465
466   err = NULL;
467
468   if (strcmp (op, "bts") == 0)
469     err = handle_btrace_enable (thread);
470   else if (strcmp (op, "off") == 0)
471     err = handle_btrace_disable (thread);
472   else
473     err = "E.Bad Qbtrace operation. Use bts or off.";
474
475   if (err != 0)
476     strcpy (own_buf, err);
477   else
478     write_ok (own_buf);
479
480   return 1;
481 }
482
483 /* Handle all of the extended 'Q' packets.  */
484
485 static void
486 handle_general_set (char *own_buf)
487 {
488   if (strncmp ("QPassSignals:", own_buf, strlen ("QPassSignals:")) == 0)
489     {
490       int numsigs = (int) GDB_SIGNAL_LAST, i;
491       const char *p = own_buf + strlen ("QPassSignals:");
492       CORE_ADDR cursig;
493
494       p = decode_address_to_semicolon (&cursig, p);
495       for (i = 0; i < numsigs; i++)
496         {
497           if (i == cursig)
498             {
499               pass_signals[i] = 1;
500               if (*p == '\0')
501                 /* Keep looping, to clear the remaining signals.  */
502                 cursig = -1;
503               else
504                 p = decode_address_to_semicolon (&cursig, p);
505             }
506           else
507             pass_signals[i] = 0;
508         }
509       strcpy (own_buf, "OK");
510       return;
511     }
512
513   if (strncmp ("QProgramSignals:", own_buf, strlen ("QProgramSignals:")) == 0)
514     {
515       int numsigs = (int) GDB_SIGNAL_LAST, i;
516       const char *p = own_buf + strlen ("QProgramSignals:");
517       CORE_ADDR cursig;
518
519       program_signals_p = 1;
520
521       p = decode_address_to_semicolon (&cursig, p);
522       for (i = 0; i < numsigs; i++)
523         {
524           if (i == cursig)
525             {
526               program_signals[i] = 1;
527               if (*p == '\0')
528                 /* Keep looping, to clear the remaining signals.  */
529                 cursig = -1;
530               else
531                 p = decode_address_to_semicolon (&cursig, p);
532             }
533           else
534             program_signals[i] = 0;
535         }
536       strcpy (own_buf, "OK");
537       return;
538     }
539
540   if (strcmp (own_buf, "QStartNoAckMode") == 0)
541     {
542       if (remote_debug)
543         {
544           fprintf (stderr, "[noack mode enabled]\n");
545           fflush (stderr);
546         }
547
548       noack_mode = 1;
549       write_ok (own_buf);
550       return;
551     }
552
553   if (strncmp (own_buf, "QNonStop:", 9) == 0)
554     {
555       char *mode = own_buf + 9;
556       int req = -1;
557       char *req_str;
558
559       if (strcmp (mode, "0") == 0)
560         req = 0;
561       else if (strcmp (mode, "1") == 0)
562         req = 1;
563       else
564         {
565           /* We don't know what this mode is, so complain to
566              GDB.  */
567           fprintf (stderr, "Unknown non-stop mode requested: %s\n",
568                    own_buf);
569           write_enn (own_buf);
570           return;
571         }
572
573       req_str = req ? "non-stop" : "all-stop";
574       if (start_non_stop (req) != 0)
575         {
576           fprintf (stderr, "Setting %s mode failed\n", req_str);
577           write_enn (own_buf);
578           return;
579         }
580
581       non_stop = req;
582
583       if (remote_debug)
584         fprintf (stderr, "[%s mode enabled]\n", req_str);
585
586       write_ok (own_buf);
587       return;
588     }
589
590   if (strncmp ("QDisableRandomization:", own_buf,
591                strlen ("QDisableRandomization:")) == 0)
592     {
593       char *packet = own_buf + strlen ("QDisableRandomization:");
594       ULONGEST setting;
595
596       unpack_varlen_hex (packet, &setting);
597       disable_randomization = setting;
598
599       if (remote_debug)
600         {
601           if (disable_randomization)
602             fprintf (stderr, "[address space randomization disabled]\n");
603           else
604             fprintf (stderr, "[address space randomization enabled]\n");
605         }
606
607       write_ok (own_buf);
608       return;
609     }
610
611   if (target_supports_tracepoints ()
612       && handle_tracepoint_general_set (own_buf))
613     return;
614
615   if (strncmp ("QAgent:", own_buf, strlen ("QAgent:")) == 0)
616     {
617       char *mode = own_buf + strlen ("QAgent:");
618       int req = 0;
619
620       if (strcmp (mode, "0") == 0)
621         req = 0;
622       else if (strcmp (mode, "1") == 0)
623         req = 1;
624       else
625         {
626           /* We don't know what this value is, so complain to GDB.  */
627           sprintf (own_buf, "E.Unknown QAgent value");
628           return;
629         }
630
631       /* Update the flag.  */
632       use_agent = req;
633       if (remote_debug)
634         fprintf (stderr, "[%s agent]\n", req ? "Enable" : "Disable");
635       write_ok (own_buf);
636       return;
637     }
638
639   if (handle_btrace_general_set (own_buf))
640     return;
641
642   /* Otherwise we didn't know what packet it was.  Say we didn't
643      understand it.  */
644   own_buf[0] = 0;
645 }
646
647 static const char *
648 get_features_xml (const char *annex)
649 {
650   const struct target_desc *desc = current_target_desc ();
651
652   /* `desc->xmltarget' defines what to return when looking for the
653      "target.xml" file.  Its contents can either be verbatim XML code
654      (prefixed with a '@') or else the name of the actual XML file to
655      be used in place of "target.xml".
656
657      This variable is set up from the auto-generated
658      init_registers_... routine for the current target.  */
659
660   if (desc->xmltarget != NULL && strcmp (annex, "target.xml") == 0)
661     {
662       if (*desc->xmltarget == '@')
663         return desc->xmltarget + 1;
664       else
665         annex = desc->xmltarget;
666     }
667
668 #ifdef USE_XML
669   {
670     extern const char *const xml_builtin[][2];
671     int i;
672
673     /* Look for the annex.  */
674     for (i = 0; xml_builtin[i][0] != NULL; i++)
675       if (strcmp (annex, xml_builtin[i][0]) == 0)
676         break;
677
678     if (xml_builtin[i][0] != NULL)
679       return xml_builtin[i][1];
680   }
681 #endif
682
683   return NULL;
684 }
685
686 void
687 monitor_show_help (void)
688 {
689   monitor_output ("The following monitor commands are supported:\n");
690   monitor_output ("  set debug <0|1>\n");
691   monitor_output ("    Enable general debugging messages\n");
692   monitor_output ("  set debug-hw-points <0|1>\n");
693   monitor_output ("    Enable h/w breakpoint/watchpoint debugging messages\n");
694   monitor_output ("  set remote-debug <0|1>\n");
695   monitor_output ("    Enable remote protocol debugging messages\n");
696   monitor_output ("  set debug-format option1[,option2,...]\n");
697   monitor_output ("    Add additional information to debugging messages\n");
698   monitor_output ("    Options: all, none");
699 #ifdef HAVE_GETTIMEOFDAY
700   monitor_output (", timestamp");
701 #endif
702   monitor_output ("\n");
703   monitor_output ("  exit\n");
704   monitor_output ("    Quit GDBserver\n");
705 }
706
707 /* Read trace frame or inferior memory.  Returns the number of bytes
708    actually read, zero when no further transfer is possible, and -1 on
709    error.  Return of a positive value smaller than LEN does not
710    indicate there's no more to be read, only the end of the transfer.
711    E.g., when GDB reads memory from a traceframe, a first request may
712    be served from a memory block that does not cover the whole request
713    length.  A following request gets the rest served from either
714    another block (of the same traceframe) or from the read-only
715    regions.  */
716
717 static int
718 gdb_read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
719 {
720   int res;
721
722   if (current_traceframe >= 0)
723     {
724       ULONGEST nbytes;
725       ULONGEST length = len;
726
727       if (traceframe_read_mem (current_traceframe,
728                                memaddr, myaddr, len, &nbytes))
729         return -1;
730       /* Data read from trace buffer, we're done.  */
731       if (nbytes > 0)
732         return nbytes;
733       if (!in_readonly_region (memaddr, length))
734         return -1;
735       /* Otherwise we have a valid readonly case, fall through.  */
736       /* (assume no half-trace half-real blocks for now) */
737     }
738
739   res = prepare_to_access_memory ();
740   if (res == 0)
741     {
742       res = read_inferior_memory (memaddr, myaddr, len);
743       done_accessing_memory ();
744
745       return res == 0 ? len : -1;
746     }
747   else
748     return -1;
749 }
750
751 /* Write trace frame or inferior memory.  Actually, writing to trace
752    frames is forbidden.  */
753
754 static int
755 gdb_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int len)
756 {
757   if (current_traceframe >= 0)
758     return EIO;
759   else
760     {
761       int ret;
762
763       ret = prepare_to_access_memory ();
764       if (ret == 0)
765         {
766           ret = write_inferior_memory (memaddr, myaddr, len);
767           done_accessing_memory ();
768         }
769       return ret;
770     }
771 }
772
773 /* Subroutine of handle_search_memory to simplify it.  */
774
775 static int
776 handle_search_memory_1 (CORE_ADDR start_addr, CORE_ADDR search_space_len,
777                         gdb_byte *pattern, unsigned pattern_len,
778                         gdb_byte *search_buf,
779                         unsigned chunk_size, unsigned search_buf_size,
780                         CORE_ADDR *found_addrp)
781 {
782   /* Prime the search buffer.  */
783
784   if (gdb_read_memory (start_addr, search_buf, search_buf_size)
785       != search_buf_size)
786     {
787       warning ("Unable to access %ld bytes of target "
788                "memory at 0x%lx, halting search.",
789                (long) search_buf_size, (long) start_addr);
790       return -1;
791     }
792
793   /* Perform the search.
794
795      The loop is kept simple by allocating [N + pattern-length - 1] bytes.
796      When we've scanned N bytes we copy the trailing bytes to the start and
797      read in another N bytes.  */
798
799   while (search_space_len >= pattern_len)
800     {
801       gdb_byte *found_ptr;
802       unsigned nr_search_bytes = (search_space_len < search_buf_size
803                                   ? search_space_len
804                                   : search_buf_size);
805
806       found_ptr = memmem (search_buf, nr_search_bytes, pattern, pattern_len);
807
808       if (found_ptr != NULL)
809         {
810           CORE_ADDR found_addr = start_addr + (found_ptr - search_buf);
811           *found_addrp = found_addr;
812           return 1;
813         }
814
815       /* Not found in this chunk, skip to next chunk.  */
816
817       /* Don't let search_space_len wrap here, it's unsigned.  */
818       if (search_space_len >= chunk_size)
819         search_space_len -= chunk_size;
820       else
821         search_space_len = 0;
822
823       if (search_space_len >= pattern_len)
824         {
825           unsigned keep_len = search_buf_size - chunk_size;
826           CORE_ADDR read_addr = start_addr + chunk_size + keep_len;
827           int nr_to_read;
828
829           /* Copy the trailing part of the previous iteration to the front
830              of the buffer for the next iteration.  */
831           memcpy (search_buf, search_buf + chunk_size, keep_len);
832
833           nr_to_read = (search_space_len - keep_len < chunk_size
834                         ? search_space_len - keep_len
835                         : chunk_size);
836
837           if (gdb_read_memory (read_addr, search_buf + keep_len,
838                                nr_to_read) != search_buf_size)
839             {
840               warning ("Unable to access %ld bytes of target memory "
841                        "at 0x%lx, halting search.",
842                        (long) nr_to_read, (long) read_addr);
843               return -1;
844             }
845
846           start_addr += chunk_size;
847         }
848     }
849
850   /* Not found.  */
851
852   return 0;
853 }
854
855 /* Handle qSearch:memory packets.  */
856
857 static void
858 handle_search_memory (char *own_buf, int packet_len)
859 {
860   CORE_ADDR start_addr;
861   CORE_ADDR search_space_len;
862   gdb_byte *pattern;
863   unsigned int pattern_len;
864   /* NOTE: also defined in find.c testcase.  */
865 #define SEARCH_CHUNK_SIZE 16000
866   const unsigned chunk_size = SEARCH_CHUNK_SIZE;
867   /* Buffer to hold memory contents for searching.  */
868   gdb_byte *search_buf;
869   unsigned search_buf_size;
870   int found;
871   CORE_ADDR found_addr;
872   int cmd_name_len = sizeof ("qSearch:memory:") - 1;
873
874   pattern = malloc (packet_len);
875   if (pattern == NULL)
876     {
877       error ("Unable to allocate memory to perform the search");
878       strcpy (own_buf, "E00");
879       return;
880     }
881   if (decode_search_memory_packet (own_buf + cmd_name_len,
882                                    packet_len - cmd_name_len,
883                                    &start_addr, &search_space_len,
884                                    pattern, &pattern_len) < 0)
885     {
886       free (pattern);
887       error ("Error in parsing qSearch:memory packet");
888       strcpy (own_buf, "E00");
889       return;
890     }
891
892   search_buf_size = chunk_size + pattern_len - 1;
893
894   /* No point in trying to allocate a buffer larger than the search space.  */
895   if (search_space_len < search_buf_size)
896     search_buf_size = search_space_len;
897
898   search_buf = malloc (search_buf_size);
899   if (search_buf == NULL)
900     {
901       free (pattern);
902       error ("Unable to allocate memory to perform the search");
903       strcpy (own_buf, "E00");
904       return;
905     }
906
907   found = handle_search_memory_1 (start_addr, search_space_len,
908                                   pattern, pattern_len,
909                                   search_buf, chunk_size, search_buf_size,
910                                   &found_addr);
911
912   if (found > 0)
913     sprintf (own_buf, "1,%lx", (long) found_addr);
914   else if (found == 0)
915     strcpy (own_buf, "0");
916   else
917     strcpy (own_buf, "E00");
918
919   free (search_buf);
920   free (pattern);
921 }
922
923 #define require_running(BUF)                    \
924   if (!target_running ())                       \
925     {                                           \
926       write_enn (BUF);                          \
927       return;                                   \
928     }
929
930 /* Parse options to --debug-format= and "monitor set debug-format".
931    ARG is the text after "--debug-format=" or "monitor set debug-format".
932    IS_MONITOR is non-zero if we're invoked via "monitor set debug-format".
933    This triggers calls to monitor_output.
934    The result is NULL if all options were parsed ok, otherwise an error
935    message which the caller must free.
936
937    N.B. These commands affect all debug format settings, they are not
938    cumulative.  If a format is not specified, it is turned off.
939    However, we don't go to extra trouble with things like
940    "monitor set debug-format all,none,timestamp".
941    Instead we just parse them one at a time, in order.
942
943    The syntax for "monitor set debug" we support here is not identical
944    to gdb's "set debug foo on|off" because we also use this function to
945    parse "--debug-format=foo,bar".  */
946
947 static char *
948 parse_debug_format_options (const char *arg, int is_monitor)
949 {
950   VEC (char_ptr) *options;
951   int ix;
952   char *option;
953
954   /* First turn all debug format options off.  */
955   debug_timestamp = 0;
956
957   /* First remove leading spaces, for "monitor set debug-format".  */
958   while (isspace (*arg))
959     ++arg;
960
961   options = delim_string_to_char_ptr_vec (arg, ',');
962
963   for (ix = 0; VEC_iterate (char_ptr, options, ix, option); ++ix)
964     {
965       if (strcmp (option, "all") == 0)
966         {
967           debug_timestamp = 1;
968           if (is_monitor)
969             monitor_output ("All extra debug format options enabled.\n");
970         }
971       else if (strcmp (option, "none") == 0)
972         {
973           debug_timestamp = 0;
974           if (is_monitor)
975             monitor_output ("All extra debug format options disabled.\n");
976         }
977 #ifdef HAVE_GETTIMEOFDAY
978       else if (strcmp (option, "timestamp") == 0)
979         {
980           debug_timestamp = 1;
981           if (is_monitor)
982             monitor_output ("Timestamps will be added to debug output.\n");
983         }
984 #endif
985       else if (*option == '\0')
986         {
987           /* An empty option, e.g., "--debug-format=foo,,bar", is ignored.  */
988           continue;
989         }
990       else
991         {
992           char *msg = xstrprintf ("Unknown debug-format argument: \"%s\"\n",
993                                   option);
994
995           free_char_ptr_vec (options);
996           return msg;
997         }
998     }
999
1000   free_char_ptr_vec (options);
1001   return NULL;
1002 }
1003
1004 /* Handle monitor commands not handled by target-specific handlers.  */
1005
1006 static void
1007 handle_monitor_command (char *mon, char *own_buf)
1008 {
1009   if (strcmp (mon, "set debug 1") == 0)
1010     {
1011       debug_threads = 1;
1012       monitor_output ("Debug output enabled.\n");
1013     }
1014   else if (strcmp (mon, "set debug 0") == 0)
1015     {
1016       debug_threads = 0;
1017       monitor_output ("Debug output disabled.\n");
1018     }
1019   else if (strcmp (mon, "set debug-hw-points 1") == 0)
1020     {
1021       debug_hw_points = 1;
1022       monitor_output ("H/W point debugging output enabled.\n");
1023     }
1024   else if (strcmp (mon, "set debug-hw-points 0") == 0)
1025     {
1026       debug_hw_points = 0;
1027       monitor_output ("H/W point debugging output disabled.\n");
1028     }
1029   else if (strcmp (mon, "set remote-debug 1") == 0)
1030     {
1031       remote_debug = 1;
1032       monitor_output ("Protocol debug output enabled.\n");
1033     }
1034   else if (strcmp (mon, "set remote-debug 0") == 0)
1035     {
1036       remote_debug = 0;
1037       monitor_output ("Protocol debug output disabled.\n");
1038     }
1039   else if (strncmp (mon, "set debug-format ",
1040                     sizeof ("set debug-format ") - 1) == 0)
1041     {
1042       char *error_msg
1043         = parse_debug_format_options (mon + sizeof ("set debug-format ") - 1,
1044                                       1);
1045
1046       if (error_msg != NULL)
1047         {
1048           monitor_output (error_msg);
1049           monitor_show_help ();
1050           write_enn (own_buf);
1051           xfree (error_msg);
1052         }
1053     }
1054   else if (strcmp (mon, "help") == 0)
1055     monitor_show_help ();
1056   else if (strcmp (mon, "exit") == 0)
1057     exit_requested = 1;
1058   else
1059     {
1060       monitor_output ("Unknown monitor command.\n\n");
1061       monitor_show_help ();
1062       write_enn (own_buf);
1063     }
1064 }
1065
1066 /* Associates a callback with each supported qXfer'able object.  */
1067
1068 struct qxfer
1069 {
1070   /* The object this handler handles.  */
1071   const char *object;
1072
1073   /* Request that the target transfer up to LEN 8-bit bytes of the
1074      target's OBJECT.  The OFFSET, for a seekable object, specifies
1075      the starting point.  The ANNEX can be used to provide additional
1076      data-specific information to the target.
1077
1078      Return the number of bytes actually transfered, zero when no
1079      further transfer is possible, -1 on error, -2 when the transfer
1080      is not supported, and -3 on a verbose error message that should
1081      be preserved.  Return of a positive value smaller than LEN does
1082      not indicate the end of the object, only the end of the transfer.
1083
1084      One, and only one, of readbuf or writebuf must be non-NULL.  */
1085   int (*xfer) (const char *annex,
1086                gdb_byte *readbuf, const gdb_byte *writebuf,
1087                ULONGEST offset, LONGEST len);
1088 };
1089
1090 /* Handle qXfer:auxv:read.  */
1091
1092 static int
1093 handle_qxfer_auxv (const char *annex,
1094                    gdb_byte *readbuf, const gdb_byte *writebuf,
1095                    ULONGEST offset, LONGEST len)
1096 {
1097   if (the_target->read_auxv == NULL || writebuf != NULL)
1098     return -2;
1099
1100   if (annex[0] != '\0' || !target_running ())
1101     return -1;
1102
1103   return (*the_target->read_auxv) (offset, readbuf, len);
1104 }
1105
1106 /* Handle qXfer:features:read.  */
1107
1108 static int
1109 handle_qxfer_features (const char *annex,
1110                        gdb_byte *readbuf, const gdb_byte *writebuf,
1111                        ULONGEST offset, LONGEST len)
1112 {
1113   const char *document;
1114   size_t total_len;
1115
1116   if (writebuf != NULL)
1117     return -2;
1118
1119   if (!target_running ())
1120     return -1;
1121
1122   /* Grab the correct annex.  */
1123   document = get_features_xml (annex);
1124   if (document == NULL)
1125     return -1;
1126
1127   total_len = strlen (document);
1128
1129   if (offset > total_len)
1130     return -1;
1131
1132   if (offset + len > total_len)
1133     len = total_len - offset;
1134
1135   memcpy (readbuf, document + offset, len);
1136   return len;
1137 }
1138
1139 /* Worker routine for handle_qxfer_libraries.
1140    Add to the length pointed to by ARG a conservative estimate of the
1141    length needed to transmit the file name of INF.  */
1142
1143 static void
1144 accumulate_file_name_length (struct inferior_list_entry *inf, void *arg)
1145 {
1146   struct dll_info *dll = (struct dll_info *) inf;
1147   unsigned int *total_len = arg;
1148
1149   /* Over-estimate the necessary memory.  Assume that every character
1150      in the library name must be escaped.  */
1151   *total_len += 128 + 6 * strlen (dll->name);
1152 }
1153
1154 /* Worker routine for handle_qxfer_libraries.
1155    Emit the XML to describe the library in INF.  */
1156
1157 static void
1158 emit_dll_description (struct inferior_list_entry *inf, void *arg)
1159 {
1160   struct dll_info *dll = (struct dll_info *) inf;
1161   char **p_ptr = arg;
1162   char *p = *p_ptr;
1163   char *name;
1164
1165   strcpy (p, "  <library name=\"");
1166   p = p + strlen (p);
1167   name = xml_escape_text (dll->name);
1168   strcpy (p, name);
1169   free (name);
1170   p = p + strlen (p);
1171   strcpy (p, "\"><segment address=\"");
1172   p = p + strlen (p);
1173   sprintf (p, "0x%lx", (long) dll->base_addr);
1174   p = p + strlen (p);
1175   strcpy (p, "\"/></library>\n");
1176   p = p + strlen (p);
1177
1178   *p_ptr = p;
1179 }
1180
1181 /* Handle qXfer:libraries:read.  */
1182
1183 static int
1184 handle_qxfer_libraries (const char *annex,
1185                         gdb_byte *readbuf, const gdb_byte *writebuf,
1186                         ULONGEST offset, LONGEST len)
1187 {
1188   unsigned int total_len;
1189   char *document, *p;
1190
1191   if (writebuf != NULL)
1192     return -2;
1193
1194   if (annex[0] != '\0' || !target_running ())
1195     return -1;
1196
1197   total_len = 64;
1198   for_each_inferior_with_data (&all_dlls, accumulate_file_name_length,
1199                                &total_len);
1200
1201   document = malloc (total_len);
1202   if (document == NULL)
1203     return -1;
1204
1205   strcpy (document, "<library-list>\n");
1206   p = document + strlen (document);
1207
1208   for_each_inferior_with_data (&all_dlls, emit_dll_description, &p);
1209
1210   strcpy (p, "</library-list>\n");
1211
1212   total_len = strlen (document);
1213
1214   if (offset > total_len)
1215     {
1216       free (document);
1217       return -1;
1218     }
1219
1220   if (offset + len > total_len)
1221     len = total_len - offset;
1222
1223   memcpy (readbuf, document + offset, len);
1224   free (document);
1225   return len;
1226 }
1227
1228 /* Handle qXfer:libraries-svr4:read.  */
1229
1230 static int
1231 handle_qxfer_libraries_svr4 (const char *annex,
1232                              gdb_byte *readbuf, const gdb_byte *writebuf,
1233                              ULONGEST offset, LONGEST len)
1234 {
1235   if (writebuf != NULL)
1236     return -2;
1237
1238   if (!target_running () || the_target->qxfer_libraries_svr4 == NULL)
1239     return -1;
1240
1241   return the_target->qxfer_libraries_svr4 (annex, readbuf, writebuf, offset, len);
1242 }
1243
1244 /* Handle qXfer:osadata:read.  */
1245
1246 static int
1247 handle_qxfer_osdata (const char *annex,
1248                      gdb_byte *readbuf, const gdb_byte *writebuf,
1249                      ULONGEST offset, LONGEST len)
1250 {
1251   if (the_target->qxfer_osdata == NULL || writebuf != NULL)
1252     return -2;
1253
1254   return (*the_target->qxfer_osdata) (annex, readbuf, NULL, offset, len);
1255 }
1256
1257 /* Handle qXfer:siginfo:read and qXfer:siginfo:write.  */
1258
1259 static int
1260 handle_qxfer_siginfo (const char *annex,
1261                       gdb_byte *readbuf, const gdb_byte *writebuf,
1262                       ULONGEST offset, LONGEST len)
1263 {
1264   if (the_target->qxfer_siginfo == NULL)
1265     return -2;
1266
1267   if (annex[0] != '\0' || !target_running ())
1268     return -1;
1269
1270   return (*the_target->qxfer_siginfo) (annex, readbuf, writebuf, offset, len);
1271 }
1272
1273 /* Handle qXfer:spu:read and qXfer:spu:write.  */
1274
1275 static int
1276 handle_qxfer_spu (const char *annex,
1277                   gdb_byte *readbuf, const gdb_byte *writebuf,
1278                   ULONGEST offset, LONGEST len)
1279 {
1280   if (the_target->qxfer_spu == NULL)
1281     return -2;
1282
1283   if (!target_running ())
1284     return -1;
1285
1286   return (*the_target->qxfer_spu) (annex, readbuf, writebuf, offset, len);
1287 }
1288
1289 /* Handle qXfer:statictrace:read.  */
1290
1291 static int
1292 handle_qxfer_statictrace (const char *annex,
1293                           gdb_byte *readbuf, const gdb_byte *writebuf,
1294                           ULONGEST offset, LONGEST len)
1295 {
1296   ULONGEST nbytes;
1297
1298   if (writebuf != NULL)
1299     return -2;
1300
1301   if (annex[0] != '\0' || !target_running () || current_traceframe == -1)
1302     return -1;
1303
1304   if (traceframe_read_sdata (current_traceframe, offset,
1305                              readbuf, len, &nbytes))
1306     return -1;
1307   return nbytes;
1308 }
1309
1310 /* Helper for handle_qxfer_threads_proper.
1311    Emit the XML to describe the thread of INF.  */
1312
1313 static void
1314 handle_qxfer_threads_worker (struct inferior_list_entry *inf, void *arg)
1315 {
1316   struct thread_info *thread = (struct thread_info *) inf;
1317   struct buffer *buffer = arg;
1318   ptid_t ptid = thread_to_gdb_id (thread);
1319   char ptid_s[100];
1320   int core = target_core_of_thread (ptid);
1321   char core_s[21];
1322
1323   write_ptid (ptid_s, ptid);
1324
1325   if (core != -1)
1326     {
1327       sprintf (core_s, "%d", core);
1328       buffer_xml_printf (buffer, "<thread id=\"%s\" core=\"%s\"/>\n",
1329                          ptid_s, core_s);
1330     }
1331   else
1332     {
1333       buffer_xml_printf (buffer, "<thread id=\"%s\"/>\n",
1334                          ptid_s);
1335     }
1336 }
1337
1338 /* Helper for handle_qxfer_threads.  */
1339
1340 static void
1341 handle_qxfer_threads_proper (struct buffer *buffer)
1342 {
1343   buffer_grow_str (buffer, "<threads>\n");
1344
1345   for_each_inferior_with_data (&all_threads, handle_qxfer_threads_worker,
1346                                buffer);
1347
1348   buffer_grow_str0 (buffer, "</threads>\n");
1349 }
1350
1351 /* Handle qXfer:threads:read.  */
1352
1353 static int
1354 handle_qxfer_threads (const char *annex,
1355                       gdb_byte *readbuf, const gdb_byte *writebuf,
1356                       ULONGEST offset, LONGEST len)
1357 {
1358   static char *result = 0;
1359   static unsigned int result_length = 0;
1360
1361   if (writebuf != NULL)
1362     return -2;
1363
1364   if (!target_running () || annex[0] != '\0')
1365     return -1;
1366
1367   if (offset == 0)
1368     {
1369       struct buffer buffer;
1370       /* When asked for data at offset 0, generate everything and store into
1371          'result'.  Successive reads will be served off 'result'.  */
1372       if (result)
1373         free (result);
1374
1375       buffer_init (&buffer);
1376
1377       handle_qxfer_threads_proper (&buffer);
1378
1379       result = buffer_finish (&buffer);
1380       result_length = strlen (result);
1381       buffer_free (&buffer);
1382     }
1383
1384   if (offset >= result_length)
1385     {
1386       /* We're out of data.  */
1387       free (result);
1388       result = NULL;
1389       result_length = 0;
1390       return 0;
1391     }
1392
1393   if (len > result_length - offset)
1394     len = result_length - offset;
1395
1396   memcpy (readbuf, result + offset, len);
1397
1398   return len;
1399 }
1400
1401 /* Handle qXfer:traceframe-info:read.  */
1402
1403 static int
1404 handle_qxfer_traceframe_info (const char *annex,
1405                               gdb_byte *readbuf, const gdb_byte *writebuf,
1406                               ULONGEST offset, LONGEST len)
1407 {
1408   static char *result = 0;
1409   static unsigned int result_length = 0;
1410
1411   if (writebuf != NULL)
1412     return -2;
1413
1414   if (!target_running () || annex[0] != '\0' || current_traceframe == -1)
1415     return -1;
1416
1417   if (offset == 0)
1418     {
1419       struct buffer buffer;
1420
1421       /* When asked for data at offset 0, generate everything and
1422          store into 'result'.  Successive reads will be served off
1423          'result'.  */
1424       free (result);
1425
1426       buffer_init (&buffer);
1427
1428       traceframe_read_info (current_traceframe, &buffer);
1429
1430       result = buffer_finish (&buffer);
1431       result_length = strlen (result);
1432       buffer_free (&buffer);
1433     }
1434
1435   if (offset >= result_length)
1436     {
1437       /* We're out of data.  */
1438       free (result);
1439       result = NULL;
1440       result_length = 0;
1441       return 0;
1442     }
1443
1444   if (len > result_length - offset)
1445     len = result_length - offset;
1446
1447   memcpy (readbuf, result + offset, len);
1448   return len;
1449 }
1450
1451 /* Handle qXfer:fdpic:read.  */
1452
1453 static int
1454 handle_qxfer_fdpic (const char *annex, gdb_byte *readbuf,
1455                     const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
1456 {
1457   if (the_target->read_loadmap == NULL)
1458     return -2;
1459
1460   if (!target_running ())
1461     return -1;
1462
1463   return (*the_target->read_loadmap) (annex, offset, readbuf, len);
1464 }
1465
1466 /* Handle qXfer:btrace:read.  */
1467
1468 static int
1469 handle_qxfer_btrace (const char *annex,
1470                      gdb_byte *readbuf, const gdb_byte *writebuf,
1471                      ULONGEST offset, LONGEST len)
1472 {
1473   static struct buffer cache;
1474   struct thread_info *thread;
1475   int type, result;
1476
1477   if (the_target->read_btrace == NULL || writebuf != NULL)
1478     return -2;
1479
1480   if (!target_running ())
1481     return -1;
1482
1483   if (ptid_equal (general_thread, null_ptid)
1484       || ptid_equal (general_thread, minus_one_ptid))
1485     {
1486       strcpy (own_buf, "E.Must select a single thread.");
1487       return -3;
1488     }
1489
1490   thread = find_thread_ptid (general_thread);
1491   if (thread == NULL)
1492     {
1493       strcpy (own_buf, "E.No such thread.");
1494       return -3;
1495     }
1496
1497   if (thread->btrace == NULL)
1498     {
1499       strcpy (own_buf, "E.Btrace not enabled.");
1500       return -3;
1501     }
1502
1503   if (strcmp (annex, "all") == 0)
1504     type = BTRACE_READ_ALL;
1505   else if (strcmp (annex, "new") == 0)
1506     type = BTRACE_READ_NEW;
1507   else if (strcmp (annex, "delta") == 0)
1508     type = BTRACE_READ_DELTA;
1509   else
1510     {
1511       strcpy (own_buf, "E.Bad annex.");
1512       return -3;
1513     }
1514
1515   if (offset == 0)
1516     {
1517       buffer_free (&cache);
1518
1519       result = target_read_btrace (thread->btrace, &cache, type);
1520       if (result != 0)
1521         {
1522           memcpy (own_buf, cache.buffer, cache.used_size);
1523           return -3;
1524         }
1525     }
1526   else if (offset > cache.used_size)
1527     {
1528       buffer_free (&cache);
1529       return -3;
1530     }
1531
1532   if (len > cache.used_size - offset)
1533     len = cache.used_size - offset;
1534
1535   memcpy (readbuf, cache.buffer + offset, len);
1536
1537   return len;
1538 }
1539
1540 static const struct qxfer qxfer_packets[] =
1541   {
1542     { "auxv", handle_qxfer_auxv },
1543     { "btrace", handle_qxfer_btrace },
1544     { "fdpic", handle_qxfer_fdpic},
1545     { "features", handle_qxfer_features },
1546     { "libraries", handle_qxfer_libraries },
1547     { "libraries-svr4", handle_qxfer_libraries_svr4 },
1548     { "osdata", handle_qxfer_osdata },
1549     { "siginfo", handle_qxfer_siginfo },
1550     { "spu", handle_qxfer_spu },
1551     { "statictrace", handle_qxfer_statictrace },
1552     { "threads", handle_qxfer_threads },
1553     { "traceframe-info", handle_qxfer_traceframe_info },
1554   };
1555
1556 static int
1557 handle_qxfer (char *own_buf, int packet_len, int *new_packet_len_p)
1558 {
1559   int i;
1560   char *object;
1561   char *rw;
1562   char *annex;
1563   char *offset;
1564
1565   if (strncmp (own_buf, "qXfer:", 6) != 0)
1566     return 0;
1567
1568   /* Grab the object, r/w and annex.  */
1569   if (decode_xfer (own_buf + 6, &object, &rw, &annex, &offset) < 0)
1570     {
1571       write_enn (own_buf);
1572       return 1;
1573     }
1574
1575   for (i = 0;
1576        i < sizeof (qxfer_packets) / sizeof (qxfer_packets[0]);
1577        i++)
1578     {
1579       const struct qxfer *q = &qxfer_packets[i];
1580
1581       if (strcmp (object, q->object) == 0)
1582         {
1583           if (strcmp (rw, "read") == 0)
1584             {
1585               unsigned char *data;
1586               int n;
1587               CORE_ADDR ofs;
1588               unsigned int len;
1589
1590               /* Grab the offset and length.  */
1591               if (decode_xfer_read (offset, &ofs, &len) < 0)
1592                 {
1593                   write_enn (own_buf);
1594                   return 1;
1595                 }
1596
1597               /* Read one extra byte, as an indicator of whether there is
1598                  more.  */
1599               if (len > PBUFSIZ - 2)
1600                 len = PBUFSIZ - 2;
1601               data = malloc (len + 1);
1602               if (data == NULL)
1603                 {
1604                   write_enn (own_buf);
1605                   return 1;
1606                 }
1607               n = (*q->xfer) (annex, data, NULL, ofs, len + 1);
1608               if (n == -2)
1609                 {
1610                   free (data);
1611                   return 0;
1612                 }
1613               else if (n == -3)
1614                 {
1615                   /* Preserve error message.  */
1616                 }
1617               else if (n < 0)
1618                 write_enn (own_buf);
1619               else if (n > len)
1620                 *new_packet_len_p = write_qxfer_response (own_buf, data, len, 1);
1621               else
1622                 *new_packet_len_p = write_qxfer_response (own_buf, data, n, 0);
1623
1624               free (data);
1625               return 1;
1626             }
1627           else if (strcmp (rw, "write") == 0)
1628             {
1629               int n;
1630               unsigned int len;
1631               CORE_ADDR ofs;
1632               unsigned char *data;
1633
1634               strcpy (own_buf, "E00");
1635               data = malloc (packet_len - (offset - own_buf));
1636               if (data == NULL)
1637                 {
1638                   write_enn (own_buf);
1639                   return 1;
1640                 }
1641               if (decode_xfer_write (offset, packet_len - (offset - own_buf),
1642                                      &ofs, &len, data) < 0)
1643                 {
1644                   free (data);
1645                   write_enn (own_buf);
1646                   return 1;
1647                 }
1648
1649               n = (*q->xfer) (annex, NULL, data, ofs, len);
1650               if (n == -2)
1651                 {
1652                   free (data);
1653                   return 0;
1654                 }
1655               else if (n == -3)
1656                 {
1657                   /* Preserve error message.  */
1658                 }
1659               else if (n < 0)
1660                 write_enn (own_buf);
1661               else
1662                 sprintf (own_buf, "%x", n);
1663
1664               free (data);
1665               return 1;
1666             }
1667
1668           return 0;
1669         }
1670     }
1671
1672   return 0;
1673 }
1674
1675 /* Table used by the crc32 function to calcuate the checksum.  */
1676
1677 static unsigned int crc32_table[256] =
1678 {0, 0};
1679
1680 /* Compute 32 bit CRC from inferior memory.
1681
1682    On success, return 32 bit CRC.
1683    On failure, return (unsigned long long) -1.  */
1684
1685 static unsigned long long
1686 crc32 (CORE_ADDR base, int len, unsigned int crc)
1687 {
1688   if (!crc32_table[1])
1689     {
1690       /* Initialize the CRC table and the decoding table.  */
1691       int i, j;
1692       unsigned int c;
1693
1694       for (i = 0; i < 256; i++)
1695         {
1696           for (c = i << 24, j = 8; j > 0; --j)
1697             c = c & 0x80000000 ? (c << 1) ^ 0x04c11db7 : (c << 1);
1698           crc32_table[i] = c;
1699         }
1700     }
1701
1702   while (len--)
1703     {
1704       unsigned char byte = 0;
1705
1706       /* Return failure if memory read fails.  */
1707       if (read_inferior_memory (base, &byte, 1) != 0)
1708         return (unsigned long long) -1;
1709
1710       crc = (crc << 8) ^ crc32_table[((crc >> 24) ^ byte) & 255];
1711       base++;
1712     }
1713   return (unsigned long long) crc;
1714 }
1715
1716 /* Handle all of the extended 'q' packets.  */
1717
1718 void
1719 handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
1720 {
1721   static struct inferior_list_entry *thread_ptr;
1722
1723   /* Reply the current thread id.  */
1724   if (strcmp ("qC", own_buf) == 0 && !disable_packet_qC)
1725     {
1726       ptid_t gdb_id;
1727       require_running (own_buf);
1728
1729       if (!ptid_equal (general_thread, null_ptid)
1730           && !ptid_equal (general_thread, minus_one_ptid))
1731         gdb_id = general_thread;
1732       else
1733         {
1734           thread_ptr = get_first_inferior (&all_threads);
1735           gdb_id = thread_to_gdb_id ((struct thread_info *)thread_ptr);
1736         }
1737
1738       sprintf (own_buf, "QC");
1739       own_buf += 2;
1740       write_ptid (own_buf, gdb_id);
1741       return;
1742     }
1743
1744   if (strcmp ("qSymbol::", own_buf) == 0)
1745     {
1746       /* GDB is suggesting new symbols have been loaded.  This may
1747          mean a new shared library has been detected as loaded, so
1748          take the opportunity to check if breakpoints we think are
1749          inserted, still are.  Note that it isn't guaranteed that
1750          we'll see this when a shared library is loaded, and nor will
1751          we see this for unloads (although breakpoints in unloaded
1752          libraries shouldn't trigger), as GDB may not find symbols for
1753          the library at all.  We also re-validate breakpoints when we
1754          see a second GDB breakpoint for the same address, and or when
1755          we access breakpoint shadows.  */
1756       validate_breakpoints ();
1757
1758       if (target_supports_tracepoints ())
1759         tracepoint_look_up_symbols ();
1760
1761       if (target_running () && the_target->look_up_symbols != NULL)
1762         (*the_target->look_up_symbols) ();
1763
1764       strcpy (own_buf, "OK");
1765       return;
1766     }
1767
1768   if (!disable_packet_qfThreadInfo)
1769     {
1770       if (strcmp ("qfThreadInfo", own_buf) == 0)
1771         {
1772           ptid_t gdb_id;
1773
1774           require_running (own_buf);
1775           thread_ptr = get_first_inferior (&all_threads);
1776
1777           *own_buf++ = 'm';
1778           gdb_id = thread_to_gdb_id ((struct thread_info *)thread_ptr);
1779           write_ptid (own_buf, gdb_id);
1780           thread_ptr = thread_ptr->next;
1781           return;
1782         }
1783
1784       if (strcmp ("qsThreadInfo", own_buf) == 0)
1785         {
1786           ptid_t gdb_id;
1787
1788           require_running (own_buf);
1789           if (thread_ptr != NULL)
1790             {
1791               *own_buf++ = 'm';
1792               gdb_id = thread_to_gdb_id ((struct thread_info *)thread_ptr);
1793               write_ptid (own_buf, gdb_id);
1794               thread_ptr = thread_ptr->next;
1795               return;
1796             }
1797           else
1798             {
1799               sprintf (own_buf, "l");
1800               return;
1801             }
1802         }
1803     }
1804
1805   if (the_target->read_offsets != NULL
1806       && strcmp ("qOffsets", own_buf) == 0)
1807     {
1808       CORE_ADDR text, data;
1809
1810       require_running (own_buf);
1811       if (the_target->read_offsets (&text, &data))
1812         sprintf (own_buf, "Text=%lX;Data=%lX;Bss=%lX",
1813                  (long)text, (long)data, (long)data);
1814       else
1815         write_enn (own_buf);
1816
1817       return;
1818     }
1819
1820   /* Protocol features query.  */
1821   if (strncmp ("qSupported", own_buf, 10) == 0
1822       && (own_buf[10] == ':' || own_buf[10] == '\0'))
1823     {
1824       char *p = &own_buf[10];
1825       int gdb_supports_qRelocInsn = 0;
1826
1827       /* Start processing qSupported packet.  */
1828       target_process_qsupported (NULL);
1829
1830       /* Process each feature being provided by GDB.  The first
1831          feature will follow a ':', and latter features will follow
1832          ';'.  */
1833       if (*p == ':')
1834         {
1835           char **qsupported = NULL;
1836           int count = 0;
1837           int i;
1838
1839           /* Two passes, to avoid nested strtok calls in
1840              target_process_qsupported.  */
1841           for (p = strtok (p + 1, ";");
1842                p != NULL;
1843                p = strtok (NULL, ";"))
1844             {
1845               count++;
1846               qsupported = xrealloc (qsupported, count * sizeof (char *));
1847               qsupported[count - 1] = xstrdup (p);
1848             }
1849
1850           for (i = 0; i < count; i++)
1851             {
1852               p = qsupported[i];
1853               if (strcmp (p, "multiprocess+") == 0)
1854                 {
1855                   /* GDB supports and wants multi-process support if
1856                      possible.  */
1857                   if (target_supports_multi_process ())
1858                     multi_process = 1;
1859                 }
1860               else if (strcmp (p, "qRelocInsn+") == 0)
1861                 {
1862                   /* GDB supports relocate instruction requests.  */
1863                   gdb_supports_qRelocInsn = 1;
1864                 }
1865               else
1866                 target_process_qsupported (p);
1867
1868               free (p);
1869             }
1870
1871           free (qsupported);
1872         }
1873
1874       sprintf (own_buf,
1875                "PacketSize=%x;QPassSignals+;QProgramSignals+",
1876                PBUFSIZ - 1);
1877
1878       if (the_target->qxfer_libraries_svr4 != NULL)
1879         strcat (own_buf, ";qXfer:libraries-svr4:read+"
1880                 ";augmented-libraries-svr4-read+");
1881       else
1882         {
1883           /* We do not have any hook to indicate whether the non-SVR4 target
1884              backend supports qXfer:libraries:read, so always report it.  */
1885           strcat (own_buf, ";qXfer:libraries:read+");
1886         }
1887
1888       if (the_target->read_auxv != NULL)
1889         strcat (own_buf, ";qXfer:auxv:read+");
1890
1891       if (the_target->qxfer_spu != NULL)
1892         strcat (own_buf, ";qXfer:spu:read+;qXfer:spu:write+");
1893
1894       if (the_target->qxfer_siginfo != NULL)
1895         strcat (own_buf, ";qXfer:siginfo:read+;qXfer:siginfo:write+");
1896
1897       if (the_target->read_loadmap != NULL)
1898         strcat (own_buf, ";qXfer:fdpic:read+");
1899
1900       /* We always report qXfer:features:read, as targets may
1901          install XML files on a subsequent call to arch_setup.
1902          If we reported to GDB on startup that we don't support
1903          qXfer:feature:read at all, we will never be re-queried.  */
1904       strcat (own_buf, ";qXfer:features:read+");
1905
1906       if (transport_is_reliable)
1907         strcat (own_buf, ";QStartNoAckMode+");
1908
1909       if (the_target->qxfer_osdata != NULL)
1910         strcat (own_buf, ";qXfer:osdata:read+");
1911
1912       if (target_supports_multi_process ())
1913         strcat (own_buf, ";multiprocess+");
1914
1915       if (target_supports_non_stop ())
1916         strcat (own_buf, ";QNonStop+");
1917
1918       if (target_supports_disable_randomization ())
1919         strcat (own_buf, ";QDisableRandomization+");
1920
1921       strcat (own_buf, ";qXfer:threads:read+");
1922
1923       if (target_supports_tracepoints ())
1924         {
1925           strcat (own_buf, ";ConditionalTracepoints+");
1926           strcat (own_buf, ";TraceStateVariables+");
1927           strcat (own_buf, ";TracepointSource+");
1928           strcat (own_buf, ";DisconnectedTracing+");
1929           if (gdb_supports_qRelocInsn && target_supports_fast_tracepoints ())
1930             strcat (own_buf, ";FastTracepoints+");
1931           strcat (own_buf, ";StaticTracepoints+");
1932           strcat (own_buf, ";InstallInTrace+");
1933           strcat (own_buf, ";qXfer:statictrace:read+");
1934           strcat (own_buf, ";qXfer:traceframe-info:read+");
1935           strcat (own_buf, ";EnableDisableTracepoints+");
1936           strcat (own_buf, ";QTBuffer:size+");
1937           strcat (own_buf, ";tracenz+");
1938         }
1939
1940       /* Support target-side breakpoint conditions and commands.  */
1941       strcat (own_buf, ";ConditionalBreakpoints+");
1942       strcat (own_buf, ";BreakpointCommands+");
1943
1944       if (target_supports_agent ())
1945         strcat (own_buf, ";QAgent+");
1946
1947       if (target_supports_btrace ())
1948         {
1949           strcat (own_buf, ";Qbtrace:bts+");
1950           strcat (own_buf, ";Qbtrace:off+");
1951           strcat (own_buf, ";qXfer:btrace:read+");
1952         }
1953
1954       return;
1955     }
1956
1957   /* Thread-local storage support.  */
1958   if (the_target->get_tls_address != NULL
1959       && strncmp ("qGetTLSAddr:", own_buf, 12) == 0)
1960     {
1961       char *p = own_buf + 12;
1962       CORE_ADDR parts[2], address = 0;
1963       int i, err;
1964       ptid_t ptid = null_ptid;
1965
1966       require_running (own_buf);
1967
1968       for (i = 0; i < 3; i++)
1969         {
1970           char *p2;
1971           int len;
1972
1973           if (p == NULL)
1974             break;
1975
1976           p2 = strchr (p, ',');
1977           if (p2)
1978             {
1979               len = p2 - p;
1980               p2++;
1981             }
1982           else
1983             {
1984               len = strlen (p);
1985               p2 = NULL;
1986             }
1987
1988           if (i == 0)
1989             ptid = read_ptid (p, NULL);
1990           else
1991             decode_address (&parts[i - 1], p, len);
1992           p = p2;
1993         }
1994
1995       if (p != NULL || i < 3)
1996         err = 1;
1997       else
1998         {
1999           struct thread_info *thread = find_thread_ptid (ptid);
2000
2001           if (thread == NULL)
2002             err = 2;
2003           else
2004             err = the_target->get_tls_address (thread, parts[0], parts[1],
2005                                                &address);
2006         }
2007
2008       if (err == 0)
2009         {
2010           strcpy (own_buf, paddress(address));
2011           return;
2012         }
2013       else if (err > 0)
2014         {
2015           write_enn (own_buf);
2016           return;
2017         }
2018
2019       /* Otherwise, pretend we do not understand this packet.  */
2020     }
2021
2022   /* Windows OS Thread Information Block address support.  */
2023   if (the_target->get_tib_address != NULL
2024       && strncmp ("qGetTIBAddr:", own_buf, 12) == 0)
2025     {
2026       char *annex;
2027       int n;
2028       CORE_ADDR tlb;
2029       ptid_t ptid = read_ptid (own_buf + 12, &annex);
2030
2031       n = (*the_target->get_tib_address) (ptid, &tlb);
2032       if (n == 1)
2033         {
2034           strcpy (own_buf, paddress(tlb));
2035           return;
2036         }
2037       else if (n == 0)
2038         {
2039           write_enn (own_buf);
2040           return;
2041         }
2042       return;
2043     }
2044
2045   /* Handle "monitor" commands.  */
2046   if (strncmp ("qRcmd,", own_buf, 6) == 0)
2047     {
2048       char *mon = malloc (PBUFSIZ);
2049       int len = strlen (own_buf + 6);
2050
2051       if (mon == NULL)
2052         {
2053           write_enn (own_buf);
2054           return;
2055         }
2056
2057       if ((len % 2) != 0
2058           || hex2bin (own_buf + 6, (gdb_byte *) mon, len / 2) != len / 2)
2059         {
2060           write_enn (own_buf);
2061           free (mon);
2062           return;
2063         }
2064       mon[len / 2] = '\0';
2065
2066       write_ok (own_buf);
2067
2068       if (the_target->handle_monitor_command == NULL
2069           || (*the_target->handle_monitor_command) (mon) == 0)
2070         /* Default processing.  */
2071         handle_monitor_command (mon, own_buf);
2072
2073       free (mon);
2074       return;
2075     }
2076
2077   if (strncmp ("qSearch:memory:", own_buf,
2078                sizeof ("qSearch:memory:") - 1) == 0)
2079     {
2080       require_running (own_buf);
2081       handle_search_memory (own_buf, packet_len);
2082       return;
2083     }
2084
2085   if (strcmp (own_buf, "qAttached") == 0
2086       || strncmp (own_buf, "qAttached:", sizeof ("qAttached:") - 1) == 0)
2087     {
2088       struct process_info *process;
2089
2090       if (own_buf[sizeof ("qAttached") - 1])
2091         {
2092           int pid = strtoul (own_buf + sizeof ("qAttached:") - 1, NULL, 16);
2093           process = (struct process_info *)
2094             find_inferior_id (&all_processes, pid_to_ptid (pid));
2095         }
2096       else
2097         {
2098           require_running (own_buf);
2099           process = current_process ();
2100         }
2101
2102       if (process == NULL)
2103         {
2104           write_enn (own_buf);
2105           return;
2106         }
2107
2108       strcpy (own_buf, process->attached ? "1" : "0");
2109       return;
2110     }
2111
2112   if (strncmp ("qCRC:", own_buf, 5) == 0)
2113     {
2114       /* CRC check (compare-section).  */
2115       char *comma;
2116       ULONGEST base;
2117       int len;
2118       unsigned long long crc;
2119
2120       require_running (own_buf);
2121       comma = unpack_varlen_hex (own_buf + 5, &base);
2122       if (*comma++ != ',')
2123         {
2124           write_enn (own_buf);
2125           return;
2126         }
2127       len = strtoul (comma, NULL, 16);
2128       crc = crc32 (base, len, 0xffffffff);
2129       /* Check for memory failure.  */
2130       if (crc == (unsigned long long) -1)
2131         {
2132           write_enn (own_buf);
2133           return;
2134         }
2135       sprintf (own_buf, "C%lx", (unsigned long) crc);
2136       return;
2137     }
2138
2139   if (handle_qxfer (own_buf, packet_len, new_packet_len_p))
2140     return;
2141
2142   if (target_supports_tracepoints () && handle_tracepoint_query (own_buf))
2143     return;
2144
2145   /* Otherwise we didn't know what packet it was.  Say we didn't
2146      understand it.  */
2147   own_buf[0] = 0;
2148 }
2149
2150 static void gdb_wants_all_threads_stopped (void);
2151 static void resume (struct thread_resume *actions, size_t n);
2152
2153 /* The callback that is passed to visit_actioned_threads.  */
2154 typedef int (visit_actioned_threads_callback_ftype)
2155   (const struct thread_resume *, struct thread_info *);
2156
2157 /* Struct to pass data to visit_actioned_threads.  */
2158
2159 struct visit_actioned_threads_data
2160 {
2161   const struct thread_resume *actions;
2162   size_t num_actions;
2163   visit_actioned_threads_callback_ftype *callback;
2164 };
2165
2166 /* Call CALLBACK for any thread to which ACTIONS applies to.  Returns
2167    true if CALLBACK returns true.  Returns false if no matching thread
2168    is found or CALLBACK results false.
2169    Note: This function is itself a callback for find_inferior.  */
2170
2171 static int
2172 visit_actioned_threads (struct inferior_list_entry *entry, void *datap)
2173 {
2174   struct visit_actioned_threads_data *data = datap;
2175   const struct thread_resume *actions = data->actions;
2176   size_t num_actions = data->num_actions;
2177   visit_actioned_threads_callback_ftype *callback = data->callback;
2178   size_t i;
2179
2180   for (i = 0; i < num_actions; i++)
2181     {
2182       const struct thread_resume *action = &actions[i];
2183
2184       if (ptid_equal (action->thread, minus_one_ptid)
2185           || ptid_equal (action->thread, entry->id)
2186           || ((ptid_get_pid (action->thread)
2187                == ptid_get_pid (entry->id))
2188               && ptid_get_lwp (action->thread) == -1))
2189         {
2190           struct thread_info *thread = (struct thread_info *) entry;
2191
2192           if ((*callback) (action, thread))
2193             return 1;
2194         }
2195     }
2196
2197   return 0;
2198 }
2199
2200 /* Callback for visit_actioned_threads.  If the thread has a pending
2201    status to report, report it now.  */
2202
2203 static int
2204 handle_pending_status (const struct thread_resume *resumption,
2205                        struct thread_info *thread)
2206 {
2207   if (thread->status_pending_p)
2208     {
2209       thread->status_pending_p = 0;
2210
2211       last_status = thread->last_status;
2212       last_ptid = thread->entry.id;
2213       prepare_resume_reply (own_buf, last_ptid, &last_status);
2214       return 1;
2215     }
2216   return 0;
2217 }
2218
2219 /* Parse vCont packets.  */
2220 void
2221 handle_v_cont (char *own_buf)
2222 {
2223   char *p, *q;
2224   int n = 0, i = 0;
2225   struct thread_resume *resume_info;
2226   struct thread_resume default_action = {{0}};
2227
2228   /* Count the number of semicolons in the packet.  There should be one
2229      for every action.  */
2230   p = &own_buf[5];
2231   while (p)
2232     {
2233       n++;
2234       p++;
2235       p = strchr (p, ';');
2236     }
2237
2238   resume_info = malloc (n * sizeof (resume_info[0]));
2239   if (resume_info == NULL)
2240     goto err;
2241
2242   p = &own_buf[5];
2243   while (*p)
2244     {
2245       p++;
2246
2247       memset (&resume_info[i], 0, sizeof resume_info[i]);
2248
2249       if (p[0] == 's' || p[0] == 'S')
2250         resume_info[i].kind = resume_step;
2251       else if (p[0] == 'r')
2252         resume_info[i].kind = resume_step;
2253       else if (p[0] == 'c' || p[0] == 'C')
2254         resume_info[i].kind = resume_continue;
2255       else if (p[0] == 't')
2256         resume_info[i].kind = resume_stop;
2257       else
2258         goto err;
2259
2260       if (p[0] == 'S' || p[0] == 'C')
2261         {
2262           int sig;
2263           sig = strtol (p + 1, &q, 16);
2264           if (p == q)
2265             goto err;
2266           p = q;
2267
2268           if (!gdb_signal_to_host_p (sig))
2269             goto err;
2270           resume_info[i].sig = gdb_signal_to_host (sig);
2271         }
2272       else if (p[0] == 'r')
2273         {
2274           ULONGEST addr;
2275
2276           p = unpack_varlen_hex (p + 1, &addr);
2277           resume_info[i].step_range_start = addr;
2278
2279           if (*p != ',')
2280             goto err;
2281
2282           p = unpack_varlen_hex (p + 1, &addr);
2283           resume_info[i].step_range_end = addr;
2284         }
2285       else
2286         {
2287           p = p + 1;
2288         }
2289
2290       if (p[0] == 0)
2291         {
2292           resume_info[i].thread = minus_one_ptid;
2293           default_action = resume_info[i];
2294
2295           /* Note: we don't increment i here, we'll overwrite this entry
2296              the next time through.  */
2297         }
2298       else if (p[0] == ':')
2299         {
2300           ptid_t ptid = read_ptid (p + 1, &q);
2301
2302           if (p == q)
2303             goto err;
2304           p = q;
2305           if (p[0] != ';' && p[0] != 0)
2306             goto err;
2307
2308           resume_info[i].thread = ptid;
2309
2310           i++;
2311         }
2312     }
2313
2314   if (i < n)
2315     resume_info[i] = default_action;
2316
2317   /* `cont_thread' is still used in occasional places in the backend,
2318      to implement single-thread scheduler-locking.  Doesn't make sense
2319      to set it if we see a stop request, or a wildcard action (one
2320      with '-1' (all threads), or 'pPID.-1' (all threads of PID)).  */
2321   if (n == 1
2322       && !(ptid_equal (resume_info[0].thread, minus_one_ptid)
2323            || ptid_get_lwp (resume_info[0].thread) == -1)
2324       && resume_info[0].kind != resume_stop)
2325     cont_thread = resume_info[0].thread;
2326   else
2327     cont_thread = minus_one_ptid;
2328   set_desired_inferior (0);
2329
2330   resume (resume_info, n);
2331   free (resume_info);
2332   return;
2333
2334 err:
2335   write_enn (own_buf);
2336   free (resume_info);
2337   return;
2338 }
2339
2340 /* Resume target with ACTIONS, an array of NUM_ACTIONS elements.  */
2341
2342 static void
2343 resume (struct thread_resume *actions, size_t num_actions)
2344 {
2345   if (!non_stop)
2346     {
2347       /* Check if among the threads that GDB wants actioned, there's
2348          one with a pending status to report.  If so, skip actually
2349          resuming/stopping and report the pending event
2350          immediately.  */
2351       struct visit_actioned_threads_data data;
2352
2353       data.actions = actions;
2354       data.num_actions = num_actions;
2355       data.callback = handle_pending_status;
2356       if (find_inferior (&all_threads, visit_actioned_threads, &data) != NULL)
2357         return;
2358
2359       enable_async_io ();
2360     }
2361
2362   (*the_target->resume) (actions, num_actions);
2363
2364   if (non_stop)
2365     write_ok (own_buf);
2366   else
2367     {
2368       last_ptid = mywait (minus_one_ptid, &last_status, 0, 1);
2369
2370       if (last_status.kind == TARGET_WAITKIND_NO_RESUMED)
2371         {
2372           /* No proper RSP support for this yet.  At least return
2373              error.  */
2374           sprintf (own_buf, "E.No unwaited-for children left.");
2375           disable_async_io ();
2376           return;
2377         }
2378
2379       if (last_status.kind != TARGET_WAITKIND_EXITED
2380           && last_status.kind != TARGET_WAITKIND_SIGNALLED
2381           && last_status.kind != TARGET_WAITKIND_NO_RESUMED)
2382         current_inferior->last_status = last_status;
2383
2384       /* From the client's perspective, all-stop mode always stops all
2385          threads implicitly (and the target backend has already done
2386          so by now).  Tag all threads as "want-stopped", so we don't
2387          resume them implicitly without the client telling us to.  */
2388       gdb_wants_all_threads_stopped ();
2389       prepare_resume_reply (own_buf, last_ptid, &last_status);
2390       disable_async_io ();
2391
2392       if (last_status.kind == TARGET_WAITKIND_EXITED
2393           || last_status.kind == TARGET_WAITKIND_SIGNALLED)
2394         mourn_inferior (find_process_pid (ptid_get_pid (last_ptid)));
2395     }
2396 }
2397
2398 /* Attach to a new program.  Return 1 if successful, 0 if failure.  */
2399 int
2400 handle_v_attach (char *own_buf)
2401 {
2402   int pid;
2403
2404   pid = strtol (own_buf + 8, NULL, 16);
2405   if (pid != 0 && attach_inferior (pid) == 0)
2406     {
2407       /* Don't report shared library events after attaching, even if
2408          some libraries are preloaded.  GDB will always poll the
2409          library list.  Avoids the "stopped by shared library event"
2410          notice on the GDB side.  */
2411       dlls_changed = 0;
2412
2413       if (non_stop)
2414         {
2415           /* In non-stop, we don't send a resume reply.  Stop events
2416              will follow up using the normal notification
2417              mechanism.  */
2418           write_ok (own_buf);
2419         }
2420       else
2421         prepare_resume_reply (own_buf, last_ptid, &last_status);
2422
2423       return 1;
2424     }
2425   else
2426     {
2427       write_enn (own_buf);
2428       return 0;
2429     }
2430 }
2431
2432 /* Run a new program.  Return 1 if successful, 0 if failure.  */
2433 static int
2434 handle_v_run (char *own_buf)
2435 {
2436   char *p, *next_p, **new_argv;
2437   int i, new_argc;
2438
2439   new_argc = 0;
2440   for (p = own_buf + strlen ("vRun;"); p && *p; p = strchr (p, ';'))
2441     {
2442       p++;
2443       new_argc++;
2444     }
2445
2446   new_argv = calloc (new_argc + 2, sizeof (char *));
2447   if (new_argv == NULL)
2448     {
2449       write_enn (own_buf);
2450       return 0;
2451     }
2452
2453   i = 0;
2454   for (p = own_buf + strlen ("vRun;"); *p; p = next_p)
2455     {
2456       next_p = strchr (p, ';');
2457       if (next_p == NULL)
2458         next_p = p + strlen (p);
2459
2460       if (i == 0 && p == next_p)
2461         new_argv[i] = NULL;
2462       else
2463         {
2464           /* FIXME: Fail request if out of memory instead of dying.  */
2465           new_argv[i] = xmalloc (1 + (next_p - p) / 2);
2466           hex2bin (p, (gdb_byte *) new_argv[i], (next_p - p) / 2);
2467           new_argv[i][(next_p - p) / 2] = '\0';
2468         }
2469
2470       if (*next_p)
2471         next_p++;
2472       i++;
2473     }
2474   new_argv[i] = NULL;
2475
2476   if (new_argv[0] == NULL)
2477     {
2478       /* GDB didn't specify a program to run.  Use the program from the
2479          last run with the new argument list.  */
2480
2481       if (program_argv == NULL)
2482         {
2483           write_enn (own_buf);
2484           freeargv (new_argv);
2485           return 0;
2486         }
2487
2488       new_argv[0] = strdup (program_argv[0]);
2489       if (new_argv[0] == NULL)
2490         {
2491           write_enn (own_buf);
2492           freeargv (new_argv);
2493           return 0;
2494         }
2495     }
2496
2497   /* Free the old argv and install the new one.  */
2498   freeargv (program_argv);
2499   program_argv = new_argv;
2500
2501   start_inferior (program_argv);
2502   if (last_status.kind == TARGET_WAITKIND_STOPPED)
2503     {
2504       prepare_resume_reply (own_buf, last_ptid, &last_status);
2505
2506       /* In non-stop, sending a resume reply doesn't set the general
2507          thread, but GDB assumes a vRun sets it (this is so GDB can
2508          query which is the main thread of the new inferior.  */
2509       if (non_stop)
2510         general_thread = last_ptid;
2511
2512       return 1;
2513     }
2514   else
2515     {
2516       write_enn (own_buf);
2517       return 0;
2518     }
2519 }
2520
2521 /* Kill process.  Return 1 if successful, 0 if failure.  */
2522 int
2523 handle_v_kill (char *own_buf)
2524 {
2525   int pid;
2526   char *p = &own_buf[6];
2527   if (multi_process)
2528     pid = strtol (p, NULL, 16);
2529   else
2530     pid = signal_pid;
2531   if (pid != 0 && kill_inferior (pid) == 0)
2532     {
2533       last_status.kind = TARGET_WAITKIND_SIGNALLED;
2534       last_status.value.sig = GDB_SIGNAL_KILL;
2535       last_ptid = pid_to_ptid (pid);
2536       discard_queued_stop_replies (pid);
2537       write_ok (own_buf);
2538       return 1;
2539     }
2540   else
2541     {
2542       write_enn (own_buf);
2543       return 0;
2544     }
2545 }
2546
2547 /* Handle all of the extended 'v' packets.  */
2548 void
2549 handle_v_requests (char *own_buf, int packet_len, int *new_packet_len)
2550 {
2551   if (!disable_packet_vCont)
2552     {
2553       if (strncmp (own_buf, "vCont;", 6) == 0)
2554         {
2555           require_running (own_buf);
2556           handle_v_cont (own_buf);
2557           return;
2558         }
2559
2560       if (strncmp (own_buf, "vCont?", 6) == 0)
2561         {
2562           strcpy (own_buf, "vCont;c;C;s;S;t");
2563           if (target_supports_range_stepping ())
2564             {
2565               own_buf = own_buf + strlen (own_buf);
2566               strcpy (own_buf, ";r");
2567             }
2568           return;
2569         }
2570     }
2571
2572   if (strncmp (own_buf, "vFile:", 6) == 0
2573       && handle_vFile (own_buf, packet_len, new_packet_len))
2574     return;
2575
2576   if (strncmp (own_buf, "vAttach;", 8) == 0)
2577     {
2578       if ((!extended_protocol || !multi_process) && target_running ())
2579         {
2580           fprintf (stderr, "Already debugging a process\n");
2581           write_enn (own_buf);
2582           return;
2583         }
2584       handle_v_attach (own_buf);
2585       return;
2586     }
2587
2588   if (strncmp (own_buf, "vRun;", 5) == 0)
2589     {
2590       if ((!extended_protocol || !multi_process) && target_running ())
2591         {
2592           fprintf (stderr, "Already debugging a process\n");
2593           write_enn (own_buf);
2594           return;
2595         }
2596       handle_v_run (own_buf);
2597       return;
2598     }
2599
2600   if (strncmp (own_buf, "vKill;", 6) == 0)
2601     {
2602       if (!target_running ())
2603         {
2604           fprintf (stderr, "No process to kill\n");
2605           write_enn (own_buf);
2606           return;
2607         }
2608       handle_v_kill (own_buf);
2609       return;
2610     }
2611
2612   if (handle_notif_ack (own_buf, packet_len))
2613     return;
2614
2615   /* Otherwise we didn't know what packet it was.  Say we didn't
2616      understand it.  */
2617   own_buf[0] = 0;
2618   return;
2619 }
2620
2621 /* Resume inferior and wait for another event.  In non-stop mode,
2622    don't really wait here, but return immediatelly to the event
2623    loop.  */
2624 static void
2625 myresume (char *own_buf, int step, int sig)
2626 {
2627   struct thread_resume resume_info[2];
2628   int n = 0;
2629   int valid_cont_thread;
2630
2631   set_desired_inferior (0);
2632
2633   valid_cont_thread = (!ptid_equal (cont_thread, null_ptid)
2634                          && !ptid_equal (cont_thread, minus_one_ptid));
2635
2636   if (step || sig || valid_cont_thread)
2637     {
2638       resume_info[0].thread = current_ptid;
2639       if (step)
2640         resume_info[0].kind = resume_step;
2641       else
2642         resume_info[0].kind = resume_continue;
2643       resume_info[0].sig = sig;
2644       n++;
2645     }
2646
2647   if (!valid_cont_thread)
2648     {
2649       resume_info[n].thread = minus_one_ptid;
2650       resume_info[n].kind = resume_continue;
2651       resume_info[n].sig = 0;
2652       n++;
2653     }
2654
2655   resume (resume_info, n);
2656 }
2657
2658 /* Callback for for_each_inferior.  Make a new stop reply for each
2659    stopped thread.  */
2660
2661 static int
2662 queue_stop_reply_callback (struct inferior_list_entry *entry, void *arg)
2663 {
2664   struct thread_info *thread = (struct thread_info *) entry;
2665
2666   /* For now, assume targets that don't have this callback also don't
2667      manage the thread's last_status field.  */
2668   if (the_target->thread_stopped == NULL)
2669     {
2670       struct vstop_notif *new_notif = xmalloc (sizeof (*new_notif));
2671
2672       new_notif->ptid = entry->id;
2673       new_notif->status = thread->last_status;
2674       /* Pass the last stop reply back to GDB, but don't notify
2675          yet.  */
2676       notif_event_enque (&notif_stop,
2677                          (struct notif_event *) new_notif);
2678     }
2679   else
2680     {
2681       if (thread_stopped (thread))
2682         {
2683           if (debug_threads)
2684             {
2685               char *status_string
2686                 = target_waitstatus_to_string (&thread->last_status);
2687
2688               debug_printf ("Reporting thread %s as already stopped with %s\n",
2689                             target_pid_to_str (entry->id),
2690                             status_string);
2691
2692               xfree (status_string);
2693             }
2694
2695           gdb_assert (thread->last_status.kind != TARGET_WAITKIND_IGNORE);
2696
2697           /* Pass the last stop reply back to GDB, but don't notify
2698              yet.  */
2699           queue_stop_reply (entry->id, &thread->last_status);
2700         }
2701     }
2702
2703   return 0;
2704 }
2705
2706 /* Set this inferior threads's state as "want-stopped".  We won't
2707    resume this thread until the client gives us another action for
2708    it.  */
2709
2710 static void
2711 gdb_wants_thread_stopped (struct inferior_list_entry *entry)
2712 {
2713   struct thread_info *thread = (struct thread_info *) entry;
2714
2715   thread->last_resume_kind = resume_stop;
2716
2717   if (thread->last_status.kind == TARGET_WAITKIND_IGNORE)
2718     {
2719       /* Most threads are stopped implicitly (all-stop); tag that with
2720          signal 0.  */
2721       thread->last_status.kind = TARGET_WAITKIND_STOPPED;
2722       thread->last_status.value.sig = GDB_SIGNAL_0;
2723     }
2724 }
2725
2726 /* Set all threads' states as "want-stopped".  */
2727
2728 static void
2729 gdb_wants_all_threads_stopped (void)
2730 {
2731   for_each_inferior (&all_threads, gdb_wants_thread_stopped);
2732 }
2733
2734 /* Clear the gdb_detached flag of every process.  */
2735
2736 static void
2737 gdb_reattached_process (struct inferior_list_entry *entry)
2738 {
2739   struct process_info *process = (struct process_info *) entry;
2740
2741   process->gdb_detached = 0;
2742 }
2743
2744 /* Callback for for_each_inferior.  Clear the thread's pending status
2745    flag.  */
2746
2747 static void
2748 clear_pending_status_callback (struct inferior_list_entry *entry)
2749 {
2750   struct thread_info *thread = (struct thread_info *) entry;
2751
2752   thread->status_pending_p = 0;
2753 }
2754
2755 /* Callback for for_each_inferior.  If the thread is stopped with an
2756    interesting event, mark it as having a pending event.  */
2757
2758 static void
2759 set_pending_status_callback (struct inferior_list_entry *entry)
2760 {
2761   struct thread_info *thread = (struct thread_info *) entry;
2762
2763   if (thread->last_status.kind != TARGET_WAITKIND_STOPPED
2764       || (thread->last_status.value.sig != GDB_SIGNAL_0
2765           /* A breakpoint, watchpoint or finished step from a previous
2766              GDB run isn't considered interesting for a new GDB run.
2767              If we left those pending, the new GDB could consider them
2768              random SIGTRAPs.  This leaves out real async traps.  We'd
2769              have to peek into the (target-specific) siginfo to
2770              distinguish those.  */
2771           && thread->last_status.value.sig != GDB_SIGNAL_TRAP))
2772     thread->status_pending_p = 1;
2773 }
2774
2775 /* Callback for find_inferior.  Return true if ENTRY (a thread) has a
2776    pending status to report to GDB.  */
2777
2778 static int
2779 find_status_pending_thread_callback (struct inferior_list_entry *entry, void *data)
2780 {
2781   struct thread_info *thread = (struct thread_info *) entry;
2782
2783   return thread->status_pending_p;
2784 }
2785
2786 /* Status handler for the '?' packet.  */
2787
2788 static void
2789 handle_status (char *own_buf)
2790 {
2791   /* GDB is connected, don't forward events to the target anymore.  */
2792   for_each_inferior (&all_processes, gdb_reattached_process);
2793
2794   /* In non-stop mode, we must send a stop reply for each stopped
2795      thread.  In all-stop mode, just send one for the first stopped
2796      thread we find.  */
2797
2798   if (non_stop)
2799     {
2800       find_inferior (&all_threads, queue_stop_reply_callback, NULL);
2801
2802       /* The first is sent immediatly.  OK is sent if there is no
2803          stopped thread, which is the same handling of the vStopped
2804          packet (by design).  */
2805       notif_write_event (&notif_stop, own_buf);
2806     }
2807   else
2808     {
2809       struct inferior_list_entry *thread = NULL;
2810
2811       pause_all (0);
2812       stabilize_threads ();
2813       gdb_wants_all_threads_stopped ();
2814
2815       /* We can only report one status, but we might be coming out of
2816          non-stop -- if more than one thread is stopped with
2817          interesting events, leave events for the threads we're not
2818          reporting now pending.  They'll be reported the next time the
2819          threads are resumed.  Start by marking all interesting events
2820          as pending.  */
2821       for_each_inferior (&all_threads, set_pending_status_callback);
2822
2823       /* Prefer the last thread that reported an event to GDB (even if
2824          that was a GDB_SIGNAL_TRAP).  */
2825       if (last_status.kind != TARGET_WAITKIND_IGNORE
2826           && last_status.kind != TARGET_WAITKIND_EXITED
2827           && last_status.kind != TARGET_WAITKIND_SIGNALLED)
2828         thread = find_inferior_id (&all_threads, last_ptid);
2829
2830       /* If the last event thread is not found for some reason, look
2831          for some other thread that might have an event to report.  */
2832       if (thread == NULL)
2833         thread = find_inferior (&all_threads,
2834                                 find_status_pending_thread_callback, NULL);
2835
2836       /* If we're still out of luck, simply pick the first thread in
2837          the thread list.  */
2838       if (thread == NULL)
2839         thread = get_first_inferior (&all_threads);
2840
2841       if (thread != NULL)
2842         {
2843           struct thread_info *tp = (struct thread_info *) thread;
2844
2845           /* We're reporting this event, so it's no longer
2846              pending.  */
2847           tp->status_pending_p = 0;
2848
2849           /* GDB assumes the current thread is the thread we're
2850              reporting the status for.  */
2851           general_thread = thread->id;
2852           set_desired_inferior (1);
2853
2854           gdb_assert (tp->last_status.kind != TARGET_WAITKIND_IGNORE);
2855           prepare_resume_reply (own_buf, tp->entry.id, &tp->last_status);
2856         }
2857       else
2858         strcpy (own_buf, "W00");
2859     }
2860 }
2861
2862 static void
2863 gdbserver_version (void)
2864 {
2865   printf ("GNU gdbserver %s%s\n"
2866           "Copyright (C) 2014 Free Software Foundation, Inc.\n"
2867           "gdbserver is free software, covered by the "
2868           "GNU General Public License.\n"
2869           "This gdbserver was configured as \"%s\"\n",
2870           PKGVERSION, version, host_name);
2871 }
2872
2873 static void
2874 gdbserver_usage (FILE *stream)
2875 {
2876   fprintf (stream, "Usage:\tgdbserver [OPTIONS] COMM PROG [ARGS ...]\n"
2877            "\tgdbserver [OPTIONS] --attach COMM PID\n"
2878            "\tgdbserver [OPTIONS] --multi COMM\n"
2879            "\n"
2880            "COMM may either be a tty device (for serial debugging), or \n"
2881            "HOST:PORT to listen for a TCP connection.\n"
2882            "\n"
2883            "Options:\n"
2884            "  --debug               Enable general debugging output.\n"
2885            "  --debug-format=opt1[,opt2,...]\n"
2886            "                        Specify extra content in debugging output.\n"
2887            "                          Options:\n"
2888            "                            all\n"
2889            "                            none\n"
2890 #ifdef HAVE_GETTIMEOFDAY
2891            "                            timestamp\n"
2892 #endif
2893            "  --remote-debug        Enable remote protocol debugging output.\n"
2894            "  --version             Display version information and exit.\n"
2895            "  --wrapper WRAPPER --  Run WRAPPER to start new programs.\n"
2896            "  --once                Exit after the first connection has "
2897                                                                   "closed.\n");
2898   if (REPORT_BUGS_TO[0] && stream == stdout)
2899     fprintf (stream, "Report bugs to \"%s\".\n", REPORT_BUGS_TO);
2900 }
2901
2902 static void
2903 gdbserver_show_disableable (FILE *stream)
2904 {
2905   fprintf (stream, "Disableable packets:\n"
2906            "  vCont       \tAll vCont packets\n"
2907            "  qC          \tQuerying the current thread\n"
2908            "  qfThreadInfo\tThread listing\n"
2909            "  Tthread     \tPassing the thread specifier in the "
2910            "T stop reply packet\n"
2911            "  threads     \tAll of the above\n");
2912 }
2913
2914
2915 #undef require_running
2916 #define require_running(BUF)                    \
2917   if (!target_running ())                       \
2918     {                                           \
2919       write_enn (BUF);                          \
2920       break;                                    \
2921     }
2922
2923 static int
2924 first_thread_of (struct inferior_list_entry *entry, void *args)
2925 {
2926   int pid = * (int *) args;
2927
2928   if (ptid_get_pid (entry->id) == pid)
2929     return 1;
2930
2931   return 0;
2932 }
2933
2934 static void
2935 kill_inferior_callback (struct inferior_list_entry *entry)
2936 {
2937   struct process_info *process = (struct process_info *) entry;
2938   int pid = ptid_get_pid (process->entry.id);
2939
2940   kill_inferior (pid);
2941   discard_queued_stop_replies (pid);
2942 }
2943
2944 /* Callback for for_each_inferior to detach or kill the inferior,
2945    depending on whether we attached to it or not.
2946    We inform the user whether we're detaching or killing the process
2947    as this is only called when gdbserver is about to exit.  */
2948
2949 static void
2950 detach_or_kill_inferior_callback (struct inferior_list_entry *entry)
2951 {
2952   struct process_info *process = (struct process_info *) entry;
2953   int pid = ptid_get_pid (process->entry.id);
2954
2955   if (process->attached)
2956     detach_inferior (pid);
2957   else
2958     kill_inferior (pid);
2959
2960   discard_queued_stop_replies (pid);
2961 }
2962
2963 /* for_each_inferior callback for detach_or_kill_for_exit to print
2964    the pids of started inferiors.  */
2965
2966 static void
2967 print_started_pid (struct inferior_list_entry *entry)
2968 {
2969   struct process_info *process = (struct process_info *) entry;
2970
2971   if (! process->attached)
2972     {
2973       int pid = ptid_get_pid (process->entry.id);
2974       fprintf (stderr, " %d", pid);
2975     }
2976 }
2977
2978 /* for_each_inferior callback for detach_or_kill_for_exit to print
2979    the pids of attached inferiors.  */
2980
2981 static void
2982 print_attached_pid (struct inferior_list_entry *entry)
2983 {
2984   struct process_info *process = (struct process_info *) entry;
2985
2986   if (process->attached)
2987     {
2988       int pid = ptid_get_pid (process->entry.id);
2989       fprintf (stderr, " %d", pid);
2990     }
2991 }
2992
2993 /* Call this when exiting gdbserver with possible inferiors that need
2994    to be killed or detached from.  */
2995
2996 static void
2997 detach_or_kill_for_exit (void)
2998 {
2999   /* First print a list of the inferiors we will be killing/detaching.
3000      This is to assist the user, for example, in case the inferior unexpectedly
3001      dies after we exit: did we screw up or did the inferior exit on its own?
3002      Having this info will save some head-scratching.  */
3003
3004   if (have_started_inferiors_p ())
3005     {
3006       fprintf (stderr, "Killing process(es):");
3007       for_each_inferior (&all_processes, print_started_pid);
3008       fprintf (stderr, "\n");
3009     }
3010   if (have_attached_inferiors_p ())
3011     {
3012       fprintf (stderr, "Detaching process(es):");
3013       for_each_inferior (&all_processes, print_attached_pid);
3014       fprintf (stderr, "\n");
3015     }
3016
3017   /* Now we can kill or detach the inferiors.  */
3018
3019   for_each_inferior (&all_processes, detach_or_kill_inferior_callback);
3020 }
3021
3022 int
3023 main (int argc, char *argv[])
3024 {
3025   int bad_attach;
3026   int pid;
3027   char *arg_end, *port;
3028   char **next_arg = &argv[1];
3029   volatile int multi_mode = 0;
3030   volatile int attach = 0;
3031   int was_running;
3032
3033   while (*next_arg != NULL && **next_arg == '-')
3034     {
3035       if (strcmp (*next_arg, "--version") == 0)
3036         {
3037           gdbserver_version ();
3038           exit (0);
3039         }
3040       else if (strcmp (*next_arg, "--help") == 0)
3041         {
3042           gdbserver_usage (stdout);
3043           exit (0);
3044         }
3045       else if (strcmp (*next_arg, "--attach") == 0)
3046         attach = 1;
3047       else if (strcmp (*next_arg, "--multi") == 0)
3048         multi_mode = 1;
3049       else if (strcmp (*next_arg, "--wrapper") == 0)
3050         {
3051           next_arg++;
3052
3053           wrapper_argv = next_arg;
3054           while (*next_arg != NULL && strcmp (*next_arg, "--") != 0)
3055             next_arg++;
3056
3057           if (next_arg == wrapper_argv || *next_arg == NULL)
3058             {
3059               gdbserver_usage (stderr);
3060               exit (1);
3061             }
3062
3063           /* Consume the "--".  */
3064           *next_arg = NULL;
3065         }
3066       else if (strcmp (*next_arg, "--debug") == 0)
3067         debug_threads = 1;
3068       else if (strncmp (*next_arg,
3069                         "--debug-format=",
3070                         sizeof ("--debug-format=") - 1) == 0)
3071         {
3072           char *error_msg
3073             = parse_debug_format_options ((*next_arg)
3074                                           + sizeof ("--debug-format=") - 1, 0);
3075
3076           if (error_msg != NULL)
3077             {
3078               fprintf (stderr, "%s", error_msg);
3079               exit (1);
3080             }
3081         }
3082       else if (strcmp (*next_arg, "--remote-debug") == 0)
3083         remote_debug = 1;
3084       else if (strcmp (*next_arg, "--disable-packet") == 0)
3085         {
3086           gdbserver_show_disableable (stdout);
3087           exit (0);
3088         }
3089       else if (strncmp (*next_arg,
3090                         "--disable-packet=",
3091                         sizeof ("--disable-packet=") - 1) == 0)
3092         {
3093           char *packets, *tok;
3094
3095           packets = *next_arg += sizeof ("--disable-packet=") - 1;
3096           for (tok = strtok (packets, ",");
3097                tok != NULL;
3098                tok = strtok (NULL, ","))
3099             {
3100               if (strcmp ("vCont", tok) == 0)
3101                 disable_packet_vCont = 1;
3102               else if (strcmp ("Tthread", tok) == 0)
3103                 disable_packet_Tthread = 1;
3104               else if (strcmp ("qC", tok) == 0)
3105                 disable_packet_qC = 1;
3106               else if (strcmp ("qfThreadInfo", tok) == 0)
3107                 disable_packet_qfThreadInfo = 1;
3108               else if (strcmp ("threads", tok) == 0)
3109                 {
3110                   disable_packet_vCont = 1;
3111                   disable_packet_Tthread = 1;
3112                   disable_packet_qC = 1;
3113                   disable_packet_qfThreadInfo = 1;
3114                 }
3115               else
3116                 {
3117                   fprintf (stderr, "Don't know how to disable \"%s\".\n\n",
3118                            tok);
3119                   gdbserver_show_disableable (stderr);
3120                   exit (1);
3121                 }
3122             }
3123         }
3124       else if (strcmp (*next_arg, "-") == 0)
3125         {
3126           /* "-" specifies a stdio connection and is a form of port
3127              specification.  */
3128           *next_arg = STDIO_CONNECTION_NAME;
3129           break;
3130         }
3131       else if (strcmp (*next_arg, "--disable-randomization") == 0)
3132         disable_randomization = 1;
3133       else if (strcmp (*next_arg, "--no-disable-randomization") == 0)
3134         disable_randomization = 0;
3135       else if (strcmp (*next_arg, "--once") == 0)
3136         run_once = 1;
3137       else
3138         {
3139           fprintf (stderr, "Unknown argument: %s\n", *next_arg);
3140           exit (1);
3141         }
3142
3143       next_arg++;
3144       continue;
3145     }
3146
3147   if (setjmp (toplevel))
3148     {
3149       fprintf (stderr, "Exiting\n");
3150       exit (1);
3151     }
3152
3153   port = *next_arg;
3154   next_arg++;
3155   if (port == NULL || (!attach && !multi_mode && *next_arg == NULL))
3156     {
3157       gdbserver_usage (stderr);
3158       exit (1);
3159     }
3160
3161   /* Remember stdio descriptors.  LISTEN_DESC must not be listed, it will be
3162      opened by remote_prepare.  */
3163   notice_open_fds ();
3164
3165   /* We need to know whether the remote connection is stdio before
3166      starting the inferior.  Inferiors created in this scenario have
3167      stdin,stdout redirected.  So do this here before we call
3168      start_inferior.  */
3169   remote_prepare (port);
3170
3171   bad_attach = 0;
3172   pid = 0;
3173
3174   /* --attach used to come after PORT, so allow it there for
3175        compatibility.  */
3176   if (*next_arg != NULL && strcmp (*next_arg, "--attach") == 0)
3177     {
3178       attach = 1;
3179       next_arg++;
3180     }
3181
3182   if (attach
3183       && (*next_arg == NULL
3184           || (*next_arg)[0] == '\0'
3185           || (pid = strtoul (*next_arg, &arg_end, 0)) == 0
3186           || *arg_end != '\0'
3187           || next_arg[1] != NULL))
3188     bad_attach = 1;
3189
3190   if (bad_attach)
3191     {
3192       gdbserver_usage (stderr);
3193       exit (1);
3194     }
3195
3196   initialize_async_io ();
3197   initialize_low ();
3198   initialize_event_loop ();
3199   if (target_supports_tracepoints ())
3200     initialize_tracepoint ();
3201
3202   own_buf = xmalloc (PBUFSIZ + 1);
3203   mem_buf = xmalloc (PBUFSIZ);
3204
3205   if (pid == 0 && *next_arg != NULL)
3206     {
3207       int i, n;
3208
3209       n = argc - (next_arg - argv);
3210       program_argv = xmalloc (sizeof (char *) * (n + 1));
3211       for (i = 0; i < n; i++)
3212         program_argv[i] = xstrdup (next_arg[i]);
3213       program_argv[i] = NULL;
3214
3215       /* Wait till we are at first instruction in program.  */
3216       start_inferior (program_argv);
3217
3218       /* We are now (hopefully) stopped at the first instruction of
3219          the target process.  This assumes that the target process was
3220          successfully created.  */
3221     }
3222   else if (pid != 0)
3223     {
3224       if (attach_inferior (pid) == -1)
3225         error ("Attaching not supported on this target");
3226
3227       /* Otherwise succeeded.  */
3228     }
3229   else
3230     {
3231       last_status.kind = TARGET_WAITKIND_EXITED;
3232       last_status.value.integer = 0;
3233       last_ptid = minus_one_ptid;
3234     }
3235
3236   initialize_notif ();
3237
3238   /* Don't report shared library events on the initial connection,
3239      even if some libraries are preloaded.  Avoids the "stopped by
3240      shared library event" notice on gdb side.  */
3241   dlls_changed = 0;
3242
3243   if (setjmp (toplevel))
3244     {
3245       /* If something fails and longjmps while detaching or killing
3246          inferiors, we'd end up here again, stuck in an infinite loop
3247          trap.  Be sure that if that happens, we exit immediately
3248          instead.  */
3249       if (setjmp (toplevel) == 0)
3250         detach_or_kill_for_exit ();
3251       else
3252         fprintf (stderr, "Detach or kill failed.  Exiting\n");
3253       exit (1);
3254     }
3255
3256   if (last_status.kind == TARGET_WAITKIND_EXITED
3257       || last_status.kind == TARGET_WAITKIND_SIGNALLED)
3258     was_running = 0;
3259   else
3260     was_running = 1;
3261
3262   if (!was_running && !multi_mode)
3263     {
3264       fprintf (stderr, "No program to debug.  GDBserver exiting.\n");
3265       exit (1);
3266     }
3267
3268   while (1)
3269     {
3270       noack_mode = 0;
3271       multi_process = 0;
3272       /* Be sure we're out of tfind mode.  */
3273       current_traceframe = -1;
3274
3275       remote_open (port);
3276
3277       if (setjmp (toplevel) != 0)
3278         {
3279           /* An error occurred.  */
3280           if (response_needed)
3281             {
3282               write_enn (own_buf);
3283               putpkt (own_buf);
3284             }
3285         }
3286
3287       /* Wait for events.  This will return when all event sources are
3288          removed from the event loop.  */
3289       start_event_loop ();
3290
3291       /* If an exit was requested (using the "monitor exit" command),
3292          terminate now.  The only other way to get here is for
3293          getpkt to fail; close the connection and reopen it at the
3294          top of the loop.  */
3295
3296       if (exit_requested || run_once)
3297         {
3298           /* If something fails and longjmps while detaching or
3299              killing inferiors, we'd end up here again, stuck in an
3300              infinite loop trap.  Be sure that if that happens, we
3301              exit immediately instead.  */
3302           if (setjmp (toplevel) == 0)
3303             {
3304               detach_or_kill_for_exit ();
3305               exit (0);
3306             }
3307           else
3308             {
3309               fprintf (stderr, "Detach or kill failed.  Exiting\n");
3310               exit (1);
3311             }
3312         }
3313
3314       fprintf (stderr,
3315                "Remote side has terminated connection.  "
3316                "GDBserver will reopen the connection.\n");
3317
3318       /* Get rid of any pending statuses.  An eventual reconnection
3319          (by the same GDB instance or another) will refresh all its
3320          state from scratch.  */
3321       discard_queued_stop_replies (-1);
3322       for_each_inferior (&all_threads, clear_pending_status_callback);
3323
3324       if (tracing)
3325         {
3326           if (disconnected_tracing)
3327             {
3328               /* Try to enable non-stop/async mode, so we we can both
3329                  wait for an async socket accept, and handle async
3330                  target events simultaneously.  There's also no point
3331                  either in having the target always stop all threads,
3332                  when we're going to pass signals down without
3333                  informing GDB.  */
3334               if (!non_stop)
3335                 {
3336                   if (start_non_stop (1))
3337                     non_stop = 1;
3338
3339                   /* Detaching implicitly resumes all threads; simply
3340                      disconnecting does not.  */
3341                 }
3342             }
3343           else
3344             {
3345               fprintf (stderr,
3346                        "Disconnected tracing disabled; stopping trace run.\n");
3347               stop_tracing ();
3348             }
3349         }
3350     }
3351 }
3352
3353 /* Process options coming from Z packets for *point at address
3354    POINT_ADDR.  PACKET is the packet buffer.  *PACKET is updated
3355    to point to the first char after the last processed option.  */
3356
3357 static void
3358 process_point_options (CORE_ADDR point_addr, char **packet)
3359 {
3360   char *dataptr = *packet;
3361   int persist;
3362
3363   /* Check if data has the correct format.  */
3364   if (*dataptr != ';')
3365     return;
3366
3367   dataptr++;
3368
3369   while (*dataptr)
3370     {
3371       if (*dataptr == ';')
3372         ++dataptr;
3373
3374       if (*dataptr == 'X')
3375         {
3376           /* Conditional expression.  */
3377           if (debug_threads)
3378             debug_printf ("Found breakpoint condition.\n");
3379           add_breakpoint_condition (point_addr, &dataptr);
3380         }
3381       else if (strncmp (dataptr, "cmds:", strlen ("cmds:")) == 0)
3382         {
3383           dataptr += strlen ("cmds:");
3384           if (debug_threads)
3385             debug_printf ("Found breakpoint commands %s.\n", dataptr);
3386           persist = (*dataptr == '1');
3387           dataptr += 2;
3388           add_breakpoint_commands (point_addr, &dataptr, persist);
3389         }
3390       else
3391         {
3392           fprintf (stderr, "Unknown token %c, ignoring.\n",
3393                    *dataptr);
3394           /* Skip tokens until we find one that we recognize.  */
3395           while (*dataptr && *dataptr != ';')
3396             dataptr++;
3397         }
3398     }
3399   *packet = dataptr;
3400 }
3401
3402 /* Event loop callback that handles a serial event.  The first byte in
3403    the serial buffer gets us here.  We expect characters to arrive at
3404    a brisk pace, so we read the rest of the packet with a blocking
3405    getpkt call.  */
3406
3407 static int
3408 process_serial_event (void)
3409 {
3410   char ch;
3411   int i = 0;
3412   int signal;
3413   unsigned int len;
3414   int res;
3415   CORE_ADDR mem_addr;
3416   int pid;
3417   unsigned char sig;
3418   int packet_len;
3419   int new_packet_len = -1;
3420
3421   /* Used to decide when gdbserver should exit in
3422      multi-mode/remote.  */
3423   static int have_ran = 0;
3424
3425   if (!have_ran)
3426     have_ran = target_running ();
3427
3428   disable_async_io ();
3429
3430   response_needed = 0;
3431   packet_len = getpkt (own_buf);
3432   if (packet_len <= 0)
3433     {
3434       remote_close ();
3435       /* Force an event loop break.  */
3436       return -1;
3437     }
3438   response_needed = 1;
3439
3440   i = 0;
3441   ch = own_buf[i++];
3442   switch (ch)
3443     {
3444     case 'q':
3445       handle_query (own_buf, packet_len, &new_packet_len);
3446       break;
3447     case 'Q':
3448       handle_general_set (own_buf);
3449       break;
3450     case 'D':
3451       require_running (own_buf);
3452
3453       if (multi_process)
3454         {
3455           i++; /* skip ';' */
3456           pid = strtol (&own_buf[i], NULL, 16);
3457         }
3458       else
3459         pid = ptid_get_pid (current_ptid);
3460
3461       if ((tracing && disconnected_tracing) || any_persistent_commands ())
3462         {
3463           struct thread_resume resume_info;
3464           struct process_info *process = find_process_pid (pid);
3465
3466           if (process == NULL)
3467             {
3468               write_enn (own_buf);
3469               break;
3470             }
3471
3472           if (tracing && disconnected_tracing)
3473             fprintf (stderr,
3474                      "Disconnected tracing in effect, "
3475                      "leaving gdbserver attached to the process\n");
3476
3477           if (any_persistent_commands ())
3478             fprintf (stderr,
3479                      "Persistent commands are present, "
3480                      "leaving gdbserver attached to the process\n");
3481
3482           /* Make sure we're in non-stop/async mode, so we we can both
3483              wait for an async socket accept, and handle async target
3484              events simultaneously.  There's also no point either in
3485              having the target stop all threads, when we're going to
3486              pass signals down without informing GDB.  */
3487           if (!non_stop)
3488             {
3489               if (debug_threads)
3490                 debug_printf ("Forcing non-stop mode\n");
3491
3492               non_stop = 1;
3493               start_non_stop (1);
3494             }
3495
3496           process->gdb_detached = 1;
3497
3498           /* Detaching implicitly resumes all threads.  */
3499           resume_info.thread = minus_one_ptid;
3500           resume_info.kind = resume_continue;
3501           resume_info.sig = 0;
3502           (*the_target->resume) (&resume_info, 1);
3503
3504           write_ok (own_buf);
3505           break; /* from switch/case */
3506         }
3507
3508       fprintf (stderr, "Detaching from process %d\n", pid);
3509       stop_tracing ();
3510       if (detach_inferior (pid) != 0)
3511         write_enn (own_buf);
3512       else
3513         {
3514           discard_queued_stop_replies (pid);
3515           write_ok (own_buf);
3516
3517           if (extended_protocol)
3518             {
3519               /* Treat this like a normal program exit.  */
3520               last_status.kind = TARGET_WAITKIND_EXITED;
3521               last_status.value.integer = 0;
3522               last_ptid = pid_to_ptid (pid);
3523
3524               current_inferior = NULL;
3525             }
3526           else
3527             {
3528               putpkt (own_buf);
3529               remote_close ();
3530
3531               /* If we are attached, then we can exit.  Otherwise, we
3532                  need to hang around doing nothing, until the child is
3533                  gone.  */
3534               join_inferior (pid);
3535               exit (0);
3536             }
3537         }
3538       break;
3539     case '!':
3540       extended_protocol = 1;
3541       write_ok (own_buf);
3542       break;
3543     case '?':
3544       handle_status (own_buf);
3545       break;
3546     case 'H':
3547       if (own_buf[1] == 'c' || own_buf[1] == 'g' || own_buf[1] == 's')
3548         {
3549           ptid_t gdb_id, thread_id;
3550           int pid;
3551
3552           require_running (own_buf);
3553
3554           gdb_id = read_ptid (&own_buf[2], NULL);
3555
3556           pid = ptid_get_pid (gdb_id);
3557
3558           if (ptid_equal (gdb_id, null_ptid)
3559               || ptid_equal (gdb_id, minus_one_ptid))
3560             thread_id = null_ptid;
3561           else if (pid != 0
3562                    && ptid_equal (pid_to_ptid (pid),
3563                                   gdb_id))
3564             {
3565               struct thread_info *thread =
3566                 (struct thread_info *) find_inferior (&all_threads,
3567                                                       first_thread_of,
3568                                                       &pid);
3569               if (!thread)
3570                 {
3571                   write_enn (own_buf);
3572                   break;
3573                 }
3574
3575               thread_id = thread->entry.id;
3576             }
3577           else
3578             {
3579               thread_id = gdb_id_to_thread_id (gdb_id);
3580               if (ptid_equal (thread_id, null_ptid))
3581                 {
3582                   write_enn (own_buf);
3583                   break;
3584                 }
3585             }
3586
3587           if (own_buf[1] == 'g')
3588             {
3589               if (ptid_equal (thread_id, null_ptid))
3590                 {
3591                   /* GDB is telling us to choose any thread.  Check if
3592                      the currently selected thread is still valid. If
3593                      it is not, select the first available.  */
3594                   struct thread_info *thread =
3595                     (struct thread_info *) find_inferior_id (&all_threads,
3596                                                              general_thread);
3597                   if (thread == NULL)
3598                     {
3599                       thread = get_first_thread ();
3600                       thread_id = thread->entry.id;
3601                     }
3602                 }
3603
3604               general_thread = thread_id;
3605               set_desired_inferior (1);
3606             }
3607           else if (own_buf[1] == 'c')
3608             cont_thread = thread_id;
3609
3610           write_ok (own_buf);
3611         }
3612       else
3613         {
3614           /* Silently ignore it so that gdb can extend the protocol
3615              without compatibility headaches.  */
3616           own_buf[0] = '\0';
3617         }
3618       break;
3619     case 'g':
3620       require_running (own_buf);
3621       if (current_traceframe >= 0)
3622         {
3623           struct regcache *regcache
3624             = new_register_cache (current_target_desc ());
3625
3626           if (fetch_traceframe_registers (current_traceframe,
3627                                           regcache, -1) == 0)
3628             registers_to_string (regcache, own_buf);
3629           else
3630             write_enn (own_buf);
3631           free_register_cache (regcache);
3632         }
3633       else
3634         {
3635           struct regcache *regcache;
3636
3637           set_desired_inferior (1);
3638           regcache = get_thread_regcache (current_inferior, 1);
3639           registers_to_string (regcache, own_buf);
3640         }
3641       break;
3642     case 'G':
3643       require_running (own_buf);
3644       if (current_traceframe >= 0)
3645         write_enn (own_buf);
3646       else
3647         {
3648           struct regcache *regcache;
3649
3650           set_desired_inferior (1);
3651           regcache = get_thread_regcache (current_inferior, 1);
3652           registers_from_string (regcache, &own_buf[1]);
3653           write_ok (own_buf);
3654         }
3655       break;
3656     case 'm':
3657       require_running (own_buf);
3658       decode_m_packet (&own_buf[1], &mem_addr, &len);
3659       res = gdb_read_memory (mem_addr, mem_buf, len);
3660       if (res < 0)
3661         write_enn (own_buf);
3662       else
3663         bin2hex (mem_buf, own_buf, res);
3664       break;
3665     case 'M':
3666       require_running (own_buf);
3667       decode_M_packet (&own_buf[1], &mem_addr, &len, &mem_buf);
3668       if (gdb_write_memory (mem_addr, mem_buf, len) == 0)
3669         write_ok (own_buf);
3670       else
3671         write_enn (own_buf);
3672       break;
3673     case 'X':
3674       require_running (own_buf);
3675       if (decode_X_packet (&own_buf[1], packet_len - 1,
3676                            &mem_addr, &len, &mem_buf) < 0
3677           || gdb_write_memory (mem_addr, mem_buf, len) != 0)
3678         write_enn (own_buf);
3679       else
3680         write_ok (own_buf);
3681       break;
3682     case 'C':
3683       require_running (own_buf);
3684       hex2bin (own_buf + 1, &sig, 1);
3685       if (gdb_signal_to_host_p (sig))
3686         signal = gdb_signal_to_host (sig);
3687       else
3688         signal = 0;
3689       myresume (own_buf, 0, signal);
3690       break;
3691     case 'S':
3692       require_running (own_buf);
3693       hex2bin (own_buf + 1, &sig, 1);
3694       if (gdb_signal_to_host_p (sig))
3695         signal = gdb_signal_to_host (sig);
3696       else
3697         signal = 0;
3698       myresume (own_buf, 1, signal);
3699       break;
3700     case 'c':
3701       require_running (own_buf);
3702       signal = 0;
3703       myresume (own_buf, 0, signal);
3704       break;
3705     case 's':
3706       require_running (own_buf);
3707       signal = 0;
3708       myresume (own_buf, 1, signal);
3709       break;
3710     case 'Z':  /* insert_ ... */
3711       /* Fallthrough.  */
3712     case 'z':  /* remove_ ... */
3713       {
3714         char *dataptr;
3715         ULONGEST addr;
3716         int len;
3717         char type = own_buf[1];
3718         int res;
3719         const int insert = ch == 'Z';
3720         char *p = &own_buf[3];
3721
3722         p = unpack_varlen_hex (p, &addr);
3723         len = strtol (p + 1, &dataptr, 16);
3724
3725         /* Default to unrecognized/unsupported.  */
3726         res = 1;
3727         switch (type)
3728           {
3729           case '0': /* software-breakpoint */
3730           case '1': /* hardware-breakpoint */
3731           case '2': /* write watchpoint */
3732           case '3': /* read watchpoint */
3733           case '4': /* access watchpoint */
3734             require_running (own_buf);
3735             if (insert && the_target->insert_point != NULL)
3736               {
3737                 /* Insert the breakpoint.  If it is already inserted, nothing
3738                    will take place.  */
3739                 res = (*the_target->insert_point) (type, addr, len);
3740
3741                 /* GDB may have sent us a list of *point parameters to be
3742                    evaluated on the target's side.  Read such list here.  If we
3743                    already have a list of parameters, GDB is telling us to drop
3744                    that list and use this one instead.  */
3745                 if (!res && (type == '0' || type == '1'))
3746                   {
3747                     /* Remove previous conditions.  */
3748                     clear_gdb_breakpoint_conditions (addr);
3749                     process_point_options (addr, &dataptr);
3750                   }
3751               }
3752             else if (!insert && the_target->remove_point != NULL)
3753               res = (*the_target->remove_point) (type, addr, len);
3754             break;
3755           default:
3756             break;
3757           }
3758
3759         if (res == 0)
3760           write_ok (own_buf);
3761         else if (res == 1)
3762           /* Unsupported.  */
3763           own_buf[0] = '\0';
3764         else
3765           write_enn (own_buf);
3766         break;
3767       }
3768     case 'k':
3769       response_needed = 0;
3770       if (!target_running ())
3771         /* The packet we received doesn't make sense - but we can't
3772            reply to it, either.  */
3773         return 0;
3774
3775       fprintf (stderr, "Killing all inferiors\n");
3776       for_each_inferior (&all_processes, kill_inferior_callback);
3777
3778       /* When using the extended protocol, we wait with no program
3779          running.  The traditional protocol will exit instead.  */
3780       if (extended_protocol)
3781         {
3782           last_status.kind = TARGET_WAITKIND_EXITED;
3783           last_status.value.sig = GDB_SIGNAL_KILL;
3784           return 0;
3785         }
3786       else
3787         exit (0);
3788
3789     case 'T':
3790       {
3791         ptid_t gdb_id, thread_id;
3792
3793         require_running (own_buf);
3794
3795         gdb_id = read_ptid (&own_buf[1], NULL);
3796         thread_id = gdb_id_to_thread_id (gdb_id);
3797         if (ptid_equal (thread_id, null_ptid))
3798           {
3799             write_enn (own_buf);
3800             break;
3801           }
3802
3803         if (mythread_alive (thread_id))
3804           write_ok (own_buf);
3805         else
3806           write_enn (own_buf);
3807       }
3808       break;
3809     case 'R':
3810       response_needed = 0;
3811
3812       /* Restarting the inferior is only supported in the extended
3813          protocol.  */
3814       if (extended_protocol)
3815         {
3816           if (target_running ())
3817             for_each_inferior (&all_processes,
3818                                kill_inferior_callback);
3819           fprintf (stderr, "GDBserver restarting\n");
3820
3821           /* Wait till we are at 1st instruction in prog.  */
3822           if (program_argv != NULL)
3823             start_inferior (program_argv);
3824           else
3825             {
3826               last_status.kind = TARGET_WAITKIND_EXITED;
3827               last_status.value.sig = GDB_SIGNAL_KILL;
3828             }
3829           return 0;
3830         }
3831       else
3832         {
3833           /* It is a request we don't understand.  Respond with an
3834              empty packet so that gdb knows that we don't support this
3835              request.  */
3836           own_buf[0] = '\0';
3837           break;
3838         }
3839     case 'v':
3840       /* Extended (long) request.  */
3841       handle_v_requests (own_buf, packet_len, &new_packet_len);
3842       break;
3843
3844     default:
3845       /* It is a request we don't understand.  Respond with an empty
3846          packet so that gdb knows that we don't support this
3847          request.  */
3848       own_buf[0] = '\0';
3849       break;
3850     }
3851
3852   if (new_packet_len != -1)
3853     putpkt_binary (own_buf, new_packet_len);
3854   else
3855     putpkt (own_buf);
3856
3857   response_needed = 0;
3858
3859   if (!extended_protocol && have_ran && !target_running ())
3860     {
3861       /* In non-stop, defer exiting until GDB had a chance to query
3862          the whole vStopped list (until it gets an OK).  */
3863       if (QUEUE_is_empty (notif_event_p, notif_stop.queue))
3864         {
3865           /* Be transparent when GDB is connected through stdio -- no
3866              need to spam GDB's console.  */
3867           if (!remote_connection_is_stdio ())
3868             fprintf (stderr, "GDBserver exiting\n");
3869           remote_close ();
3870           exit (0);
3871         }
3872     }
3873
3874   if (exit_requested)
3875     return -1;
3876
3877   return 0;
3878 }
3879
3880 /* Event-loop callback for serial events.  */
3881
3882 int
3883 handle_serial_event (int err, gdb_client_data client_data)
3884 {
3885   if (debug_threads)
3886     debug_printf ("handling possible serial event\n");
3887
3888   /* Really handle it.  */
3889   if (process_serial_event () < 0)
3890     return -1;
3891
3892   /* Be sure to not change the selected inferior behind GDB's back.
3893      Important in the non-stop mode asynchronous protocol.  */
3894   set_desired_inferior (1);
3895
3896   return 0;
3897 }
3898
3899 /* Event-loop callback for target events.  */
3900
3901 int
3902 handle_target_event (int err, gdb_client_data client_data)
3903 {
3904   if (debug_threads)
3905     debug_printf ("handling possible target event\n");
3906
3907   last_ptid = mywait (minus_one_ptid, &last_status,
3908                       TARGET_WNOHANG, 1);
3909
3910   if (last_status.kind == TARGET_WAITKIND_NO_RESUMED)
3911     {
3912       /* No RSP support for this yet.  */
3913     }
3914   else if (last_status.kind != TARGET_WAITKIND_IGNORE)
3915     {
3916       int pid = ptid_get_pid (last_ptid);
3917       struct process_info *process = find_process_pid (pid);
3918       int forward_event = !gdb_connected () || process->gdb_detached;
3919
3920       if (last_status.kind == TARGET_WAITKIND_EXITED
3921           || last_status.kind == TARGET_WAITKIND_SIGNALLED)
3922         {
3923           mark_breakpoints_out (process);
3924           mourn_inferior (process);
3925         }
3926       else
3927         {
3928           /* We're reporting this thread as stopped.  Update its
3929              "want-stopped" state to what the client wants, until it
3930              gets a new resume action.  */
3931           current_inferior->last_resume_kind = resume_stop;
3932           current_inferior->last_status = last_status;
3933         }
3934
3935       if (forward_event)
3936         {
3937           if (!target_running ())
3938             {
3939               /* The last process exited.  We're done.  */
3940               exit (0);
3941             }
3942
3943           if (last_status.kind == TARGET_WAITKIND_STOPPED)
3944             {
3945               /* A thread stopped with a signal, but gdb isn't
3946                  connected to handle it.  Pass it down to the
3947                  inferior, as if it wasn't being traced.  */
3948               struct thread_resume resume_info;
3949
3950               if (debug_threads)
3951                 debug_printf ("GDB not connected; forwarding event %d for"
3952                               " [%s]\n",
3953                               (int) last_status.kind,
3954                               target_pid_to_str (last_ptid));
3955
3956               resume_info.thread = last_ptid;
3957               resume_info.kind = resume_continue;
3958               resume_info.sig = gdb_signal_to_host (last_status.value.sig);
3959               (*the_target->resume) (&resume_info, 1);
3960             }
3961           else if (debug_threads)
3962             debug_printf ("GDB not connected; ignoring event %d for [%s]\n",
3963                           (int) last_status.kind,
3964                           target_pid_to_str (last_ptid));
3965         }
3966       else
3967         {
3968           struct vstop_notif *vstop_notif
3969             = xmalloc (sizeof (struct vstop_notif));
3970
3971           vstop_notif->status = last_status;
3972           vstop_notif->ptid = last_ptid;
3973           /* Push Stop notification.  */
3974           notif_push (&notif_stop,
3975                       (struct notif_event *) vstop_notif);
3976         }
3977     }
3978
3979   /* Be sure to not change the selected inferior behind GDB's back.
3980      Important in the non-stop mode asynchronous protocol.  */
3981   set_desired_inferior (1);
3982
3983   return 0;
3984 }