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