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