Fix compile error with use of 'typename' outside of template
[external/binutils.git] / gdb / gdbserver / remote-utils.c
1 /* Remote utility routines for the remote server for GDB.
2    Copyright (C) 1986-2016 Free Software Foundation, Inc.
3
4    This file is part of GDB.
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 3 of the License, or
9    (at your option) any later version.
10
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
18
19 #include "server.h"
20 #include "terminal.h"
21 #include "target.h"
22 #include "gdbthread.h"
23 #include "tdesc.h"
24 #include "dll.h"
25 #include "rsp-low.h"
26 #include <ctype.h>
27 #if HAVE_SYS_IOCTL_H
28 #include <sys/ioctl.h>
29 #endif
30 #if HAVE_SYS_FILE_H
31 #include <sys/file.h>
32 #endif
33 #if HAVE_NETINET_IN_H
34 #include <netinet/in.h>
35 #endif
36 #if HAVE_SYS_SOCKET_H
37 #include <sys/socket.h>
38 #endif
39 #if HAVE_NETDB_H
40 #include <netdb.h>
41 #endif
42 #if HAVE_NETINET_TCP_H
43 #include <netinet/tcp.h>
44 #endif
45 #if HAVE_SYS_IOCTL_H
46 #include <sys/ioctl.h>
47 #endif
48 #if HAVE_SIGNAL_H
49 #include <signal.h>
50 #endif
51 #if HAVE_FCNTL_H
52 #include <fcntl.h>
53 #endif
54 #include "gdb_sys_time.h"
55 #include <unistd.h>
56 #if HAVE_ARPA_INET_H
57 #include <arpa/inet.h>
58 #endif
59 #include <sys/stat.h>
60
61 #if USE_WIN32API
62 #include <winsock2.h>
63 #endif
64
65 #if __QNX__
66 #include <sys/iomgr.h>
67 #endif /* __QNX__ */
68
69 #ifndef HAVE_SOCKLEN_T
70 typedef int socklen_t;
71 #endif
72
73 #ifndef IN_PROCESS_AGENT
74
75 #if USE_WIN32API
76 # define INVALID_DESCRIPTOR INVALID_SOCKET
77 #else
78 # define INVALID_DESCRIPTOR -1
79 #endif
80
81 /* Extra value for readchar_callback.  */
82 enum {
83   /* The callback is currently not scheduled.  */
84   NOT_SCHEDULED = -1
85 };
86
87 /* Status of the readchar callback.
88    Either NOT_SCHEDULED or the callback id.  */
89 static int readchar_callback = NOT_SCHEDULED;
90
91 static int readchar (void);
92 static void reset_readchar (void);
93 static void reschedule (void);
94
95 /* A cache entry for a successfully looked-up symbol.  */
96 struct sym_cache
97 {
98   char *name;
99   CORE_ADDR addr;
100   struct sym_cache *next;
101 };
102
103 int remote_debug = 0;
104 struct ui_file *gdb_stdlog;
105
106 static int remote_is_stdio = 0;
107
108 static gdb_fildes_t remote_desc = INVALID_DESCRIPTOR;
109 static gdb_fildes_t listen_desc = INVALID_DESCRIPTOR;
110
111 /* FIXME headerize? */
112 extern int using_threads;
113 extern int debug_threads;
114
115 /* If true, then GDB has requested noack mode.  */
116 int noack_mode = 0;
117 /* If true, then we tell GDB to use noack mode by default.  */
118 int transport_is_reliable = 0;
119
120 #ifdef USE_WIN32API
121 # define read(fd, buf, len) recv (fd, (char *) buf, len, 0)
122 # define write(fd, buf, len) send (fd, (char *) buf, len, 0)
123 #endif
124
125 int
126 gdb_connected (void)
127 {
128   return remote_desc != INVALID_DESCRIPTOR;
129 }
130
131 /* Return true if the remote connection is over stdio.  */
132
133 int
134 remote_connection_is_stdio (void)
135 {
136   return remote_is_stdio;
137 }
138
139 static void
140 enable_async_notification (int fd)
141 {
142 #if defined(F_SETFL) && defined (FASYNC)
143   int save_fcntl_flags;
144
145   save_fcntl_flags = fcntl (fd, F_GETFL, 0);
146   fcntl (fd, F_SETFL, save_fcntl_flags | FASYNC);
147 #if defined (F_SETOWN)
148   fcntl (fd, F_SETOWN, getpid ());
149 #endif
150 #endif
151 }
152
153 static int
154 handle_accept_event (int err, gdb_client_data client_data)
155 {
156   struct sockaddr_in sockaddr;
157   socklen_t tmp;
158
159   if (debug_threads)
160     debug_printf ("handling possible accept event\n");
161
162   tmp = sizeof (sockaddr);
163   remote_desc = accept (listen_desc, (struct sockaddr *) &sockaddr, &tmp);
164   if (remote_desc == -1)
165     perror_with_name ("Accept failed");
166
167   /* Enable TCP keep alive process. */
168   tmp = 1;
169   setsockopt (remote_desc, SOL_SOCKET, SO_KEEPALIVE,
170               (char *) &tmp, sizeof (tmp));
171
172   /* Tell TCP not to delay small packets.  This greatly speeds up
173      interactive response. */
174   tmp = 1;
175   setsockopt (remote_desc, IPPROTO_TCP, TCP_NODELAY,
176               (char *) &tmp, sizeof (tmp));
177
178 #ifndef USE_WIN32API
179   signal (SIGPIPE, SIG_IGN);    /* If we don't do this, then gdbserver simply
180                                    exits when the remote side dies.  */
181 #endif
182
183   if (run_once)
184     {
185 #ifndef USE_WIN32API
186       close (listen_desc);              /* No longer need this */
187 #else
188       closesocket (listen_desc);        /* No longer need this */
189 #endif
190     }
191
192   /* Even if !RUN_ONCE no longer notice new connections.  Still keep the
193      descriptor open for add_file_handler to wait for a new connection.  */
194   delete_file_handler (listen_desc);
195
196   /* Convert IP address to string.  */
197   fprintf (stderr, "Remote debugging from host %s\n",
198            inet_ntoa (sockaddr.sin_addr));
199
200   enable_async_notification (remote_desc);
201
202   /* Register the event loop handler.  */
203   add_file_handler (remote_desc, handle_serial_event, NULL);
204
205   /* We have a new GDB connection now.  If we were disconnected
206      tracing, there's a window where the target could report a stop
207      event to the event loop, and since we have a connection now, we'd
208      try to send vStopped notifications to GDB.  But, don't do that
209      until GDB as selected all-stop/non-stop, and has queried the
210      threads' status ('?').  */
211   target_async (0);
212
213   return 0;
214 }
215
216 /* Prepare for a later connection to a remote debugger.
217    NAME is the filename used for communication.  */
218
219 void
220 remote_prepare (char *name)
221 {
222   char *port_str;
223 #ifdef USE_WIN32API
224   static int winsock_initialized;
225 #endif
226   int port;
227   struct sockaddr_in sockaddr;
228   socklen_t tmp;
229   char *port_end;
230
231   remote_is_stdio = 0;
232   if (strcmp (name, STDIO_CONNECTION_NAME) == 0)
233     {
234       /* We need to record fact that we're using stdio sooner than the
235          call to remote_open so start_inferior knows the connection is
236          via stdio.  */
237       remote_is_stdio = 1;
238       transport_is_reliable = 1;
239       return;
240     }
241
242   port_str = strchr (name, ':');
243   if (port_str == NULL)
244     {
245       transport_is_reliable = 0;
246       return;
247     }
248
249   port = strtoul (port_str + 1, &port_end, 10);
250   if (port_str[1] == '\0' || *port_end != '\0')
251     error ("Bad port argument: %s", name);
252
253 #ifdef USE_WIN32API
254   if (!winsock_initialized)
255     {
256       WSADATA wsad;
257
258       WSAStartup (MAKEWORD (1, 0), &wsad);
259       winsock_initialized = 1;
260     }
261 #endif
262
263   listen_desc = socket (PF_INET, SOCK_STREAM, IPPROTO_TCP);
264   if (listen_desc == -1)
265     perror_with_name ("Can't open socket");
266
267   /* Allow rapid reuse of this port. */
268   tmp = 1;
269   setsockopt (listen_desc, SOL_SOCKET, SO_REUSEADDR, (char *) &tmp,
270               sizeof (tmp));
271
272   sockaddr.sin_family = PF_INET;
273   sockaddr.sin_port = htons (port);
274   sockaddr.sin_addr.s_addr = INADDR_ANY;
275
276   if (bind (listen_desc, (struct sockaddr *) &sockaddr, sizeof (sockaddr))
277       || listen (listen_desc, 1))
278     perror_with_name ("Can't bind address");
279
280   transport_is_reliable = 1;
281 }
282
283 /* Open a connection to a remote debugger.
284    NAME is the filename used for communication.  */
285
286 void
287 remote_open (char *name)
288 {
289   char *port_str;
290
291   port_str = strchr (name, ':');
292 #ifdef USE_WIN32API
293   if (port_str == NULL)
294     error ("Only <host>:<port> is supported on this platform.");
295 #endif
296
297   if (strcmp (name, STDIO_CONNECTION_NAME) == 0)
298     {
299       fprintf (stderr, "Remote debugging using stdio\n");
300
301       /* Use stdin as the handle of the connection.
302          We only select on reads, for example.  */
303       remote_desc = fileno (stdin);
304
305       enable_async_notification (remote_desc);
306
307       /* Register the event loop handler.  */
308       add_file_handler (remote_desc, handle_serial_event, NULL);
309     }
310 #ifndef USE_WIN32API
311   else if (port_str == NULL)
312     {
313       struct stat statbuf;
314
315       if (stat (name, &statbuf) == 0
316           && (S_ISCHR (statbuf.st_mode) || S_ISFIFO (statbuf.st_mode)))
317         remote_desc = open (name, O_RDWR);
318       else
319         {
320           errno = EINVAL;
321           remote_desc = -1;
322         }
323
324       if (remote_desc < 0)
325         perror_with_name ("Could not open remote device");
326
327 #ifdef HAVE_TERMIOS
328       {
329         struct termios termios;
330         tcgetattr (remote_desc, &termios);
331
332         termios.c_iflag = 0;
333         termios.c_oflag = 0;
334         termios.c_lflag = 0;
335         termios.c_cflag &= ~(CSIZE | PARENB);
336         termios.c_cflag |= CLOCAL | CS8;
337         termios.c_cc[VMIN] = 1;
338         termios.c_cc[VTIME] = 0;
339
340         tcsetattr (remote_desc, TCSANOW, &termios);
341       }
342 #endif
343
344 #ifdef HAVE_TERMIO
345       {
346         struct termio termio;
347         ioctl (remote_desc, TCGETA, &termio);
348
349         termio.c_iflag = 0;
350         termio.c_oflag = 0;
351         termio.c_lflag = 0;
352         termio.c_cflag &= ~(CSIZE | PARENB);
353         termio.c_cflag |= CLOCAL | CS8;
354         termio.c_cc[VMIN] = 1;
355         termio.c_cc[VTIME] = 0;
356
357         ioctl (remote_desc, TCSETA, &termio);
358       }
359 #endif
360
361 #ifdef HAVE_SGTTY
362       {
363         struct sgttyb sg;
364
365         ioctl (remote_desc, TIOCGETP, &sg);
366         sg.sg_flags = RAW;
367         ioctl (remote_desc, TIOCSETP, &sg);
368       }
369 #endif
370
371       fprintf (stderr, "Remote debugging using %s\n", name);
372
373       enable_async_notification (remote_desc);
374
375       /* Register the event loop handler.  */
376       add_file_handler (remote_desc, handle_serial_event, NULL);
377     }
378 #endif /* USE_WIN32API */
379   else
380     {
381       int port;
382       socklen_t len;
383       struct sockaddr_in sockaddr;
384
385       len = sizeof (sockaddr);
386       if (getsockname (listen_desc,
387                        (struct sockaddr *) &sockaddr, &len) < 0
388           || len < sizeof (sockaddr))
389         perror_with_name ("Can't determine port");
390       port = ntohs (sockaddr.sin_port);
391
392       fprintf (stderr, "Listening on port %d\n", port);
393       fflush (stderr);
394
395       /* Register the event loop handler.  */
396       add_file_handler (listen_desc, handle_accept_event, NULL);
397     }
398 }
399
400 void
401 remote_close (void)
402 {
403   delete_file_handler (remote_desc);
404
405 #ifdef USE_WIN32API
406   closesocket (remote_desc);
407 #else
408   if (! remote_connection_is_stdio ())
409     close (remote_desc);
410 #endif
411   remote_desc = INVALID_DESCRIPTOR;
412
413   reset_readchar ();
414 }
415
416 #endif
417
418 #ifndef IN_PROCESS_AGENT
419
420 void
421 decode_address (CORE_ADDR *addrp, const char *start, int len)
422 {
423   CORE_ADDR addr;
424   char ch;
425   int i;
426
427   addr = 0;
428   for (i = 0; i < len; i++)
429     {
430       ch = start[i];
431       addr = addr << 4;
432       addr = addr | (fromhex (ch) & 0x0f);
433     }
434   *addrp = addr;
435 }
436
437 const char *
438 decode_address_to_semicolon (CORE_ADDR *addrp, const char *start)
439 {
440   const char *end;
441
442   end = start;
443   while (*end != '\0' && *end != ';')
444     end++;
445
446   decode_address (addrp, start, end - start);
447
448   if (*end == ';')
449     end++;
450   return end;
451 }
452
453 #endif
454
455 #ifndef IN_PROCESS_AGENT
456
457 /* Look for a sequence of characters which can be run-length encoded.
458    If there are any, update *CSUM and *P.  Otherwise, output the
459    single character.  Return the number of characters consumed.  */
460
461 static int
462 try_rle (char *buf, int remaining, unsigned char *csum, char **p)
463 {
464   int n;
465
466   /* Always output the character.  */
467   *csum += buf[0];
468   *(*p)++ = buf[0];
469
470   /* Don't go past '~'.  */
471   if (remaining > 97)
472     remaining = 97;
473
474   for (n = 1; n < remaining; n++)
475     if (buf[n] != buf[0])
476       break;
477
478   /* N is the index of the first character not the same as buf[0].
479      buf[0] is counted twice, so by decrementing N, we get the number
480      of characters the RLE sequence will replace.  */
481   n--;
482
483   if (n < 3)
484     return 1;
485
486   /* Skip the frame characters.  The manual says to skip '+' and '-'
487      also, but there's no reason to.  Unfortunately these two unusable
488      characters double the encoded length of a four byte zero
489      value.  */
490   while (n + 29 == '$' || n + 29 == '#')
491     n--;
492
493   *csum += '*';
494   *(*p)++ = '*';
495   *csum += n + 29;
496   *(*p)++ = n + 29;
497
498   return n + 1;
499 }
500
501 #endif
502
503 #ifndef IN_PROCESS_AGENT
504
505 /* Write a PTID to BUF.  Returns BUF+CHARACTERS_WRITTEN.  */
506
507 char *
508 write_ptid (char *buf, ptid_t ptid)
509 {
510   int pid, tid;
511
512   if (multi_process)
513     {
514       pid = ptid_get_pid (ptid);
515       if (pid < 0)
516         buf += sprintf (buf, "p-%x.", -pid);
517       else
518         buf += sprintf (buf, "p%x.", pid);
519     }
520   tid = ptid_get_lwp (ptid);
521   if (tid < 0)
522     buf += sprintf (buf, "-%x", -tid);
523   else
524     buf += sprintf (buf, "%x", tid);
525
526   return buf;
527 }
528
529 static ULONGEST
530 hex_or_minus_one (char *buf, char **obuf)
531 {
532   ULONGEST ret;
533
534   if (startswith (buf, "-1"))
535     {
536       ret = (ULONGEST) -1;
537       buf += 2;
538     }
539   else
540     buf = unpack_varlen_hex (buf, &ret);
541
542   if (obuf)
543     *obuf = buf;
544
545   return ret;
546 }
547
548 /* Extract a PTID from BUF.  If non-null, OBUF is set to the to one
549    passed the last parsed char.  Returns null_ptid on error.  */
550 ptid_t
551 read_ptid (char *buf, char **obuf)
552 {
553   char *p = buf;
554   char *pp;
555   ULONGEST pid = 0, tid = 0;
556
557   if (*p == 'p')
558     {
559       /* Multi-process ptid.  */
560       pp = unpack_varlen_hex (p + 1, &pid);
561       if (*pp != '.')
562         error ("invalid remote ptid: %s\n", p);
563
564       p = pp + 1;
565
566       tid = hex_or_minus_one (p, &pp);
567
568       if (obuf)
569         *obuf = pp;
570       return ptid_build (pid, tid, 0);
571     }
572
573   /* No multi-process.  Just a tid.  */
574   tid = hex_or_minus_one (p, &pp);
575
576   /* Since GDB is not sending a process id (multi-process extensions
577      are off), then there's only one process.  Default to the first in
578      the list.  */
579   pid = pid_of (get_first_process ());
580
581   if (obuf)
582     *obuf = pp;
583   return ptid_build (pid, tid, 0);
584 }
585
586 /* Write COUNT bytes in BUF to the client.
587    The result is the number of bytes written or -1 if error.
588    This may return less than COUNT.  */
589
590 static int
591 write_prim (const void *buf, int count)
592 {
593   if (remote_connection_is_stdio ())
594     return write (fileno (stdout), buf, count);
595   else
596     return write (remote_desc, buf, count);
597 }
598
599 /* Read COUNT bytes from the client and store in BUF.
600    The result is the number of bytes read or -1 if error.
601    This may return less than COUNT.  */
602
603 static int
604 read_prim (void *buf, int count)
605 {
606   if (remote_connection_is_stdio ())
607     return read (fileno (stdin), buf, count);
608   else
609     return read (remote_desc, buf, count);
610 }
611
612 /* Send a packet to the remote machine, with error checking.
613    The data of the packet is in BUF, and the length of the
614    packet is in CNT.  Returns >= 0 on success, -1 otherwise.  */
615
616 static int
617 putpkt_binary_1 (char *buf, int cnt, int is_notif)
618 {
619   int i;
620   unsigned char csum = 0;
621   char *buf2;
622   char *p;
623   int cc;
624
625   buf2 = (char *) xmalloc (strlen ("$") + cnt + strlen ("#nn") + 1);
626
627   /* Copy the packet into buffer BUF2, encapsulating it
628      and giving it a checksum.  */
629
630   p = buf2;
631   if (is_notif)
632     *p++ = '%';
633   else
634     *p++ = '$';
635
636   for (i = 0; i < cnt;)
637     i += try_rle (buf + i, cnt - i, &csum, &p);
638
639   *p++ = '#';
640   *p++ = tohex ((csum >> 4) & 0xf);
641   *p++ = tohex (csum & 0xf);
642
643   *p = '\0';
644
645   /* Send it over and over until we get a positive ack.  */
646
647   do
648     {
649       if (write_prim (buf2, p - buf2) != p - buf2)
650         {
651           perror ("putpkt(write)");
652           free (buf2);
653           return -1;
654         }
655
656       if (noack_mode || is_notif)
657         {
658           /* Don't expect an ack then.  */
659           if (remote_debug)
660             {
661               if (is_notif)
662                 fprintf (stderr, "putpkt (\"%s\"); [notif]\n", buf2);
663               else
664                 fprintf (stderr, "putpkt (\"%s\"); [noack mode]\n", buf2);
665               fflush (stderr);
666             }
667           break;
668         }
669
670       if (remote_debug)
671         {
672           fprintf (stderr, "putpkt (\"%s\"); [looking for ack]\n", buf2);
673           fflush (stderr);
674         }
675
676       cc = readchar ();
677
678       if (cc < 0)
679         {
680           free (buf2);
681           return -1;
682         }
683
684       if (remote_debug)
685         {
686           fprintf (stderr, "[received '%c' (0x%x)]\n", cc, cc);
687           fflush (stderr);
688         }
689
690       /* Check for an input interrupt while we're here.  */
691       if (cc == '\003' && current_thread != NULL)
692         (*the_target->request_interrupt) ();
693     }
694   while (cc != '+');
695
696   free (buf2);
697   return 1;                     /* Success! */
698 }
699
700 int
701 putpkt_binary (char *buf, int cnt)
702 {
703   return putpkt_binary_1 (buf, cnt, 0);
704 }
705
706 /* Send a packet to the remote machine, with error checking.  The data
707    of the packet is in BUF, and the packet should be a NUL-terminated
708    string.  Returns >= 0 on success, -1 otherwise.  */
709
710 int
711 putpkt (char *buf)
712 {
713   return putpkt_binary (buf, strlen (buf));
714 }
715
716 int
717 putpkt_notif (char *buf)
718 {
719   return putpkt_binary_1 (buf, strlen (buf), 1);
720 }
721
722 /* Come here when we get an input interrupt from the remote side.  This
723    interrupt should only be active while we are waiting for the child to do
724    something.  Thus this assumes readchar:bufcnt is 0.
725    About the only thing that should come through is a ^C, which
726    will cause us to request child interruption.  */
727
728 static void
729 input_interrupt (int unused)
730 {
731   fd_set readset;
732   struct timeval immediate = { 0, 0 };
733
734   /* Protect against spurious interrupts.  This has been observed to
735      be a problem under NetBSD 1.4 and 1.5.  */
736
737   FD_ZERO (&readset);
738   FD_SET (remote_desc, &readset);
739   if (select (remote_desc + 1, &readset, 0, 0, &immediate) > 0)
740     {
741       int cc;
742       char c = 0;
743
744       cc = read_prim (&c, 1);
745
746       if (cc == 0)
747         {
748           fprintf (stderr, "client connection closed\n");
749           return;
750         }
751       else if (cc != 1 || c != '\003')
752         {
753           fprintf (stderr, "input_interrupt, count = %d c = %d ", cc, c);
754           if (isprint (c))
755             fprintf (stderr, "('%c')\n", c);
756           else
757             fprintf (stderr, "('\\x%02x')\n", c & 0xff);
758           return;
759         }
760
761       (*the_target->request_interrupt) ();
762     }
763 }
764
765 /* Check if the remote side sent us an interrupt request (^C).  */
766 void
767 check_remote_input_interrupt_request (void)
768 {
769   /* This function may be called before establishing communications,
770      therefore we need to validate the remote descriptor.  */
771
772   if (remote_desc == INVALID_DESCRIPTOR)
773     return;
774
775   input_interrupt (0);
776 }
777
778 /* Asynchronous I/O support.  SIGIO must be enabled when waiting, in order to
779    accept Control-C from the client, and must be disabled when talking to
780    the client.  */
781
782 static void
783 unblock_async_io (void)
784 {
785 #ifndef USE_WIN32API
786   sigset_t sigio_set;
787
788   sigemptyset (&sigio_set);
789   sigaddset (&sigio_set, SIGIO);
790   sigprocmask (SIG_UNBLOCK, &sigio_set, NULL);
791 #endif
792 }
793
794 #ifdef __QNX__
795 static void
796 nto_comctrl (int enable)
797 {
798   struct sigevent event;
799
800   if (enable)
801     {
802       event.sigev_notify = SIGEV_SIGNAL_THREAD;
803       event.sigev_signo = SIGIO;
804       event.sigev_code = 0;
805       event.sigev_value.sival_ptr = NULL;
806       event.sigev_priority = -1;
807       ionotify (remote_desc, _NOTIFY_ACTION_POLLARM, _NOTIFY_COND_INPUT,
808                 &event);
809     }
810   else
811     ionotify (remote_desc, _NOTIFY_ACTION_POLL, _NOTIFY_COND_INPUT, NULL);
812 }
813 #endif /* __QNX__ */
814
815
816 /* Current state of asynchronous I/O.  */
817 static int async_io_enabled;
818
819 /* Enable asynchronous I/O.  */
820 void
821 enable_async_io (void)
822 {
823   if (async_io_enabled)
824     return;
825
826 #ifndef USE_WIN32API
827   signal (SIGIO, input_interrupt);
828 #endif
829   async_io_enabled = 1;
830 #ifdef __QNX__
831   nto_comctrl (1);
832 #endif /* __QNX__ */
833 }
834
835 /* Disable asynchronous I/O.  */
836 void
837 disable_async_io (void)
838 {
839   if (!async_io_enabled)
840     return;
841
842 #ifndef USE_WIN32API
843   signal (SIGIO, SIG_IGN);
844 #endif
845   async_io_enabled = 0;
846 #ifdef __QNX__
847   nto_comctrl (0);
848 #endif /* __QNX__ */
849
850 }
851
852 void
853 initialize_async_io (void)
854 {
855   /* Make sure that async I/O starts disabled.  */
856   async_io_enabled = 1;
857   disable_async_io ();
858
859   /* Make sure the signal is unblocked.  */
860   unblock_async_io ();
861 }
862
863 /* Internal buffer used by readchar.
864    These are global to readchar because reschedule_remote needs to be
865    able to tell whether the buffer is empty.  */
866
867 static unsigned char readchar_buf[BUFSIZ];
868 static int readchar_bufcnt = 0;
869 static unsigned char *readchar_bufp;
870
871 /* Returns next char from remote GDB.  -1 if error.  */
872
873 static int
874 readchar (void)
875 {
876   int ch;
877
878   if (readchar_bufcnt == 0)
879     {
880       readchar_bufcnt = read_prim (readchar_buf, sizeof (readchar_buf));
881
882       if (readchar_bufcnt <= 0)
883         {
884           if (readchar_bufcnt == 0)
885             {
886               if (remote_debug)
887                 fprintf (stderr, "readchar: Got EOF\n");
888             }
889           else
890             perror ("readchar");
891
892           return -1;
893         }
894
895       readchar_bufp = readchar_buf;
896     }
897
898   readchar_bufcnt--;
899   ch = *readchar_bufp++;
900   reschedule ();
901   return ch;
902 }
903
904 /* Reset the readchar state machine.  */
905
906 static void
907 reset_readchar (void)
908 {
909   readchar_bufcnt = 0;
910   if (readchar_callback != NOT_SCHEDULED)
911     {
912       delete_callback_event (readchar_callback);
913       readchar_callback = NOT_SCHEDULED;
914     }
915 }
916
917 /* Process remaining data in readchar_buf.  */
918
919 static int
920 process_remaining (void *context)
921 {
922   int res;
923
924   /* This is a one-shot event.  */
925   readchar_callback = NOT_SCHEDULED;
926
927   if (readchar_bufcnt > 0)
928     res = handle_serial_event (0, NULL);
929   else
930     res = 0;
931
932   return res;
933 }
934
935 /* If there is still data in the buffer, queue another event to process it,
936    we can't sleep in select yet.  */
937
938 static void
939 reschedule (void)
940 {
941   if (readchar_bufcnt > 0 && readchar_callback == NOT_SCHEDULED)
942     readchar_callback = append_callback_event (process_remaining, NULL);
943 }
944
945 /* Read a packet from the remote machine, with error checking,
946    and store it in BUF.  Returns length of packet, or negative if error. */
947
948 int
949 getpkt (char *buf)
950 {
951   char *bp;
952   unsigned char csum, c1, c2;
953   int c;
954
955   while (1)
956     {
957       csum = 0;
958
959       while (1)
960         {
961           c = readchar ();
962
963           /* The '\003' may appear before or after each packet, so
964              check for an input interrupt.  */
965           if (c == '\003')
966             {
967               (*the_target->request_interrupt) ();
968               continue;
969             }
970
971           if (c == '$')
972             break;
973           if (remote_debug)
974             {
975               fprintf (stderr, "[getpkt: discarding char '%c']\n", c);
976               fflush (stderr);
977             }
978
979           if (c < 0)
980             return -1;
981         }
982
983       bp = buf;
984       while (1)
985         {
986           c = readchar ();
987           if (c < 0)
988             return -1;
989           if (c == '#')
990             break;
991           *bp++ = c;
992           csum += c;
993         }
994       *bp = 0;
995
996       c1 = fromhex (readchar ());
997       c2 = fromhex (readchar ());
998
999       if (csum == (c1 << 4) + c2)
1000         break;
1001
1002       if (noack_mode)
1003         {
1004           fprintf (stderr,
1005                    "Bad checksum, sentsum=0x%x, csum=0x%x, "
1006                    "buf=%s [no-ack-mode, Bad medium?]\n",
1007                    (c1 << 4) + c2, csum, buf);
1008           /* Not much we can do, GDB wasn't expecting an ack/nac.  */
1009           break;
1010         }
1011
1012       fprintf (stderr, "Bad checksum, sentsum=0x%x, csum=0x%x, buf=%s\n",
1013                (c1 << 4) + c2, csum, buf);
1014       if (write_prim ("-", 1) != 1)
1015         return -1;
1016     }
1017
1018   if (!noack_mode)
1019     {
1020       if (remote_debug)
1021         {
1022           fprintf (stderr, "getpkt (\"%s\");  [sending ack] \n", buf);
1023           fflush (stderr);
1024         }
1025
1026       if (write_prim ("+", 1) != 1)
1027         return -1;
1028
1029       if (remote_debug)
1030         {
1031           fprintf (stderr, "[sent ack]\n");
1032           fflush (stderr);
1033         }
1034     }
1035   else
1036     {
1037       if (remote_debug)
1038         {
1039           fprintf (stderr, "getpkt (\"%s\");  [no ack sent] \n", buf);
1040           fflush (stderr);
1041         }
1042     }
1043
1044   return bp - buf;
1045 }
1046
1047 void
1048 write_ok (char *buf)
1049 {
1050   buf[0] = 'O';
1051   buf[1] = 'K';
1052   buf[2] = '\0';
1053 }
1054
1055 void
1056 write_enn (char *buf)
1057 {
1058   /* Some day, we should define the meanings of the error codes... */
1059   buf[0] = 'E';
1060   buf[1] = '0';
1061   buf[2] = '1';
1062   buf[3] = '\0';
1063 }
1064
1065 #endif
1066
1067 #ifndef IN_PROCESS_AGENT
1068
1069 static char *
1070 outreg (struct regcache *regcache, int regno, char *buf)
1071 {
1072   if ((regno >> 12) != 0)
1073     *buf++ = tohex ((regno >> 12) & 0xf);
1074   if ((regno >> 8) != 0)
1075     *buf++ = tohex ((regno >> 8) & 0xf);
1076   *buf++ = tohex ((regno >> 4) & 0xf);
1077   *buf++ = tohex (regno & 0xf);
1078   *buf++ = ':';
1079   collect_register_as_string (regcache, regno, buf);
1080   buf += 2 * register_size (regcache->tdesc, regno);
1081   *buf++ = ';';
1082
1083   return buf;
1084 }
1085
1086 void
1087 new_thread_notify (int id)
1088 {
1089   char own_buf[256];
1090
1091   /* The `n' response is not yet part of the remote protocol.  Do nothing.  */
1092   if (1)
1093     return;
1094
1095   if (server_waiting == 0)
1096     return;
1097
1098   sprintf (own_buf, "n%x", id);
1099   disable_async_io ();
1100   putpkt (own_buf);
1101   enable_async_io ();
1102 }
1103
1104 void
1105 dead_thread_notify (int id)
1106 {
1107   char own_buf[256];
1108
1109   /* The `x' response is not yet part of the remote protocol.  Do nothing.  */
1110   if (1)
1111     return;
1112
1113   sprintf (own_buf, "x%x", id);
1114   disable_async_io ();
1115   putpkt (own_buf);
1116   enable_async_io ();
1117 }
1118
1119 void
1120 prepare_resume_reply (char *buf, ptid_t ptid,
1121                       struct target_waitstatus *status)
1122 {
1123   if (debug_threads)
1124     debug_printf ("Writing resume reply for %s:%d\n",
1125                   target_pid_to_str (ptid), status->kind);
1126
1127   switch (status->kind)
1128     {
1129     case TARGET_WAITKIND_STOPPED:
1130     case TARGET_WAITKIND_FORKED:
1131     case TARGET_WAITKIND_VFORKED:
1132     case TARGET_WAITKIND_VFORK_DONE:
1133     case TARGET_WAITKIND_EXECD:
1134     case TARGET_WAITKIND_THREAD_CREATED:
1135       {
1136         struct thread_info *saved_thread;
1137         const char **regp;
1138         struct regcache *regcache;
1139
1140         if ((status->kind == TARGET_WAITKIND_FORKED && report_fork_events)
1141             || (status->kind == TARGET_WAITKIND_VFORKED && report_vfork_events))
1142           {
1143             enum gdb_signal signal = GDB_SIGNAL_TRAP;
1144             const char *event = (status->kind == TARGET_WAITKIND_FORKED
1145                                  ? "fork" : "vfork");
1146
1147             sprintf (buf, "T%02x%s:", signal, event);
1148             buf += strlen (buf);
1149             buf = write_ptid (buf, status->value.related_pid);
1150             strcat (buf, ";");
1151           }
1152         else if (status->kind == TARGET_WAITKIND_VFORK_DONE && report_vfork_events)
1153           {
1154             enum gdb_signal signal = GDB_SIGNAL_TRAP;
1155
1156             sprintf (buf, "T%02xvforkdone:;", signal);
1157           }
1158         else if (status->kind == TARGET_WAITKIND_EXECD && report_exec_events)
1159           {
1160             enum gdb_signal signal = GDB_SIGNAL_TRAP;
1161             const char *event = "exec";
1162             char hexified_pathname[PATH_MAX * 2];
1163
1164             sprintf (buf, "T%02x%s:", signal, event);
1165             buf += strlen (buf);
1166
1167             /* Encode pathname to hexified format.  */
1168             bin2hex ((const gdb_byte *) status->value.execd_pathname,
1169                      hexified_pathname,
1170                      strlen (status->value.execd_pathname));
1171
1172             sprintf (buf, "%s;", hexified_pathname);
1173             xfree (status->value.execd_pathname);
1174             status->value.execd_pathname = NULL;
1175             buf += strlen (buf);
1176           }
1177         else if (status->kind == TARGET_WAITKIND_THREAD_CREATED
1178                  && report_thread_events)
1179           {
1180             enum gdb_signal signal = GDB_SIGNAL_TRAP;
1181
1182             sprintf (buf, "T%02xcreate:;", signal);
1183           }
1184         else
1185           sprintf (buf, "T%02x", status->value.sig);
1186
1187         buf += strlen (buf);
1188
1189         saved_thread = current_thread;
1190
1191         current_thread = find_thread_ptid (ptid);
1192
1193         regp = current_target_desc ()->expedite_regs;
1194
1195         regcache = get_thread_regcache (current_thread, 1);
1196
1197         if (the_target->stopped_by_watchpoint != NULL
1198             && (*the_target->stopped_by_watchpoint) ())
1199           {
1200             CORE_ADDR addr;
1201             int i;
1202
1203             strncpy (buf, "watch:", 6);
1204             buf += 6;
1205
1206             addr = (*the_target->stopped_data_address) ();
1207
1208             /* Convert each byte of the address into two hexadecimal
1209                chars.  Note that we take sizeof (void *) instead of
1210                sizeof (addr); this is to avoid sending a 64-bit
1211                address to a 32-bit GDB.  */
1212             for (i = sizeof (void *) * 2; i > 0; i--)
1213               *buf++ = tohex ((addr >> (i - 1) * 4) & 0xf);
1214             *buf++ = ';';
1215           }
1216         else if (swbreak_feature && target_stopped_by_sw_breakpoint ())
1217           {
1218             sprintf (buf, "swbreak:;");
1219             buf += strlen (buf);
1220           }
1221         else if (hwbreak_feature && target_stopped_by_hw_breakpoint ())
1222           {
1223             sprintf (buf, "hwbreak:;");
1224             buf += strlen (buf);
1225           }
1226
1227         while (*regp)
1228           {
1229             buf = outreg (regcache, find_regno (regcache->tdesc, *regp), buf);
1230             regp ++;
1231           }
1232         *buf = '\0';
1233
1234         /* Formerly, if the debugger had not used any thread features
1235            we would not burden it with a thread status response.  This
1236            was for the benefit of GDB 4.13 and older.  However, in
1237            recent GDB versions the check (``if (cont_thread != 0)'')
1238            does not have the desired effect because of sillyness in
1239            the way that the remote protocol handles specifying a
1240            thread.  Since thread support relies on qSymbol support
1241            anyway, assume GDB can handle threads.  */
1242
1243         if (using_threads && !disable_packet_Tthread)
1244           {
1245             /* This if (1) ought to be unnecessary.  But remote_wait
1246                in GDB will claim this event belongs to inferior_ptid
1247                if we do not specify a thread, and there's no way for
1248                gdbserver to know what inferior_ptid is.  */
1249             if (1 || !ptid_equal (general_thread, ptid))
1250               {
1251                 int core = -1;
1252                 /* In non-stop, don't change the general thread behind
1253                    GDB's back.  */
1254                 if (!non_stop)
1255                   general_thread = ptid;
1256                 sprintf (buf, "thread:");
1257                 buf += strlen (buf);
1258                 buf = write_ptid (buf, ptid);
1259                 strcat (buf, ";");
1260                 buf += strlen (buf);
1261
1262                 core = target_core_of_thread (ptid);
1263
1264                 if (core != -1)
1265                   {
1266                     sprintf (buf, "core:");
1267                     buf += strlen (buf);
1268                     sprintf (buf, "%x", core);
1269                     strcat (buf, ";");
1270                     buf += strlen (buf);
1271                   }
1272               }
1273           }
1274
1275         if (dlls_changed)
1276           {
1277             strcpy (buf, "library:;");
1278             buf += strlen (buf);
1279             dlls_changed = 0;
1280           }
1281
1282         current_thread = saved_thread;
1283       }
1284       break;
1285     case TARGET_WAITKIND_EXITED:
1286       if (multi_process)
1287         sprintf (buf, "W%x;process:%x",
1288                  status->value.integer, ptid_get_pid (ptid));
1289       else
1290         sprintf (buf, "W%02x", status->value.integer);
1291       break;
1292     case TARGET_WAITKIND_SIGNALLED:
1293       if (multi_process)
1294         sprintf (buf, "X%x;process:%x",
1295                  status->value.sig, ptid_get_pid (ptid));
1296       else
1297         sprintf (buf, "X%02x", status->value.sig);
1298       break;
1299     case TARGET_WAITKIND_THREAD_EXITED:
1300       sprintf (buf, "w%x;", status->value.integer);
1301       buf += strlen (buf);
1302       buf = write_ptid (buf, ptid);
1303       break;
1304     case TARGET_WAITKIND_NO_RESUMED:
1305       sprintf (buf, "N");
1306       break;
1307     default:
1308       error ("unhandled waitkind");
1309       break;
1310     }
1311 }
1312
1313 void
1314 decode_m_packet (char *from, CORE_ADDR *mem_addr_ptr, unsigned int *len_ptr)
1315 {
1316   int i = 0, j = 0;
1317   char ch;
1318   *mem_addr_ptr = *len_ptr = 0;
1319
1320   while ((ch = from[i++]) != ',')
1321     {
1322       *mem_addr_ptr = *mem_addr_ptr << 4;
1323       *mem_addr_ptr |= fromhex (ch) & 0x0f;
1324     }
1325
1326   for (j = 0; j < 4; j++)
1327     {
1328       if ((ch = from[i++]) == 0)
1329         break;
1330       *len_ptr = *len_ptr << 4;
1331       *len_ptr |= fromhex (ch) & 0x0f;
1332     }
1333 }
1334
1335 void
1336 decode_M_packet (char *from, CORE_ADDR *mem_addr_ptr, unsigned int *len_ptr,
1337                  unsigned char **to_p)
1338 {
1339   int i = 0;
1340   char ch;
1341   *mem_addr_ptr = *len_ptr = 0;
1342
1343   while ((ch = from[i++]) != ',')
1344     {
1345       *mem_addr_ptr = *mem_addr_ptr << 4;
1346       *mem_addr_ptr |= fromhex (ch) & 0x0f;
1347     }
1348
1349   while ((ch = from[i++]) != ':')
1350     {
1351       *len_ptr = *len_ptr << 4;
1352       *len_ptr |= fromhex (ch) & 0x0f;
1353     }
1354
1355   if (*to_p == NULL)
1356     *to_p = (unsigned char *) xmalloc (*len_ptr);
1357
1358   hex2bin (&from[i++], *to_p, *len_ptr);
1359 }
1360
1361 int
1362 decode_X_packet (char *from, int packet_len, CORE_ADDR *mem_addr_ptr,
1363                  unsigned int *len_ptr, unsigned char **to_p)
1364 {
1365   int i = 0;
1366   char ch;
1367   *mem_addr_ptr = *len_ptr = 0;
1368
1369   while ((ch = from[i++]) != ',')
1370     {
1371       *mem_addr_ptr = *mem_addr_ptr << 4;
1372       *mem_addr_ptr |= fromhex (ch) & 0x0f;
1373     }
1374
1375   while ((ch = from[i++]) != ':')
1376     {
1377       *len_ptr = *len_ptr << 4;
1378       *len_ptr |= fromhex (ch) & 0x0f;
1379     }
1380
1381   if (*to_p == NULL)
1382     *to_p = (unsigned char *) xmalloc (*len_ptr);
1383
1384   if (remote_unescape_input ((const gdb_byte *) &from[i], packet_len - i,
1385                              *to_p, *len_ptr) != *len_ptr)
1386     return -1;
1387
1388   return 0;
1389 }
1390
1391 /* Decode a qXfer write request.  */
1392
1393 int
1394 decode_xfer_write (char *buf, int packet_len, CORE_ADDR *offset,
1395                    unsigned int *len, unsigned char *data)
1396 {
1397   char ch;
1398   char *b = buf;
1399
1400   /* Extract the offset.  */
1401   *offset = 0;
1402   while ((ch = *buf++) != ':')
1403     {
1404       *offset = *offset << 4;
1405       *offset |= fromhex (ch) & 0x0f;
1406     }
1407
1408   /* Get encoded data.  */
1409   packet_len -= buf - b;
1410   *len = remote_unescape_input ((const gdb_byte *) buf, packet_len,
1411                                 data, packet_len);
1412   return 0;
1413 }
1414
1415 /* Decode the parameters of a qSearch:memory packet.  */
1416
1417 int
1418 decode_search_memory_packet (const char *buf, int packet_len,
1419                              CORE_ADDR *start_addrp,
1420                              CORE_ADDR *search_space_lenp,
1421                              gdb_byte *pattern, unsigned int *pattern_lenp)
1422 {
1423   const char *p = buf;
1424
1425   p = decode_address_to_semicolon (start_addrp, p);
1426   p = decode_address_to_semicolon (search_space_lenp, p);
1427   packet_len -= p - buf;
1428   *pattern_lenp = remote_unescape_input ((const gdb_byte *) p, packet_len,
1429                                          pattern, packet_len);
1430   return 0;
1431 }
1432
1433 static void
1434 free_sym_cache (struct sym_cache *sym)
1435 {
1436   if (sym != NULL)
1437     {
1438       free (sym->name);
1439       free (sym);
1440     }
1441 }
1442
1443 void
1444 clear_symbol_cache (struct sym_cache **symcache_p)
1445 {
1446   struct sym_cache *sym, *next;
1447
1448   /* Check the cache first.  */
1449   for (sym = *symcache_p; sym; sym = next)
1450     {
1451       next = sym->next;
1452       free_sym_cache (sym);
1453     }
1454
1455   *symcache_p = NULL;
1456 }
1457
1458 /* Get the address of NAME, and return it in ADDRP if found.  if
1459    MAY_ASK_GDB is false, assume symbol cache misses are failures.
1460    Returns 1 if the symbol is found, 0 if it is not, -1 on error.  */
1461
1462 int
1463 look_up_one_symbol (const char *name, CORE_ADDR *addrp, int may_ask_gdb)
1464 {
1465   char own_buf[266], *p, *q;
1466   int len;
1467   struct sym_cache *sym;
1468   struct process_info *proc;
1469
1470   proc = current_process ();
1471
1472   /* Check the cache first.  */
1473   for (sym = proc->symbol_cache; sym; sym = sym->next)
1474     if (strcmp (name, sym->name) == 0)
1475       {
1476         *addrp = sym->addr;
1477         return 1;
1478       }
1479
1480   /* It might not be an appropriate time to look up a symbol,
1481      e.g. while we're trying to fetch registers.  */
1482   if (!may_ask_gdb)
1483     return 0;
1484
1485   /* Send the request.  */
1486   strcpy (own_buf, "qSymbol:");
1487   bin2hex ((const gdb_byte *) name, own_buf + strlen ("qSymbol:"),
1488           strlen (name));
1489   if (putpkt (own_buf) < 0)
1490     return -1;
1491
1492   /* FIXME:  Eventually add buffer overflow checking (to getpkt?)  */
1493   len = getpkt (own_buf);
1494   if (len < 0)
1495     return -1;
1496
1497   /* We ought to handle pretty much any packet at this point while we
1498      wait for the qSymbol "response".  That requires re-entering the
1499      main loop.  For now, this is an adequate approximation; allow
1500      GDB to read from memory while it figures out the address of the
1501      symbol.  */
1502   while (own_buf[0] == 'm')
1503     {
1504       CORE_ADDR mem_addr;
1505       unsigned char *mem_buf;
1506       unsigned int mem_len;
1507
1508       decode_m_packet (&own_buf[1], &mem_addr, &mem_len);
1509       mem_buf = (unsigned char *) xmalloc (mem_len);
1510       if (read_inferior_memory (mem_addr, mem_buf, mem_len) == 0)
1511         bin2hex (mem_buf, own_buf, mem_len);
1512       else
1513         write_enn (own_buf);
1514       free (mem_buf);
1515       if (putpkt (own_buf) < 0)
1516         return -1;
1517       len = getpkt (own_buf);
1518       if (len < 0)
1519         return -1;
1520     }
1521
1522   if (!startswith (own_buf, "qSymbol:"))
1523     {
1524       warning ("Malformed response to qSymbol, ignoring: %s\n", own_buf);
1525       return -1;
1526     }
1527
1528   p = own_buf + strlen ("qSymbol:");
1529   q = p;
1530   while (*q && *q != ':')
1531     q++;
1532
1533   /* Make sure we found a value for the symbol.  */
1534   if (p == q || *q == '\0')
1535     return 0;
1536
1537   decode_address (addrp, p, q - p);
1538
1539   /* Save the symbol in our cache.  */
1540   sym = XNEW (struct sym_cache);
1541   sym->name = xstrdup (name);
1542   sym->addr = *addrp;
1543   sym->next = proc->symbol_cache;
1544   proc->symbol_cache = sym;
1545
1546   return 1;
1547 }
1548
1549 /* Relocate an instruction to execute at a different address.  OLDLOC
1550    is the address in the inferior memory where the instruction to
1551    relocate is currently at.  On input, TO points to the destination
1552    where we want the instruction to be copied (and possibly adjusted)
1553    to.  On output, it points to one past the end of the resulting
1554    instruction(s).  The effect of executing the instruction at TO
1555    shall be the same as if executing it at OLDLOC.  For example, call
1556    instructions that implicitly push the return address on the stack
1557    should be adjusted to return to the instruction after OLDLOC;
1558    relative branches, and other PC-relative instructions need the
1559    offset adjusted; etc.  Returns 0 on success, -1 on failure.  */
1560
1561 int
1562 relocate_instruction (CORE_ADDR *to, CORE_ADDR oldloc)
1563 {
1564   char own_buf[266];
1565   int len;
1566   ULONGEST written = 0;
1567
1568   /* Send the request.  */
1569   strcpy (own_buf, "qRelocInsn:");
1570   sprintf (own_buf, "qRelocInsn:%s;%s", paddress (oldloc),
1571            paddress (*to));
1572   if (putpkt (own_buf) < 0)
1573     return -1;
1574
1575   /* FIXME:  Eventually add buffer overflow checking (to getpkt?)  */
1576   len = getpkt (own_buf);
1577   if (len < 0)
1578     return -1;
1579
1580   /* We ought to handle pretty much any packet at this point while we
1581      wait for the qRelocInsn "response".  That requires re-entering
1582      the main loop.  For now, this is an adequate approximation; allow
1583      GDB to access memory.  */
1584   while (own_buf[0] == 'm' || own_buf[0] == 'M' || own_buf[0] == 'X')
1585     {
1586       CORE_ADDR mem_addr;
1587       unsigned char *mem_buf = NULL;
1588       unsigned int mem_len;
1589
1590       if (own_buf[0] == 'm')
1591         {
1592           decode_m_packet (&own_buf[1], &mem_addr, &mem_len);
1593           mem_buf = (unsigned char *) xmalloc (mem_len);
1594           if (read_inferior_memory (mem_addr, mem_buf, mem_len) == 0)
1595             bin2hex (mem_buf, own_buf, mem_len);
1596           else
1597             write_enn (own_buf);
1598         }
1599       else if (own_buf[0] == 'X')
1600         {
1601           if (decode_X_packet (&own_buf[1], len - 1, &mem_addr,
1602                                &mem_len, &mem_buf) < 0
1603               || write_inferior_memory (mem_addr, mem_buf, mem_len) != 0)
1604             write_enn (own_buf);
1605           else
1606             write_ok (own_buf);
1607         }
1608       else
1609         {
1610           decode_M_packet (&own_buf[1], &mem_addr, &mem_len, &mem_buf);
1611           if (write_inferior_memory (mem_addr, mem_buf, mem_len) == 0)
1612             write_ok (own_buf);
1613           else
1614             write_enn (own_buf);
1615         }
1616       free (mem_buf);
1617       if (putpkt (own_buf) < 0)
1618         return -1;
1619       len = getpkt (own_buf);
1620       if (len < 0)
1621         return -1;
1622     }
1623
1624   if (own_buf[0] == 'E')
1625     {
1626       warning ("An error occurred while relocating an instruction: %s\n",
1627                own_buf);
1628       return -1;
1629     }
1630
1631   if (!startswith (own_buf, "qRelocInsn:"))
1632     {
1633       warning ("Malformed response to qRelocInsn, ignoring: %s\n",
1634                own_buf);
1635       return -1;
1636     }
1637
1638   unpack_varlen_hex (own_buf + strlen ("qRelocInsn:"), &written);
1639
1640   *to += written;
1641   return 0;
1642 }
1643
1644 void
1645 monitor_output (const char *msg)
1646 {
1647   int len = strlen (msg);
1648   char *buf = (char *) xmalloc (len * 2 + 2);
1649
1650   buf[0] = 'O';
1651   bin2hex ((const gdb_byte *) msg, buf + 1, len);
1652
1653   putpkt (buf);
1654   free (buf);
1655 }
1656
1657 #endif