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