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