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