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