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