remote: Make vcont_builder a class
[external/binutils.git] / gdb / remote.c
1 /* Remote target communications for serial-line targets in custom GDB protocol
2
3    Copyright (C) 1988-2018 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 /* See the GDB User Guide for details of the GDB remote protocol.  */
21
22 #include "defs.h"
23 #include <ctype.h>
24 #include <fcntl.h>
25 #include "inferior.h"
26 #include "infrun.h"
27 #include "bfd.h"
28 #include "symfile.h"
29 #include "target.h"
30 /*#include "terminal.h" */
31 #include "gdbcmd.h"
32 #include "objfiles.h"
33 #include "gdb-stabs.h"
34 #include "gdbthread.h"
35 #include "remote.h"
36 #include "remote-notif.h"
37 #include "regcache.h"
38 #include "value.h"
39 #include "observable.h"
40 #include "solib.h"
41 #include "cli/cli-decode.h"
42 #include "cli/cli-setshow.h"
43 #include "target-descriptions.h"
44 #include "gdb_bfd.h"
45 #include "filestuff.h"
46 #include "rsp-low.h"
47 #include "disasm.h"
48 #include "location.h"
49
50 #include "gdb_sys_time.h"
51
52 #include "event-loop.h"
53 #include "event-top.h"
54 #include "inf-loop.h"
55
56 #include <signal.h>
57 #include "serial.h"
58
59 #include "gdbcore.h" /* for exec_bfd */
60
61 #include "remote-fileio.h"
62 #include "gdb/fileio.h"
63 #include <sys/stat.h>
64 #include "xml-support.h"
65
66 #include "memory-map.h"
67
68 #include "tracepoint.h"
69 #include "ax.h"
70 #include "ax-gdb.h"
71 #include "agent.h"
72 #include "btrace.h"
73 #include "record-btrace.h"
74 #include <algorithm>
75 #include "common/scoped_restore.h"
76 #include "environ.h"
77 #include "common/byte-vector.h"
78 #include <unordered_map>
79
80 /* The remote target.  */
81
82 static const char remote_doc[] = N_("\
83 Use a remote computer via a serial line, using a gdb-specific protocol.\n\
84 Specify the serial device it is connected to\n\
85 (e.g. /dev/ttyS0, /dev/ttya, COM1, etc.).");
86
87 static const target_info remote_target_info = {
88   "remote",
89   N_("Remote serial target in gdb-specific protocol"),
90   remote_doc
91 };
92
93 class remote_target : public target_ops
94 {
95 public:
96   remote_target ()
97   {
98     to_stratum = process_stratum;
99   }
100
101   const target_info &info () const override
102   { return remote_target_info; }
103
104   thread_control_capabilities get_thread_control_capabilities () override
105   { return tc_schedlock; }
106
107   /* Open a remote connection.  */
108   static void open (const char *, int);
109
110   void close () override;
111
112   void detach (inferior *, int) override;
113   void disconnect (const char *, int) override;
114
115   void commit_resume () override;
116   void resume (ptid_t, int, enum gdb_signal) override;
117   ptid_t wait (ptid_t, struct target_waitstatus *, int) override;
118
119   void fetch_registers (struct regcache *, int) override;
120   void store_registers (struct regcache *, int) override;
121   void prepare_to_store (struct regcache *) override;
122
123   void files_info () override;
124
125   int insert_breakpoint (struct gdbarch *, struct bp_target_info *) override;
126
127   int remove_breakpoint (struct gdbarch *, struct bp_target_info *,
128                          enum remove_bp_reason) override;
129
130
131   bool stopped_by_sw_breakpoint () override;
132   bool supports_stopped_by_sw_breakpoint () override;
133
134   bool stopped_by_hw_breakpoint () override;
135
136   bool supports_stopped_by_hw_breakpoint () override;
137
138   bool stopped_by_watchpoint () override;
139
140   bool stopped_data_address (CORE_ADDR *) override;
141
142   bool watchpoint_addr_within_range (CORE_ADDR, CORE_ADDR, int) override;
143
144   int can_use_hw_breakpoint (enum bptype, int, int) override;
145
146   int insert_hw_breakpoint (struct gdbarch *, struct bp_target_info *) override;
147
148   int remove_hw_breakpoint (struct gdbarch *, struct bp_target_info *) override;
149
150   int region_ok_for_hw_watchpoint (CORE_ADDR, int) override;
151
152   int insert_watchpoint (CORE_ADDR, int, enum target_hw_bp_type,
153                          struct expression *) override;
154
155   int remove_watchpoint (CORE_ADDR, int, enum target_hw_bp_type,
156                          struct expression *) override;
157
158   void kill () override;
159
160   void load (const char *, int) override;
161
162   void mourn_inferior () override;
163
164   void pass_signals (int, unsigned char *) override;
165
166   int set_syscall_catchpoint (int, bool, int,
167                               gdb::array_view<const int>) override;
168
169   void program_signals (int, unsigned char *) override;
170
171   bool thread_alive (ptid_t ptid) override;
172
173   const char *thread_name (struct thread_info *) override;
174
175   void update_thread_list () override;
176
177   const char *pid_to_str (ptid_t) override;
178
179   const char *extra_thread_info (struct thread_info *) override;
180
181   ptid_t get_ada_task_ptid (long lwp, long thread) override;
182
183   thread_info *thread_handle_to_thread_info (const gdb_byte *thread_handle,
184                                              int handle_len,
185                                              inferior *inf) override;
186
187   void stop (ptid_t) override;
188
189   void interrupt () override;
190
191   void pass_ctrlc () override;
192
193   enum target_xfer_status xfer_partial (enum target_object object,
194                                         const char *annex,
195                                         gdb_byte *readbuf,
196                                         const gdb_byte *writebuf,
197                                         ULONGEST offset, ULONGEST len,
198                                         ULONGEST *xfered_len) override;
199
200   ULONGEST get_memory_xfer_limit () override;
201
202   void rcmd (const char *command, struct ui_file *output) override;
203
204   char *pid_to_exec_file (int pid) override;
205
206   void log_command (const char *cmd) override
207   {
208     serial_log_command (this, cmd);
209   }
210
211   CORE_ADDR get_thread_local_address (ptid_t ptid,
212                                       CORE_ADDR load_module_addr,
213                                       CORE_ADDR offset) override;
214
215   bool has_all_memory ()  override { return default_child_has_all_memory (); }
216   bool has_memory ()  override { return default_child_has_memory (); }
217   bool has_stack ()  override { return default_child_has_stack (); }
218   bool has_registers ()  override { return default_child_has_registers (); }
219   bool has_execution (ptid_t ptid)  override { return default_child_has_execution (ptid); }
220
221   bool can_execute_reverse () override;
222
223   std::vector<mem_region> memory_map () override;
224
225   void flash_erase (ULONGEST address, LONGEST length) override;
226
227   void flash_done () override;
228
229   const struct target_desc *read_description () override;
230
231   int search_memory (CORE_ADDR start_addr, ULONGEST search_space_len,
232                      const gdb_byte *pattern, ULONGEST pattern_len,
233                      CORE_ADDR *found_addrp) override;
234
235   bool can_async_p () override;
236
237   bool is_async_p () override;
238
239   void async (int) override;
240
241   void thread_events (int) override;
242
243   int can_do_single_step () override;
244
245   void terminal_inferior () override;
246
247   void terminal_ours () override;
248
249   bool supports_non_stop () override;
250
251   bool supports_multi_process () override;
252
253   bool supports_disable_randomization () override;
254
255   bool filesystem_is_local () override;
256
257
258   int fileio_open (struct inferior *inf, const char *filename,
259                    int flags, int mode, int warn_if_slow,
260                    int *target_errno) override;
261
262   int fileio_pwrite (int fd, const gdb_byte *write_buf, int len,
263                      ULONGEST offset, int *target_errno) override;
264
265   int fileio_pread (int fd, gdb_byte *read_buf, int len,
266                     ULONGEST offset, int *target_errno) override;
267
268   int fileio_fstat (int fd, struct stat *sb, int *target_errno) override;
269
270   int fileio_close (int fd, int *target_errno) override;
271
272   int fileio_unlink (struct inferior *inf,
273                      const char *filename,
274                      int *target_errno) override;
275
276   gdb::optional<std::string>
277     fileio_readlink (struct inferior *inf,
278                      const char *filename,
279                      int *target_errno) override;
280
281   bool supports_enable_disable_tracepoint () override;
282
283   bool supports_string_tracing () override;
284
285   bool supports_evaluation_of_breakpoint_conditions () override;
286
287   bool can_run_breakpoint_commands () override;
288
289   void trace_init () override;
290
291   void download_tracepoint (struct bp_location *location) override;
292
293   bool can_download_tracepoint () override;
294
295   void download_trace_state_variable (const trace_state_variable &tsv) override;
296
297   void enable_tracepoint (struct bp_location *location) override;
298
299   void disable_tracepoint (struct bp_location *location) override;
300
301   void trace_set_readonly_regions () override;
302
303   void trace_start () override;
304
305   int get_trace_status (struct trace_status *ts) override;
306
307   void get_tracepoint_status (struct breakpoint *tp, struct uploaded_tp *utp)
308     override;
309
310   void trace_stop () override;
311
312   int trace_find (enum trace_find_type type, int num,
313                   CORE_ADDR addr1, CORE_ADDR addr2, int *tpp) override;
314
315   bool get_trace_state_variable_value (int tsv, LONGEST *val) override;
316
317   int save_trace_data (const char *filename) override;
318
319   int upload_tracepoints (struct uploaded_tp **utpp) override;
320
321   int upload_trace_state_variables (struct uploaded_tsv **utsvp) override;
322
323   LONGEST get_raw_trace_data (gdb_byte *buf, ULONGEST offset, LONGEST len) override;
324
325   int get_min_fast_tracepoint_insn_len () override;
326
327   void set_disconnected_tracing (int val) override;
328
329   void set_circular_trace_buffer (int val) override;
330
331   void set_trace_buffer_size (LONGEST val) override;
332
333   bool set_trace_notes (const char *user, const char *notes,
334                         const char *stopnotes) override;
335
336   int core_of_thread (ptid_t ptid) override;
337
338   int verify_memory (const gdb_byte *data,
339                      CORE_ADDR memaddr, ULONGEST size) override;
340
341
342   bool get_tib_address (ptid_t ptid, CORE_ADDR *addr) override;
343
344   void set_permissions () override;
345
346   bool static_tracepoint_marker_at (CORE_ADDR,
347                                     struct static_tracepoint_marker *marker)
348     override;
349
350   std::vector<static_tracepoint_marker>
351     static_tracepoint_markers_by_strid (const char *id) override;
352
353   traceframe_info_up traceframe_info () override;
354
355   bool use_agent (bool use) override;
356   bool can_use_agent () override;
357
358   struct btrace_target_info *enable_btrace (ptid_t ptid,
359                                             const struct btrace_config *conf) override;
360
361   void disable_btrace (struct btrace_target_info *tinfo) override;
362
363   void teardown_btrace (struct btrace_target_info *tinfo) override;
364
365   enum btrace_error read_btrace (struct btrace_data *data,
366                                  struct btrace_target_info *btinfo,
367                                  enum btrace_read_type type) override;
368
369   const struct btrace_config *btrace_conf (const struct btrace_target_info *) override;
370   bool augmented_libraries_svr4_read () override;
371   int follow_fork (int, int) override;
372   void follow_exec (struct inferior *, char *) override;
373   int insert_fork_catchpoint (int) override;
374   int remove_fork_catchpoint (int) override;
375   int insert_vfork_catchpoint (int) override;
376   int remove_vfork_catchpoint (int) override;
377   int insert_exec_catchpoint (int) override;
378   int remove_exec_catchpoint (int) override;
379   enum exec_direction_kind execution_direction () override;
380
381 protected:
382   static void open_1 (const char *name, int from_tty, int extended_p);
383   void start_remote (int from_tty, int extended_p);
384 };
385
386 static const target_info extended_remote_target_info = {
387   "extended-remote",
388   N_("Extended remote serial target in gdb-specific protocol"),
389   remote_doc
390 };
391
392 /* Set up the extended remote target by extending the standard remote
393    target and adding to it.  */
394
395 class extended_remote_target final : public remote_target
396 {
397 public:
398   const target_info &info () const override
399   { return extended_remote_target_info; }
400
401   /* Open an extended-remote connection.  */
402   static void open (const char *, int);
403
404   bool can_create_inferior () override { return true; }
405   void create_inferior (const char *, const std::string &,
406                         char **, int) override;
407
408   void detach (inferior *, int) override;
409
410   bool can_attach () override { return true; }
411   void attach (const char *, int) override;
412
413   void post_attach (int) override;
414   bool supports_disable_randomization () override;
415 };
416
417 /* Per-program-space data key.  */
418 static const struct program_space_data *remote_pspace_data;
419
420 /* The variable registered as the control variable used by the
421    remote exec-file commands.  While the remote exec-file setting is
422    per-program-space, the set/show machinery uses this as the 
423    location of the remote exec-file value.  */
424 static char *remote_exec_file_var;
425
426 /* The size to align memory write packets, when practical.  The protocol
427    does not guarantee any alignment, and gdb will generate short
428    writes and unaligned writes, but even as a best-effort attempt this
429    can improve bulk transfers.  For instance, if a write is misaligned
430    relative to the target's data bus, the stub may need to make an extra
431    round trip fetching data from the target.  This doesn't make a
432    huge difference, but it's easy to do, so we try to be helpful.
433
434    The alignment chosen is arbitrary; usually data bus width is
435    important here, not the possibly larger cache line size.  */
436 enum { REMOTE_ALIGN_WRITES = 16 };
437
438 /* Prototypes for local functions.  */
439 static int getpkt_sane (char **buf, long *sizeof_buf, int forever);
440 static int getpkt_or_notif_sane (char **buf, long *sizeof_buf,
441                                  int forever, int *is_notif);
442
443 struct remote_state;
444
445 static int remote_vkill (int pid, struct remote_state *rs);
446
447 static void remote_kill_k (void);
448
449 static int readchar (int timeout);
450
451 static void remote_serial_write (const char *str, int len);
452
453 static void interrupt_query (void);
454
455 static void set_general_thread (ptid_t ptid);
456 static void set_continue_thread (ptid_t ptid);
457
458 static void get_offsets (void);
459
460 static void skip_frame (void);
461
462 static long read_frame (char **buf_p, long *sizeof_buf);
463
464 static int hexnumlen (ULONGEST num);
465
466 static int stubhex (int ch);
467
468 static int hexnumstr (char *, ULONGEST);
469
470 static int hexnumnstr (char *, ULONGEST, int);
471
472 static CORE_ADDR remote_address_masked (CORE_ADDR);
473
474 static void print_packet (const char *);
475
476 static int stub_unpack_int (char *buff, int fieldlength);
477
478 static ptid_t remote_current_thread (ptid_t oldptid);
479
480 static int putpkt_binary (const char *buf, int cnt);
481
482 static void check_binary_download (CORE_ADDR addr);
483
484 struct packet_config;
485
486 static void show_packet_config_cmd (struct packet_config *config);
487
488 static void show_remote_protocol_packet_cmd (struct ui_file *file,
489                                              int from_tty,
490                                              struct cmd_list_element *c,
491                                              const char *value);
492
493 static char *write_ptid (char *buf, const char *endbuf, ptid_t ptid);
494 static ptid_t read_ptid (const char *buf, const char **obuf);
495
496 static void remote_query_supported (void);
497
498 static void remote_check_symbols (void);
499
500 struct stop_reply;
501 static void stop_reply_xfree (struct stop_reply *);
502 static void remote_parse_stop_reply (char *, struct stop_reply *);
503 static void push_stop_reply (struct stop_reply *);
504 static void discard_pending_stop_replies_in_queue (struct remote_state *);
505 static int peek_stop_reply (ptid_t ptid);
506
507 struct threads_listing_context;
508 static void remove_new_fork_children (struct threads_listing_context *);
509
510 static void remote_async_inferior_event_handler (gdb_client_data);
511
512 static int remote_read_description_p (struct target_ops *target);
513
514 static void remote_console_output (char *msg);
515
516 static void remote_btrace_reset (void);
517
518 static void remote_btrace_maybe_reopen (void);
519
520 static int stop_reply_queue_length (void);
521
522 static void remote_unpush_and_throw (void);
523
524 static struct remote_state *get_remote_state (void);
525
526 /* For "remote".  */
527
528 static struct cmd_list_element *remote_cmdlist;
529
530 /* For "set remote" and "show remote".  */
531
532 static struct cmd_list_element *remote_set_cmdlist;
533 static struct cmd_list_element *remote_show_cmdlist;
534
535 /* Stub vCont actions support.
536
537    Each field is a boolean flag indicating whether the stub reports
538    support for the corresponding action.  */
539
540 struct vCont_action_support
541 {
542   /* vCont;t */
543   bool t = false;
544
545   /* vCont;r */
546   bool r = false;
547
548   /* vCont;s */
549   bool s = false;
550
551   /* vCont;S */
552   bool S = false;
553 };
554
555 /* Controls whether GDB is willing to use range stepping.  */
556
557 static int use_range_stepping = 1;
558
559 #define OPAQUETHREADBYTES 8
560
561 /* a 64 bit opaque identifier */
562 typedef unsigned char threadref[OPAQUETHREADBYTES];
563
564 /* About this many threadisds fit in a packet.  */
565
566 #define MAXTHREADLISTRESULTS 32
567
568 /* The max number of chars in debug output.  The rest of chars are
569    omitted.  */
570
571 #define REMOTE_DEBUG_MAX_CHAR 512
572
573 /* Data for the vFile:pread readahead cache.  */
574
575 struct readahead_cache
576 {
577   /* Invalidate the readahead cache.  */
578   void invalidate ();
579
580   /* Invalidate the readahead cache if it is holding data for FD.  */
581   void invalidate_fd (int fd);
582
583   /* Serve pread from the readahead cache.  Returns number of bytes
584      read, or 0 if the request can't be served from the cache.  */
585   int pread (int fd, gdb_byte *read_buf, size_t len, ULONGEST offset);
586
587   /* The file descriptor for the file that is being cached.  -1 if the
588      cache is invalid.  */
589   int fd = -1;
590
591   /* The offset into the file that the cache buffer corresponds
592      to.  */
593   ULONGEST offset = 0;
594
595   /* The buffer holding the cache contents.  */
596   gdb_byte *buf = nullptr;
597   /* The buffer's size.  We try to read as much as fits into a packet
598      at a time.  */
599   size_t bufsize = 0;
600
601   /* Cache hit and miss counters.  */
602   ULONGEST hit_count = 0;
603   ULONGEST miss_count = 0;
604 };
605
606 /* Description of the remote protocol for a given architecture.  */
607
608 struct packet_reg
609 {
610   long offset; /* Offset into G packet.  */
611   long regnum; /* GDB's internal register number.  */
612   LONGEST pnum; /* Remote protocol register number.  */
613   int in_g_packet; /* Always part of G packet.  */
614   /* long size in bytes;  == register_size (target_gdbarch (), regnum);
615      at present.  */
616   /* char *name; == gdbarch_register_name (target_gdbarch (), regnum);
617      at present.  */
618 };
619
620 struct remote_arch_state
621 {
622   explicit remote_arch_state (struct gdbarch *gdbarch);
623
624   /* Description of the remote protocol registers.  */
625   long sizeof_g_packet;
626
627   /* Description of the remote protocol registers indexed by REGNUM
628      (making an array gdbarch_num_regs in size).  */
629   std::unique_ptr<packet_reg[]> regs;
630
631   /* This is the size (in chars) of the first response to the ``g''
632      packet.  It is used as a heuristic when determining the maximum
633      size of memory-read and memory-write packets.  A target will
634      typically only reserve a buffer large enough to hold the ``g''
635      packet.  The size does not include packet overhead (headers and
636      trailers).  */
637   long actual_register_packet_size;
638
639   /* This is the maximum size (in chars) of a non read/write packet.
640      It is also used as a cap on the size of read/write packets.  */
641   long remote_packet_size;
642 };
643
644 /* Description of the remote protocol state for the currently
645    connected target.  This is per-target state, and independent of the
646    selected architecture.  */
647
648 class remote_state
649 {
650 public:
651
652   remote_state ();
653   ~remote_state ();
654
655   /* Get the remote arch state for GDBARCH.  */
656   struct remote_arch_state *get_remote_arch_state (struct gdbarch *gdbarch);
657
658 public: /* data */
659
660   /* A buffer to use for incoming packets, and its current size.  The
661      buffer is grown dynamically for larger incoming packets.
662      Outgoing packets may also be constructed in this buffer.
663      BUF_SIZE is always at least REMOTE_PACKET_SIZE;
664      REMOTE_PACKET_SIZE should be used to limit the length of outgoing
665      packets.  */
666   char *buf;
667   long buf_size;
668
669   /* True if we're going through initial connection setup (finding out
670      about the remote side's threads, relocating symbols, etc.).  */
671   bool starting_up = false;
672
673   /* If we negotiated packet size explicitly (and thus can bypass
674      heuristics for the largest packet size that will not overflow
675      a buffer in the stub), this will be set to that packet size.
676      Otherwise zero, meaning to use the guessed size.  */
677   long explicit_packet_size = 0;
678
679   /* remote_wait is normally called when the target is running and
680      waits for a stop reply packet.  But sometimes we need to call it
681      when the target is already stopped.  We can send a "?" packet
682      and have remote_wait read the response.  Or, if we already have
683      the response, we can stash it in BUF and tell remote_wait to
684      skip calling getpkt.  This flag is set when BUF contains a
685      stop reply packet and the target is not waiting.  */
686   int cached_wait_status = 0;
687
688   /* True, if in no ack mode.  That is, neither GDB nor the stub will
689      expect acks from each other.  The connection is assumed to be
690      reliable.  */
691   bool noack_mode = false;
692
693   /* True if we're connected in extended remote mode.  */
694   bool extended = false;
695
696   /* True if we resumed the target and we're waiting for the target to
697      stop.  In the mean time, we can't start another command/query.
698      The remote server wouldn't be ready to process it, so we'd
699      timeout waiting for a reply that would never come and eventually
700      we'd close the connection.  This can happen in asynchronous mode
701      because we allow GDB commands while the target is running.  */
702   bool waiting_for_stop_reply = false;
703
704   /* The status of the stub support for the various vCont actions.  */
705   vCont_action_support supports_vCont;
706
707   /* True if the user has pressed Ctrl-C, but the target hasn't
708      responded to that.  */
709   bool ctrlc_pending_p = false;
710
711   /* True if we saw a Ctrl-C while reading or writing from/to the
712      remote descriptor.  At that point it is not safe to send a remote
713      interrupt packet, so we instead remember we saw the Ctrl-C and
714      process it once we're done with sending/receiving the current
715      packet, which should be shortly.  If however that takes too long,
716      and the user presses Ctrl-C again, we offer to disconnect.  */
717   bool got_ctrlc_during_io = false;
718
719   /* Descriptor for I/O to remote machine.  Initialize it to NULL so that
720      remote_open knows that we don't have a file open when the program
721      starts.  */
722   struct serial *remote_desc = nullptr;
723
724   /* These are the threads which we last sent to the remote system.  The
725      TID member will be -1 for all or -2 for not sent yet.  */
726   ptid_t general_thread = null_ptid;
727   ptid_t continue_thread = null_ptid;
728
729   /* This is the traceframe which we last selected on the remote system.
730      It will be -1 if no traceframe is selected.  */
731   int remote_traceframe_number = -1;
732
733   char *last_pass_packet = nullptr;
734
735   /* The last QProgramSignals packet sent to the target.  We bypass
736      sending a new program signals list down to the target if the new
737      packet is exactly the same as the last we sent.  IOW, we only let
738      the target know about program signals list changes.  */
739   char *last_program_signals_packet = nullptr;
740
741   gdb_signal last_sent_signal = GDB_SIGNAL_0;
742
743   bool last_sent_step = false;
744
745   /* The execution direction of the last resume we got.  */
746   exec_direction_kind last_resume_exec_dir = EXEC_FORWARD;
747
748   char *finished_object = nullptr;
749   char *finished_annex = nullptr;
750   ULONGEST finished_offset = 0;
751
752   /* Should we try the 'ThreadInfo' query packet?
753
754      This variable (NOT available to the user: auto-detect only!)
755      determines whether GDB will use the new, simpler "ThreadInfo"
756      query or the older, more complex syntax for thread queries.
757      This is an auto-detect variable (set to true at each connect,
758      and set to false when the target fails to recognize it).  */
759   bool use_threadinfo_query = false;
760   bool use_threadextra_query = false;
761
762   threadref echo_nextthread {};
763   threadref nextthread {};
764   threadref resultthreadlist[MAXTHREADLISTRESULTS] {};
765
766   /* The state of remote notification.  */
767   struct remote_notif_state *notif_state = nullptr;
768
769   /* The branch trace configuration.  */
770   struct btrace_config btrace_config {};
771
772   /* The argument to the last "vFile:setfs:" packet we sent, used
773      to avoid sending repeated unnecessary "vFile:setfs:" packets.
774      Initialized to -1 to indicate that no "vFile:setfs:" packet
775      has yet been sent.  */
776   int fs_pid = -1;
777
778   /* A readahead cache for vFile:pread.  Often, reading a binary
779      involves a sequence of small reads.  E.g., when parsing an ELF
780      file.  A readahead cache helps mostly the case of remote
781      debugging on a connection with higher latency, due to the
782      request/reply nature of the RSP.  We only cache data for a single
783      file descriptor at a time.  */
784   struct readahead_cache readahead_cache;
785
786 private:
787   /* Mapping of remote protocol data for each gdbarch.  Usually there
788      is only one entry here, though we may see more with stubs that
789      support multi-process.  */
790   std::unordered_map<struct gdbarch *, remote_arch_state>
791     m_arch_states;
792 };
793
794 /* Private data that we'll store in (struct thread_info)->priv.  */
795 struct remote_thread_info : public private_thread_info
796 {
797   std::string extra;
798   std::string name;
799   int core = -1;
800
801   /* Thread handle, perhaps a pthread_t or thread_t value, stored as a
802      sequence of bytes.  */
803   gdb::byte_vector thread_handle;
804
805   /* Whether the target stopped for a breakpoint/watchpoint.  */
806   enum target_stop_reason stop_reason = TARGET_STOPPED_BY_NO_REASON;
807
808   /* This is set to the data address of the access causing the target
809      to stop for a watchpoint.  */
810   CORE_ADDR watch_data_address = 0;
811
812   /* Fields used by the vCont action coalescing implemented in
813      remote_resume / remote_commit_resume.  remote_resume stores each
814      thread's last resume request in these fields, so that a later
815      remote_commit_resume knows which is the proper action for this
816      thread to include in the vCont packet.  */
817
818   /* True if the last target_resume call for this thread was a step
819      request, false if a continue request.  */
820   int last_resume_step = 0;
821
822   /* The signal specified in the last target_resume call for this
823      thread.  */
824   gdb_signal last_resume_sig = GDB_SIGNAL_0;
825
826   /* Whether this thread was already vCont-resumed on the remote
827      side.  */
828   int vcont_resumed = 0;
829 };
830
831 remote_state::remote_state ()
832 {
833   /* The default buffer size is unimportant; it will be expanded
834      whenever a larger buffer is needed. */
835   this->buf_size = 400;
836   this->buf = (char *) xmalloc (this->buf_size);
837 }
838
839 remote_state::~remote_state ()
840 {
841   xfree (this->last_pass_packet);
842   xfree (this->last_program_signals_packet);
843   xfree (this->buf);
844   xfree (this->finished_object);
845   xfree (this->finished_annex);
846 }
847
848 /* This data could be associated with a target, but we do not always
849    have access to the current target when we need it, so for now it is
850    static.  This will be fine for as long as only one target is in use
851    at a time.  */
852 static struct remote_state *remote_state;
853
854 static struct remote_state *
855 get_remote_state_raw (void)
856 {
857   return remote_state;
858 }
859
860 /* Utility: generate error from an incoming stub packet.  */
861 static void
862 trace_error (char *buf)
863 {
864   if (*buf++ != 'E')
865     return;                     /* not an error msg */
866   switch (*buf)
867     {
868     case '1':                   /* malformed packet error */
869       if (*++buf == '0')        /*   general case: */
870         error (_("remote.c: error in outgoing packet."));
871       else
872         error (_("remote.c: error in outgoing packet at field #%ld."),
873                strtol (buf, NULL, 16));
874     default:
875       error (_("Target returns error code '%s'."), buf);
876     }
877 }
878
879 /* Utility: wait for reply from stub, while accepting "O" packets.  */
880
881 static char *
882 remote_get_noisy_reply ()
883 {
884   struct remote_state *rs = get_remote_state ();
885
886   do                            /* Loop on reply from remote stub.  */
887     {
888       char *buf;
889
890       QUIT;                     /* Allow user to bail out with ^C.  */
891       getpkt (&rs->buf, &rs->buf_size, 0);
892       buf = rs->buf;
893       if (buf[0] == 'E')
894         trace_error (buf);
895       else if (startswith (buf, "qRelocInsn:"))
896         {
897           ULONGEST ul;
898           CORE_ADDR from, to, org_to;
899           const char *p, *pp;
900           int adjusted_size = 0;
901           int relocated = 0;
902
903           p = buf + strlen ("qRelocInsn:");
904           pp = unpack_varlen_hex (p, &ul);
905           if (*pp != ';')
906             error (_("invalid qRelocInsn packet: %s"), buf);
907           from = ul;
908
909           p = pp + 1;
910           unpack_varlen_hex (p, &ul);
911           to = ul;
912
913           org_to = to;
914
915           TRY
916             {
917               gdbarch_relocate_instruction (target_gdbarch (), &to, from);
918               relocated = 1;
919             }
920           CATCH (ex, RETURN_MASK_ALL)
921             {
922               if (ex.error == MEMORY_ERROR)
923                 {
924                   /* Propagate memory errors silently back to the
925                      target.  The stub may have limited the range of
926                      addresses we can write to, for example.  */
927                 }
928               else
929                 {
930                   /* Something unexpectedly bad happened.  Be verbose
931                      so we can tell what, and propagate the error back
932                      to the stub, so it doesn't get stuck waiting for
933                      a response.  */
934                   exception_fprintf (gdb_stderr, ex,
935                                      _("warning: relocating instruction: "));
936                 }
937               putpkt ("E01");
938             }
939           END_CATCH
940
941           if (relocated)
942             {
943               adjusted_size = to - org_to;
944
945               xsnprintf (buf, rs->buf_size, "qRelocInsn:%x", adjusted_size);
946               putpkt (buf);
947             }
948         }
949       else if (buf[0] == 'O' && buf[1] != 'K')
950         remote_console_output (buf + 1);        /* 'O' message from stub */
951       else
952         return buf;             /* Here's the actual reply.  */
953     }
954   while (1);
955 }
956
957 struct remote_arch_state *
958 remote_state::get_remote_arch_state (struct gdbarch *gdbarch)
959 {
960   remote_arch_state *rsa;
961
962   auto it = this->m_arch_states.find (gdbarch);
963   if (it == this->m_arch_states.end ())
964     {
965       auto p = this->m_arch_states.emplace (std::piecewise_construct,
966                                             std::forward_as_tuple (gdbarch),
967                                             std::forward_as_tuple (gdbarch));
968       rsa = &p.first->second;
969
970       /* Make sure that the packet buffer is plenty big enough for
971          this architecture.  */
972       if (this->buf_size < rsa->remote_packet_size)
973         {
974           this->buf_size = 2 * rsa->remote_packet_size;
975           this->buf = (char *) xrealloc (this->buf, this->buf_size);
976         }
977     }
978   else
979     rsa = &it->second;
980
981   return rsa;
982 }
983
984 /* Fetch the global remote target state.  */
985
986 static struct remote_state *
987 get_remote_state (void)
988 {
989   struct remote_state *rs = get_remote_state_raw ();
990
991   /* Make sure that the remote architecture state has been
992      initialized, because doing so might reallocate rs->buf.  Any
993      function which calls getpkt also needs to be mindful of changes
994      to rs->buf, but this call limits the number of places which run
995      into trouble.  */
996   rs->get_remote_arch_state (target_gdbarch ());
997
998   return rs;
999 }
1000
1001 /* Cleanup routine for the remote module's pspace data.  */
1002
1003 static void
1004 remote_pspace_data_cleanup (struct program_space *pspace, void *arg)
1005 {
1006   char *remote_exec_file = (char *) arg;
1007
1008   xfree (remote_exec_file);
1009 }
1010
1011 /* Fetch the remote exec-file from the current program space.  */
1012
1013 static const char *
1014 get_remote_exec_file (void)
1015 {
1016   char *remote_exec_file;
1017
1018   remote_exec_file
1019     = (char *) program_space_data (current_program_space,
1020                                    remote_pspace_data);
1021   if (remote_exec_file == NULL)
1022     return "";
1023
1024   return remote_exec_file;
1025 }
1026
1027 /* Set the remote exec file for PSPACE.  */
1028
1029 static void
1030 set_pspace_remote_exec_file (struct program_space *pspace,
1031                         char *remote_exec_file)
1032 {
1033   char *old_file = (char *) program_space_data (pspace, remote_pspace_data);
1034
1035   xfree (old_file);
1036   set_program_space_data (pspace, remote_pspace_data,
1037                           xstrdup (remote_exec_file));
1038 }
1039
1040 /* The "set/show remote exec-file" set command hook.  */
1041
1042 static void
1043 set_remote_exec_file (const char *ignored, int from_tty,
1044                       struct cmd_list_element *c)
1045 {
1046   gdb_assert (remote_exec_file_var != NULL);
1047   set_pspace_remote_exec_file (current_program_space, remote_exec_file_var);
1048 }
1049
1050 /* The "set/show remote exec-file" show command hook.  */
1051
1052 static void
1053 show_remote_exec_file (struct ui_file *file, int from_tty,
1054                        struct cmd_list_element *cmd, const char *value)
1055 {
1056   fprintf_filtered (file, "%s\n", remote_exec_file_var);
1057 }
1058
1059 static int
1060 compare_pnums (const void *lhs_, const void *rhs_)
1061 {
1062   const struct packet_reg * const *lhs
1063     = (const struct packet_reg * const *) lhs_;
1064   const struct packet_reg * const *rhs
1065     = (const struct packet_reg * const *) rhs_;
1066
1067   if ((*lhs)->pnum < (*rhs)->pnum)
1068     return -1;
1069   else if ((*lhs)->pnum == (*rhs)->pnum)
1070     return 0;
1071   else
1072     return 1;
1073 }
1074
1075 static int
1076 map_regcache_remote_table (struct gdbarch *gdbarch, struct packet_reg *regs)
1077 {
1078   int regnum, num_remote_regs, offset;
1079   struct packet_reg **remote_regs;
1080
1081   for (regnum = 0; regnum < gdbarch_num_regs (gdbarch); regnum++)
1082     {
1083       struct packet_reg *r = &regs[regnum];
1084
1085       if (register_size (gdbarch, regnum) == 0)
1086         /* Do not try to fetch zero-sized (placeholder) registers.  */
1087         r->pnum = -1;
1088       else
1089         r->pnum = gdbarch_remote_register_number (gdbarch, regnum);
1090
1091       r->regnum = regnum;
1092     }
1093
1094   /* Define the g/G packet format as the contents of each register
1095      with a remote protocol number, in order of ascending protocol
1096      number.  */
1097
1098   remote_regs = XALLOCAVEC (struct packet_reg *, gdbarch_num_regs (gdbarch));
1099   for (num_remote_regs = 0, regnum = 0;
1100        regnum < gdbarch_num_regs (gdbarch);
1101        regnum++)
1102     if (regs[regnum].pnum != -1)
1103       remote_regs[num_remote_regs++] = &regs[regnum];
1104
1105   qsort (remote_regs, num_remote_regs, sizeof (struct packet_reg *),
1106          compare_pnums);
1107
1108   for (regnum = 0, offset = 0; regnum < num_remote_regs; regnum++)
1109     {
1110       remote_regs[regnum]->in_g_packet = 1;
1111       remote_regs[regnum]->offset = offset;
1112       offset += register_size (gdbarch, remote_regs[regnum]->regnum);
1113     }
1114
1115   return offset;
1116 }
1117
1118 /* Given the architecture described by GDBARCH, return the remote
1119    protocol register's number and the register's offset in the g/G
1120    packets of GDB register REGNUM, in PNUM and POFFSET respectively.
1121    If the target does not have a mapping for REGNUM, return false,
1122    otherwise, return true.  */
1123
1124 int
1125 remote_register_number_and_offset (struct gdbarch *gdbarch, int regnum,
1126                                    int *pnum, int *poffset)
1127 {
1128   gdb_assert (regnum < gdbarch_num_regs (gdbarch));
1129
1130   std::vector<packet_reg> regs (gdbarch_num_regs (gdbarch));
1131
1132   map_regcache_remote_table (gdbarch, regs.data ());
1133
1134   *pnum = regs[regnum].pnum;
1135   *poffset = regs[regnum].offset;
1136
1137   return *pnum != -1;
1138 }
1139
1140 remote_arch_state::remote_arch_state (struct gdbarch *gdbarch)
1141 {
1142   /* Use the architecture to build a regnum<->pnum table, which will be
1143      1:1 unless a feature set specifies otherwise.  */
1144   this->regs.reset (new packet_reg [gdbarch_num_regs (gdbarch)] ());
1145
1146   /* Record the maximum possible size of the g packet - it may turn out
1147      to be smaller.  */
1148   this->sizeof_g_packet
1149     = map_regcache_remote_table (gdbarch, this->regs.get ());
1150
1151   /* Default maximum number of characters in a packet body.  Many
1152      remote stubs have a hardwired buffer size of 400 bytes
1153      (c.f. BUFMAX in m68k-stub.c and i386-stub.c).  BUFMAX-1 is used
1154      as the maximum packet-size to ensure that the packet and an extra
1155      NUL character can always fit in the buffer.  This stops GDB
1156      trashing stubs that try to squeeze an extra NUL into what is
1157      already a full buffer (As of 1999-12-04 that was most stubs).  */
1158   this->remote_packet_size = 400 - 1;
1159
1160   /* This one is filled in when a ``g'' packet is received.  */
1161   this->actual_register_packet_size = 0;
1162
1163   /* Should rsa->sizeof_g_packet needs more space than the
1164      default, adjust the size accordingly.  Remember that each byte is
1165      encoded as two characters.  32 is the overhead for the packet
1166      header / footer.  NOTE: cagney/1999-10-26: I suspect that 8
1167      (``$NN:G...#NN'') is a better guess, the below has been padded a
1168      little.  */
1169   if (this->sizeof_g_packet > ((this->remote_packet_size - 32) / 2))
1170     this->remote_packet_size = (this->sizeof_g_packet * 2 + 32);
1171 }
1172
1173 /* Return the current allowed size of a remote packet.  This is
1174    inferred from the current architecture, and should be used to
1175    limit the length of outgoing packets.  */
1176 static long
1177 get_remote_packet_size (void)
1178 {
1179   struct remote_state *rs = get_remote_state ();
1180   remote_arch_state *rsa = rs->get_remote_arch_state (target_gdbarch ());
1181
1182   if (rs->explicit_packet_size)
1183     return rs->explicit_packet_size;
1184
1185   return rsa->remote_packet_size;
1186 }
1187
1188 static struct packet_reg *
1189 packet_reg_from_regnum (struct gdbarch *gdbarch, struct remote_arch_state *rsa,
1190                         long regnum)
1191 {
1192   if (regnum < 0 && regnum >= gdbarch_num_regs (gdbarch))
1193     return NULL;
1194   else
1195     {
1196       struct packet_reg *r = &rsa->regs[regnum];
1197
1198       gdb_assert (r->regnum == regnum);
1199       return r;
1200     }
1201 }
1202
1203 static struct packet_reg *
1204 packet_reg_from_pnum (struct gdbarch *gdbarch, struct remote_arch_state *rsa,
1205                       LONGEST pnum)
1206 {
1207   int i;
1208
1209   for (i = 0; i < gdbarch_num_regs (gdbarch); i++)
1210     {
1211       struct packet_reg *r = &rsa->regs[i];
1212
1213       if (r->pnum == pnum)
1214         return r;
1215     }
1216   return NULL;
1217 }
1218
1219 static remote_target remote_ops;
1220
1221 static extended_remote_target extended_remote_ops;
1222
1223 /* FIXME: cagney/1999-09-23: Even though getpkt was called with
1224    ``forever'' still use the normal timeout mechanism.  This is
1225    currently used by the ASYNC code to guarentee that target reads
1226    during the initial connect always time-out.  Once getpkt has been
1227    modified to return a timeout indication and, in turn
1228    remote_wait()/wait_for_inferior() have gained a timeout parameter
1229    this can go away.  */
1230 static int wait_forever_enabled_p = 1;
1231
1232 /* Allow the user to specify what sequence to send to the remote
1233    when he requests a program interruption: Although ^C is usually
1234    what remote systems expect (this is the default, here), it is
1235    sometimes preferable to send a break.  On other systems such
1236    as the Linux kernel, a break followed by g, which is Magic SysRq g
1237    is required in order to interrupt the execution.  */
1238 const char interrupt_sequence_control_c[] = "Ctrl-C";
1239 const char interrupt_sequence_break[] = "BREAK";
1240 const char interrupt_sequence_break_g[] = "BREAK-g";
1241 static const char *const interrupt_sequence_modes[] =
1242   {
1243     interrupt_sequence_control_c,
1244     interrupt_sequence_break,
1245     interrupt_sequence_break_g,
1246     NULL
1247   };
1248 static const char *interrupt_sequence_mode = interrupt_sequence_control_c;
1249
1250 static void
1251 show_interrupt_sequence (struct ui_file *file, int from_tty,
1252                          struct cmd_list_element *c,
1253                          const char *value)
1254 {
1255   if (interrupt_sequence_mode == interrupt_sequence_control_c)
1256     fprintf_filtered (file,
1257                       _("Send the ASCII ETX character (Ctrl-c) "
1258                         "to the remote target to interrupt the "
1259                         "execution of the program.\n"));
1260   else if (interrupt_sequence_mode == interrupt_sequence_break)
1261     fprintf_filtered (file,
1262                       _("send a break signal to the remote target "
1263                         "to interrupt the execution of the program.\n"));
1264   else if (interrupt_sequence_mode == interrupt_sequence_break_g)
1265     fprintf_filtered (file,
1266                       _("Send a break signal and 'g' a.k.a. Magic SysRq g to "
1267                         "the remote target to interrupt the execution "
1268                         "of Linux kernel.\n"));
1269   else
1270     internal_error (__FILE__, __LINE__,
1271                     _("Invalid value for interrupt_sequence_mode: %s."),
1272                     interrupt_sequence_mode);
1273 }
1274
1275 /* This boolean variable specifies whether interrupt_sequence is sent
1276    to the remote target when gdb connects to it.
1277    This is mostly needed when you debug the Linux kernel: The Linux kernel
1278    expects BREAK g which is Magic SysRq g for connecting gdb.  */
1279 static int interrupt_on_connect = 0;
1280
1281 /* This variable is used to implement the "set/show remotebreak" commands.
1282    Since these commands are now deprecated in favor of "set/show remote
1283    interrupt-sequence", it no longer has any effect on the code.  */
1284 static int remote_break;
1285
1286 static void
1287 set_remotebreak (const char *args, int from_tty, struct cmd_list_element *c)
1288 {
1289   if (remote_break)
1290     interrupt_sequence_mode = interrupt_sequence_break;
1291   else
1292     interrupt_sequence_mode = interrupt_sequence_control_c;
1293 }
1294
1295 static void
1296 show_remotebreak (struct ui_file *file, int from_tty,
1297                   struct cmd_list_element *c,
1298                   const char *value)
1299 {
1300 }
1301
1302 /* This variable sets the number of bits in an address that are to be
1303    sent in a memory ("M" or "m") packet.  Normally, after stripping
1304    leading zeros, the entire address would be sent.  This variable
1305    restricts the address to REMOTE_ADDRESS_SIZE bits.  HISTORY: The
1306    initial implementation of remote.c restricted the address sent in
1307    memory packets to ``host::sizeof long'' bytes - (typically 32
1308    bits).  Consequently, for 64 bit targets, the upper 32 bits of an
1309    address was never sent.  Since fixing this bug may cause a break in
1310    some remote targets this variable is principly provided to
1311    facilitate backward compatibility.  */
1312
1313 static unsigned int remote_address_size;
1314
1315 \f
1316 /* User configurable variables for the number of characters in a
1317    memory read/write packet.  MIN (rsa->remote_packet_size,
1318    rsa->sizeof_g_packet) is the default.  Some targets need smaller
1319    values (fifo overruns, et.al.) and some users need larger values
1320    (speed up transfers).  The variables ``preferred_*'' (the user
1321    request), ``current_*'' (what was actually set) and ``forced_*''
1322    (Positive - a soft limit, negative - a hard limit).  */
1323
1324 struct memory_packet_config
1325 {
1326   const char *name;
1327   long size;
1328   int fixed_p;
1329 };
1330
1331 /* The default max memory-write-packet-size, when the setting is
1332    "fixed".  The 16k is historical.  (It came from older GDB's using
1333    alloca for buffers and the knowledge (folklore?) that some hosts
1334    don't cope very well with large alloca calls.)  */
1335 #define DEFAULT_MAX_MEMORY_PACKET_SIZE_FIXED 16384
1336
1337 /* The minimum remote packet size for memory transfers.  Ensures we
1338    can write at least one byte.  */
1339 #define MIN_MEMORY_PACKET_SIZE 20
1340
1341 /* Get the memory packet size, assuming it is fixed.  */
1342
1343 static long
1344 get_fixed_memory_packet_size (struct memory_packet_config *config)
1345 {
1346   gdb_assert (config->fixed_p);
1347
1348   if (config->size <= 0)
1349     return DEFAULT_MAX_MEMORY_PACKET_SIZE_FIXED;
1350   else
1351     return config->size;
1352 }
1353
1354 /* Compute the current size of a read/write packet.  Since this makes
1355    use of ``actual_register_packet_size'' the computation is dynamic.  */
1356
1357 static long
1358 get_memory_packet_size (struct memory_packet_config *config)
1359 {
1360   struct remote_state *rs = get_remote_state ();
1361   remote_arch_state *rsa = rs->get_remote_arch_state (target_gdbarch ());
1362
1363   long what_they_get;
1364   if (config->fixed_p)
1365     what_they_get = get_fixed_memory_packet_size (config);
1366   else
1367     {
1368       what_they_get = get_remote_packet_size ();
1369       /* Limit the packet to the size specified by the user.  */
1370       if (config->size > 0
1371           && what_they_get > config->size)
1372         what_they_get = config->size;
1373
1374       /* Limit it to the size of the targets ``g'' response unless we have
1375          permission from the stub to use a larger packet size.  */
1376       if (rs->explicit_packet_size == 0
1377           && rsa->actual_register_packet_size > 0
1378           && what_they_get > rsa->actual_register_packet_size)
1379         what_they_get = rsa->actual_register_packet_size;
1380     }
1381   if (what_they_get < MIN_MEMORY_PACKET_SIZE)
1382     what_they_get = MIN_MEMORY_PACKET_SIZE;
1383
1384   /* Make sure there is room in the global buffer for this packet
1385      (including its trailing NUL byte).  */
1386   if (rs->buf_size < what_they_get + 1)
1387     {
1388       rs->buf_size = 2 * what_they_get;
1389       rs->buf = (char *) xrealloc (rs->buf, 2 * what_they_get);
1390     }
1391
1392   return what_they_get;
1393 }
1394
1395 /* Update the size of a read/write packet.  If they user wants
1396    something really big then do a sanity check.  */
1397
1398 static void
1399 set_memory_packet_size (const char *args, struct memory_packet_config *config)
1400 {
1401   int fixed_p = config->fixed_p;
1402   long size = config->size;
1403
1404   if (args == NULL)
1405     error (_("Argument required (integer, `fixed' or `limited')."));
1406   else if (strcmp (args, "hard") == 0
1407       || strcmp (args, "fixed") == 0)
1408     fixed_p = 1;
1409   else if (strcmp (args, "soft") == 0
1410            || strcmp (args, "limit") == 0)
1411     fixed_p = 0;
1412   else
1413     {
1414       char *end;
1415
1416       size = strtoul (args, &end, 0);
1417       if (args == end)
1418         error (_("Invalid %s (bad syntax)."), config->name);
1419
1420       /* Instead of explicitly capping the size of a packet to or
1421          disallowing it, the user is allowed to set the size to
1422          something arbitrarily large.  */
1423     }
1424
1425   /* Extra checks?  */
1426   if (fixed_p && !config->fixed_p)
1427     {
1428       /* So that the query shows the correct value.  */
1429       long query_size = (size <= 0
1430                          ? DEFAULT_MAX_MEMORY_PACKET_SIZE_FIXED
1431                          : size);
1432
1433       if (! query (_("The target may not be able to correctly handle a %s\n"
1434                    "of %ld bytes. Change the packet size? "),
1435                    config->name, query_size))
1436         error (_("Packet size not changed."));
1437     }
1438   /* Update the config.  */
1439   config->fixed_p = fixed_p;
1440   config->size = size;
1441 }
1442
1443 static void
1444 show_memory_packet_size (struct memory_packet_config *config)
1445 {
1446   if (config->size == 0)
1447     printf_filtered (_("The %s is 0 (default). "), config->name);
1448   else
1449     printf_filtered (_("The %s is %ld. "), config->name, config->size);
1450   if (config->fixed_p)
1451     printf_filtered (_("Packets are fixed at %ld bytes.\n"),
1452                      get_fixed_memory_packet_size (config));
1453   else
1454     {
1455       struct remote_state *rs = get_remote_state ();
1456
1457       if (rs->remote_desc != NULL)
1458         printf_filtered (_("Packets are limited to %ld bytes.\n"),
1459                          get_memory_packet_size (config));
1460       else
1461         puts_filtered ("The actual limit will be further reduced "
1462                        "dependent on the target.\n");
1463     }
1464 }
1465
1466 static struct memory_packet_config memory_write_packet_config =
1467 {
1468   "memory-write-packet-size",
1469 };
1470
1471 static void
1472 set_memory_write_packet_size (const char *args, int from_tty)
1473 {
1474   set_memory_packet_size (args, &memory_write_packet_config);
1475 }
1476
1477 static void
1478 show_memory_write_packet_size (const char *args, int from_tty)
1479 {
1480   show_memory_packet_size (&memory_write_packet_config);
1481 }
1482
1483 static long
1484 get_memory_write_packet_size (void)
1485 {
1486   return get_memory_packet_size (&memory_write_packet_config);
1487 }
1488
1489 static struct memory_packet_config memory_read_packet_config =
1490 {
1491   "memory-read-packet-size",
1492 };
1493
1494 static void
1495 set_memory_read_packet_size (const char *args, int from_tty)
1496 {
1497   set_memory_packet_size (args, &memory_read_packet_config);
1498 }
1499
1500 static void
1501 show_memory_read_packet_size (const char *args, int from_tty)
1502 {
1503   show_memory_packet_size (&memory_read_packet_config);
1504 }
1505
1506 static long
1507 get_memory_read_packet_size (void)
1508 {
1509   long size = get_memory_packet_size (&memory_read_packet_config);
1510
1511   /* FIXME: cagney/1999-11-07: Functions like getpkt() need to get an
1512      extra buffer size argument before the memory read size can be
1513      increased beyond this.  */
1514   if (size > get_remote_packet_size ())
1515     size = get_remote_packet_size ();
1516   return size;
1517 }
1518
1519 \f
1520 /* Generic configuration support for packets the stub optionally
1521    supports.  Allows the user to specify the use of the packet as well
1522    as allowing GDB to auto-detect support in the remote stub.  */
1523
1524 enum packet_support
1525   {
1526     PACKET_SUPPORT_UNKNOWN = 0,
1527     PACKET_ENABLE,
1528     PACKET_DISABLE
1529   };
1530
1531 struct packet_config
1532   {
1533     const char *name;
1534     const char *title;
1535
1536     /* If auto, GDB auto-detects support for this packet or feature,
1537        either through qSupported, or by trying the packet and looking
1538        at the response.  If true, GDB assumes the target supports this
1539        packet.  If false, the packet is disabled.  Configs that don't
1540        have an associated command always have this set to auto.  */
1541     enum auto_boolean detect;
1542
1543     /* Does the target support this packet?  */
1544     enum packet_support support;
1545   };
1546
1547 /* Analyze a packet's return value and update the packet config
1548    accordingly.  */
1549
1550 enum packet_result
1551 {
1552   PACKET_ERROR,
1553   PACKET_OK,
1554   PACKET_UNKNOWN
1555 };
1556
1557 static enum packet_support packet_config_support (struct packet_config *config);
1558 static enum packet_support packet_support (int packet);
1559
1560 static void
1561 show_packet_config_cmd (struct packet_config *config)
1562 {
1563   const char *support = "internal-error";
1564
1565   switch (packet_config_support (config))
1566     {
1567     case PACKET_ENABLE:
1568       support = "enabled";
1569       break;
1570     case PACKET_DISABLE:
1571       support = "disabled";
1572       break;
1573     case PACKET_SUPPORT_UNKNOWN:
1574       support = "unknown";
1575       break;
1576     }
1577   switch (config->detect)
1578     {
1579     case AUTO_BOOLEAN_AUTO:
1580       printf_filtered (_("Support for the `%s' packet "
1581                          "is auto-detected, currently %s.\n"),
1582                        config->name, support);
1583       break;
1584     case AUTO_BOOLEAN_TRUE:
1585     case AUTO_BOOLEAN_FALSE:
1586       printf_filtered (_("Support for the `%s' packet is currently %s.\n"),
1587                        config->name, support);
1588       break;
1589     }
1590 }
1591
1592 static void
1593 add_packet_config_cmd (struct packet_config *config, const char *name,
1594                        const char *title, int legacy)
1595 {
1596   char *set_doc;
1597   char *show_doc;
1598   char *cmd_name;
1599
1600   config->name = name;
1601   config->title = title;
1602   set_doc = xstrprintf ("Set use of remote protocol `%s' (%s) packet",
1603                         name, title);
1604   show_doc = xstrprintf ("Show current use of remote "
1605                          "protocol `%s' (%s) packet",
1606                          name, title);
1607   /* set/show TITLE-packet {auto,on,off} */
1608   cmd_name = xstrprintf ("%s-packet", title);
1609   add_setshow_auto_boolean_cmd (cmd_name, class_obscure,
1610                                 &config->detect, set_doc,
1611                                 show_doc, NULL, /* help_doc */
1612                                 NULL,
1613                                 show_remote_protocol_packet_cmd,
1614                                 &remote_set_cmdlist, &remote_show_cmdlist);
1615   /* The command code copies the documentation strings.  */
1616   xfree (set_doc);
1617   xfree (show_doc);
1618   /* set/show remote NAME-packet {auto,on,off} -- legacy.  */
1619   if (legacy)
1620     {
1621       char *legacy_name;
1622
1623       legacy_name = xstrprintf ("%s-packet", name);
1624       add_alias_cmd (legacy_name, cmd_name, class_obscure, 0,
1625                      &remote_set_cmdlist);
1626       add_alias_cmd (legacy_name, cmd_name, class_obscure, 0,
1627                      &remote_show_cmdlist);
1628     }
1629 }
1630
1631 static enum packet_result
1632 packet_check_result (const char *buf)
1633 {
1634   if (buf[0] != '\0')
1635     {
1636       /* The stub recognized the packet request.  Check that the
1637          operation succeeded.  */
1638       if (buf[0] == 'E'
1639           && isxdigit (buf[1]) && isxdigit (buf[2])
1640           && buf[3] == '\0')
1641         /* "Enn"  - definitly an error.  */
1642         return PACKET_ERROR;
1643
1644       /* Always treat "E." as an error.  This will be used for
1645          more verbose error messages, such as E.memtypes.  */
1646       if (buf[0] == 'E' && buf[1] == '.')
1647         return PACKET_ERROR;
1648
1649       /* The packet may or may not be OK.  Just assume it is.  */
1650       return PACKET_OK;
1651     }
1652   else
1653     /* The stub does not support the packet.  */
1654     return PACKET_UNKNOWN;
1655 }
1656
1657 static enum packet_result
1658 packet_ok (const char *buf, struct packet_config *config)
1659 {
1660   enum packet_result result;
1661
1662   if (config->detect != AUTO_BOOLEAN_TRUE
1663       && config->support == PACKET_DISABLE)
1664     internal_error (__FILE__, __LINE__,
1665                     _("packet_ok: attempt to use a disabled packet"));
1666
1667   result = packet_check_result (buf);
1668   switch (result)
1669     {
1670     case PACKET_OK:
1671     case PACKET_ERROR:
1672       /* The stub recognized the packet request.  */
1673       if (config->support == PACKET_SUPPORT_UNKNOWN)
1674         {
1675           if (remote_debug)
1676             fprintf_unfiltered (gdb_stdlog,
1677                                 "Packet %s (%s) is supported\n",
1678                                 config->name, config->title);
1679           config->support = PACKET_ENABLE;
1680         }
1681       break;
1682     case PACKET_UNKNOWN:
1683       /* The stub does not support the packet.  */
1684       if (config->detect == AUTO_BOOLEAN_AUTO
1685           && config->support == PACKET_ENABLE)
1686         {
1687           /* If the stub previously indicated that the packet was
1688              supported then there is a protocol error.  */
1689           error (_("Protocol error: %s (%s) conflicting enabled responses."),
1690                  config->name, config->title);
1691         }
1692       else if (config->detect == AUTO_BOOLEAN_TRUE)
1693         {
1694           /* The user set it wrong.  */
1695           error (_("Enabled packet %s (%s) not recognized by stub"),
1696                  config->name, config->title);
1697         }
1698
1699       if (remote_debug)
1700         fprintf_unfiltered (gdb_stdlog,
1701                             "Packet %s (%s) is NOT supported\n",
1702                             config->name, config->title);
1703       config->support = PACKET_DISABLE;
1704       break;
1705     }
1706
1707   return result;
1708 }
1709
1710 enum {
1711   PACKET_vCont = 0,
1712   PACKET_X,
1713   PACKET_qSymbol,
1714   PACKET_P,
1715   PACKET_p,
1716   PACKET_Z0,
1717   PACKET_Z1,
1718   PACKET_Z2,
1719   PACKET_Z3,
1720   PACKET_Z4,
1721   PACKET_vFile_setfs,
1722   PACKET_vFile_open,
1723   PACKET_vFile_pread,
1724   PACKET_vFile_pwrite,
1725   PACKET_vFile_close,
1726   PACKET_vFile_unlink,
1727   PACKET_vFile_readlink,
1728   PACKET_vFile_fstat,
1729   PACKET_qXfer_auxv,
1730   PACKET_qXfer_features,
1731   PACKET_qXfer_exec_file,
1732   PACKET_qXfer_libraries,
1733   PACKET_qXfer_libraries_svr4,
1734   PACKET_qXfer_memory_map,
1735   PACKET_qXfer_spu_read,
1736   PACKET_qXfer_spu_write,
1737   PACKET_qXfer_osdata,
1738   PACKET_qXfer_threads,
1739   PACKET_qXfer_statictrace_read,
1740   PACKET_qXfer_traceframe_info,
1741   PACKET_qXfer_uib,
1742   PACKET_qGetTIBAddr,
1743   PACKET_qGetTLSAddr,
1744   PACKET_qSupported,
1745   PACKET_qTStatus,
1746   PACKET_QPassSignals,
1747   PACKET_QCatchSyscalls,
1748   PACKET_QProgramSignals,
1749   PACKET_QSetWorkingDir,
1750   PACKET_QStartupWithShell,
1751   PACKET_QEnvironmentHexEncoded,
1752   PACKET_QEnvironmentReset,
1753   PACKET_QEnvironmentUnset,
1754   PACKET_qCRC,
1755   PACKET_qSearch_memory,
1756   PACKET_vAttach,
1757   PACKET_vRun,
1758   PACKET_QStartNoAckMode,
1759   PACKET_vKill,
1760   PACKET_qXfer_siginfo_read,
1761   PACKET_qXfer_siginfo_write,
1762   PACKET_qAttached,
1763
1764   /* Support for conditional tracepoints.  */
1765   PACKET_ConditionalTracepoints,
1766
1767   /* Support for target-side breakpoint conditions.  */
1768   PACKET_ConditionalBreakpoints,
1769
1770   /* Support for target-side breakpoint commands.  */
1771   PACKET_BreakpointCommands,
1772
1773   /* Support for fast tracepoints.  */
1774   PACKET_FastTracepoints,
1775
1776   /* Support for static tracepoints.  */
1777   PACKET_StaticTracepoints,
1778
1779   /* Support for installing tracepoints while a trace experiment is
1780      running.  */
1781   PACKET_InstallInTrace,
1782
1783   PACKET_bc,
1784   PACKET_bs,
1785   PACKET_TracepointSource,
1786   PACKET_QAllow,
1787   PACKET_qXfer_fdpic,
1788   PACKET_QDisableRandomization,
1789   PACKET_QAgent,
1790   PACKET_QTBuffer_size,
1791   PACKET_Qbtrace_off,
1792   PACKET_Qbtrace_bts,
1793   PACKET_Qbtrace_pt,
1794   PACKET_qXfer_btrace,
1795
1796   /* Support for the QNonStop packet.  */
1797   PACKET_QNonStop,
1798
1799   /* Support for the QThreadEvents packet.  */
1800   PACKET_QThreadEvents,
1801
1802   /* Support for multi-process extensions.  */
1803   PACKET_multiprocess_feature,
1804
1805   /* Support for enabling and disabling tracepoints while a trace
1806      experiment is running.  */
1807   PACKET_EnableDisableTracepoints_feature,
1808
1809   /* Support for collecting strings using the tracenz bytecode.  */
1810   PACKET_tracenz_feature,
1811
1812   /* Support for continuing to run a trace experiment while GDB is
1813      disconnected.  */
1814   PACKET_DisconnectedTracing_feature,
1815
1816   /* Support for qXfer:libraries-svr4:read with a non-empty annex.  */
1817   PACKET_augmented_libraries_svr4_read_feature,
1818
1819   /* Support for the qXfer:btrace-conf:read packet.  */
1820   PACKET_qXfer_btrace_conf,
1821
1822   /* Support for the Qbtrace-conf:bts:size packet.  */
1823   PACKET_Qbtrace_conf_bts_size,
1824
1825   /* Support for swbreak+ feature.  */
1826   PACKET_swbreak_feature,
1827
1828   /* Support for hwbreak+ feature.  */
1829   PACKET_hwbreak_feature,
1830
1831   /* Support for fork events.  */
1832   PACKET_fork_event_feature,
1833
1834   /* Support for vfork events.  */
1835   PACKET_vfork_event_feature,
1836
1837   /* Support for the Qbtrace-conf:pt:size packet.  */
1838   PACKET_Qbtrace_conf_pt_size,
1839
1840   /* Support for exec events.  */
1841   PACKET_exec_event_feature,
1842
1843   /* Support for query supported vCont actions.  */
1844   PACKET_vContSupported,
1845
1846   /* Support remote CTRL-C.  */
1847   PACKET_vCtrlC,
1848
1849   /* Support TARGET_WAITKIND_NO_RESUMED.  */
1850   PACKET_no_resumed,
1851
1852   PACKET_MAX
1853 };
1854
1855 static struct packet_config remote_protocol_packets[PACKET_MAX];
1856
1857 /* Returns the packet's corresponding "set remote foo-packet" command
1858    state.  See struct packet_config for more details.  */
1859
1860 static enum auto_boolean
1861 packet_set_cmd_state (int packet)
1862 {
1863   return remote_protocol_packets[packet].detect;
1864 }
1865
1866 /* Returns whether a given packet or feature is supported.  This takes
1867    into account the state of the corresponding "set remote foo-packet"
1868    command, which may be used to bypass auto-detection.  */
1869
1870 static enum packet_support
1871 packet_config_support (struct packet_config *config)
1872 {
1873   switch (config->detect)
1874     {
1875     case AUTO_BOOLEAN_TRUE:
1876       return PACKET_ENABLE;
1877     case AUTO_BOOLEAN_FALSE:
1878       return PACKET_DISABLE;
1879     case AUTO_BOOLEAN_AUTO:
1880       return config->support;
1881     default:
1882       gdb_assert_not_reached (_("bad switch"));
1883     }
1884 }
1885
1886 /* Same as packet_config_support, but takes the packet's enum value as
1887    argument.  */
1888
1889 static enum packet_support
1890 packet_support (int packet)
1891 {
1892   struct packet_config *config = &remote_protocol_packets[packet];
1893
1894   return packet_config_support (config);
1895 }
1896
1897 static void
1898 show_remote_protocol_packet_cmd (struct ui_file *file, int from_tty,
1899                                  struct cmd_list_element *c,
1900                                  const char *value)
1901 {
1902   struct packet_config *packet;
1903
1904   for (packet = remote_protocol_packets;
1905        packet < &remote_protocol_packets[PACKET_MAX];
1906        packet++)
1907     {
1908       if (&packet->detect == c->var)
1909         {
1910           show_packet_config_cmd (packet);
1911           return;
1912         }
1913     }
1914   internal_error (__FILE__, __LINE__, _("Could not find config for %s"),
1915                   c->name);
1916 }
1917
1918 /* Should we try one of the 'Z' requests?  */
1919
1920 enum Z_packet_type
1921 {
1922   Z_PACKET_SOFTWARE_BP,
1923   Z_PACKET_HARDWARE_BP,
1924   Z_PACKET_WRITE_WP,
1925   Z_PACKET_READ_WP,
1926   Z_PACKET_ACCESS_WP,
1927   NR_Z_PACKET_TYPES
1928 };
1929
1930 /* For compatibility with older distributions.  Provide a ``set remote
1931    Z-packet ...'' command that updates all the Z packet types.  */
1932
1933 static enum auto_boolean remote_Z_packet_detect;
1934
1935 static void
1936 set_remote_protocol_Z_packet_cmd (const char *args, int from_tty,
1937                                   struct cmd_list_element *c)
1938 {
1939   int i;
1940
1941   for (i = 0; i < NR_Z_PACKET_TYPES; i++)
1942     remote_protocol_packets[PACKET_Z0 + i].detect = remote_Z_packet_detect;
1943 }
1944
1945 static void
1946 show_remote_protocol_Z_packet_cmd (struct ui_file *file, int from_tty,
1947                                    struct cmd_list_element *c,
1948                                    const char *value)
1949 {
1950   int i;
1951
1952   for (i = 0; i < NR_Z_PACKET_TYPES; i++)
1953     {
1954       show_packet_config_cmd (&remote_protocol_packets[PACKET_Z0 + i]);
1955     }
1956 }
1957
1958 /* Returns true if the multi-process extensions are in effect.  */
1959
1960 static int
1961 remote_multi_process_p (struct remote_state *rs)
1962 {
1963   return packet_support (PACKET_multiprocess_feature) == PACKET_ENABLE;
1964 }
1965
1966 /* Returns true if fork events are supported.  */
1967
1968 static int
1969 remote_fork_event_p (struct remote_state *rs)
1970 {
1971   return packet_support (PACKET_fork_event_feature) == PACKET_ENABLE;
1972 }
1973
1974 /* Returns true if vfork events are supported.  */
1975
1976 static int
1977 remote_vfork_event_p (struct remote_state *rs)
1978 {
1979   return packet_support (PACKET_vfork_event_feature) == PACKET_ENABLE;
1980 }
1981
1982 /* Returns true if exec events are supported.  */
1983
1984 static int
1985 remote_exec_event_p (struct remote_state *rs)
1986 {
1987   return packet_support (PACKET_exec_event_feature) == PACKET_ENABLE;
1988 }
1989
1990 /* Insert fork catchpoint target routine.  If fork events are enabled
1991    then return success, nothing more to do.  */
1992
1993 int
1994 remote_target::insert_fork_catchpoint (int pid)
1995 {
1996   struct remote_state *rs = get_remote_state ();
1997
1998   return !remote_fork_event_p (rs);
1999 }
2000
2001 /* Remove fork catchpoint target routine.  Nothing to do, just
2002    return success.  */
2003
2004 int
2005 remote_target::remove_fork_catchpoint (int pid)
2006 {
2007   return 0;
2008 }
2009
2010 /* Insert vfork catchpoint target routine.  If vfork events are enabled
2011    then return success, nothing more to do.  */
2012
2013 int
2014 remote_target::insert_vfork_catchpoint (int pid)
2015 {
2016   struct remote_state *rs = get_remote_state ();
2017
2018   return !remote_vfork_event_p (rs);
2019 }
2020
2021 /* Remove vfork catchpoint target routine.  Nothing to do, just
2022    return success.  */
2023
2024 int
2025 remote_target::remove_vfork_catchpoint (int pid)
2026 {
2027   return 0;
2028 }
2029
2030 /* Insert exec catchpoint target routine.  If exec events are
2031    enabled, just return success.  */
2032
2033 int
2034 remote_target::insert_exec_catchpoint (int pid)
2035 {
2036   struct remote_state *rs = get_remote_state ();
2037
2038   return !remote_exec_event_p (rs);
2039 }
2040
2041 /* Remove exec catchpoint target routine.  Nothing to do, just
2042    return success.  */
2043
2044 int
2045 remote_target::remove_exec_catchpoint (int pid)
2046 {
2047   return 0;
2048 }
2049
2050 \f
2051 /* Asynchronous signal handle registered as event loop source for
2052    when we have pending events ready to be passed to the core.  */
2053
2054 static struct async_event_handler *remote_async_inferior_event_token;
2055
2056 \f
2057
2058 static ptid_t magic_null_ptid;
2059 static ptid_t not_sent_ptid;
2060 static ptid_t any_thread_ptid;
2061
2062 /* Find out if the stub attached to PID (and hence GDB should offer to
2063    detach instead of killing it when bailing out).  */
2064
2065 static int
2066 remote_query_attached (int pid)
2067 {
2068   struct remote_state *rs = get_remote_state ();
2069   size_t size = get_remote_packet_size ();
2070
2071   if (packet_support (PACKET_qAttached) == PACKET_DISABLE)
2072     return 0;
2073
2074   if (remote_multi_process_p (rs))
2075     xsnprintf (rs->buf, size, "qAttached:%x", pid);
2076   else
2077     xsnprintf (rs->buf, size, "qAttached");
2078
2079   putpkt (rs->buf);
2080   getpkt (&rs->buf, &rs->buf_size, 0);
2081
2082   switch (packet_ok (rs->buf,
2083                      &remote_protocol_packets[PACKET_qAttached]))
2084     {
2085     case PACKET_OK:
2086       if (strcmp (rs->buf, "1") == 0)
2087         return 1;
2088       break;
2089     case PACKET_ERROR:
2090       warning (_("Remote failure reply: %s"), rs->buf);
2091       break;
2092     case PACKET_UNKNOWN:
2093       break;
2094     }
2095
2096   return 0;
2097 }
2098
2099 /* Add PID to GDB's inferior table.  If FAKE_PID_P is true, then PID
2100    has been invented by GDB, instead of reported by the target.  Since
2101    we can be connected to a remote system before before knowing about
2102    any inferior, mark the target with execution when we find the first
2103    inferior.  If ATTACHED is 1, then we had just attached to this
2104    inferior.  If it is 0, then we just created this inferior.  If it
2105    is -1, then try querying the remote stub to find out if it had
2106    attached to the inferior or not.  If TRY_OPEN_EXEC is true then
2107    attempt to open this inferior's executable as the main executable
2108    if no main executable is open already.  */
2109
2110 static struct inferior *
2111 remote_add_inferior (int fake_pid_p, int pid, int attached,
2112                      int try_open_exec)
2113 {
2114   struct inferior *inf;
2115
2116   /* Check whether this process we're learning about is to be
2117      considered attached, or if is to be considered to have been
2118      spawned by the stub.  */
2119   if (attached == -1)
2120     attached = remote_query_attached (pid);
2121
2122   if (gdbarch_has_global_solist (target_gdbarch ()))
2123     {
2124       /* If the target shares code across all inferiors, then every
2125          attach adds a new inferior.  */
2126       inf = add_inferior (pid);
2127
2128       /* ... and every inferior is bound to the same program space.
2129          However, each inferior may still have its own address
2130          space.  */
2131       inf->aspace = maybe_new_address_space ();
2132       inf->pspace = current_program_space;
2133     }
2134   else
2135     {
2136       /* In the traditional debugging scenario, there's a 1-1 match
2137          between program/address spaces.  We simply bind the inferior
2138          to the program space's address space.  */
2139       inf = current_inferior ();
2140       inferior_appeared (inf, pid);
2141     }
2142
2143   inf->attach_flag = attached;
2144   inf->fake_pid_p = fake_pid_p;
2145
2146   /* If no main executable is currently open then attempt to
2147      open the file that was executed to create this inferior.  */
2148   if (try_open_exec && get_exec_file (0) == NULL)
2149     exec_file_locate_attach (pid, 0, 1);
2150
2151   return inf;
2152 }
2153
2154 static remote_thread_info *get_remote_thread_info (thread_info *thread);
2155
2156 /* Add thread PTID to GDB's thread list.  Tag it as executing/running
2157    according to RUNNING.  */
2158
2159 static void
2160 remote_add_thread (ptid_t ptid, int running, int executing)
2161 {
2162   struct remote_state *rs = get_remote_state ();
2163   struct thread_info *thread;
2164
2165   /* GDB historically didn't pull threads in the initial connection
2166      setup.  If the remote target doesn't even have a concept of
2167      threads (e.g., a bare-metal target), even if internally we
2168      consider that a single-threaded target, mentioning a new thread
2169      might be confusing to the user.  Be silent then, preserving the
2170      age old behavior.  */
2171   if (rs->starting_up)
2172     thread = add_thread_silent (ptid);
2173   else
2174     thread = add_thread (ptid);
2175
2176   get_remote_thread_info (thread)->vcont_resumed = executing;
2177   set_executing (ptid, executing);
2178   set_running (ptid, running);
2179 }
2180
2181 /* Come here when we learn about a thread id from the remote target.
2182    It may be the first time we hear about such thread, so take the
2183    opportunity to add it to GDB's thread list.  In case this is the
2184    first time we're noticing its corresponding inferior, add it to
2185    GDB's inferior list as well.  EXECUTING indicates whether the
2186    thread is (internally) executing or stopped.  */
2187
2188 static void
2189 remote_notice_new_inferior (ptid_t currthread, int executing)
2190 {
2191   /* In non-stop mode, we assume new found threads are (externally)
2192      running until proven otherwise with a stop reply.  In all-stop,
2193      we can only get here if all threads are stopped.  */
2194   int running = target_is_non_stop_p () ? 1 : 0;
2195
2196   /* If this is a new thread, add it to GDB's thread list.
2197      If we leave it up to WFI to do this, bad things will happen.  */
2198
2199   if (in_thread_list (currthread) && is_exited (currthread))
2200     {
2201       /* We're seeing an event on a thread id we knew had exited.
2202          This has to be a new thread reusing the old id.  Add it.  */
2203       remote_add_thread (currthread, running, executing);
2204       return;
2205     }
2206
2207   if (!in_thread_list (currthread))
2208     {
2209       struct inferior *inf = NULL;
2210       int pid = ptid_get_pid (currthread);
2211
2212       if (ptid_is_pid (inferior_ptid)
2213           && pid == ptid_get_pid (inferior_ptid))
2214         {
2215           /* inferior_ptid has no thread member yet.  This can happen
2216              with the vAttach -> remote_wait,"TAAthread:" path if the
2217              stub doesn't support qC.  This is the first stop reported
2218              after an attach, so this is the main thread.  Update the
2219              ptid in the thread list.  */
2220           if (in_thread_list (pid_to_ptid (pid)))
2221             thread_change_ptid (inferior_ptid, currthread);
2222           else
2223             {
2224               remote_add_thread (currthread, running, executing);
2225               inferior_ptid = currthread;
2226             }
2227           return;
2228         }
2229
2230       if (ptid_equal (magic_null_ptid, inferior_ptid))
2231         {
2232           /* inferior_ptid is not set yet.  This can happen with the
2233              vRun -> remote_wait,"TAAthread:" path if the stub
2234              doesn't support qC.  This is the first stop reported
2235              after an attach, so this is the main thread.  Update the
2236              ptid in the thread list.  */
2237           thread_change_ptid (inferior_ptid, currthread);
2238           return;
2239         }
2240
2241       /* When connecting to a target remote, or to a target
2242          extended-remote which already was debugging an inferior, we
2243          may not know about it yet.  Add it before adding its child
2244          thread, so notifications are emitted in a sensible order.  */
2245       if (!in_inferior_list (ptid_get_pid (currthread)))
2246         {
2247           struct remote_state *rs = get_remote_state ();
2248           int fake_pid_p = !remote_multi_process_p (rs);
2249
2250           inf = remote_add_inferior (fake_pid_p,
2251                                      ptid_get_pid (currthread), -1, 1);
2252         }
2253
2254       /* This is really a new thread.  Add it.  */
2255       remote_add_thread (currthread, running, executing);
2256
2257       /* If we found a new inferior, let the common code do whatever
2258          it needs to with it (e.g., read shared libraries, insert
2259          breakpoints), unless we're just setting up an all-stop
2260          connection.  */
2261       if (inf != NULL)
2262         {
2263           struct remote_state *rs = get_remote_state ();
2264
2265           if (!rs->starting_up)
2266             notice_new_inferior (currthread, executing, 0);
2267         }
2268     }
2269 }
2270
2271 /* Return THREAD's private thread data, creating it if necessary.  */
2272
2273 static remote_thread_info *
2274 get_remote_thread_info (thread_info *thread)
2275 {
2276   gdb_assert (thread != NULL);
2277
2278   if (thread->priv == NULL)
2279     thread->priv.reset (new remote_thread_info);
2280
2281   return static_cast<remote_thread_info *> (thread->priv.get ());
2282 }
2283
2284 /* Return PTID's private thread data, creating it if necessary.  */
2285
2286 static remote_thread_info *
2287 get_remote_thread_info (ptid_t ptid)
2288 {
2289   struct thread_info *info = find_thread_ptid (ptid);
2290
2291   return get_remote_thread_info (info);
2292 }
2293
2294 /* Call this function as a result of
2295    1) A halt indication (T packet) containing a thread id
2296    2) A direct query of currthread
2297    3) Successful execution of set thread */
2298
2299 static void
2300 record_currthread (struct remote_state *rs, ptid_t currthread)
2301 {
2302   rs->general_thread = currthread;
2303 }
2304
2305 /* If 'QPassSignals' is supported, tell the remote stub what signals
2306    it can simply pass through to the inferior without reporting.  */
2307
2308 void
2309 remote_target::pass_signals (int numsigs, unsigned char *pass_signals)
2310 {
2311   if (packet_support (PACKET_QPassSignals) != PACKET_DISABLE)
2312     {
2313       char *pass_packet, *p;
2314       int count = 0, i;
2315       struct remote_state *rs = get_remote_state ();
2316
2317       gdb_assert (numsigs < 256);
2318       for (i = 0; i < numsigs; i++)
2319         {
2320           if (pass_signals[i])
2321             count++;
2322         }
2323       pass_packet = (char *) xmalloc (count * 3 + strlen ("QPassSignals:") + 1);
2324       strcpy (pass_packet, "QPassSignals:");
2325       p = pass_packet + strlen (pass_packet);
2326       for (i = 0; i < numsigs; i++)
2327         {
2328           if (pass_signals[i])
2329             {
2330               if (i >= 16)
2331                 *p++ = tohex (i >> 4);
2332               *p++ = tohex (i & 15);
2333               if (count)
2334                 *p++ = ';';
2335               else
2336                 break;
2337               count--;
2338             }
2339         }
2340       *p = 0;
2341       if (!rs->last_pass_packet || strcmp (rs->last_pass_packet, pass_packet))
2342         {
2343           putpkt (pass_packet);
2344           getpkt (&rs->buf, &rs->buf_size, 0);
2345           packet_ok (rs->buf, &remote_protocol_packets[PACKET_QPassSignals]);
2346           if (rs->last_pass_packet)
2347             xfree (rs->last_pass_packet);
2348           rs->last_pass_packet = pass_packet;
2349         }
2350       else
2351         xfree (pass_packet);
2352     }
2353 }
2354
2355 /* If 'QCatchSyscalls' is supported, tell the remote stub
2356    to report syscalls to GDB.  */
2357
2358 int
2359 remote_target::set_syscall_catchpoint (int pid, bool needed, int any_count,
2360                                        gdb::array_view<const int> syscall_counts)
2361 {
2362   const char *catch_packet;
2363   enum packet_result result;
2364   int n_sysno = 0;
2365
2366   if (packet_support (PACKET_QCatchSyscalls) == PACKET_DISABLE)
2367     {
2368       /* Not supported.  */
2369       return 1;
2370     }
2371
2372   if (needed && any_count == 0)
2373     {
2374       /* Count how many syscalls are to be caught.  */
2375       for (size_t i = 0; i < syscall_counts.size (); i++)
2376         {
2377           if (syscall_counts[i] != 0)
2378             n_sysno++;
2379         }
2380     }
2381
2382   if (remote_debug)
2383     {
2384       fprintf_unfiltered (gdb_stdlog,
2385                           "remote_set_syscall_catchpoint "
2386                           "pid %d needed %d any_count %d n_sysno %d\n",
2387                           pid, needed, any_count, n_sysno);
2388     }
2389
2390   std::string built_packet;
2391   if (needed)
2392     {
2393       /* Prepare a packet with the sysno list, assuming max 8+1
2394          characters for a sysno.  If the resulting packet size is too
2395          big, fallback on the non-selective packet.  */
2396       const int maxpktsz = strlen ("QCatchSyscalls:1") + n_sysno * 9 + 1;
2397       built_packet.reserve (maxpktsz);
2398       built_packet = "QCatchSyscalls:1";
2399       if (any_count == 0)
2400         {
2401           /* Add in each syscall to be caught.  */
2402           for (size_t i = 0; i < syscall_counts.size (); i++)
2403             {
2404               if (syscall_counts[i] != 0)
2405                 string_appendf (built_packet, ";%zx", i);
2406             }
2407         }
2408       if (built_packet.size () > get_remote_packet_size ())
2409         {
2410           /* catch_packet too big.  Fallback to less efficient
2411              non selective mode, with GDB doing the filtering.  */
2412           catch_packet = "QCatchSyscalls:1";
2413         }
2414       else
2415         catch_packet = built_packet.c_str ();
2416     }
2417   else
2418     catch_packet = "QCatchSyscalls:0";
2419
2420   struct remote_state *rs = get_remote_state ();
2421
2422   putpkt (catch_packet);
2423   getpkt (&rs->buf, &rs->buf_size, 0);
2424   result = packet_ok (rs->buf, &remote_protocol_packets[PACKET_QCatchSyscalls]);
2425   if (result == PACKET_OK)
2426     return 0;
2427   else
2428     return -1;
2429 }
2430
2431 /* If 'QProgramSignals' is supported, tell the remote stub what
2432    signals it should pass through to the inferior when detaching.  */
2433
2434 void
2435 remote_target::program_signals (int numsigs, unsigned char *signals)
2436 {
2437   if (packet_support (PACKET_QProgramSignals) != PACKET_DISABLE)
2438     {
2439       char *packet, *p;
2440       int count = 0, i;
2441       struct remote_state *rs = get_remote_state ();
2442
2443       gdb_assert (numsigs < 256);
2444       for (i = 0; i < numsigs; i++)
2445         {
2446           if (signals[i])
2447             count++;
2448         }
2449       packet = (char *) xmalloc (count * 3 + strlen ("QProgramSignals:") + 1);
2450       strcpy (packet, "QProgramSignals:");
2451       p = packet + strlen (packet);
2452       for (i = 0; i < numsigs; i++)
2453         {
2454           if (signal_pass_state (i))
2455             {
2456               if (i >= 16)
2457                 *p++ = tohex (i >> 4);
2458               *p++ = tohex (i & 15);
2459               if (count)
2460                 *p++ = ';';
2461               else
2462                 break;
2463               count--;
2464             }
2465         }
2466       *p = 0;
2467       if (!rs->last_program_signals_packet
2468           || strcmp (rs->last_program_signals_packet, packet) != 0)
2469         {
2470           putpkt (packet);
2471           getpkt (&rs->buf, &rs->buf_size, 0);
2472           packet_ok (rs->buf, &remote_protocol_packets[PACKET_QProgramSignals]);
2473           xfree (rs->last_program_signals_packet);
2474           rs->last_program_signals_packet = packet;
2475         }
2476       else
2477         xfree (packet);
2478     }
2479 }
2480
2481 /* If PTID is MAGIC_NULL_PTID, don't set any thread.  If PTID is
2482    MINUS_ONE_PTID, set the thread to -1, so the stub returns the
2483    thread.  If GEN is set, set the general thread, if not, then set
2484    the step/continue thread.  */
2485 static void
2486 set_thread (ptid_t ptid, int gen)
2487 {
2488   struct remote_state *rs = get_remote_state ();
2489   ptid_t state = gen ? rs->general_thread : rs->continue_thread;
2490   char *buf = rs->buf;
2491   char *endbuf = rs->buf + get_remote_packet_size ();
2492
2493   if (ptid_equal (state, ptid))
2494     return;
2495
2496   *buf++ = 'H';
2497   *buf++ = gen ? 'g' : 'c';
2498   if (ptid_equal (ptid, magic_null_ptid))
2499     xsnprintf (buf, endbuf - buf, "0");
2500   else if (ptid_equal (ptid, any_thread_ptid))
2501     xsnprintf (buf, endbuf - buf, "0");
2502   else if (ptid_equal (ptid, minus_one_ptid))
2503     xsnprintf (buf, endbuf - buf, "-1");
2504   else
2505     write_ptid (buf, endbuf, ptid);
2506   putpkt (rs->buf);
2507   getpkt (&rs->buf, &rs->buf_size, 0);
2508   if (gen)
2509     rs->general_thread = ptid;
2510   else
2511     rs->continue_thread = ptid;
2512 }
2513
2514 static void
2515 set_general_thread (ptid_t ptid)
2516 {
2517   set_thread (ptid, 1);
2518 }
2519
2520 static void
2521 set_continue_thread (ptid_t ptid)
2522 {
2523   set_thread (ptid, 0);
2524 }
2525
2526 /* Change the remote current process.  Which thread within the process
2527    ends up selected isn't important, as long as it is the same process
2528    as what INFERIOR_PTID points to.
2529
2530    This comes from that fact that there is no explicit notion of
2531    "selected process" in the protocol.  The selected process for
2532    general operations is the process the selected general thread
2533    belongs to.  */
2534
2535 static void
2536 set_general_process (void)
2537 {
2538   struct remote_state *rs = get_remote_state ();
2539
2540   /* If the remote can't handle multiple processes, don't bother.  */
2541   if (!remote_multi_process_p (rs))
2542     return;
2543
2544   /* We only need to change the remote current thread if it's pointing
2545      at some other process.  */
2546   if (ptid_get_pid (rs->general_thread) != ptid_get_pid (inferior_ptid))
2547     set_general_thread (inferior_ptid);
2548 }
2549
2550 \f
2551 /* Return nonzero if this is the main thread that we made up ourselves
2552    to model non-threaded targets as single-threaded.  */
2553
2554 static int
2555 remote_thread_always_alive (ptid_t ptid)
2556 {
2557   if (ptid_equal (ptid, magic_null_ptid))
2558     /* The main thread is always alive.  */
2559     return 1;
2560
2561   if (ptid_get_pid (ptid) != 0 && ptid_get_lwp (ptid) == 0)
2562     /* The main thread is always alive.  This can happen after a
2563        vAttach, if the remote side doesn't support
2564        multi-threading.  */
2565     return 1;
2566
2567   return 0;
2568 }
2569
2570 /* Return nonzero if the thread PTID is still alive on the remote
2571    system.  */
2572
2573 bool
2574 remote_target::thread_alive (ptid_t ptid)
2575 {
2576   struct remote_state *rs = get_remote_state ();
2577   char *p, *endp;
2578
2579   /* Check if this is a thread that we made up ourselves to model
2580      non-threaded targets as single-threaded.  */
2581   if (remote_thread_always_alive (ptid))
2582     return 1;
2583
2584   p = rs->buf;
2585   endp = rs->buf + get_remote_packet_size ();
2586
2587   *p++ = 'T';
2588   write_ptid (p, endp, ptid);
2589
2590   putpkt (rs->buf);
2591   getpkt (&rs->buf, &rs->buf_size, 0);
2592   return (rs->buf[0] == 'O' && rs->buf[1] == 'K');
2593 }
2594
2595 /* Return a pointer to a thread name if we know it and NULL otherwise.
2596    The thread_info object owns the memory for the name.  */
2597
2598 const char *
2599 remote_target::thread_name (struct thread_info *info)
2600 {
2601   if (info->priv != NULL)
2602     {
2603       const std::string &name = get_remote_thread_info (info)->name;
2604       return !name.empty () ? name.c_str () : NULL;
2605     }
2606
2607   return NULL;
2608 }
2609
2610 /* About these extended threadlist and threadinfo packets.  They are
2611    variable length packets but, the fields within them are often fixed
2612    length.  They are redundent enough to send over UDP as is the
2613    remote protocol in general.  There is a matching unit test module
2614    in libstub.  */
2615
2616 /* WARNING: This threadref data structure comes from the remote O.S.,
2617    libstub protocol encoding, and remote.c.  It is not particularly
2618    changable.  */
2619
2620 /* Right now, the internal structure is int. We want it to be bigger.
2621    Plan to fix this.  */
2622
2623 typedef int gdb_threadref;      /* Internal GDB thread reference.  */
2624
2625 /* gdb_ext_thread_info is an internal GDB data structure which is
2626    equivalent to the reply of the remote threadinfo packet.  */
2627
2628 struct gdb_ext_thread_info
2629   {
2630     threadref threadid;         /* External form of thread reference.  */
2631     int active;                 /* Has state interesting to GDB?
2632                                    regs, stack.  */
2633     char display[256];          /* Brief state display, name,
2634                                    blocked/suspended.  */
2635     char shortname[32];         /* To be used to name threads.  */
2636     char more_display[256];     /* Long info, statistics, queue depth,
2637                                    whatever.  */
2638   };
2639
2640 /* The volume of remote transfers can be limited by submitting
2641    a mask containing bits specifying the desired information.
2642    Use a union of these values as the 'selection' parameter to
2643    get_thread_info.  FIXME: Make these TAG names more thread specific.  */
2644
2645 #define TAG_THREADID 1
2646 #define TAG_EXISTS 2
2647 #define TAG_DISPLAY 4
2648 #define TAG_THREADNAME 8
2649 #define TAG_MOREDISPLAY 16
2650
2651 #define BUF_THREAD_ID_SIZE (OPAQUETHREADBYTES * 2)
2652
2653 static char *unpack_nibble (char *buf, int *val);
2654
2655 static char *unpack_byte (char *buf, int *value);
2656
2657 static char *pack_int (char *buf, int value);
2658
2659 static char *unpack_int (char *buf, int *value);
2660
2661 static char *unpack_string (char *src, char *dest, int length);
2662
2663 static char *pack_threadid (char *pkt, threadref *id);
2664
2665 static char *unpack_threadid (char *inbuf, threadref *id);
2666
2667 void int_to_threadref (threadref *id, int value);
2668
2669 static int threadref_to_int (threadref *ref);
2670
2671 static void copy_threadref (threadref *dest, threadref *src);
2672
2673 static int threadmatch (threadref *dest, threadref *src);
2674
2675 static char *pack_threadinfo_request (char *pkt, int mode,
2676                                       threadref *id);
2677
2678 static int remote_unpack_thread_info_response (char *pkt,
2679                                                threadref *expectedref,
2680                                                struct gdb_ext_thread_info
2681                                                *info);
2682
2683
2684 static int remote_get_threadinfo (threadref *threadid,
2685                                   int fieldset, /*TAG mask */
2686                                   struct gdb_ext_thread_info *info);
2687
2688 static char *pack_threadlist_request (char *pkt, int startflag,
2689                                       int threadcount,
2690                                       threadref *nextthread);
2691
2692 static int parse_threadlist_response (char *pkt,
2693                                       int result_limit,
2694                                       threadref *original_echo,
2695                                       threadref *resultlist,
2696                                       int *doneflag);
2697
2698 static int remote_get_threadlist (int startflag,
2699                                   threadref *nextthread,
2700                                   int result_limit,
2701                                   int *done,
2702                                   int *result_count,
2703                                   threadref *threadlist);
2704
2705 typedef int (*rmt_thread_action) (threadref *ref, void *context);
2706
2707 static int remote_threadlist_iterator (rmt_thread_action stepfunction,
2708                                        void *context, int looplimit);
2709
2710 static int remote_newthread_step (threadref *ref, void *context);
2711
2712
2713 /* Write a PTID to BUF.  ENDBUF points to one-passed-the-end of the
2714    buffer we're allowed to write to.  Returns
2715    BUF+CHARACTERS_WRITTEN.  */
2716
2717 static char *
2718 write_ptid (char *buf, const char *endbuf, ptid_t ptid)
2719 {
2720   int pid, tid;
2721   struct remote_state *rs = get_remote_state ();
2722
2723   if (remote_multi_process_p (rs))
2724     {
2725       pid = ptid_get_pid (ptid);
2726       if (pid < 0)
2727         buf += xsnprintf (buf, endbuf - buf, "p-%x.", -pid);
2728       else
2729         buf += xsnprintf (buf, endbuf - buf, "p%x.", pid);
2730     }
2731   tid = ptid_get_lwp (ptid);
2732   if (tid < 0)
2733     buf += xsnprintf (buf, endbuf - buf, "-%x", -tid);
2734   else
2735     buf += xsnprintf (buf, endbuf - buf, "%x", tid);
2736
2737   return buf;
2738 }
2739
2740 /* Extract a PTID from BUF.  If non-null, OBUF is set to one past the
2741    last parsed char.  Returns null_ptid if no thread id is found, and
2742    throws an error if the thread id has an invalid format.  */
2743
2744 static ptid_t
2745 read_ptid (const char *buf, const char **obuf)
2746 {
2747   const char *p = buf;
2748   const char *pp;
2749   ULONGEST pid = 0, tid = 0;
2750
2751   if (*p == 'p')
2752     {
2753       /* Multi-process ptid.  */
2754       pp = unpack_varlen_hex (p + 1, &pid);
2755       if (*pp != '.')
2756         error (_("invalid remote ptid: %s"), p);
2757
2758       p = pp;
2759       pp = unpack_varlen_hex (p + 1, &tid);
2760       if (obuf)
2761         *obuf = pp;
2762       return ptid_build (pid, tid, 0);
2763     }
2764
2765   /* No multi-process.  Just a tid.  */
2766   pp = unpack_varlen_hex (p, &tid);
2767
2768   /* Return null_ptid when no thread id is found.  */
2769   if (p == pp)
2770     {
2771       if (obuf)
2772         *obuf = pp;
2773       return null_ptid;
2774     }
2775
2776   /* Since the stub is not sending a process id, then default to
2777      what's in inferior_ptid, unless it's null at this point.  If so,
2778      then since there's no way to know the pid of the reported
2779      threads, use the magic number.  */
2780   if (ptid_equal (inferior_ptid, null_ptid))
2781     pid = ptid_get_pid (magic_null_ptid);
2782   else
2783     pid = ptid_get_pid (inferior_ptid);
2784
2785   if (obuf)
2786     *obuf = pp;
2787   return ptid_build (pid, tid, 0);
2788 }
2789
2790 static int
2791 stubhex (int ch)
2792 {
2793   if (ch >= 'a' && ch <= 'f')
2794     return ch - 'a' + 10;
2795   if (ch >= '0' && ch <= '9')
2796     return ch - '0';
2797   if (ch >= 'A' && ch <= 'F')
2798     return ch - 'A' + 10;
2799   return -1;
2800 }
2801
2802 static int
2803 stub_unpack_int (char *buff, int fieldlength)
2804 {
2805   int nibble;
2806   int retval = 0;
2807
2808   while (fieldlength)
2809     {
2810       nibble = stubhex (*buff++);
2811       retval |= nibble;
2812       fieldlength--;
2813       if (fieldlength)
2814         retval = retval << 4;
2815     }
2816   return retval;
2817 }
2818
2819 static char *
2820 unpack_nibble (char *buf, int *val)
2821 {
2822   *val = fromhex (*buf++);
2823   return buf;
2824 }
2825
2826 static char *
2827 unpack_byte (char *buf, int *value)
2828 {
2829   *value = stub_unpack_int (buf, 2);
2830   return buf + 2;
2831 }
2832
2833 static char *
2834 pack_int (char *buf, int value)
2835 {
2836   buf = pack_hex_byte (buf, (value >> 24) & 0xff);
2837   buf = pack_hex_byte (buf, (value >> 16) & 0xff);
2838   buf = pack_hex_byte (buf, (value >> 8) & 0x0ff);
2839   buf = pack_hex_byte (buf, (value & 0xff));
2840   return buf;
2841 }
2842
2843 static char *
2844 unpack_int (char *buf, int *value)
2845 {
2846   *value = stub_unpack_int (buf, 8);
2847   return buf + 8;
2848 }
2849
2850 #if 0                   /* Currently unused, uncomment when needed.  */
2851 static char *pack_string (char *pkt, char *string);
2852
2853 static char *
2854 pack_string (char *pkt, char *string)
2855 {
2856   char ch;
2857   int len;
2858
2859   len = strlen (string);
2860   if (len > 200)
2861     len = 200;          /* Bigger than most GDB packets, junk???  */
2862   pkt = pack_hex_byte (pkt, len);
2863   while (len-- > 0)
2864     {
2865       ch = *string++;
2866       if ((ch == '\0') || (ch == '#'))
2867         ch = '*';               /* Protect encapsulation.  */
2868       *pkt++ = ch;
2869     }
2870   return pkt;
2871 }
2872 #endif /* 0 (unused) */
2873
2874 static char *
2875 unpack_string (char *src, char *dest, int length)
2876 {
2877   while (length--)
2878     *dest++ = *src++;
2879   *dest = '\0';
2880   return src;
2881 }
2882
2883 static char *
2884 pack_threadid (char *pkt, threadref *id)
2885 {
2886   char *limit;
2887   unsigned char *altid;
2888
2889   altid = (unsigned char *) id;
2890   limit = pkt + BUF_THREAD_ID_SIZE;
2891   while (pkt < limit)
2892     pkt = pack_hex_byte (pkt, *altid++);
2893   return pkt;
2894 }
2895
2896
2897 static char *
2898 unpack_threadid (char *inbuf, threadref *id)
2899 {
2900   char *altref;
2901   char *limit = inbuf + BUF_THREAD_ID_SIZE;
2902   int x, y;
2903
2904   altref = (char *) id;
2905
2906   while (inbuf < limit)
2907     {
2908       x = stubhex (*inbuf++);
2909       y = stubhex (*inbuf++);
2910       *altref++ = (x << 4) | y;
2911     }
2912   return inbuf;
2913 }
2914
2915 /* Externally, threadrefs are 64 bits but internally, they are still
2916    ints.  This is due to a mismatch of specifications.  We would like
2917    to use 64bit thread references internally.  This is an adapter
2918    function.  */
2919
2920 void
2921 int_to_threadref (threadref *id, int value)
2922 {
2923   unsigned char *scan;
2924
2925   scan = (unsigned char *) id;
2926   {
2927     int i = 4;
2928     while (i--)
2929       *scan++ = 0;
2930   }
2931   *scan++ = (value >> 24) & 0xff;
2932   *scan++ = (value >> 16) & 0xff;
2933   *scan++ = (value >> 8) & 0xff;
2934   *scan++ = (value & 0xff);
2935 }
2936
2937 static int
2938 threadref_to_int (threadref *ref)
2939 {
2940   int i, value = 0;
2941   unsigned char *scan;
2942
2943   scan = *ref;
2944   scan += 4;
2945   i = 4;
2946   while (i-- > 0)
2947     value = (value << 8) | ((*scan++) & 0xff);
2948   return value;
2949 }
2950
2951 static void
2952 copy_threadref (threadref *dest, threadref *src)
2953 {
2954   int i;
2955   unsigned char *csrc, *cdest;
2956
2957   csrc = (unsigned char *) src;
2958   cdest = (unsigned char *) dest;
2959   i = 8;
2960   while (i--)
2961     *cdest++ = *csrc++;
2962 }
2963
2964 static int
2965 threadmatch (threadref *dest, threadref *src)
2966 {
2967   /* Things are broken right now, so just assume we got a match.  */
2968 #if 0
2969   unsigned char *srcp, *destp;
2970   int i, result;
2971   srcp = (char *) src;
2972   destp = (char *) dest;
2973
2974   result = 1;
2975   while (i-- > 0)
2976     result &= (*srcp++ == *destp++) ? 1 : 0;
2977   return result;
2978 #endif
2979   return 1;
2980 }
2981
2982 /*
2983    threadid:1,        # always request threadid
2984    context_exists:2,
2985    display:4,
2986    unique_name:8,
2987    more_display:16
2988  */
2989
2990 /* Encoding:  'Q':8,'P':8,mask:32,threadid:64 */
2991
2992 static char *
2993 pack_threadinfo_request (char *pkt, int mode, threadref *id)
2994 {
2995   *pkt++ = 'q';                         /* Info Query */
2996   *pkt++ = 'P';                         /* process or thread info */
2997   pkt = pack_int (pkt, mode);           /* mode */
2998   pkt = pack_threadid (pkt, id);        /* threadid */
2999   *pkt = '\0';                          /* terminate */
3000   return pkt;
3001 }
3002
3003 /* These values tag the fields in a thread info response packet.  */
3004 /* Tagging the fields allows us to request specific fields and to
3005    add more fields as time goes by.  */
3006
3007 #define TAG_THREADID 1          /* Echo the thread identifier.  */
3008 #define TAG_EXISTS 2            /* Is this process defined enough to
3009                                    fetch registers and its stack?  */
3010 #define TAG_DISPLAY 4           /* A short thing maybe to put on a window */
3011 #define TAG_THREADNAME 8        /* string, maps 1-to-1 with a thread is.  */
3012 #define TAG_MOREDISPLAY 16      /* Whatever the kernel wants to say about
3013                                    the process.  */
3014
3015 static int
3016 remote_unpack_thread_info_response (char *pkt, threadref *expectedref,
3017                                     struct gdb_ext_thread_info *info)
3018 {
3019   struct remote_state *rs = get_remote_state ();
3020   int mask, length;
3021   int tag;
3022   threadref ref;
3023   char *limit = pkt + rs->buf_size; /* Plausible parsing limit.  */
3024   int retval = 1;
3025
3026   /* info->threadid = 0; FIXME: implement zero_threadref.  */
3027   info->active = 0;
3028   info->display[0] = '\0';
3029   info->shortname[0] = '\0';
3030   info->more_display[0] = '\0';
3031
3032   /* Assume the characters indicating the packet type have been
3033      stripped.  */
3034   pkt = unpack_int (pkt, &mask);        /* arg mask */
3035   pkt = unpack_threadid (pkt, &ref);
3036
3037   if (mask == 0)
3038     warning (_("Incomplete response to threadinfo request."));
3039   if (!threadmatch (&ref, expectedref))
3040     {                   /* This is an answer to a different request.  */
3041       warning (_("ERROR RMT Thread info mismatch."));
3042       return 0;
3043     }
3044   copy_threadref (&info->threadid, &ref);
3045
3046   /* Loop on tagged fields , try to bail if somthing goes wrong.  */
3047
3048   /* Packets are terminated with nulls.  */
3049   while ((pkt < limit) && mask && *pkt)
3050     {
3051       pkt = unpack_int (pkt, &tag);     /* tag */
3052       pkt = unpack_byte (pkt, &length); /* length */
3053       if (!(tag & mask))                /* Tags out of synch with mask.  */
3054         {
3055           warning (_("ERROR RMT: threadinfo tag mismatch."));
3056           retval = 0;
3057           break;
3058         }
3059       if (tag == TAG_THREADID)
3060         {
3061           if (length != 16)
3062             {
3063               warning (_("ERROR RMT: length of threadid is not 16."));
3064               retval = 0;
3065               break;
3066             }
3067           pkt = unpack_threadid (pkt, &ref);
3068           mask = mask & ~TAG_THREADID;
3069           continue;
3070         }
3071       if (tag == TAG_EXISTS)
3072         {
3073           info->active = stub_unpack_int (pkt, length);
3074           pkt += length;
3075           mask = mask & ~(TAG_EXISTS);
3076           if (length > 8)
3077             {
3078               warning (_("ERROR RMT: 'exists' length too long."));
3079               retval = 0;
3080               break;
3081             }
3082           continue;
3083         }
3084       if (tag == TAG_THREADNAME)
3085         {
3086           pkt = unpack_string (pkt, &info->shortname[0], length);
3087           mask = mask & ~TAG_THREADNAME;
3088           continue;
3089         }
3090       if (tag == TAG_DISPLAY)
3091         {
3092           pkt = unpack_string (pkt, &info->display[0], length);
3093           mask = mask & ~TAG_DISPLAY;
3094           continue;
3095         }
3096       if (tag == TAG_MOREDISPLAY)
3097         {
3098           pkt = unpack_string (pkt, &info->more_display[0], length);
3099           mask = mask & ~TAG_MOREDISPLAY;
3100           continue;
3101         }
3102       warning (_("ERROR RMT: unknown thread info tag."));
3103       break;                    /* Not a tag we know about.  */
3104     }
3105   return retval;
3106 }
3107
3108 static int
3109 remote_get_threadinfo (threadref *threadid, int fieldset,       /* TAG mask */
3110                        struct gdb_ext_thread_info *info)
3111 {
3112   struct remote_state *rs = get_remote_state ();
3113   int result;
3114
3115   pack_threadinfo_request (rs->buf, fieldset, threadid);
3116   putpkt (rs->buf);
3117   getpkt (&rs->buf, &rs->buf_size, 0);
3118
3119   if (rs->buf[0] == '\0')
3120     return 0;
3121
3122   result = remote_unpack_thread_info_response (rs->buf + 2,
3123                                                threadid, info);
3124   return result;
3125 }
3126
3127 /*    Format: i'Q':8,i"L":8,initflag:8,batchsize:16,lastthreadid:32   */
3128
3129 static char *
3130 pack_threadlist_request (char *pkt, int startflag, int threadcount,
3131                          threadref *nextthread)
3132 {
3133   *pkt++ = 'q';                 /* info query packet */
3134   *pkt++ = 'L';                 /* Process LIST or threadLIST request */
3135   pkt = pack_nibble (pkt, startflag);           /* initflag 1 bytes */
3136   pkt = pack_hex_byte (pkt, threadcount);       /* threadcount 2 bytes */
3137   pkt = pack_threadid (pkt, nextthread);        /* 64 bit thread identifier */
3138   *pkt = '\0';
3139   return pkt;
3140 }
3141
3142 /* Encoding:   'q':8,'M':8,count:16,done:8,argthreadid:64,(threadid:64)* */
3143
3144 static int
3145 parse_threadlist_response (char *pkt, int result_limit,
3146                            threadref *original_echo, threadref *resultlist,
3147                            int *doneflag)
3148 {
3149   struct remote_state *rs = get_remote_state ();
3150   char *limit;
3151   int count, resultcount, done;
3152
3153   resultcount = 0;
3154   /* Assume the 'q' and 'M chars have been stripped.  */
3155   limit = pkt + (rs->buf_size - BUF_THREAD_ID_SIZE);
3156   /* done parse past here */
3157   pkt = unpack_byte (pkt, &count);      /* count field */
3158   pkt = unpack_nibble (pkt, &done);
3159   /* The first threadid is the argument threadid.  */
3160   pkt = unpack_threadid (pkt, original_echo);   /* should match query packet */
3161   while ((count-- > 0) && (pkt < limit))
3162     {
3163       pkt = unpack_threadid (pkt, resultlist++);
3164       if (resultcount++ >= result_limit)
3165         break;
3166     }
3167   if (doneflag)
3168     *doneflag = done;
3169   return resultcount;
3170 }
3171
3172 /* Fetch the next batch of threads from the remote.  Returns -1 if the
3173    qL packet is not supported, 0 on error and 1 on success.  */
3174
3175 static int
3176 remote_get_threadlist (int startflag, threadref *nextthread, int result_limit,
3177                        int *done, int *result_count, threadref *threadlist)
3178 {
3179   struct remote_state *rs = get_remote_state ();
3180   int result = 1;
3181
3182   /* Trancate result limit to be smaller than the packet size.  */
3183   if ((((result_limit + 1) * BUF_THREAD_ID_SIZE) + 10)
3184       >= get_remote_packet_size ())
3185     result_limit = (get_remote_packet_size () / BUF_THREAD_ID_SIZE) - 2;
3186
3187   pack_threadlist_request (rs->buf, startflag, result_limit, nextthread);
3188   putpkt (rs->buf);
3189   getpkt (&rs->buf, &rs->buf_size, 0);
3190   if (*rs->buf == '\0')
3191     {
3192       /* Packet not supported.  */
3193       return -1;
3194     }
3195
3196   *result_count =
3197     parse_threadlist_response (rs->buf + 2, result_limit,
3198                                &rs->echo_nextthread, threadlist, done);
3199
3200   if (!threadmatch (&rs->echo_nextthread, nextthread))
3201     {
3202       /* FIXME: This is a good reason to drop the packet.  */
3203       /* Possably, there is a duplicate response.  */
3204       /* Possabilities :
3205          retransmit immediatly - race conditions
3206          retransmit after timeout - yes
3207          exit
3208          wait for packet, then exit
3209        */
3210       warning (_("HMM: threadlist did not echo arg thread, dropping it."));
3211       return 0;                 /* I choose simply exiting.  */
3212     }
3213   if (*result_count <= 0)
3214     {
3215       if (*done != 1)
3216         {
3217           warning (_("RMT ERROR : failed to get remote thread list."));
3218           result = 0;
3219         }
3220       return result;            /* break; */
3221     }
3222   if (*result_count > result_limit)
3223     {
3224       *result_count = 0;
3225       warning (_("RMT ERROR: threadlist response longer than requested."));
3226       return 0;
3227     }
3228   return result;
3229 }
3230
3231 /* Fetch the list of remote threads, with the qL packet, and call
3232    STEPFUNCTION for each thread found.  Stops iterating and returns 1
3233    if STEPFUNCTION returns true.  Stops iterating and returns 0 if the
3234    STEPFUNCTION returns false.  If the packet is not supported,
3235    returns -1.  */
3236
3237 static int
3238 remote_threadlist_iterator (rmt_thread_action stepfunction, void *context,
3239                             int looplimit)
3240 {
3241   struct remote_state *rs = get_remote_state ();
3242   int done, i, result_count;
3243   int startflag = 1;
3244   int result = 1;
3245   int loopcount = 0;
3246
3247   done = 0;
3248   while (!done)
3249     {
3250       if (loopcount++ > looplimit)
3251         {
3252           result = 0;
3253           warning (_("Remote fetch threadlist -infinite loop-."));
3254           break;
3255         }
3256       result = remote_get_threadlist (startflag, &rs->nextthread,
3257                                       MAXTHREADLISTRESULTS,
3258                                       &done, &result_count,
3259                                       rs->resultthreadlist);
3260       if (result <= 0)
3261         break;
3262       /* Clear for later iterations.  */
3263       startflag = 0;
3264       /* Setup to resume next batch of thread references, set nextthread.  */
3265       if (result_count >= 1)
3266         copy_threadref (&rs->nextthread,
3267                         &rs->resultthreadlist[result_count - 1]);
3268       i = 0;
3269       while (result_count--)
3270         {
3271           if (!(*stepfunction) (&rs->resultthreadlist[i++], context))
3272             {
3273               result = 0;
3274               break;
3275             }
3276         }
3277     }
3278   return result;
3279 }
3280
3281 /* A thread found on the remote target.  */
3282
3283 struct thread_item
3284 {
3285   explicit thread_item (ptid_t ptid_)
3286   : ptid (ptid_)
3287   {}
3288
3289   thread_item (thread_item &&other) = default;
3290   thread_item &operator= (thread_item &&other) = default;
3291
3292   DISABLE_COPY_AND_ASSIGN (thread_item);
3293
3294   /* The thread's PTID.  */
3295   ptid_t ptid;
3296
3297   /* The thread's extra info.  */
3298   std::string extra;
3299
3300   /* The thread's name.  */
3301   std::string name;
3302
3303   /* The core the thread was running on.  -1 if not known.  */
3304   int core = -1;
3305
3306   /* The thread handle associated with the thread.  */
3307   gdb::byte_vector thread_handle;
3308 };
3309
3310 /* Context passed around to the various methods listing remote
3311    threads.  As new threads are found, they're added to the ITEMS
3312    vector.  */
3313
3314 struct threads_listing_context
3315 {
3316   /* Return true if this object contains an entry for a thread with ptid
3317      PTID.  */
3318
3319   bool contains_thread (ptid_t ptid) const
3320   {
3321     auto match_ptid = [&] (const thread_item &item)
3322       {
3323         return item.ptid == ptid;
3324       };
3325
3326     auto it = std::find_if (this->items.begin (),
3327                             this->items.end (),
3328                             match_ptid);
3329
3330     return it != this->items.end ();
3331   }
3332
3333   /* Remove the thread with ptid PTID.  */
3334
3335   void remove_thread (ptid_t ptid)
3336   {
3337     auto match_ptid = [&] (const thread_item &item)
3338       {
3339         return item.ptid == ptid;
3340       };
3341
3342     auto it = std::remove_if (this->items.begin (),
3343                               this->items.end (),
3344                               match_ptid);
3345
3346     if (it != this->items.end ())
3347       this->items.erase (it);
3348   }
3349
3350   /* The threads found on the remote target.  */
3351   std::vector<thread_item> items;
3352 };
3353
3354 static int
3355 remote_newthread_step (threadref *ref, void *data)
3356 {
3357   struct threads_listing_context *context
3358     = (struct threads_listing_context *) data;
3359   int pid = inferior_ptid.pid ();
3360   int lwp = threadref_to_int (ref);
3361   ptid_t ptid (pid, lwp);
3362
3363   context->items.emplace_back (ptid);
3364
3365   return 1;                     /* continue iterator */
3366 }
3367
3368 #define CRAZY_MAX_THREADS 1000
3369
3370 static ptid_t
3371 remote_current_thread (ptid_t oldpid)
3372 {
3373   struct remote_state *rs = get_remote_state ();
3374
3375   putpkt ("qC");
3376   getpkt (&rs->buf, &rs->buf_size, 0);
3377   if (rs->buf[0] == 'Q' && rs->buf[1] == 'C')
3378     {
3379       const char *obuf;
3380       ptid_t result;
3381
3382       result = read_ptid (&rs->buf[2], &obuf);
3383       if (*obuf != '\0' && remote_debug)
3384         fprintf_unfiltered (gdb_stdlog,
3385                             "warning: garbage in qC reply\n");
3386
3387       return result;
3388     }
3389   else
3390     return oldpid;
3391 }
3392
3393 /* List remote threads using the deprecated qL packet.  */
3394
3395 static int
3396 remote_get_threads_with_ql (struct target_ops *ops,
3397                             struct threads_listing_context *context)
3398 {
3399   if (remote_threadlist_iterator (remote_newthread_step, context,
3400                                   CRAZY_MAX_THREADS) >= 0)
3401     return 1;
3402
3403   return 0;
3404 }
3405
3406 #if defined(HAVE_LIBEXPAT)
3407
3408 static void
3409 start_thread (struct gdb_xml_parser *parser,
3410               const struct gdb_xml_element *element,
3411               void *user_data,
3412               std::vector<gdb_xml_value> &attributes)
3413 {
3414   struct threads_listing_context *data
3415     = (struct threads_listing_context *) user_data;
3416   struct gdb_xml_value *attr;
3417
3418   char *id = (char *) xml_find_attribute (attributes, "id")->value.get ();
3419   ptid_t ptid = read_ptid (id, NULL);
3420
3421   data->items.emplace_back (ptid);
3422   thread_item &item = data->items.back ();
3423
3424   attr = xml_find_attribute (attributes, "core");
3425   if (attr != NULL)
3426     item.core = *(ULONGEST *) attr->value.get ();
3427
3428   attr = xml_find_attribute (attributes, "name");
3429   if (attr != NULL)
3430     item.name = (const char *) attr->value.get ();
3431
3432   attr = xml_find_attribute (attributes, "handle");
3433   if (attr != NULL)
3434     item.thread_handle = hex2bin ((const char *) attr->value.get ());
3435 }
3436
3437 static void
3438 end_thread (struct gdb_xml_parser *parser,
3439             const struct gdb_xml_element *element,
3440             void *user_data, const char *body_text)
3441 {
3442   struct threads_listing_context *data
3443     = (struct threads_listing_context *) user_data;
3444
3445   if (body_text != NULL && *body_text != '\0')
3446     data->items.back ().extra = body_text;
3447 }
3448
3449 const struct gdb_xml_attribute thread_attributes[] = {
3450   { "id", GDB_XML_AF_NONE, NULL, NULL },
3451   { "core", GDB_XML_AF_OPTIONAL, gdb_xml_parse_attr_ulongest, NULL },
3452   { "name", GDB_XML_AF_OPTIONAL, NULL, NULL },
3453   { "handle", GDB_XML_AF_OPTIONAL, NULL, NULL },
3454   { NULL, GDB_XML_AF_NONE, NULL, NULL }
3455 };
3456
3457 const struct gdb_xml_element thread_children[] = {
3458   { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
3459 };
3460
3461 const struct gdb_xml_element threads_children[] = {
3462   { "thread", thread_attributes, thread_children,
3463     GDB_XML_EF_REPEATABLE | GDB_XML_EF_OPTIONAL,
3464     start_thread, end_thread },
3465   { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
3466 };
3467
3468 const struct gdb_xml_element threads_elements[] = {
3469   { "threads", NULL, threads_children,
3470     GDB_XML_EF_NONE, NULL, NULL },
3471   { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
3472 };
3473
3474 #endif
3475
3476 /* List remote threads using qXfer:threads:read.  */
3477
3478 static int
3479 remote_get_threads_with_qxfer (struct target_ops *ops,
3480                                struct threads_listing_context *context)
3481 {
3482 #if defined(HAVE_LIBEXPAT)
3483   if (packet_support (PACKET_qXfer_threads) == PACKET_ENABLE)
3484     {
3485       gdb::optional<gdb::char_vector> xml
3486         = target_read_stralloc (ops, TARGET_OBJECT_THREADS, NULL);
3487
3488       if (xml && (*xml)[0] != '\0')
3489         {
3490           gdb_xml_parse_quick (_("threads"), "threads.dtd",
3491                                threads_elements, xml->data (), context);
3492         }
3493
3494       return 1;
3495     }
3496 #endif
3497
3498   return 0;
3499 }
3500
3501 /* List remote threads using qfThreadInfo/qsThreadInfo.  */
3502
3503 static int
3504 remote_get_threads_with_qthreadinfo (struct target_ops *ops,
3505                                      struct threads_listing_context *context)
3506 {
3507   struct remote_state *rs = get_remote_state ();
3508
3509   if (rs->use_threadinfo_query)
3510     {
3511       const char *bufp;
3512
3513       putpkt ("qfThreadInfo");
3514       getpkt (&rs->buf, &rs->buf_size, 0);
3515       bufp = rs->buf;
3516       if (bufp[0] != '\0')              /* q packet recognized */
3517         {
3518           while (*bufp++ == 'm')        /* reply contains one or more TID */
3519             {
3520               do
3521                 {
3522                   ptid_t ptid = read_ptid (bufp, &bufp);
3523                   context->items.emplace_back (ptid);
3524                 }
3525               while (*bufp++ == ',');   /* comma-separated list */
3526               putpkt ("qsThreadInfo");
3527               getpkt (&rs->buf, &rs->buf_size, 0);
3528               bufp = rs->buf;
3529             }
3530           return 1;
3531         }
3532       else
3533         {
3534           /* Packet not recognized.  */
3535           rs->use_threadinfo_query = 0;
3536         }
3537     }
3538
3539   return 0;
3540 }
3541
3542 /* Implement the to_update_thread_list function for the remote
3543    targets.  */
3544
3545 void
3546 remote_target::update_thread_list ()
3547 {
3548   struct threads_listing_context context;
3549   int got_list = 0;
3550
3551   /* We have a few different mechanisms to fetch the thread list.  Try
3552      them all, starting with the most preferred one first, falling
3553      back to older methods.  */
3554   if (remote_get_threads_with_qxfer (this, &context)
3555       || remote_get_threads_with_qthreadinfo (this, &context)
3556       || remote_get_threads_with_ql (this, &context))
3557     {
3558       struct thread_info *tp, *tmp;
3559
3560       got_list = 1;
3561
3562       if (context.items.empty ()
3563           && remote_thread_always_alive (inferior_ptid))
3564         {
3565           /* Some targets don't really support threads, but still
3566              reply an (empty) thread list in response to the thread
3567              listing packets, instead of replying "packet not
3568              supported".  Exit early so we don't delete the main
3569              thread.  */
3570           return;
3571         }
3572
3573       /* CONTEXT now holds the current thread list on the remote
3574          target end.  Delete GDB-side threads no longer found on the
3575          target.  */
3576       ALL_THREADS_SAFE (tp, tmp)
3577         {
3578           if (!context.contains_thread (tp->ptid))
3579             {
3580               /* Not found.  */
3581               delete_thread (tp->ptid);
3582             }
3583         }
3584
3585       /* Remove any unreported fork child threads from CONTEXT so
3586          that we don't interfere with follow fork, which is where
3587          creation of such threads is handled.  */
3588       remove_new_fork_children (&context);
3589
3590       /* And now add threads we don't know about yet to our list.  */
3591       for (thread_item &item : context.items)
3592         {
3593           if (item.ptid != null_ptid)
3594             {
3595               /* In non-stop mode, we assume new found threads are
3596                  executing until proven otherwise with a stop reply.
3597                  In all-stop, we can only get here if all threads are
3598                  stopped.  */
3599               int executing = target_is_non_stop_p () ? 1 : 0;
3600
3601               remote_notice_new_inferior (item.ptid, executing);
3602
3603               remote_thread_info *info = get_remote_thread_info (item.ptid);
3604               info->core = item.core;
3605               info->extra = std::move (item.extra);
3606               info->name = std::move (item.name);
3607               info->thread_handle = std::move (item.thread_handle);
3608             }
3609         }
3610     }
3611
3612   if (!got_list)
3613     {
3614       /* If no thread listing method is supported, then query whether
3615          each known thread is alive, one by one, with the T packet.
3616          If the target doesn't support threads at all, then this is a
3617          no-op.  See remote_thread_alive.  */
3618       prune_threads ();
3619     }
3620 }
3621
3622 /*
3623  * Collect a descriptive string about the given thread.
3624  * The target may say anything it wants to about the thread
3625  * (typically info about its blocked / runnable state, name, etc.).
3626  * This string will appear in the info threads display.
3627  *
3628  * Optional: targets are not required to implement this function.
3629  */
3630
3631 const char *
3632 remote_target::extra_thread_info (thread_info *tp)
3633 {
3634   struct remote_state *rs = get_remote_state ();
3635   int result;
3636   int set;
3637   threadref id;
3638   struct gdb_ext_thread_info threadinfo;
3639   static char display_buf[100]; /* arbitrary...  */
3640   int n = 0;                    /* position in display_buf */
3641
3642   if (rs->remote_desc == 0)             /* paranoia */
3643     internal_error (__FILE__, __LINE__,
3644                     _("remote_threads_extra_info"));
3645
3646   if (ptid_equal (tp->ptid, magic_null_ptid)
3647       || (ptid_get_pid (tp->ptid) != 0 && ptid_get_lwp (tp->ptid) == 0))
3648     /* This is the main thread which was added by GDB.  The remote
3649        server doesn't know about it.  */
3650     return NULL;
3651
3652   if (packet_support (PACKET_qXfer_threads) == PACKET_ENABLE)
3653     {
3654       struct thread_info *info = find_thread_ptid (tp->ptid);
3655
3656       if (info != NULL && info->priv != NULL)
3657         {
3658           const std::string &extra = get_remote_thread_info (info)->extra;
3659           return !extra.empty () ? extra.c_str () : NULL;
3660         }
3661       else
3662         return NULL;
3663     }
3664
3665   if (rs->use_threadextra_query)
3666     {
3667       char *b = rs->buf;
3668       char *endb = rs->buf + get_remote_packet_size ();
3669
3670       xsnprintf (b, endb - b, "qThreadExtraInfo,");
3671       b += strlen (b);
3672       write_ptid (b, endb, tp->ptid);
3673
3674       putpkt (rs->buf);
3675       getpkt (&rs->buf, &rs->buf_size, 0);
3676       if (rs->buf[0] != 0)
3677         {
3678           n = std::min (strlen (rs->buf) / 2, sizeof (display_buf));
3679           result = hex2bin (rs->buf, (gdb_byte *) display_buf, n);
3680           display_buf [result] = '\0';
3681           return display_buf;
3682         }
3683     }
3684
3685   /* If the above query fails, fall back to the old method.  */
3686   rs->use_threadextra_query = 0;
3687   set = TAG_THREADID | TAG_EXISTS | TAG_THREADNAME
3688     | TAG_MOREDISPLAY | TAG_DISPLAY;
3689   int_to_threadref (&id, ptid_get_lwp (tp->ptid));
3690   if (remote_get_threadinfo (&id, set, &threadinfo))
3691     if (threadinfo.active)
3692       {
3693         if (*threadinfo.shortname)
3694           n += xsnprintf (&display_buf[0], sizeof (display_buf) - n,
3695                           " Name: %s,", threadinfo.shortname);
3696         if (*threadinfo.display)
3697           n += xsnprintf (&display_buf[n], sizeof (display_buf) - n,
3698                           " State: %s,", threadinfo.display);
3699         if (*threadinfo.more_display)
3700           n += xsnprintf (&display_buf[n], sizeof (display_buf) - n,
3701                           " Priority: %s", threadinfo.more_display);
3702
3703         if (n > 0)
3704           {
3705             /* For purely cosmetic reasons, clear up trailing commas.  */
3706             if (',' == display_buf[n-1])
3707               display_buf[n-1] = ' ';
3708             return display_buf;
3709           }
3710       }
3711   return NULL;
3712 }
3713 \f
3714
3715 bool
3716 remote_target::static_tracepoint_marker_at (CORE_ADDR addr,
3717                                             struct static_tracepoint_marker *marker)
3718 {
3719   struct remote_state *rs = get_remote_state ();
3720   char *p = rs->buf;
3721
3722   xsnprintf (p, get_remote_packet_size (), "qTSTMat:");
3723   p += strlen (p);
3724   p += hexnumstr (p, addr);
3725   putpkt (rs->buf);
3726   getpkt (&rs->buf, &rs->buf_size, 0);
3727   p = rs->buf;
3728
3729   if (*p == 'E')
3730     error (_("Remote failure reply: %s"), p);
3731
3732   if (*p++ == 'm')
3733     {
3734       parse_static_tracepoint_marker_definition (p, NULL, marker);
3735       return true;
3736     }
3737
3738   return false;
3739 }
3740
3741 std::vector<static_tracepoint_marker>
3742 remote_target::static_tracepoint_markers_by_strid (const char *strid)
3743 {
3744   struct remote_state *rs = get_remote_state ();
3745   std::vector<static_tracepoint_marker> markers;
3746   const char *p;
3747   static_tracepoint_marker marker;
3748
3749   /* Ask for a first packet of static tracepoint marker
3750      definition.  */
3751   putpkt ("qTfSTM");
3752   getpkt (&rs->buf, &rs->buf_size, 0);
3753   p = rs->buf;
3754   if (*p == 'E')
3755     error (_("Remote failure reply: %s"), p);
3756
3757   while (*p++ == 'm')
3758     {
3759       do
3760         {
3761           parse_static_tracepoint_marker_definition (p, &p, &marker);
3762
3763           if (strid == NULL || marker.str_id == strid)
3764             markers.push_back (std::move (marker));
3765         }
3766       while (*p++ == ',');      /* comma-separated list */
3767       /* Ask for another packet of static tracepoint definition.  */
3768       putpkt ("qTsSTM");
3769       getpkt (&rs->buf, &rs->buf_size, 0);
3770       p = rs->buf;
3771     }
3772
3773   return markers;
3774 }
3775
3776 \f
3777 /* Implement the to_get_ada_task_ptid function for the remote targets.  */
3778
3779 ptid_t
3780 remote_target::get_ada_task_ptid (long lwp, long thread)
3781 {
3782   return ptid_build (ptid_get_pid (inferior_ptid), lwp, 0);
3783 }
3784 \f
3785
3786 /* Restart the remote side; this is an extended protocol operation.  */
3787
3788 static void
3789 extended_remote_restart (void)
3790 {
3791   struct remote_state *rs = get_remote_state ();
3792
3793   /* Send the restart command; for reasons I don't understand the
3794      remote side really expects a number after the "R".  */
3795   xsnprintf (rs->buf, get_remote_packet_size (), "R%x", 0);
3796   putpkt (rs->buf);
3797
3798   remote_fileio_reset ();
3799 }
3800 \f
3801 /* Clean up connection to a remote debugger.  */
3802
3803 void
3804 remote_target::close ()
3805 {
3806   struct remote_state *rs = get_remote_state ();
3807
3808   if (rs->remote_desc == NULL)
3809     return; /* already closed */
3810
3811   /* Make sure we leave stdin registered in the event loop.  */
3812   terminal_ours ();
3813
3814   serial_close (rs->remote_desc);
3815   rs->remote_desc = NULL;
3816
3817   /* We don't have a connection to the remote stub anymore.  Get rid
3818      of all the inferiors and their threads we were controlling.
3819      Reset inferior_ptid to null_ptid first, as otherwise has_stack_frame
3820      will be unable to find the thread corresponding to (pid, 0, 0).  */
3821   inferior_ptid = null_ptid;
3822   discard_all_inferiors ();
3823
3824   /* We are closing the remote target, so we should discard
3825      everything of this target.  */
3826   discard_pending_stop_replies_in_queue (rs);
3827
3828   if (remote_async_inferior_event_token)
3829     delete_async_event_handler (&remote_async_inferior_event_token);
3830
3831   remote_notif_state_xfree (rs->notif_state);
3832
3833   trace_reset_local_state ();
3834 }
3835
3836 /* Query the remote side for the text, data and bss offsets.  */
3837
3838 static void
3839 get_offsets (void)
3840 {
3841   struct remote_state *rs = get_remote_state ();
3842   char *buf;
3843   char *ptr;
3844   int lose, num_segments = 0, do_sections, do_segments;
3845   CORE_ADDR text_addr, data_addr, bss_addr, segments[2];
3846   struct section_offsets *offs;
3847   struct symfile_segment_data *data;
3848
3849   if (symfile_objfile == NULL)
3850     return;
3851
3852   putpkt ("qOffsets");
3853   getpkt (&rs->buf, &rs->buf_size, 0);
3854   buf = rs->buf;
3855
3856   if (buf[0] == '\000')
3857     return;                     /* Return silently.  Stub doesn't support
3858                                    this command.  */
3859   if (buf[0] == 'E')
3860     {
3861       warning (_("Remote failure reply: %s"), buf);
3862       return;
3863     }
3864
3865   /* Pick up each field in turn.  This used to be done with scanf, but
3866      scanf will make trouble if CORE_ADDR size doesn't match
3867      conversion directives correctly.  The following code will work
3868      with any size of CORE_ADDR.  */
3869   text_addr = data_addr = bss_addr = 0;
3870   ptr = buf;
3871   lose = 0;
3872
3873   if (startswith (ptr, "Text="))
3874     {
3875       ptr += 5;
3876       /* Don't use strtol, could lose on big values.  */
3877       while (*ptr && *ptr != ';')
3878         text_addr = (text_addr << 4) + fromhex (*ptr++);
3879
3880       if (startswith (ptr, ";Data="))
3881         {
3882           ptr += 6;
3883           while (*ptr && *ptr != ';')
3884             data_addr = (data_addr << 4) + fromhex (*ptr++);
3885         }
3886       else
3887         lose = 1;
3888
3889       if (!lose && startswith (ptr, ";Bss="))
3890         {
3891           ptr += 5;
3892           while (*ptr && *ptr != ';')
3893             bss_addr = (bss_addr << 4) + fromhex (*ptr++);
3894
3895           if (bss_addr != data_addr)
3896             warning (_("Target reported unsupported offsets: %s"), buf);
3897         }
3898       else
3899         lose = 1;
3900     }
3901   else if (startswith (ptr, "TextSeg="))
3902     {
3903       ptr += 8;
3904       /* Don't use strtol, could lose on big values.  */
3905       while (*ptr && *ptr != ';')
3906         text_addr = (text_addr << 4) + fromhex (*ptr++);
3907       num_segments = 1;
3908
3909       if (startswith (ptr, ";DataSeg="))
3910         {
3911           ptr += 9;
3912           while (*ptr && *ptr != ';')
3913             data_addr = (data_addr << 4) + fromhex (*ptr++);
3914           num_segments++;
3915         }
3916     }
3917   else
3918     lose = 1;
3919
3920   if (lose)
3921     error (_("Malformed response to offset query, %s"), buf);
3922   else if (*ptr != '\0')
3923     warning (_("Target reported unsupported offsets: %s"), buf);
3924
3925   offs = ((struct section_offsets *)
3926           alloca (SIZEOF_N_SECTION_OFFSETS (symfile_objfile->num_sections)));
3927   memcpy (offs, symfile_objfile->section_offsets,
3928           SIZEOF_N_SECTION_OFFSETS (symfile_objfile->num_sections));
3929
3930   data = get_symfile_segment_data (symfile_objfile->obfd);
3931   do_segments = (data != NULL);
3932   do_sections = num_segments == 0;
3933
3934   if (num_segments > 0)
3935     {
3936       segments[0] = text_addr;
3937       segments[1] = data_addr;
3938     }
3939   /* If we have two segments, we can still try to relocate everything
3940      by assuming that the .text and .data offsets apply to the whole
3941      text and data segments.  Convert the offsets given in the packet
3942      to base addresses for symfile_map_offsets_to_segments.  */
3943   else if (data && data->num_segments == 2)
3944     {
3945       segments[0] = data->segment_bases[0] + text_addr;
3946       segments[1] = data->segment_bases[1] + data_addr;
3947       num_segments = 2;
3948     }
3949   /* If the object file has only one segment, assume that it is text
3950      rather than data; main programs with no writable data are rare,
3951      but programs with no code are useless.  Of course the code might
3952      have ended up in the data segment... to detect that we would need
3953      the permissions here.  */
3954   else if (data && data->num_segments == 1)
3955     {
3956       segments[0] = data->segment_bases[0] + text_addr;
3957       num_segments = 1;
3958     }
3959   /* There's no way to relocate by segment.  */
3960   else
3961     do_segments = 0;
3962
3963   if (do_segments)
3964     {
3965       int ret = symfile_map_offsets_to_segments (symfile_objfile->obfd, data,
3966                                                  offs, num_segments, segments);
3967
3968       if (ret == 0 && !do_sections)
3969         error (_("Can not handle qOffsets TextSeg "
3970                  "response with this symbol file"));
3971
3972       if (ret > 0)
3973         do_sections = 0;
3974     }
3975
3976   if (data)
3977     free_symfile_segment_data (data);
3978
3979   if (do_sections)
3980     {
3981       offs->offsets[SECT_OFF_TEXT (symfile_objfile)] = text_addr;
3982
3983       /* This is a temporary kludge to force data and bss to use the
3984          same offsets because that's what nlmconv does now.  The real
3985          solution requires changes to the stub and remote.c that I
3986          don't have time to do right now.  */
3987
3988       offs->offsets[SECT_OFF_DATA (symfile_objfile)] = data_addr;
3989       offs->offsets[SECT_OFF_BSS (symfile_objfile)] = data_addr;
3990     }
3991
3992   objfile_relocate (symfile_objfile, offs);
3993 }
3994
3995 /* Send interrupt_sequence to remote target.  */
3996 static void
3997 send_interrupt_sequence (void)
3998 {
3999   struct remote_state *rs = get_remote_state ();
4000
4001   if (interrupt_sequence_mode == interrupt_sequence_control_c)
4002     remote_serial_write ("\x03", 1);
4003   else if (interrupt_sequence_mode == interrupt_sequence_break)
4004     serial_send_break (rs->remote_desc);
4005   else if (interrupt_sequence_mode == interrupt_sequence_break_g)
4006     {
4007       serial_send_break (rs->remote_desc);
4008       remote_serial_write ("g", 1);
4009     }
4010   else
4011     internal_error (__FILE__, __LINE__,
4012                     _("Invalid value for interrupt_sequence_mode: %s."),
4013                     interrupt_sequence_mode);
4014 }
4015
4016
4017 /* If STOP_REPLY is a T stop reply, look for the "thread" register,
4018    and extract the PTID.  Returns NULL_PTID if not found.  */
4019
4020 static ptid_t
4021 stop_reply_extract_thread (char *stop_reply)
4022 {
4023   if (stop_reply[0] == 'T' && strlen (stop_reply) > 3)
4024     {
4025       const char *p;
4026
4027       /* Txx r:val ; r:val (...)  */
4028       p = &stop_reply[3];
4029
4030       /* Look for "register" named "thread".  */
4031       while (*p != '\0')
4032         {
4033           const char *p1;
4034
4035           p1 = strchr (p, ':');
4036           if (p1 == NULL)
4037             return null_ptid;
4038
4039           if (strncmp (p, "thread", p1 - p) == 0)
4040             return read_ptid (++p1, &p);
4041
4042           p1 = strchr (p, ';');
4043           if (p1 == NULL)
4044             return null_ptid;
4045           p1++;
4046
4047           p = p1;
4048         }
4049     }
4050
4051   return null_ptid;
4052 }
4053
4054 /* Determine the remote side's current thread.  If we have a stop
4055    reply handy (in WAIT_STATUS), maybe it's a T stop reply with a
4056    "thread" register we can extract the current thread from.  If not,
4057    ask the remote which is the current thread with qC.  The former
4058    method avoids a roundtrip.  */
4059
4060 static ptid_t
4061 get_current_thread (char *wait_status)
4062 {
4063   ptid_t ptid = null_ptid;
4064
4065   /* Note we don't use remote_parse_stop_reply as that makes use of
4066      the target architecture, which we haven't yet fully determined at
4067      this point.  */
4068   if (wait_status != NULL)
4069     ptid = stop_reply_extract_thread (wait_status);
4070   if (ptid_equal (ptid, null_ptid))
4071     ptid = remote_current_thread (inferior_ptid);
4072
4073   return ptid;
4074 }
4075
4076 /* Query the remote target for which is the current thread/process,
4077    add it to our tables, and update INFERIOR_PTID.  The caller is
4078    responsible for setting the state such that the remote end is ready
4079    to return the current thread.
4080
4081    This function is called after handling the '?' or 'vRun' packets,
4082    whose response is a stop reply from which we can also try
4083    extracting the thread.  If the target doesn't support the explicit
4084    qC query, we infer the current thread from that stop reply, passed
4085    in in WAIT_STATUS, which may be NULL.  */
4086
4087 static void
4088 add_current_inferior_and_thread (char *wait_status)
4089 {
4090   struct remote_state *rs = get_remote_state ();
4091   int fake_pid_p = 0;
4092
4093   inferior_ptid = null_ptid;
4094
4095   /* Now, if we have thread information, update inferior_ptid.  */
4096   ptid_t curr_ptid = get_current_thread (wait_status);
4097
4098   if (curr_ptid != null_ptid)
4099     {
4100       if (!remote_multi_process_p (rs))
4101         fake_pid_p = 1;
4102     }
4103   else
4104     {
4105       /* Without this, some commands which require an active target
4106          (such as kill) won't work.  This variable serves (at least)
4107          double duty as both the pid of the target process (if it has
4108          such), and as a flag indicating that a target is active.  */
4109       curr_ptid = magic_null_ptid;
4110       fake_pid_p = 1;
4111     }
4112
4113   remote_add_inferior (fake_pid_p, ptid_get_pid (curr_ptid), -1, 1);
4114
4115   /* Add the main thread and switch to it.  Don't try reading
4116      registers yet, since we haven't fetched the target description
4117      yet.  */
4118   thread_info *tp = add_thread_silent (curr_ptid);
4119   switch_to_thread_no_regs (tp);
4120 }
4121
4122 /* Print info about a thread that was found already stopped on
4123    connection.  */
4124
4125 static void
4126 print_one_stopped_thread (struct thread_info *thread)
4127 {
4128   struct target_waitstatus *ws = &thread->suspend.waitstatus;
4129
4130   switch_to_thread (thread->ptid);
4131   stop_pc = get_frame_pc (get_current_frame ());
4132   set_current_sal_from_frame (get_current_frame ());
4133
4134   thread->suspend.waitstatus_pending_p = 0;
4135
4136   if (ws->kind == TARGET_WAITKIND_STOPPED)
4137     {
4138       enum gdb_signal sig = ws->value.sig;
4139
4140       if (signal_print_state (sig))
4141         gdb::observers::signal_received.notify (sig);
4142     }
4143   gdb::observers::normal_stop.notify (NULL, 1);
4144 }
4145
4146 /* Process all initial stop replies the remote side sent in response
4147    to the ? packet.  These indicate threads that were already stopped
4148    on initial connection.  We mark these threads as stopped and print
4149    their current frame before giving the user the prompt.  */
4150
4151 static void
4152 process_initial_stop_replies (int from_tty)
4153 {
4154   int pending_stop_replies = stop_reply_queue_length ();
4155   struct inferior *inf;
4156   struct thread_info *thread;
4157   struct thread_info *selected = NULL;
4158   struct thread_info *lowest_stopped = NULL;
4159   struct thread_info *first = NULL;
4160
4161   /* Consume the initial pending events.  */
4162   while (pending_stop_replies-- > 0)
4163     {
4164       ptid_t waiton_ptid = minus_one_ptid;
4165       ptid_t event_ptid;
4166       struct target_waitstatus ws;
4167       int ignore_event = 0;
4168       struct thread_info *thread;
4169
4170       memset (&ws, 0, sizeof (ws));
4171       event_ptid = target_wait (waiton_ptid, &ws, TARGET_WNOHANG);
4172       if (remote_debug)
4173         print_target_wait_results (waiton_ptid, event_ptid, &ws);
4174
4175       switch (ws.kind)
4176         {
4177         case TARGET_WAITKIND_IGNORE:
4178         case TARGET_WAITKIND_NO_RESUMED:
4179         case TARGET_WAITKIND_SIGNALLED:
4180         case TARGET_WAITKIND_EXITED:
4181           /* We shouldn't see these, but if we do, just ignore.  */
4182           if (remote_debug)
4183             fprintf_unfiltered (gdb_stdlog, "remote: event ignored\n");
4184           ignore_event = 1;
4185           break;
4186
4187         case TARGET_WAITKIND_EXECD:
4188           xfree (ws.value.execd_pathname);
4189           break;
4190         default:
4191           break;
4192         }
4193
4194       if (ignore_event)
4195         continue;
4196
4197       thread = find_thread_ptid (event_ptid);
4198
4199       if (ws.kind == TARGET_WAITKIND_STOPPED)
4200         {
4201           enum gdb_signal sig = ws.value.sig;
4202
4203           /* Stubs traditionally report SIGTRAP as initial signal,
4204              instead of signal 0.  Suppress it.  */
4205           if (sig == GDB_SIGNAL_TRAP)
4206             sig = GDB_SIGNAL_0;
4207           thread->suspend.stop_signal = sig;
4208           ws.value.sig = sig;
4209         }
4210
4211       thread->suspend.waitstatus = ws;
4212
4213       if (ws.kind != TARGET_WAITKIND_STOPPED
4214           || ws.value.sig != GDB_SIGNAL_0)
4215         thread->suspend.waitstatus_pending_p = 1;
4216
4217       set_executing (event_ptid, 0);
4218       set_running (event_ptid, 0);
4219       get_remote_thread_info (thread)->vcont_resumed = 0;
4220     }
4221
4222   /* "Notice" the new inferiors before anything related to
4223      registers/memory.  */
4224   ALL_INFERIORS (inf)
4225     {
4226       if (inf->pid == 0)
4227         continue;
4228
4229       inf->needs_setup = 1;
4230
4231       if (non_stop)
4232         {
4233           thread = any_live_thread_of_process (inf->pid);
4234           notice_new_inferior (thread->ptid,
4235                                thread->state == THREAD_RUNNING,
4236                                from_tty);
4237         }
4238     }
4239
4240   /* If all-stop on top of non-stop, pause all threads.  Note this
4241      records the threads' stop pc, so must be done after "noticing"
4242      the inferiors.  */
4243   if (!non_stop)
4244     {
4245       stop_all_threads ();
4246
4247       /* If all threads of an inferior were already stopped, we
4248          haven't setup the inferior yet.  */
4249       ALL_INFERIORS (inf)
4250         {
4251           if (inf->pid == 0)
4252             continue;
4253
4254           if (inf->needs_setup)
4255             {
4256               thread = any_live_thread_of_process (inf->pid);
4257               switch_to_thread_no_regs (thread);
4258               setup_inferior (0);
4259             }
4260         }
4261     }
4262
4263   /* Now go over all threads that are stopped, and print their current
4264      frame.  If all-stop, then if there's a signalled thread, pick
4265      that as current.  */
4266   ALL_NON_EXITED_THREADS (thread)
4267     {
4268       if (first == NULL)
4269         first = thread;
4270
4271       if (!non_stop)
4272         set_running (thread->ptid, 0);
4273       else if (thread->state != THREAD_STOPPED)
4274         continue;
4275
4276       if (selected == NULL
4277           && thread->suspend.waitstatus_pending_p)
4278         selected = thread;
4279
4280       if (lowest_stopped == NULL
4281           || thread->inf->num < lowest_stopped->inf->num
4282           || thread->per_inf_num < lowest_stopped->per_inf_num)
4283         lowest_stopped = thread;
4284
4285       if (non_stop)
4286         print_one_stopped_thread (thread);
4287     }
4288
4289   /* In all-stop, we only print the status of one thread, and leave
4290      others with their status pending.  */
4291   if (!non_stop)
4292     {
4293       thread = selected;
4294       if (thread == NULL)
4295         thread = lowest_stopped;
4296       if (thread == NULL)
4297         thread = first;
4298
4299       print_one_stopped_thread (thread);
4300     }
4301
4302   /* For "info program".  */
4303   thread = inferior_thread ();
4304   if (thread->state == THREAD_STOPPED)
4305     set_last_target_status (inferior_ptid, thread->suspend.waitstatus);
4306 }
4307
4308 /* Start the remote connection and sync state.  */
4309
4310 void
4311 remote_target::start_remote (int from_tty, int extended_p)
4312 {
4313   struct remote_state *rs = get_remote_state ();
4314   struct packet_config *noack_config;
4315   char *wait_status = NULL;
4316
4317   /* Signal other parts that we're going through the initial setup,
4318      and so things may not be stable yet.  E.g., we don't try to
4319      install tracepoints until we've relocated symbols.  Also, a
4320      Ctrl-C before we're connected and synced up can't interrupt the
4321      target.  Instead, it offers to drop the (potentially wedged)
4322      connection.  */
4323   rs->starting_up = 1;
4324
4325   QUIT;
4326
4327   if (interrupt_on_connect)
4328     send_interrupt_sequence ();
4329
4330   /* Ack any packet which the remote side has already sent.  */
4331   remote_serial_write ("+", 1);
4332
4333   /* The first packet we send to the target is the optional "supported
4334      packets" request.  If the target can answer this, it will tell us
4335      which later probes to skip.  */
4336   remote_query_supported ();
4337
4338   /* If the stub wants to get a QAllow, compose one and send it.  */
4339   if (packet_support (PACKET_QAllow) != PACKET_DISABLE)
4340     set_permissions ();
4341
4342   /* gdbserver < 7.7 (before its fix from 2013-12-11) did reply to any
4343      unknown 'v' packet with string "OK".  "OK" gets interpreted by GDB
4344      as a reply to known packet.  For packet "vFile:setfs:" it is an
4345      invalid reply and GDB would return error in
4346      remote_hostio_set_filesystem, making remote files access impossible.
4347      Disable "vFile:setfs:" in such case.  Do not disable other 'v' packets as
4348      other "vFile" packets get correctly detected even on gdbserver < 7.7.  */
4349   {
4350     const char v_mustreplyempty[] = "vMustReplyEmpty";
4351
4352     putpkt (v_mustreplyempty);
4353     getpkt (&rs->buf, &rs->buf_size, 0);
4354     if (strcmp (rs->buf, "OK") == 0)
4355       remote_protocol_packets[PACKET_vFile_setfs].support = PACKET_DISABLE;
4356     else if (strcmp (rs->buf, "") != 0)
4357       error (_("Remote replied unexpectedly to '%s': %s"), v_mustreplyempty,
4358              rs->buf);
4359   }
4360
4361   /* Next, we possibly activate noack mode.
4362
4363      If the QStartNoAckMode packet configuration is set to AUTO,
4364      enable noack mode if the stub reported a wish for it with
4365      qSupported.
4366
4367      If set to TRUE, then enable noack mode even if the stub didn't
4368      report it in qSupported.  If the stub doesn't reply OK, the
4369      session ends with an error.
4370
4371      If FALSE, then don't activate noack mode, regardless of what the
4372      stub claimed should be the default with qSupported.  */
4373
4374   noack_config = &remote_protocol_packets[PACKET_QStartNoAckMode];
4375   if (packet_config_support (noack_config) != PACKET_DISABLE)
4376     {
4377       putpkt ("QStartNoAckMode");
4378       getpkt (&rs->buf, &rs->buf_size, 0);
4379       if (packet_ok (rs->buf, noack_config) == PACKET_OK)
4380         rs->noack_mode = 1;
4381     }
4382
4383   if (extended_p)
4384     {
4385       /* Tell the remote that we are using the extended protocol.  */
4386       putpkt ("!");
4387       getpkt (&rs->buf, &rs->buf_size, 0);
4388     }
4389
4390   /* Let the target know which signals it is allowed to pass down to
4391      the program.  */
4392   update_signals_program_target ();
4393
4394   /* Next, if the target can specify a description, read it.  We do
4395      this before anything involving memory or registers.  */
4396   target_find_description ();
4397
4398   /* Next, now that we know something about the target, update the
4399      address spaces in the program spaces.  */
4400   update_address_spaces ();
4401
4402   /* On OSs where the list of libraries is global to all
4403      processes, we fetch them early.  */
4404   if (gdbarch_has_global_solist (target_gdbarch ()))
4405     solib_add (NULL, from_tty, auto_solib_add);
4406
4407   if (target_is_non_stop_p ())
4408     {
4409       if (packet_support (PACKET_QNonStop) != PACKET_ENABLE)
4410         error (_("Non-stop mode requested, but remote "
4411                  "does not support non-stop"));
4412
4413       putpkt ("QNonStop:1");
4414       getpkt (&rs->buf, &rs->buf_size, 0);
4415
4416       if (strcmp (rs->buf, "OK") != 0)
4417         error (_("Remote refused setting non-stop mode with: %s"), rs->buf);
4418
4419       /* Find about threads and processes the stub is already
4420          controlling.  We default to adding them in the running state.
4421          The '?' query below will then tell us about which threads are
4422          stopped.  */
4423       this->update_thread_list ();
4424     }
4425   else if (packet_support (PACKET_QNonStop) == PACKET_ENABLE)
4426     {
4427       /* Don't assume that the stub can operate in all-stop mode.
4428          Request it explicitly.  */
4429       putpkt ("QNonStop:0");
4430       getpkt (&rs->buf, &rs->buf_size, 0);
4431
4432       if (strcmp (rs->buf, "OK") != 0)
4433         error (_("Remote refused setting all-stop mode with: %s"), rs->buf);
4434     }
4435
4436   /* Upload TSVs regardless of whether the target is running or not.  The
4437      remote stub, such as GDBserver, may have some predefined or builtin
4438      TSVs, even if the target is not running.  */
4439   if (get_trace_status (current_trace_status ()) != -1)
4440     {
4441       struct uploaded_tsv *uploaded_tsvs = NULL;
4442
4443       upload_trace_state_variables (&uploaded_tsvs);
4444       merge_uploaded_trace_state_variables (&uploaded_tsvs);
4445     }
4446
4447   /* Check whether the target is running now.  */
4448   putpkt ("?");
4449   getpkt (&rs->buf, &rs->buf_size, 0);
4450
4451   if (!target_is_non_stop_p ())
4452     {
4453       if (rs->buf[0] == 'W' || rs->buf[0] == 'X')
4454         {
4455           if (!extended_p)
4456             error (_("The target is not running (try extended-remote?)"));
4457
4458           /* We're connected, but not running.  Drop out before we
4459              call start_remote.  */
4460           rs->starting_up = 0;
4461           return;
4462         }
4463       else
4464         {
4465           /* Save the reply for later.  */
4466           wait_status = (char *) alloca (strlen (rs->buf) + 1);
4467           strcpy (wait_status, rs->buf);
4468         }
4469
4470       /* Fetch thread list.  */
4471       target_update_thread_list ();
4472
4473       /* Let the stub know that we want it to return the thread.  */
4474       set_continue_thread (minus_one_ptid);
4475
4476       if (thread_count () == 0)
4477         {
4478           /* Target has no concept of threads at all.  GDB treats
4479              non-threaded target as single-threaded; add a main
4480              thread.  */
4481           add_current_inferior_and_thread (wait_status);
4482         }
4483       else
4484         {
4485           /* We have thread information; select the thread the target
4486              says should be current.  If we're reconnecting to a
4487              multi-threaded program, this will ideally be the thread
4488              that last reported an event before GDB disconnected.  */
4489           inferior_ptid = get_current_thread (wait_status);
4490           if (ptid_equal (inferior_ptid, null_ptid))
4491             {
4492               /* Odd... The target was able to list threads, but not
4493                  tell us which thread was current (no "thread"
4494                  register in T stop reply?).  Just pick the first
4495                  thread in the thread list then.  */
4496               
4497               if (remote_debug)
4498                 fprintf_unfiltered (gdb_stdlog,
4499                                     "warning: couldn't determine remote "
4500                                     "current thread; picking first in list.\n");
4501
4502               inferior_ptid = thread_list->ptid;
4503             }
4504         }
4505
4506       /* init_wait_for_inferior should be called before get_offsets in order
4507          to manage `inserted' flag in bp loc in a correct state.
4508          breakpoint_init_inferior, called from init_wait_for_inferior, set
4509          `inserted' flag to 0, while before breakpoint_re_set, called from
4510          start_remote, set `inserted' flag to 1.  In the initialization of
4511          inferior, breakpoint_init_inferior should be called first, and then
4512          breakpoint_re_set can be called.  If this order is broken, state of
4513          `inserted' flag is wrong, and cause some problems on breakpoint
4514          manipulation.  */
4515       init_wait_for_inferior ();
4516
4517       get_offsets ();           /* Get text, data & bss offsets.  */
4518
4519       /* If we could not find a description using qXfer, and we know
4520          how to do it some other way, try again.  This is not
4521          supported for non-stop; it could be, but it is tricky if
4522          there are no stopped threads when we connect.  */
4523       if (remote_read_description_p (this)
4524           && gdbarch_target_desc (target_gdbarch ()) == NULL)
4525         {
4526           target_clear_description ();
4527           target_find_description ();
4528         }
4529
4530       /* Use the previously fetched status.  */
4531       gdb_assert (wait_status != NULL);
4532       strcpy (rs->buf, wait_status);
4533       rs->cached_wait_status = 1;
4534
4535       ::start_remote (from_tty); /* Initialize gdb process mechanisms.  */
4536     }
4537   else
4538     {
4539       /* Clear WFI global state.  Do this before finding about new
4540          threads and inferiors, and setting the current inferior.
4541          Otherwise we would clear the proceed status of the current
4542          inferior when we want its stop_soon state to be preserved
4543          (see notice_new_inferior).  */
4544       init_wait_for_inferior ();
4545
4546       /* In non-stop, we will either get an "OK", meaning that there
4547          are no stopped threads at this time; or, a regular stop
4548          reply.  In the latter case, there may be more than one thread
4549          stopped --- we pull them all out using the vStopped
4550          mechanism.  */
4551       if (strcmp (rs->buf, "OK") != 0)
4552         {
4553           struct notif_client *notif = &notif_client_stop;
4554
4555           /* remote_notif_get_pending_replies acks this one, and gets
4556              the rest out.  */
4557           rs->notif_state->pending_event[notif_client_stop.id]
4558             = remote_notif_parse (notif, rs->buf);
4559           remote_notif_get_pending_events (notif);
4560         }
4561
4562       if (thread_count () == 0)
4563         {
4564           if (!extended_p)
4565             error (_("The target is not running (try extended-remote?)"));
4566
4567           /* We're connected, but not running.  Drop out before we
4568              call start_remote.  */
4569           rs->starting_up = 0;
4570           return;
4571         }
4572
4573       /* In non-stop mode, any cached wait status will be stored in
4574          the stop reply queue.  */
4575       gdb_assert (wait_status == NULL);
4576
4577       /* Report all signals during attach/startup.  */
4578       pass_signals (0, NULL);
4579
4580       /* If there are already stopped threads, mark them stopped and
4581          report their stops before giving the prompt to the user.  */
4582       process_initial_stop_replies (from_tty);
4583
4584       if (target_can_async_p ())
4585         target_async (1);
4586     }
4587
4588   /* If we connected to a live target, do some additional setup.  */
4589   if (target_has_execution)
4590     {
4591       if (symfile_objfile)      /* No use without a symbol-file.  */
4592         remote_check_symbols ();
4593     }
4594
4595   /* Possibly the target has been engaged in a trace run started
4596      previously; find out where things are at.  */
4597   if (get_trace_status (current_trace_status ()) != -1)
4598     {
4599       struct uploaded_tp *uploaded_tps = NULL;
4600
4601       if (current_trace_status ()->running)
4602         printf_filtered (_("Trace is already running on the target.\n"));
4603
4604       upload_tracepoints (&uploaded_tps);
4605
4606       merge_uploaded_tracepoints (&uploaded_tps);
4607     }
4608
4609   /* Possibly the target has been engaged in a btrace record started
4610      previously; find out where things are at.  */
4611   remote_btrace_maybe_reopen ();
4612
4613   /* The thread and inferior lists are now synchronized with the
4614      target, our symbols have been relocated, and we're merged the
4615      target's tracepoints with ours.  We're done with basic start
4616      up.  */
4617   rs->starting_up = 0;
4618
4619   /* Maybe breakpoints are global and need to be inserted now.  */
4620   if (breakpoints_should_be_inserted_now ())
4621     insert_breakpoints ();
4622 }
4623
4624 /* Open a connection to a remote debugger.
4625    NAME is the filename used for communication.  */
4626
4627 void
4628 remote_target::open (const char *name, int from_tty)
4629 {
4630   open_1 (name, from_tty, 0);
4631 }
4632
4633 /* Open a connection to a remote debugger using the extended
4634    remote gdb protocol.  NAME is the filename used for communication.  */
4635
4636 void
4637 extended_remote_target::open (const char *name, int from_tty)
4638 {
4639   open_1 (name, from_tty, 1 /*extended_p */);
4640 }
4641
4642 /* Reset all packets back to "unknown support".  Called when opening a
4643    new connection to a remote target.  */
4644
4645 static void
4646 reset_all_packet_configs_support (void)
4647 {
4648   int i;
4649
4650   for (i = 0; i < PACKET_MAX; i++)
4651     remote_protocol_packets[i].support = PACKET_SUPPORT_UNKNOWN;
4652 }
4653
4654 /* Initialize all packet configs.  */
4655
4656 static void
4657 init_all_packet_configs (void)
4658 {
4659   int i;
4660
4661   for (i = 0; i < PACKET_MAX; i++)
4662     {
4663       remote_protocol_packets[i].detect = AUTO_BOOLEAN_AUTO;
4664       remote_protocol_packets[i].support = PACKET_SUPPORT_UNKNOWN;
4665     }
4666 }
4667
4668 /* Symbol look-up.  */
4669
4670 static void
4671 remote_check_symbols (void)
4672 {
4673   char *msg, *reply, *tmp;
4674   int end;
4675   long reply_size;
4676   struct cleanup *old_chain;
4677
4678   /* The remote side has no concept of inferiors that aren't running
4679      yet, it only knows about running processes.  If we're connected
4680      but our current inferior is not running, we should not invite the
4681      remote target to request symbol lookups related to its
4682      (unrelated) current process.  */
4683   if (!target_has_execution)
4684     return;
4685
4686   if (packet_support (PACKET_qSymbol) == PACKET_DISABLE)
4687     return;
4688
4689   /* Make sure the remote is pointing at the right process.  Note
4690      there's no way to select "no process".  */
4691   set_general_process ();
4692
4693   /* Allocate a message buffer.  We can't reuse the input buffer in RS,
4694      because we need both at the same time.  */
4695   msg = (char *) xmalloc (get_remote_packet_size ());
4696   old_chain = make_cleanup (xfree, msg);
4697   reply = (char *) xmalloc (get_remote_packet_size ());
4698   make_cleanup (free_current_contents, &reply);
4699   reply_size = get_remote_packet_size ();
4700
4701   /* Invite target to request symbol lookups.  */
4702
4703   putpkt ("qSymbol::");
4704   getpkt (&reply, &reply_size, 0);
4705   packet_ok (reply, &remote_protocol_packets[PACKET_qSymbol]);
4706
4707   while (startswith (reply, "qSymbol:"))
4708     {
4709       struct bound_minimal_symbol sym;
4710
4711       tmp = &reply[8];
4712       end = hex2bin (tmp, (gdb_byte *) msg, strlen (tmp) / 2);
4713       msg[end] = '\0';
4714       sym = lookup_minimal_symbol (msg, NULL, NULL);
4715       if (sym.minsym == NULL)
4716         xsnprintf (msg, get_remote_packet_size (), "qSymbol::%s", &reply[8]);
4717       else
4718         {
4719           int addr_size = gdbarch_addr_bit (target_gdbarch ()) / 8;
4720           CORE_ADDR sym_addr = BMSYMBOL_VALUE_ADDRESS (sym);
4721
4722           /* If this is a function address, return the start of code
4723              instead of any data function descriptor.  */
4724           sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch (),
4725                                                          sym_addr,
4726                                                          target_stack);
4727
4728           xsnprintf (msg, get_remote_packet_size (), "qSymbol:%s:%s",
4729                      phex_nz (sym_addr, addr_size), &reply[8]);
4730         }
4731   
4732       putpkt (msg);
4733       getpkt (&reply, &reply_size, 0);
4734     }
4735
4736   do_cleanups (old_chain);
4737 }
4738
4739 static struct serial *
4740 remote_serial_open (const char *name)
4741 {
4742   static int udp_warning = 0;
4743
4744   /* FIXME: Parsing NAME here is a hack.  But we want to warn here instead
4745      of in ser-tcp.c, because it is the remote protocol assuming that the
4746      serial connection is reliable and not the serial connection promising
4747      to be.  */
4748   if (!udp_warning && startswith (name, "udp:"))
4749     {
4750       warning (_("The remote protocol may be unreliable over UDP.\n"
4751                  "Some events may be lost, rendering further debugging "
4752                  "impossible."));
4753       udp_warning = 1;
4754     }
4755
4756   return serial_open (name);
4757 }
4758
4759 /* Inform the target of our permission settings.  The permission flags
4760    work without this, but if the target knows the settings, it can do
4761    a couple things.  First, it can add its own check, to catch cases
4762    that somehow manage to get by the permissions checks in target
4763    methods.  Second, if the target is wired to disallow particular
4764    settings (for instance, a system in the field that is not set up to
4765    be able to stop at a breakpoint), it can object to any unavailable
4766    permissions.  */
4767
4768 void
4769 remote_target::set_permissions ()
4770 {
4771   struct remote_state *rs = get_remote_state ();
4772
4773   xsnprintf (rs->buf, get_remote_packet_size (), "QAllow:"
4774              "WriteReg:%x;WriteMem:%x;"
4775              "InsertBreak:%x;InsertTrace:%x;"
4776              "InsertFastTrace:%x;Stop:%x",
4777              may_write_registers, may_write_memory,
4778              may_insert_breakpoints, may_insert_tracepoints,
4779              may_insert_fast_tracepoints, may_stop);
4780   putpkt (rs->buf);
4781   getpkt (&rs->buf, &rs->buf_size, 0);
4782
4783   /* If the target didn't like the packet, warn the user.  Do not try
4784      to undo the user's settings, that would just be maddening.  */
4785   if (strcmp (rs->buf, "OK") != 0)
4786     warning (_("Remote refused setting permissions with: %s"), rs->buf);
4787 }
4788
4789 /* This type describes each known response to the qSupported
4790    packet.  */
4791 struct protocol_feature
4792 {
4793   /* The name of this protocol feature.  */
4794   const char *name;
4795
4796   /* The default for this protocol feature.  */
4797   enum packet_support default_support;
4798
4799   /* The function to call when this feature is reported, or after
4800      qSupported processing if the feature is not supported.
4801      The first argument points to this structure.  The second
4802      argument indicates whether the packet requested support be
4803      enabled, disabled, or probed (or the default, if this function
4804      is being called at the end of processing and this feature was
4805      not reported).  The third argument may be NULL; if not NULL, it
4806      is a NUL-terminated string taken from the packet following
4807      this feature's name and an equals sign.  */
4808   void (*func) (const struct protocol_feature *, enum packet_support,
4809                 const char *);
4810
4811   /* The corresponding packet for this feature.  Only used if
4812      FUNC is remote_supported_packet.  */
4813   int packet;
4814 };
4815
4816 static void
4817 remote_supported_packet (const struct protocol_feature *feature,
4818                          enum packet_support support,
4819                          const char *argument)
4820 {
4821   if (argument)
4822     {
4823       warning (_("Remote qSupported response supplied an unexpected value for"
4824                  " \"%s\"."), feature->name);
4825       return;
4826     }
4827
4828   remote_protocol_packets[feature->packet].support = support;
4829 }
4830
4831 static void
4832 remote_packet_size (const struct protocol_feature *feature,
4833                     enum packet_support support, const char *value)
4834 {
4835   struct remote_state *rs = get_remote_state ();
4836
4837   int packet_size;
4838   char *value_end;
4839
4840   if (support != PACKET_ENABLE)
4841     return;
4842
4843   if (value == NULL || *value == '\0')
4844     {
4845       warning (_("Remote target reported \"%s\" without a size."),
4846                feature->name);
4847       return;
4848     }
4849
4850   errno = 0;
4851   packet_size = strtol (value, &value_end, 16);
4852   if (errno != 0 || *value_end != '\0' || packet_size < 0)
4853     {
4854       warning (_("Remote target reported \"%s\" with a bad size: \"%s\"."),
4855                feature->name, value);
4856       return;
4857     }
4858
4859   /* Record the new maximum packet size.  */
4860   rs->explicit_packet_size = packet_size;
4861 }
4862
4863 static const struct protocol_feature remote_protocol_features[] = {
4864   { "PacketSize", PACKET_DISABLE, remote_packet_size, -1 },
4865   { "qXfer:auxv:read", PACKET_DISABLE, remote_supported_packet,
4866     PACKET_qXfer_auxv },
4867   { "qXfer:exec-file:read", PACKET_DISABLE, remote_supported_packet,
4868     PACKET_qXfer_exec_file },
4869   { "qXfer:features:read", PACKET_DISABLE, remote_supported_packet,
4870     PACKET_qXfer_features },
4871   { "qXfer:libraries:read", PACKET_DISABLE, remote_supported_packet,
4872     PACKET_qXfer_libraries },
4873   { "qXfer:libraries-svr4:read", PACKET_DISABLE, remote_supported_packet,
4874     PACKET_qXfer_libraries_svr4 },
4875   { "augmented-libraries-svr4-read", PACKET_DISABLE,
4876     remote_supported_packet, PACKET_augmented_libraries_svr4_read_feature },
4877   { "qXfer:memory-map:read", PACKET_DISABLE, remote_supported_packet,
4878     PACKET_qXfer_memory_map },
4879   { "qXfer:spu:read", PACKET_DISABLE, remote_supported_packet,
4880     PACKET_qXfer_spu_read },
4881   { "qXfer:spu:write", PACKET_DISABLE, remote_supported_packet,
4882     PACKET_qXfer_spu_write },
4883   { "qXfer:osdata:read", PACKET_DISABLE, remote_supported_packet,
4884     PACKET_qXfer_osdata },
4885   { "qXfer:threads:read", PACKET_DISABLE, remote_supported_packet,
4886     PACKET_qXfer_threads },
4887   { "qXfer:traceframe-info:read", PACKET_DISABLE, remote_supported_packet,
4888     PACKET_qXfer_traceframe_info },
4889   { "QPassSignals", PACKET_DISABLE, remote_supported_packet,
4890     PACKET_QPassSignals },
4891   { "QCatchSyscalls", PACKET_DISABLE, remote_supported_packet,
4892     PACKET_QCatchSyscalls },
4893   { "QProgramSignals", PACKET_DISABLE, remote_supported_packet,
4894     PACKET_QProgramSignals },
4895   { "QSetWorkingDir", PACKET_DISABLE, remote_supported_packet,
4896     PACKET_QSetWorkingDir },
4897   { "QStartupWithShell", PACKET_DISABLE, remote_supported_packet,
4898     PACKET_QStartupWithShell },
4899   { "QEnvironmentHexEncoded", PACKET_DISABLE, remote_supported_packet,
4900     PACKET_QEnvironmentHexEncoded },
4901   { "QEnvironmentReset", PACKET_DISABLE, remote_supported_packet,
4902     PACKET_QEnvironmentReset },
4903   { "QEnvironmentUnset", PACKET_DISABLE, remote_supported_packet,
4904     PACKET_QEnvironmentUnset },
4905   { "QStartNoAckMode", PACKET_DISABLE, remote_supported_packet,
4906     PACKET_QStartNoAckMode },
4907   { "multiprocess", PACKET_DISABLE, remote_supported_packet,
4908     PACKET_multiprocess_feature },
4909   { "QNonStop", PACKET_DISABLE, remote_supported_packet, PACKET_QNonStop },
4910   { "qXfer:siginfo:read", PACKET_DISABLE, remote_supported_packet,
4911     PACKET_qXfer_siginfo_read },
4912   { "qXfer:siginfo:write", PACKET_DISABLE, remote_supported_packet,
4913     PACKET_qXfer_siginfo_write },
4914   { "ConditionalTracepoints", PACKET_DISABLE, remote_supported_packet,
4915     PACKET_ConditionalTracepoints },
4916   { "ConditionalBreakpoints", PACKET_DISABLE, remote_supported_packet,
4917     PACKET_ConditionalBreakpoints },
4918   { "BreakpointCommands", PACKET_DISABLE, remote_supported_packet,
4919     PACKET_BreakpointCommands },
4920   { "FastTracepoints", PACKET_DISABLE, remote_supported_packet,
4921     PACKET_FastTracepoints },
4922   { "StaticTracepoints", PACKET_DISABLE, remote_supported_packet,
4923     PACKET_StaticTracepoints },
4924   {"InstallInTrace", PACKET_DISABLE, remote_supported_packet,
4925    PACKET_InstallInTrace},
4926   { "DisconnectedTracing", PACKET_DISABLE, remote_supported_packet,
4927     PACKET_DisconnectedTracing_feature },
4928   { "ReverseContinue", PACKET_DISABLE, remote_supported_packet,
4929     PACKET_bc },
4930   { "ReverseStep", PACKET_DISABLE, remote_supported_packet,
4931     PACKET_bs },
4932   { "TracepointSource", PACKET_DISABLE, remote_supported_packet,
4933     PACKET_TracepointSource },
4934   { "QAllow", PACKET_DISABLE, remote_supported_packet,
4935     PACKET_QAllow },
4936   { "EnableDisableTracepoints", PACKET_DISABLE, remote_supported_packet,
4937     PACKET_EnableDisableTracepoints_feature },
4938   { "qXfer:fdpic:read", PACKET_DISABLE, remote_supported_packet,
4939     PACKET_qXfer_fdpic },
4940   { "qXfer:uib:read", PACKET_DISABLE, remote_supported_packet,
4941     PACKET_qXfer_uib },
4942   { "QDisableRandomization", PACKET_DISABLE, remote_supported_packet,
4943     PACKET_QDisableRandomization },
4944   { "QAgent", PACKET_DISABLE, remote_supported_packet, PACKET_QAgent},
4945   { "QTBuffer:size", PACKET_DISABLE,
4946     remote_supported_packet, PACKET_QTBuffer_size},
4947   { "tracenz", PACKET_DISABLE, remote_supported_packet, PACKET_tracenz_feature },
4948   { "Qbtrace:off", PACKET_DISABLE, remote_supported_packet, PACKET_Qbtrace_off },
4949   { "Qbtrace:bts", PACKET_DISABLE, remote_supported_packet, PACKET_Qbtrace_bts },
4950   { "Qbtrace:pt", PACKET_DISABLE, remote_supported_packet, PACKET_Qbtrace_pt },
4951   { "qXfer:btrace:read", PACKET_DISABLE, remote_supported_packet,
4952     PACKET_qXfer_btrace },
4953   { "qXfer:btrace-conf:read", PACKET_DISABLE, remote_supported_packet,
4954     PACKET_qXfer_btrace_conf },
4955   { "Qbtrace-conf:bts:size", PACKET_DISABLE, remote_supported_packet,
4956     PACKET_Qbtrace_conf_bts_size },
4957   { "swbreak", PACKET_DISABLE, remote_supported_packet, PACKET_swbreak_feature },
4958   { "hwbreak", PACKET_DISABLE, remote_supported_packet, PACKET_hwbreak_feature },
4959   { "fork-events", PACKET_DISABLE, remote_supported_packet,
4960     PACKET_fork_event_feature },
4961   { "vfork-events", PACKET_DISABLE, remote_supported_packet,
4962     PACKET_vfork_event_feature },
4963   { "exec-events", PACKET_DISABLE, remote_supported_packet,
4964     PACKET_exec_event_feature },
4965   { "Qbtrace-conf:pt:size", PACKET_DISABLE, remote_supported_packet,
4966     PACKET_Qbtrace_conf_pt_size },
4967   { "vContSupported", PACKET_DISABLE, remote_supported_packet, PACKET_vContSupported },
4968   { "QThreadEvents", PACKET_DISABLE, remote_supported_packet, PACKET_QThreadEvents },
4969   { "no-resumed", PACKET_DISABLE, remote_supported_packet, PACKET_no_resumed },
4970 };
4971
4972 static char *remote_support_xml;
4973
4974 /* Register string appended to "xmlRegisters=" in qSupported query.  */
4975
4976 void
4977 register_remote_support_xml (const char *xml)
4978 {
4979 #if defined(HAVE_LIBEXPAT)
4980   if (remote_support_xml == NULL)
4981     remote_support_xml = concat ("xmlRegisters=", xml, (char *) NULL);
4982   else
4983     {
4984       char *copy = xstrdup (remote_support_xml + 13);
4985       char *p = strtok (copy, ",");
4986
4987       do
4988         {
4989           if (strcmp (p, xml) == 0)
4990             {
4991               /* already there */
4992               xfree (copy);
4993               return;
4994             }
4995         }
4996       while ((p = strtok (NULL, ",")) != NULL);
4997       xfree (copy);
4998
4999       remote_support_xml = reconcat (remote_support_xml,
5000                                      remote_support_xml, ",", xml,
5001                                      (char *) NULL);
5002     }
5003 #endif
5004 }
5005
5006 static void
5007 remote_query_supported_append (std::string *msg, const char *append)
5008 {
5009   if (!msg->empty ())
5010     msg->append (";");
5011   msg->append (append);
5012 }
5013
5014 static void
5015 remote_query_supported (void)
5016 {
5017   struct remote_state *rs = get_remote_state ();
5018   char *next;
5019   int i;
5020   unsigned char seen [ARRAY_SIZE (remote_protocol_features)];
5021
5022   /* The packet support flags are handled differently for this packet
5023      than for most others.  We treat an error, a disabled packet, and
5024      an empty response identically: any features which must be reported
5025      to be used will be automatically disabled.  An empty buffer
5026      accomplishes this, since that is also the representation for a list
5027      containing no features.  */
5028
5029   rs->buf[0] = 0;
5030   if (packet_support (PACKET_qSupported) != PACKET_DISABLE)
5031     {
5032       std::string q;
5033
5034       if (packet_set_cmd_state (PACKET_multiprocess_feature) != AUTO_BOOLEAN_FALSE)
5035         remote_query_supported_append (&q, "multiprocess+");
5036
5037       if (packet_set_cmd_state (PACKET_swbreak_feature) != AUTO_BOOLEAN_FALSE)
5038         remote_query_supported_append (&q, "swbreak+");
5039       if (packet_set_cmd_state (PACKET_hwbreak_feature) != AUTO_BOOLEAN_FALSE)
5040         remote_query_supported_append (&q, "hwbreak+");
5041
5042       remote_query_supported_append (&q, "qRelocInsn+");
5043
5044       if (packet_set_cmd_state (PACKET_fork_event_feature)
5045           != AUTO_BOOLEAN_FALSE)
5046         remote_query_supported_append (&q, "fork-events+");
5047       if (packet_set_cmd_state (PACKET_vfork_event_feature)
5048           != AUTO_BOOLEAN_FALSE)
5049         remote_query_supported_append (&q, "vfork-events+");
5050       if (packet_set_cmd_state (PACKET_exec_event_feature)
5051           != AUTO_BOOLEAN_FALSE)
5052         remote_query_supported_append (&q, "exec-events+");
5053
5054       if (packet_set_cmd_state (PACKET_vContSupported) != AUTO_BOOLEAN_FALSE)
5055         remote_query_supported_append (&q, "vContSupported+");
5056
5057       if (packet_set_cmd_state (PACKET_QThreadEvents) != AUTO_BOOLEAN_FALSE)
5058         remote_query_supported_append (&q, "QThreadEvents+");
5059
5060       if (packet_set_cmd_state (PACKET_no_resumed) != AUTO_BOOLEAN_FALSE)
5061         remote_query_supported_append (&q, "no-resumed+");
5062
5063       /* Keep this one last to work around a gdbserver <= 7.10 bug in
5064          the qSupported:xmlRegisters=i386 handling.  */
5065       if (remote_support_xml != NULL
5066           && packet_support (PACKET_qXfer_features) != PACKET_DISABLE)
5067         remote_query_supported_append (&q, remote_support_xml);
5068
5069       q = "qSupported:" + q;
5070       putpkt (q.c_str ());
5071
5072       getpkt (&rs->buf, &rs->buf_size, 0);
5073
5074       /* If an error occured, warn, but do not return - just reset the
5075          buffer to empty and go on to disable features.  */
5076       if (packet_ok (rs->buf, &remote_protocol_packets[PACKET_qSupported])
5077           == PACKET_ERROR)
5078         {
5079           warning (_("Remote failure reply: %s"), rs->buf);
5080           rs->buf[0] = 0;
5081         }
5082     }
5083
5084   memset (seen, 0, sizeof (seen));
5085
5086   next = rs->buf;
5087   while (*next)
5088     {
5089       enum packet_support is_supported;
5090       char *p, *end, *name_end, *value;
5091
5092       /* First separate out this item from the rest of the packet.  If
5093          there's another item after this, we overwrite the separator
5094          (terminated strings are much easier to work with).  */
5095       p = next;
5096       end = strchr (p, ';');
5097       if (end == NULL)
5098         {
5099           end = p + strlen (p);
5100           next = end;
5101         }
5102       else
5103         {
5104           *end = '\0';
5105           next = end + 1;
5106
5107           if (end == p)
5108             {
5109               warning (_("empty item in \"qSupported\" response"));
5110               continue;
5111             }
5112         }
5113
5114       name_end = strchr (p, '=');
5115       if (name_end)
5116         {
5117           /* This is a name=value entry.  */
5118           is_supported = PACKET_ENABLE;
5119           value = name_end + 1;
5120           *name_end = '\0';
5121         }
5122       else
5123         {
5124           value = NULL;
5125           switch (end[-1])
5126             {
5127             case '+':
5128               is_supported = PACKET_ENABLE;
5129               break;
5130
5131             case '-':
5132               is_supported = PACKET_DISABLE;
5133               break;
5134
5135             case '?':
5136               is_supported = PACKET_SUPPORT_UNKNOWN;
5137               break;
5138
5139             default:
5140               warning (_("unrecognized item \"%s\" "
5141                          "in \"qSupported\" response"), p);
5142               continue;
5143             }
5144           end[-1] = '\0';
5145         }
5146
5147       for (i = 0; i < ARRAY_SIZE (remote_protocol_features); i++)
5148         if (strcmp (remote_protocol_features[i].name, p) == 0)
5149           {
5150             const struct protocol_feature *feature;
5151
5152             seen[i] = 1;
5153             feature = &remote_protocol_features[i];
5154             feature->func (feature, is_supported, value);
5155             break;
5156           }
5157     }
5158
5159   /* If we increased the packet size, make sure to increase the global
5160      buffer size also.  We delay this until after parsing the entire
5161      qSupported packet, because this is the same buffer we were
5162      parsing.  */
5163   if (rs->buf_size < rs->explicit_packet_size)
5164     {
5165       rs->buf_size = rs->explicit_packet_size;
5166       rs->buf = (char *) xrealloc (rs->buf, rs->buf_size);
5167     }
5168
5169   /* Handle the defaults for unmentioned features.  */
5170   for (i = 0; i < ARRAY_SIZE (remote_protocol_features); i++)
5171     if (!seen[i])
5172       {
5173         const struct protocol_feature *feature;
5174
5175         feature = &remote_protocol_features[i];
5176         feature->func (feature, feature->default_support, NULL);
5177       }
5178 }
5179
5180 /* Serial QUIT handler for the remote serial descriptor.
5181
5182    Defers handling a Ctrl-C until we're done with the current
5183    command/response packet sequence, unless:
5184
5185    - We're setting up the connection.  Don't send a remote interrupt
5186      request, as we're not fully synced yet.  Quit immediately
5187      instead.
5188
5189    - The target has been resumed in the foreground
5190      (target_terminal::is_ours is false) with a synchronous resume
5191      packet, and we're blocked waiting for the stop reply, thus a
5192      Ctrl-C should be immediately sent to the target.
5193
5194    - We get a second Ctrl-C while still within the same serial read or
5195      write.  In that case the serial is seemingly wedged --- offer to
5196      quit/disconnect.
5197
5198    - We see a second Ctrl-C without target response, after having
5199      previously interrupted the target.  In that case the target/stub
5200      is probably wedged --- offer to quit/disconnect.
5201 */
5202
5203 static void
5204 remote_serial_quit_handler (void)
5205 {
5206   struct remote_state *rs = get_remote_state ();
5207
5208   if (check_quit_flag ())
5209     {
5210       /* If we're starting up, we're not fully synced yet.  Quit
5211          immediately.  */
5212       if (rs->starting_up)
5213         quit ();
5214       else if (rs->got_ctrlc_during_io)
5215         {
5216           if (query (_("The target is not responding to GDB commands.\n"
5217                        "Stop debugging it? ")))
5218             remote_unpush_and_throw ();
5219         }
5220       /* If ^C has already been sent once, offer to disconnect.  */
5221       else if (!target_terminal::is_ours () && rs->ctrlc_pending_p)
5222         interrupt_query ();
5223       /* All-stop protocol, and blocked waiting for stop reply.  Send
5224          an interrupt request.  */
5225       else if (!target_terminal::is_ours () && rs->waiting_for_stop_reply)
5226         target_interrupt ();
5227       else
5228         rs->got_ctrlc_during_io = 1;
5229     }
5230 }
5231
5232 /* Remove any of the remote.c targets from target stack.  Upper targets depend
5233    on it so remove them first.  */
5234
5235 static void
5236 remote_unpush_target (void)
5237 {
5238   pop_all_targets_at_and_above (process_stratum);
5239 }
5240
5241 static void
5242 remote_unpush_and_throw (void)
5243 {
5244   remote_unpush_target ();
5245   throw_error (TARGET_CLOSE_ERROR, _("Disconnected from target."));
5246 }
5247
5248 void
5249 remote_target::open_1 (const char *name, int from_tty, int extended_p)
5250 {
5251   struct remote_state *rs = get_remote_state ();
5252
5253   if (name == 0)
5254     error (_("To open a remote debug connection, you need to specify what\n"
5255            "serial device is attached to the remote system\n"
5256            "(e.g. /dev/ttyS0, /dev/ttya, COM1, etc.)."));
5257
5258   /* See FIXME above.  */
5259   if (!target_async_permitted)
5260     wait_forever_enabled_p = 1;
5261
5262   /* If we're connected to a running target, target_preopen will kill it.
5263      Ask this question first, before target_preopen has a chance to kill
5264      anything.  */
5265   if (rs->remote_desc != NULL && !have_inferiors ())
5266     {
5267       if (from_tty
5268           && !query (_("Already connected to a remote target.  Disconnect? ")))
5269         error (_("Still connected."));
5270     }
5271
5272   /* Here the possibly existing remote target gets unpushed.  */
5273   target_preopen (from_tty);
5274
5275   /* Make sure we send the passed signals list the next time we resume.  */
5276   xfree (rs->last_pass_packet);
5277   rs->last_pass_packet = NULL;
5278
5279   /* Make sure we send the program signals list the next time we
5280      resume.  */
5281   xfree (rs->last_program_signals_packet);
5282   rs->last_program_signals_packet = NULL;
5283
5284   remote_fileio_reset ();
5285   reopen_exec_file ();
5286   reread_symbols ();
5287
5288   rs->remote_desc = remote_serial_open (name);
5289   if (!rs->remote_desc)
5290     perror_with_name (name);
5291
5292   if (baud_rate != -1)
5293     {
5294       if (serial_setbaudrate (rs->remote_desc, baud_rate))
5295         {
5296           /* The requested speed could not be set.  Error out to
5297              top level after closing remote_desc.  Take care to
5298              set remote_desc to NULL to avoid closing remote_desc
5299              more than once.  */
5300           serial_close (rs->remote_desc);
5301           rs->remote_desc = NULL;
5302           perror_with_name (name);
5303         }
5304     }
5305
5306   serial_setparity (rs->remote_desc, serial_parity);
5307   serial_raw (rs->remote_desc);
5308
5309   /* If there is something sitting in the buffer we might take it as a
5310      response to a command, which would be bad.  */
5311   serial_flush_input (rs->remote_desc);
5312
5313   if (from_tty)
5314     {
5315       puts_filtered ("Remote debugging using ");
5316       puts_filtered (name);
5317       puts_filtered ("\n");
5318     }
5319
5320   remote_target *target
5321     = extended_p ? &extended_remote_ops : &remote_ops;
5322   push_target (target);         /* Switch to using remote target now.  */
5323
5324   /* Register extra event sources in the event loop.  */
5325   remote_async_inferior_event_token
5326     = create_async_event_handler (remote_async_inferior_event_handler,
5327                                   NULL);
5328   rs->notif_state = remote_notif_state_allocate ();
5329
5330   /* Reset the target state; these things will be queried either by
5331      remote_query_supported or as they are needed.  */
5332   reset_all_packet_configs_support ();
5333   rs->cached_wait_status = 0;
5334   rs->explicit_packet_size = 0;
5335   rs->noack_mode = 0;
5336   rs->extended = extended_p;
5337   rs->waiting_for_stop_reply = 0;
5338   rs->ctrlc_pending_p = 0;
5339   rs->got_ctrlc_during_io = 0;
5340
5341   rs->general_thread = not_sent_ptid;
5342   rs->continue_thread = not_sent_ptid;
5343   rs->remote_traceframe_number = -1;
5344
5345   rs->last_resume_exec_dir = EXEC_FORWARD;
5346
5347   /* Probe for ability to use "ThreadInfo" query, as required.  */
5348   rs->use_threadinfo_query = 1;
5349   rs->use_threadextra_query = 1;
5350
5351   rs->readahead_cache.invalidate ();
5352
5353   if (target_async_permitted)
5354     {
5355       /* FIXME: cagney/1999-09-23: During the initial connection it is
5356          assumed that the target is already ready and able to respond to
5357          requests.  Unfortunately remote_start_remote() eventually calls
5358          wait_for_inferior() with no timeout.  wait_forever_enabled_p gets
5359          around this.  Eventually a mechanism that allows
5360          wait_for_inferior() to expect/get timeouts will be
5361          implemented.  */
5362       wait_forever_enabled_p = 0;
5363     }
5364
5365   /* First delete any symbols previously loaded from shared libraries.  */
5366   no_shared_libraries (NULL, 0);
5367
5368   /* Start afresh.  */
5369   init_thread_list ();
5370
5371   /* Start the remote connection.  If error() or QUIT, discard this
5372      target (we'd otherwise be in an inconsistent state) and then
5373      propogate the error on up the exception chain.  This ensures that
5374      the caller doesn't stumble along blindly assuming that the
5375      function succeeded.  The CLI doesn't have this problem but other
5376      UI's, such as MI do.
5377
5378      FIXME: cagney/2002-05-19: Instead of re-throwing the exception,
5379      this function should return an error indication letting the
5380      caller restore the previous state.  Unfortunately the command
5381      ``target remote'' is directly wired to this function making that
5382      impossible.  On a positive note, the CLI side of this problem has
5383      been fixed - the function set_cmd_context() makes it possible for
5384      all the ``target ....'' commands to share a common callback
5385      function.  See cli-dump.c.  */
5386   {
5387
5388     TRY
5389       {
5390         target->start_remote (from_tty, extended_p);
5391       }
5392     CATCH (ex, RETURN_MASK_ALL)
5393       {
5394         /* Pop the partially set up target - unless something else did
5395            already before throwing the exception.  */
5396         if (rs->remote_desc != NULL)
5397           remote_unpush_target ();
5398         if (target_async_permitted)
5399           wait_forever_enabled_p = 1;
5400         throw_exception (ex);
5401       }
5402     END_CATCH
5403   }
5404
5405   remote_btrace_reset ();
5406
5407   if (target_async_permitted)
5408     wait_forever_enabled_p = 1;
5409 }
5410
5411 /* Detach the specified process.  */
5412
5413 static void
5414 remote_detach_pid (int pid)
5415 {
5416   struct remote_state *rs = get_remote_state ();
5417
5418   if (remote_multi_process_p (rs))
5419     xsnprintf (rs->buf, get_remote_packet_size (), "D;%x", pid);
5420   else
5421     strcpy (rs->buf, "D");
5422
5423   putpkt (rs->buf);
5424   getpkt (&rs->buf, &rs->buf_size, 0);
5425
5426   if (rs->buf[0] == 'O' && rs->buf[1] == 'K')
5427     ;
5428   else if (rs->buf[0] == '\0')
5429     error (_("Remote doesn't know how to detach"));
5430   else
5431     error (_("Can't detach process."));
5432 }
5433
5434 /* This detaches a program to which we previously attached, using
5435    inferior_ptid to identify the process.  After this is done, GDB
5436    can be used to debug some other program.  We better not have left
5437    any breakpoints in the target program or it'll die when it hits
5438    one.  */
5439
5440 static void
5441 remote_detach_1 (int from_tty, inferior *inf)
5442 {
5443   int pid = ptid_get_pid (inferior_ptid);
5444   struct remote_state *rs = get_remote_state ();
5445   struct thread_info *tp = find_thread_ptid (inferior_ptid);
5446   int is_fork_parent;
5447
5448   if (!target_has_execution)
5449     error (_("No process to detach from."));
5450
5451   target_announce_detach (from_tty);
5452
5453   /* Tell the remote target to detach.  */
5454   remote_detach_pid (pid);
5455
5456   /* Exit only if this is the only active inferior.  */
5457   if (from_tty && !rs->extended && number_of_live_inferiors () == 1)
5458     puts_filtered (_("Ending remote debugging.\n"));
5459
5460   /* Check to see if we are detaching a fork parent.  Note that if we
5461      are detaching a fork child, tp == NULL.  */
5462   is_fork_parent = (tp != NULL
5463                     && tp->pending_follow.kind == TARGET_WAITKIND_FORKED);
5464
5465   /* If doing detach-on-fork, we don't mourn, because that will delete
5466      breakpoints that should be available for the followed inferior.  */
5467   if (!is_fork_parent)
5468     {
5469       /* Save the pid as a string before mourning, since that will
5470          unpush the remote target, and we need the string after.  */
5471       std::string infpid = target_pid_to_str (pid_to_ptid (pid));
5472
5473       target_mourn_inferior (inferior_ptid);
5474       if (print_inferior_events)
5475         printf_unfiltered (_("[Inferior %d (%s) detached]\n"),
5476                            inf->num, infpid.c_str ());
5477     }
5478   else
5479     {
5480       inferior_ptid = null_ptid;
5481       detach_inferior (pid);
5482     }
5483 }
5484
5485 void
5486 remote_target::detach (inferior *inf, int from_tty)
5487 {
5488   remote_detach_1 (from_tty, inf);
5489 }
5490
5491 void
5492 extended_remote_target::detach (inferior *inf, int from_tty)
5493 {
5494   remote_detach_1 (from_tty, inf);
5495 }
5496
5497 /* Target follow-fork function for remote targets.  On entry, and
5498    at return, the current inferior is the fork parent.
5499
5500    Note that although this is currently only used for extended-remote,
5501    it is named remote_follow_fork in anticipation of using it for the
5502    remote target as well.  */
5503
5504 int
5505 remote_target::follow_fork (int follow_child, int detach_fork)
5506 {
5507   struct remote_state *rs = get_remote_state ();
5508   enum target_waitkind kind = inferior_thread ()->pending_follow.kind;
5509
5510   if ((kind == TARGET_WAITKIND_FORKED && remote_fork_event_p (rs))
5511       || (kind == TARGET_WAITKIND_VFORKED && remote_vfork_event_p (rs)))
5512     {
5513       /* When following the parent and detaching the child, we detach
5514          the child here.  For the case of following the child and
5515          detaching the parent, the detach is done in the target-
5516          independent follow fork code in infrun.c.  We can't use
5517          target_detach when detaching an unfollowed child because
5518          the client side doesn't know anything about the child.  */
5519       if (detach_fork && !follow_child)
5520         {
5521           /* Detach the fork child.  */
5522           ptid_t child_ptid;
5523           pid_t child_pid;
5524
5525           child_ptid = inferior_thread ()->pending_follow.value.related_pid;
5526           child_pid = ptid_get_pid (child_ptid);
5527
5528           remote_detach_pid (child_pid);
5529         }
5530     }
5531   return 0;
5532 }
5533
5534 /* Target follow-exec function for remote targets.  Save EXECD_PATHNAME
5535    in the program space of the new inferior.  On entry and at return the
5536    current inferior is the exec'ing inferior.  INF is the new exec'd
5537    inferior, which may be the same as the exec'ing inferior unless
5538    follow-exec-mode is "new".  */
5539
5540 void
5541 remote_target::follow_exec (struct inferior *inf, char *execd_pathname)
5542 {
5543   /* We know that this is a target file name, so if it has the "target:"
5544      prefix we strip it off before saving it in the program space.  */
5545   if (is_target_filename (execd_pathname))
5546     execd_pathname += strlen (TARGET_SYSROOT_PREFIX);
5547
5548   set_pspace_remote_exec_file (inf->pspace, execd_pathname);
5549 }
5550
5551 /* Same as remote_detach, but don't send the "D" packet; just disconnect.  */
5552
5553 void
5554 remote_target::disconnect (const char *args, int from_tty)
5555 {
5556   if (args)
5557     error (_("Argument given to \"disconnect\" when remotely debugging."));
5558
5559   /* Make sure we unpush even the extended remote targets.  Calling
5560      target_mourn_inferior won't unpush, and remote_mourn won't
5561      unpush if there is more than one inferior left.  */
5562   unpush_target (this);
5563   generic_mourn_inferior ();
5564
5565   if (from_tty)
5566     puts_filtered ("Ending remote debugging.\n");
5567 }
5568
5569 /* Attach to the process specified by ARGS.  If FROM_TTY is non-zero,
5570    be chatty about it.  */
5571
5572 void
5573 extended_remote_target::attach (const char *args, int from_tty)
5574 {
5575   struct remote_state *rs = get_remote_state ();
5576   int pid;
5577   char *wait_status = NULL;
5578
5579   pid = parse_pid_to_attach (args);
5580
5581   /* Remote PID can be freely equal to getpid, do not check it here the same
5582      way as in other targets.  */
5583
5584   if (packet_support (PACKET_vAttach) == PACKET_DISABLE)
5585     error (_("This target does not support attaching to a process"));
5586
5587   if (from_tty)
5588     {
5589       char *exec_file = get_exec_file (0);
5590
5591       if (exec_file)
5592         printf_unfiltered (_("Attaching to program: %s, %s\n"), exec_file,
5593                            target_pid_to_str (pid_to_ptid (pid)));
5594       else
5595         printf_unfiltered (_("Attaching to %s\n"),
5596                            target_pid_to_str (pid_to_ptid (pid)));
5597
5598       gdb_flush (gdb_stdout);
5599     }
5600
5601   xsnprintf (rs->buf, get_remote_packet_size (), "vAttach;%x", pid);
5602   putpkt (rs->buf);
5603   getpkt (&rs->buf, &rs->buf_size, 0);
5604
5605   switch (packet_ok (rs->buf,
5606                      &remote_protocol_packets[PACKET_vAttach]))
5607     {
5608     case PACKET_OK:
5609       if (!target_is_non_stop_p ())
5610         {
5611           /* Save the reply for later.  */
5612           wait_status = (char *) alloca (strlen (rs->buf) + 1);
5613           strcpy (wait_status, rs->buf);
5614         }
5615       else if (strcmp (rs->buf, "OK") != 0)
5616         error (_("Attaching to %s failed with: %s"),
5617                target_pid_to_str (pid_to_ptid (pid)),
5618                rs->buf);
5619       break;
5620     case PACKET_UNKNOWN:
5621       error (_("This target does not support attaching to a process"));
5622     default:
5623       error (_("Attaching to %s failed"),
5624              target_pid_to_str (pid_to_ptid (pid)));
5625     }
5626
5627   set_current_inferior (remote_add_inferior (0, pid, 1, 0));
5628
5629   inferior_ptid = pid_to_ptid (pid);
5630
5631   if (target_is_non_stop_p ())
5632     {
5633       struct thread_info *thread;
5634
5635       /* Get list of threads.  */
5636       update_thread_list ();
5637
5638       thread = first_thread_of_process (pid);
5639       if (thread)
5640         inferior_ptid = thread->ptid;
5641       else
5642         inferior_ptid = pid_to_ptid (pid);
5643
5644       /* Invalidate our notion of the remote current thread.  */
5645       record_currthread (rs, minus_one_ptid);
5646     }
5647   else
5648     {
5649       /* Now, if we have thread information, update inferior_ptid.  */
5650       inferior_ptid = remote_current_thread (inferior_ptid);
5651
5652       /* Add the main thread to the thread list.  */
5653       thread_info *thr = add_thread_silent (inferior_ptid);
5654       /* Don't consider the thread stopped until we've processed the
5655          saved stop reply.  */
5656       set_executing (thr->ptid, true);
5657     }
5658
5659   /* Next, if the target can specify a description, read it.  We do
5660      this before anything involving memory or registers.  */
5661   target_find_description ();
5662
5663   if (!target_is_non_stop_p ())
5664     {
5665       /* Use the previously fetched status.  */
5666       gdb_assert (wait_status != NULL);
5667
5668       if (target_can_async_p ())
5669         {
5670           struct notif_event *reply
5671             =  remote_notif_parse (&notif_client_stop, wait_status);
5672
5673           push_stop_reply ((struct stop_reply *) reply);
5674
5675           target_async (1);
5676         }
5677       else
5678         {
5679           gdb_assert (wait_status != NULL);
5680           strcpy (rs->buf, wait_status);
5681           rs->cached_wait_status = 1;
5682         }
5683     }
5684   else
5685     gdb_assert (wait_status == NULL);
5686 }
5687
5688 /* Implementation of the to_post_attach method.  */
5689
5690 void
5691 extended_remote_target::post_attach (int pid)
5692 {
5693   /* Get text, data & bss offsets.  */
5694   get_offsets ();
5695
5696   /* In certain cases GDB might not have had the chance to start
5697      symbol lookup up until now.  This could happen if the debugged
5698      binary is not using shared libraries, the vsyscall page is not
5699      present (on Linux) and the binary itself hadn't changed since the
5700      debugging process was started.  */
5701   if (symfile_objfile != NULL)
5702     remote_check_symbols();
5703 }
5704
5705 \f
5706 /* Check for the availability of vCont.  This function should also check
5707    the response.  */
5708
5709 static void
5710 remote_vcont_probe (struct remote_state *rs)
5711 {
5712   char *buf;
5713
5714   strcpy (rs->buf, "vCont?");
5715   putpkt (rs->buf);
5716   getpkt (&rs->buf, &rs->buf_size, 0);
5717   buf = rs->buf;
5718
5719   /* Make sure that the features we assume are supported.  */
5720   if (startswith (buf, "vCont"))
5721     {
5722       char *p = &buf[5];
5723       int support_c, support_C;
5724
5725       rs->supports_vCont.s = 0;
5726       rs->supports_vCont.S = 0;
5727       support_c = 0;
5728       support_C = 0;
5729       rs->supports_vCont.t = 0;
5730       rs->supports_vCont.r = 0;
5731       while (p && *p == ';')
5732         {
5733           p++;
5734           if (*p == 's' && (*(p + 1) == ';' || *(p + 1) == 0))
5735             rs->supports_vCont.s = 1;
5736           else if (*p == 'S' && (*(p + 1) == ';' || *(p + 1) == 0))
5737             rs->supports_vCont.S = 1;
5738           else if (*p == 'c' && (*(p + 1) == ';' || *(p + 1) == 0))
5739             support_c = 1;
5740           else if (*p == 'C' && (*(p + 1) == ';' || *(p + 1) == 0))
5741             support_C = 1;
5742           else if (*p == 't' && (*(p + 1) == ';' || *(p + 1) == 0))
5743             rs->supports_vCont.t = 1;
5744           else if (*p == 'r' && (*(p + 1) == ';' || *(p + 1) == 0))
5745             rs->supports_vCont.r = 1;
5746
5747           p = strchr (p, ';');
5748         }
5749
5750       /* If c, and C are not all supported, we can't use vCont.  Clearing
5751          BUF will make packet_ok disable the packet.  */
5752       if (!support_c || !support_C)
5753         buf[0] = 0;
5754     }
5755
5756   packet_ok (buf, &remote_protocol_packets[PACKET_vCont]);
5757 }
5758
5759 /* Helper function for building "vCont" resumptions.  Write a
5760    resumption to P.  ENDP points to one-passed-the-end of the buffer
5761    we're allowed to write to.  Returns BUF+CHARACTERS_WRITTEN.  The
5762    thread to be resumed is PTID; STEP and SIGGNAL indicate whether the
5763    resumed thread should be single-stepped and/or signalled.  If PTID
5764    equals minus_one_ptid, then all threads are resumed; if PTID
5765    represents a process, then all threads of the process are resumed;
5766    the thread to be stepped and/or signalled is given in the global
5767    INFERIOR_PTID.  */
5768
5769 static char *
5770 append_resumption (char *p, char *endp,
5771                    ptid_t ptid, int step, enum gdb_signal siggnal)
5772 {
5773   struct remote_state *rs = get_remote_state ();
5774
5775   if (step && siggnal != GDB_SIGNAL_0)
5776     p += xsnprintf (p, endp - p, ";S%02x", siggnal);
5777   else if (step
5778            /* GDB is willing to range step.  */
5779            && use_range_stepping
5780            /* Target supports range stepping.  */
5781            && rs->supports_vCont.r
5782            /* We don't currently support range stepping multiple
5783               threads with a wildcard (though the protocol allows it,
5784               so stubs shouldn't make an active effort to forbid
5785               it).  */
5786            && !(remote_multi_process_p (rs) && ptid_is_pid (ptid)))
5787     {
5788       struct thread_info *tp;
5789
5790       if (ptid_equal (ptid, minus_one_ptid))
5791         {
5792           /* If we don't know about the target thread's tid, then
5793              we're resuming magic_null_ptid (see caller).  */
5794           tp = find_thread_ptid (magic_null_ptid);
5795         }
5796       else
5797         tp = find_thread_ptid (ptid);
5798       gdb_assert (tp != NULL);
5799
5800       if (tp->control.may_range_step)
5801         {
5802           int addr_size = gdbarch_addr_bit (target_gdbarch ()) / 8;
5803
5804           p += xsnprintf (p, endp - p, ";r%s,%s",
5805                           phex_nz (tp->control.step_range_start,
5806                                    addr_size),
5807                           phex_nz (tp->control.step_range_end,
5808                                    addr_size));
5809         }
5810       else
5811         p += xsnprintf (p, endp - p, ";s");
5812     }
5813   else if (step)
5814     p += xsnprintf (p, endp - p, ";s");
5815   else if (siggnal != GDB_SIGNAL_0)
5816     p += xsnprintf (p, endp - p, ";C%02x", siggnal);
5817   else
5818     p += xsnprintf (p, endp - p, ";c");
5819
5820   if (remote_multi_process_p (rs) && ptid_is_pid (ptid))
5821     {
5822       ptid_t nptid;
5823
5824       /* All (-1) threads of process.  */
5825       nptid = ptid_build (ptid_get_pid (ptid), -1, 0);
5826
5827       p += xsnprintf (p, endp - p, ":");
5828       p = write_ptid (p, endp, nptid);
5829     }
5830   else if (!ptid_equal (ptid, minus_one_ptid))
5831     {
5832       p += xsnprintf (p, endp - p, ":");
5833       p = write_ptid (p, endp, ptid);
5834     }
5835
5836   return p;
5837 }
5838
5839 /* Clear the thread's private info on resume.  */
5840
5841 static void
5842 resume_clear_thread_private_info (struct thread_info *thread)
5843 {
5844   if (thread->priv != NULL)
5845     {
5846       remote_thread_info *priv = get_remote_thread_info (thread);
5847
5848       priv->stop_reason = TARGET_STOPPED_BY_NO_REASON;
5849       priv->watch_data_address = 0;
5850     }
5851 }
5852
5853 /* Append a vCont continue-with-signal action for threads that have a
5854    non-zero stop signal.  */
5855
5856 static char *
5857 append_pending_thread_resumptions (char *p, char *endp, ptid_t ptid)
5858 {
5859   struct thread_info *thread;
5860
5861   ALL_NON_EXITED_THREADS (thread)
5862     if (ptid_match (thread->ptid, ptid)
5863         && !ptid_equal (inferior_ptid, thread->ptid)
5864         && thread->suspend.stop_signal != GDB_SIGNAL_0)
5865       {
5866         p = append_resumption (p, endp, thread->ptid,
5867                                0, thread->suspend.stop_signal);
5868         thread->suspend.stop_signal = GDB_SIGNAL_0;
5869         resume_clear_thread_private_info (thread);
5870       }
5871
5872   return p;
5873 }
5874
5875 /* Set the target running, using the packets that use Hc
5876    (c/s/C/S).  */
5877
5878 static void
5879 remote_resume_with_hc (struct target_ops *ops,
5880                        ptid_t ptid, int step, enum gdb_signal siggnal)
5881 {
5882   struct remote_state *rs = get_remote_state ();
5883   struct thread_info *thread;
5884   char *buf;
5885
5886   rs->last_sent_signal = siggnal;
5887   rs->last_sent_step = step;
5888
5889   /* The c/s/C/S resume packets use Hc, so set the continue
5890      thread.  */
5891   if (ptid_equal (ptid, minus_one_ptid))
5892     set_continue_thread (any_thread_ptid);
5893   else
5894     set_continue_thread (ptid);
5895
5896   ALL_NON_EXITED_THREADS (thread)
5897     resume_clear_thread_private_info (thread);
5898
5899   buf = rs->buf;
5900   if (execution_direction == EXEC_REVERSE)
5901     {
5902       /* We don't pass signals to the target in reverse exec mode.  */
5903       if (info_verbose && siggnal != GDB_SIGNAL_0)
5904         warning (_(" - Can't pass signal %d to target in reverse: ignored."),
5905                  siggnal);
5906
5907       if (step && packet_support (PACKET_bs) == PACKET_DISABLE)
5908         error (_("Remote reverse-step not supported."));
5909       if (!step && packet_support (PACKET_bc) == PACKET_DISABLE)
5910         error (_("Remote reverse-continue not supported."));
5911
5912       strcpy (buf, step ? "bs" : "bc");
5913     }
5914   else if (siggnal != GDB_SIGNAL_0)
5915     {
5916       buf[0] = step ? 'S' : 'C';
5917       buf[1] = tohex (((int) siggnal >> 4) & 0xf);
5918       buf[2] = tohex (((int) siggnal) & 0xf);
5919       buf[3] = '\0';
5920     }
5921   else
5922     strcpy (buf, step ? "s" : "c");
5923
5924   putpkt (buf);
5925 }
5926
5927 /* Resume the remote inferior by using a "vCont" packet.  The thread
5928    to be resumed is PTID; STEP and SIGGNAL indicate whether the
5929    resumed thread should be single-stepped and/or signalled.  If PTID
5930    equals minus_one_ptid, then all threads are resumed; the thread to
5931    be stepped and/or signalled is given in the global INFERIOR_PTID.
5932    This function returns non-zero iff it resumes the inferior.
5933
5934    This function issues a strict subset of all possible vCont commands
5935    at the moment.  */
5936
5937 static int
5938 remote_resume_with_vcont (ptid_t ptid, int step, enum gdb_signal siggnal)
5939 {
5940   struct remote_state *rs = get_remote_state ();
5941   char *p;
5942   char *endp;
5943
5944   /* No reverse execution actions defined for vCont.  */
5945   if (execution_direction == EXEC_REVERSE)
5946     return 0;
5947
5948   if (packet_support (PACKET_vCont) == PACKET_SUPPORT_UNKNOWN)
5949     remote_vcont_probe (rs);
5950
5951   if (packet_support (PACKET_vCont) == PACKET_DISABLE)
5952     return 0;
5953
5954   p = rs->buf;
5955   endp = rs->buf + get_remote_packet_size ();
5956
5957   /* If we could generate a wider range of packets, we'd have to worry
5958      about overflowing BUF.  Should there be a generic
5959      "multi-part-packet" packet?  */
5960
5961   p += xsnprintf (p, endp - p, "vCont");
5962
5963   if (ptid_equal (ptid, magic_null_ptid))
5964     {
5965       /* MAGIC_NULL_PTID means that we don't have any active threads,
5966          so we don't have any TID numbers the inferior will
5967          understand.  Make sure to only send forms that do not specify
5968          a TID.  */
5969       append_resumption (p, endp, minus_one_ptid, step, siggnal);
5970     }
5971   else if (ptid_equal (ptid, minus_one_ptid) || ptid_is_pid (ptid))
5972     {
5973       /* Resume all threads (of all processes, or of a single
5974          process), with preference for INFERIOR_PTID.  This assumes
5975          inferior_ptid belongs to the set of all threads we are about
5976          to resume.  */
5977       if (step || siggnal != GDB_SIGNAL_0)
5978         {
5979           /* Step inferior_ptid, with or without signal.  */
5980           p = append_resumption (p, endp, inferior_ptid, step, siggnal);
5981         }
5982
5983       /* Also pass down any pending signaled resumption for other
5984          threads not the current.  */
5985       p = append_pending_thread_resumptions (p, endp, ptid);
5986
5987       /* And continue others without a signal.  */
5988       append_resumption (p, endp, ptid, /*step=*/ 0, GDB_SIGNAL_0);
5989     }
5990   else
5991     {
5992       /* Scheduler locking; resume only PTID.  */
5993       append_resumption (p, endp, ptid, step, siggnal);
5994     }
5995
5996   gdb_assert (strlen (rs->buf) < get_remote_packet_size ());
5997   putpkt (rs->buf);
5998
5999   if (target_is_non_stop_p ())
6000     {
6001       /* In non-stop, the stub replies to vCont with "OK".  The stop
6002          reply will be reported asynchronously by means of a `%Stop'
6003          notification.  */
6004       getpkt (&rs->buf, &rs->buf_size, 0);
6005       if (strcmp (rs->buf, "OK") != 0)
6006         error (_("Unexpected vCont reply in non-stop mode: %s"), rs->buf);
6007     }
6008
6009   return 1;
6010 }
6011
6012 /* Tell the remote machine to resume.  */
6013
6014 void
6015 remote_target::resume (ptid_t ptid, int step, enum gdb_signal siggnal)
6016 {
6017   struct remote_state *rs = get_remote_state ();
6018
6019   /* When connected in non-stop mode, the core resumes threads
6020      individually.  Resuming remote threads directly in target_resume
6021      would thus result in sending one packet per thread.  Instead, to
6022      minimize roundtrip latency, here we just store the resume
6023      request; the actual remote resumption will be done in
6024      target_commit_resume / remote_commit_resume, where we'll be able
6025      to do vCont action coalescing.  */
6026   if (target_is_non_stop_p () && ::execution_direction != EXEC_REVERSE)
6027     {
6028       remote_thread_info *remote_thr;
6029
6030       if (ptid_equal (minus_one_ptid, ptid) || ptid_is_pid (ptid))
6031         remote_thr = get_remote_thread_info (inferior_ptid);
6032       else
6033         remote_thr = get_remote_thread_info (ptid);
6034
6035       remote_thr->last_resume_step = step;
6036       remote_thr->last_resume_sig = siggnal;
6037       return;
6038     }
6039
6040   /* In all-stop, we can't mark REMOTE_ASYNC_GET_PENDING_EVENTS_TOKEN
6041      (explained in remote-notif.c:handle_notification) so
6042      remote_notif_process is not called.  We need find a place where
6043      it is safe to start a 'vNotif' sequence.  It is good to do it
6044      before resuming inferior, because inferior was stopped and no RSP
6045      traffic at that moment.  */
6046   if (!target_is_non_stop_p ())
6047     remote_notif_process (rs->notif_state, &notif_client_stop);
6048
6049   rs->last_resume_exec_dir = ::execution_direction;
6050
6051   /* Prefer vCont, and fallback to s/c/S/C, which use Hc.  */
6052   if (!remote_resume_with_vcont (ptid, step, siggnal))
6053     remote_resume_with_hc (this, ptid, step, siggnal);
6054
6055   /* We are about to start executing the inferior, let's register it
6056      with the event loop.  NOTE: this is the one place where all the
6057      execution commands end up.  We could alternatively do this in each
6058      of the execution commands in infcmd.c.  */
6059   /* FIXME: ezannoni 1999-09-28: We may need to move this out of here
6060      into infcmd.c in order to allow inferior function calls to work
6061      NOT asynchronously.  */
6062   if (target_can_async_p ())
6063     target_async (1);
6064
6065   /* We've just told the target to resume.  The remote server will
6066      wait for the inferior to stop, and then send a stop reply.  In
6067      the mean time, we can't start another command/query ourselves
6068      because the stub wouldn't be ready to process it.  This applies
6069      only to the base all-stop protocol, however.  In non-stop (which
6070      only supports vCont), the stub replies with an "OK", and is
6071      immediate able to process further serial input.  */
6072   if (!target_is_non_stop_p ())
6073     rs->waiting_for_stop_reply = 1;
6074 }
6075
6076 static void check_pending_events_prevent_wildcard_vcont
6077   (int *may_global_wildcard_vcont);
6078 static int is_pending_fork_parent_thread (struct thread_info *thread);
6079
6080 /* Private per-inferior info for target remote processes.  */
6081
6082 struct remote_inferior : public private_inferior
6083 {
6084   /* Whether we can send a wildcard vCont for this process.  */
6085   bool may_wildcard_vcont = true;
6086 };
6087
6088 /* Get the remote private inferior data associated to INF.  */
6089
6090 static remote_inferior *
6091 get_remote_inferior (inferior *inf)
6092 {
6093   if (inf->priv == NULL)
6094     inf->priv.reset (new remote_inferior);
6095
6096   return static_cast<remote_inferior *> (inf->priv.get ());
6097 }
6098
6099 /* Class used to track the construction of a vCont packet in the
6100    outgoing packet buffer.  This is used to send multiple vCont
6101    packets if we have more actions than would fit a single packet.  */
6102
6103 class vcont_builder
6104 {
6105 public:
6106   vcont_builder ()
6107   {
6108     restart ();
6109   }
6110
6111   void flush ();
6112   void push_action (ptid_t ptid, bool step, gdb_signal siggnal);
6113
6114 private:
6115   void restart ();
6116
6117   /* Pointer to the first action.  P points here if no action has been
6118      appended yet.  */
6119   char *m_first_action;
6120
6121   /* Where the next action will be appended.  */
6122   char *m_p;
6123
6124   /* The end of the buffer.  Must never write past this.  */
6125   char *m_endp;
6126 };
6127
6128 /* Prepare the outgoing buffer for a new vCont packet.  */
6129
6130 void
6131 vcont_builder::restart ()
6132 {
6133   struct remote_state *rs = get_remote_state ();
6134
6135   m_p = rs->buf;
6136   m_endp = rs->buf + get_remote_packet_size ();
6137   m_p += xsnprintf (m_p, m_endp - m_p, "vCont");
6138   m_first_action = m_p;
6139 }
6140
6141 /* If the vCont packet being built has any action, send it to the
6142    remote end.  */
6143
6144 void
6145 vcont_builder::flush ()
6146 {
6147   struct remote_state *rs;
6148
6149   if (m_p == m_first_action)
6150     return;
6151
6152   rs = get_remote_state ();
6153   putpkt (rs->buf);
6154   getpkt (&rs->buf, &rs->buf_size, 0);
6155   if (strcmp (rs->buf, "OK") != 0)
6156     error (_("Unexpected vCont reply in non-stop mode: %s"), rs->buf);
6157 }
6158
6159 /* The largest action is range-stepping, with its two addresses.  This
6160    is more than sufficient.  If a new, bigger action is created, it'll
6161    quickly trigger a failed assertion in append_resumption (and we'll
6162    just bump this).  */
6163 #define MAX_ACTION_SIZE 200
6164
6165 /* Append a new vCont action in the outgoing packet being built.  If
6166    the action doesn't fit the packet along with previous actions, push
6167    what we've got so far to the remote end and start over a new vCont
6168    packet (with the new action).  */
6169
6170 void
6171 vcont_builder::push_action (ptid_t ptid, bool step, gdb_signal siggnal)
6172 {
6173   char buf[MAX_ACTION_SIZE + 1];
6174
6175   char *endp = append_resumption (buf, buf + sizeof (buf),
6176                                   ptid, step, siggnal);
6177
6178   /* Check whether this new action would fit in the vCont packet along
6179      with previous actions.  If not, send what we've got so far and
6180      start a new vCont packet.  */
6181   size_t rsize = endp - buf;
6182   if (rsize > m_endp - m_p)
6183     {
6184       flush ();
6185       restart ();
6186
6187       /* Should now fit.  */
6188       gdb_assert (rsize <= m_endp - m_p);
6189     }
6190
6191   memcpy (m_p, buf, rsize);
6192   m_p += rsize;
6193   *m_p = '\0';
6194 }
6195
6196 /* to_commit_resume implementation.  */
6197
6198 void
6199 remote_target::commit_resume ()
6200 {
6201   struct inferior *inf;
6202   struct thread_info *tp;
6203   int any_process_wildcard;
6204   int may_global_wildcard_vcont;
6205
6206   /* If connected in all-stop mode, we'd send the remote resume
6207      request directly from remote_resume.  Likewise if
6208      reverse-debugging, as there are no defined vCont actions for
6209      reverse execution.  */
6210   if (!target_is_non_stop_p () || ::execution_direction == EXEC_REVERSE)
6211     return;
6212
6213   /* Try to send wildcard actions ("vCont;c" or "vCont;c:pPID.-1")
6214      instead of resuming all threads of each process individually.
6215      However, if any thread of a process must remain halted, we can't
6216      send wildcard resumes and must send one action per thread.
6217
6218      Care must be taken to not resume threads/processes the server
6219      side already told us are stopped, but the core doesn't know about
6220      yet, because the events are still in the vStopped notification
6221      queue.  For example:
6222
6223        #1 => vCont s:p1.1;c
6224        #2 <= OK
6225        #3 <= %Stopped T05 p1.1
6226        #4 => vStopped
6227        #5 <= T05 p1.2
6228        #6 => vStopped
6229        #7 <= OK
6230        #8 (infrun handles the stop for p1.1 and continues stepping)
6231        #9 => vCont s:p1.1;c
6232
6233      The last vCont above would resume thread p1.2 by mistake, because
6234      the server has no idea that the event for p1.2 had not been
6235      handled yet.
6236
6237      The server side must similarly ignore resume actions for the
6238      thread that has a pending %Stopped notification (and any other
6239      threads with events pending), until GDB acks the notification
6240      with vStopped.  Otherwise, e.g., the following case is
6241      mishandled:
6242
6243        #1 => g  (or any other packet)
6244        #2 <= [registers]
6245        #3 <= %Stopped T05 p1.2
6246        #4 => vCont s:p1.1;c
6247        #5 <= OK
6248
6249      Above, the server must not resume thread p1.2.  GDB can't know
6250      that p1.2 stopped until it acks the %Stopped notification, and
6251      since from GDB's perspective all threads should be running, it
6252      sends a "c" action.
6253
6254      Finally, special care must also be given to handling fork/vfork
6255      events.  A (v)fork event actually tells us that two processes
6256      stopped -- the parent and the child.  Until we follow the fork,
6257      we must not resume the child.  Therefore, if we have a pending
6258      fork follow, we must not send a global wildcard resume action
6259      (vCont;c).  We can still send process-wide wildcards though.  */
6260
6261   /* Start by assuming a global wildcard (vCont;c) is possible.  */
6262   may_global_wildcard_vcont = 1;
6263
6264   /* And assume every process is individually wildcard-able too.  */
6265   ALL_NON_EXITED_INFERIORS (inf)
6266     {
6267       remote_inferior *priv = get_remote_inferior (inf);
6268
6269       priv->may_wildcard_vcont = true;
6270     }
6271
6272   /* Check for any pending events (not reported or processed yet) and
6273      disable process and global wildcard resumes appropriately.  */
6274   check_pending_events_prevent_wildcard_vcont (&may_global_wildcard_vcont);
6275
6276   ALL_NON_EXITED_THREADS (tp)
6277     {
6278       /* If a thread of a process is not meant to be resumed, then we
6279          can't wildcard that process.  */
6280       if (!tp->executing)
6281         {
6282           get_remote_inferior (tp->inf)->may_wildcard_vcont = false;
6283
6284           /* And if we can't wildcard a process, we can't wildcard
6285              everything either.  */
6286           may_global_wildcard_vcont = 0;
6287           continue;
6288         }
6289
6290       /* If a thread is the parent of an unfollowed fork, then we
6291          can't do a global wildcard, as that would resume the fork
6292          child.  */
6293       if (is_pending_fork_parent_thread (tp))
6294         may_global_wildcard_vcont = 0;
6295     }
6296
6297   /* Now let's build the vCont packet(s).  Actions must be appended
6298      from narrower to wider scopes (thread -> process -> global).  If
6299      we end up with too many actions for a single packet vcont_builder
6300      flushes the current vCont packet to the remote side and starts a
6301      new one.  */
6302   struct vcont_builder vcont_builder;
6303
6304   /* Threads first.  */
6305   ALL_NON_EXITED_THREADS (tp)
6306     {
6307       remote_thread_info *remote_thr = get_remote_thread_info (tp);
6308
6309       if (!tp->executing || remote_thr->vcont_resumed)
6310         continue;
6311
6312       gdb_assert (!thread_is_in_step_over_chain (tp));
6313
6314       if (!remote_thr->last_resume_step
6315           && remote_thr->last_resume_sig == GDB_SIGNAL_0
6316           && get_remote_inferior (tp->inf)->may_wildcard_vcont)
6317         {
6318           /* We'll send a wildcard resume instead.  */
6319           remote_thr->vcont_resumed = 1;
6320           continue;
6321         }
6322
6323       vcont_builder.push_action (tp->ptid,
6324                                  remote_thr->last_resume_step,
6325                                  remote_thr->last_resume_sig);
6326       remote_thr->vcont_resumed = 1;
6327     }
6328
6329   /* Now check whether we can send any process-wide wildcard.  This is
6330      to avoid sending a global wildcard in the case nothing is
6331      supposed to be resumed.  */
6332   any_process_wildcard = 0;
6333
6334   ALL_NON_EXITED_INFERIORS (inf)
6335     {
6336       if (get_remote_inferior (inf)->may_wildcard_vcont)
6337         {
6338           any_process_wildcard = 1;
6339           break;
6340         }
6341     }
6342
6343   if (any_process_wildcard)
6344     {
6345       /* If all processes are wildcard-able, then send a single "c"
6346          action, otherwise, send an "all (-1) threads of process"
6347          continue action for each running process, if any.  */
6348       if (may_global_wildcard_vcont)
6349         {
6350           vcont_builder.push_action (minus_one_ptid,
6351                                      false, GDB_SIGNAL_0);
6352         }
6353       else
6354         {
6355           ALL_NON_EXITED_INFERIORS (inf)
6356             {
6357               if (get_remote_inferior (inf)->may_wildcard_vcont)
6358                 {
6359                   vcont_builder.push_action (pid_to_ptid (inf->pid),
6360                                              false, GDB_SIGNAL_0);
6361                 }
6362             }
6363         }
6364     }
6365
6366   vcont_builder.flush ();
6367 }
6368
6369 \f
6370
6371 /* Non-stop version of target_stop.  Uses `vCont;t' to stop a remote
6372    thread, all threads of a remote process, or all threads of all
6373    processes.  */
6374
6375 static void
6376 remote_stop_ns (ptid_t ptid)
6377 {
6378   struct remote_state *rs = get_remote_state ();
6379   char *p = rs->buf;
6380   char *endp = rs->buf + get_remote_packet_size ();
6381
6382   if (packet_support (PACKET_vCont) == PACKET_SUPPORT_UNKNOWN)
6383     remote_vcont_probe (rs);
6384
6385   if (!rs->supports_vCont.t)
6386     error (_("Remote server does not support stopping threads"));
6387
6388   if (ptid_equal (ptid, minus_one_ptid)
6389       || (!remote_multi_process_p (rs) && ptid_is_pid (ptid)))
6390     p += xsnprintf (p, endp - p, "vCont;t");
6391   else
6392     {
6393       ptid_t nptid;
6394
6395       p += xsnprintf (p, endp - p, "vCont;t:");
6396
6397       if (ptid_is_pid (ptid))
6398           /* All (-1) threads of process.  */
6399         nptid = ptid_build (ptid_get_pid (ptid), -1, 0);
6400       else
6401         {
6402           /* Small optimization: if we already have a stop reply for
6403              this thread, no use in telling the stub we want this
6404              stopped.  */
6405           if (peek_stop_reply (ptid))
6406             return;
6407
6408           nptid = ptid;
6409         }
6410
6411       write_ptid (p, endp, nptid);
6412     }
6413
6414   /* In non-stop, we get an immediate OK reply.  The stop reply will
6415      come in asynchronously by notification.  */
6416   putpkt (rs->buf);
6417   getpkt (&rs->buf, &rs->buf_size, 0);
6418   if (strcmp (rs->buf, "OK") != 0)
6419     error (_("Stopping %s failed: %s"), target_pid_to_str (ptid), rs->buf);
6420 }
6421
6422 /* All-stop version of target_interrupt.  Sends a break or a ^C to
6423    interrupt the remote target.  It is undefined which thread of which
6424    process reports the interrupt.  */
6425
6426 static void
6427 remote_interrupt_as (void)
6428 {
6429   struct remote_state *rs = get_remote_state ();
6430
6431   rs->ctrlc_pending_p = 1;
6432
6433   /* If the inferior is stopped already, but the core didn't know
6434      about it yet, just ignore the request.  The cached wait status
6435      will be collected in remote_wait.  */
6436   if (rs->cached_wait_status)
6437     return;
6438
6439   /* Send interrupt_sequence to remote target.  */
6440   send_interrupt_sequence ();
6441 }
6442
6443 /* Non-stop version of target_interrupt.  Uses `vCtrlC' to interrupt
6444    the remote target.  It is undefined which thread of which process
6445    reports the interrupt.  Throws an error if the packet is not
6446    supported by the server.  */
6447
6448 static void
6449 remote_interrupt_ns (void)
6450 {
6451   struct remote_state *rs = get_remote_state ();
6452   char *p = rs->buf;
6453   char *endp = rs->buf + get_remote_packet_size ();
6454
6455   xsnprintf (p, endp - p, "vCtrlC");
6456
6457   /* In non-stop, we get an immediate OK reply.  The stop reply will
6458      come in asynchronously by notification.  */
6459   putpkt (rs->buf);
6460   getpkt (&rs->buf, &rs->buf_size, 0);
6461
6462   switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_vCtrlC]))
6463     {
6464     case PACKET_OK:
6465       break;
6466     case PACKET_UNKNOWN:
6467       error (_("No support for interrupting the remote target."));
6468     case PACKET_ERROR:
6469       error (_("Interrupting target failed: %s"), rs->buf);
6470     }
6471 }
6472
6473 /* Implement the to_stop function for the remote targets.  */
6474
6475 void
6476 remote_target::stop (ptid_t ptid)
6477 {
6478   if (remote_debug)
6479     fprintf_unfiltered (gdb_stdlog, "remote_stop called\n");
6480
6481   if (target_is_non_stop_p ())
6482     remote_stop_ns (ptid);
6483   else
6484     {
6485       /* We don't currently have a way to transparently pause the
6486          remote target in all-stop mode.  Interrupt it instead.  */
6487       remote_interrupt_as ();
6488     }
6489 }
6490
6491 /* Implement the to_interrupt function for the remote targets.  */
6492
6493 void
6494 remote_target::interrupt ()
6495 {
6496   if (remote_debug)
6497     fprintf_unfiltered (gdb_stdlog, "remote_interrupt called\n");
6498
6499   if (target_is_non_stop_p ())
6500     remote_interrupt_ns ();
6501   else
6502     remote_interrupt_as ();
6503 }
6504
6505 /* Implement the to_pass_ctrlc function for the remote targets.  */
6506
6507 void
6508 remote_target::pass_ctrlc ()
6509 {
6510   struct remote_state *rs = get_remote_state ();
6511
6512   if (remote_debug)
6513     fprintf_unfiltered (gdb_stdlog, "remote_pass_ctrlc called\n");
6514
6515   /* If we're starting up, we're not fully synced yet.  Quit
6516      immediately.  */
6517   if (rs->starting_up)
6518     quit ();
6519   /* If ^C has already been sent once, offer to disconnect.  */
6520   else if (rs->ctrlc_pending_p)
6521     interrupt_query ();
6522   else
6523     target_interrupt ();
6524 }
6525
6526 /* Ask the user what to do when an interrupt is received.  */
6527
6528 static void
6529 interrupt_query (void)
6530 {
6531   struct remote_state *rs = get_remote_state ();
6532
6533   if (rs->waiting_for_stop_reply && rs->ctrlc_pending_p)
6534     {
6535       if (query (_("The target is not responding to interrupt requests.\n"
6536                    "Stop debugging it? ")))
6537         {
6538           remote_unpush_target ();
6539           throw_error (TARGET_CLOSE_ERROR, _("Disconnected from target."));
6540         }
6541     }
6542   else
6543     {
6544       if (query (_("Interrupted while waiting for the program.\n"
6545                    "Give up waiting? ")))
6546         quit ();
6547     }
6548 }
6549
6550 /* Enable/disable target terminal ownership.  Most targets can use
6551    terminal groups to control terminal ownership.  Remote targets are
6552    different in that explicit transfer of ownership to/from GDB/target
6553    is required.  */
6554
6555 void
6556 remote_target::terminal_inferior ()
6557 {
6558   /* NOTE: At this point we could also register our selves as the
6559      recipient of all input.  Any characters typed could then be
6560      passed on down to the target.  */
6561 }
6562
6563 void
6564 remote_target::terminal_ours ()
6565 {
6566 }
6567
6568 static void
6569 remote_console_output (char *msg)
6570 {
6571   char *p;
6572
6573   for (p = msg; p[0] && p[1]; p += 2)
6574     {
6575       char tb[2];
6576       char c = fromhex (p[0]) * 16 + fromhex (p[1]);
6577
6578       tb[0] = c;
6579       tb[1] = 0;
6580       fputs_unfiltered (tb, gdb_stdtarg);
6581     }
6582   gdb_flush (gdb_stdtarg);
6583 }
6584
6585 DEF_VEC_O(cached_reg_t);
6586
6587 typedef struct stop_reply
6588 {
6589   struct notif_event base;
6590
6591   /* The identifier of the thread about this event  */
6592   ptid_t ptid;
6593
6594   /* The remote state this event is associated with.  When the remote
6595      connection, represented by a remote_state object, is closed,
6596      all the associated stop_reply events should be released.  */
6597   struct remote_state *rs;
6598
6599   struct target_waitstatus ws;
6600
6601   /* The architecture associated with the expedited registers.  */
6602   gdbarch *arch;
6603
6604   /* Expedited registers.  This makes remote debugging a bit more
6605      efficient for those targets that provide critical registers as
6606      part of their normal status mechanism (as another roundtrip to
6607      fetch them is avoided).  */
6608   VEC(cached_reg_t) *regcache;
6609
6610   enum target_stop_reason stop_reason;
6611
6612   CORE_ADDR watch_data_address;
6613
6614   int core;
6615 } *stop_reply_p;
6616
6617 DECLARE_QUEUE_P (stop_reply_p);
6618 DEFINE_QUEUE_P (stop_reply_p);
6619 /* The list of already fetched and acknowledged stop events.  This
6620    queue is used for notification Stop, and other notifications
6621    don't need queue for their events, because the notification events
6622    of Stop can't be consumed immediately, so that events should be
6623    queued first, and be consumed by remote_wait_{ns,as} one per
6624    time.  Other notifications can consume their events immediately,
6625    so queue is not needed for them.  */
6626 static QUEUE (stop_reply_p) *stop_reply_queue;
6627
6628 static void
6629 stop_reply_xfree (struct stop_reply *r)
6630 {
6631   notif_event_xfree ((struct notif_event *) r);
6632 }
6633
6634 /* Return the length of the stop reply queue.  */
6635
6636 static int
6637 stop_reply_queue_length (void)
6638 {
6639   return QUEUE_length (stop_reply_p, stop_reply_queue);
6640 }
6641
6642 static void
6643 remote_notif_stop_parse (struct notif_client *self, char *buf,
6644                          struct notif_event *event)
6645 {
6646   remote_parse_stop_reply (buf, (struct stop_reply *) event);
6647 }
6648
6649 static void
6650 remote_notif_stop_ack (struct notif_client *self, char *buf,
6651                        struct notif_event *event)
6652 {
6653   struct stop_reply *stop_reply = (struct stop_reply *) event;
6654
6655   /* acknowledge */
6656   putpkt (self->ack_command);
6657
6658   if (stop_reply->ws.kind == TARGET_WAITKIND_IGNORE)
6659       /* We got an unknown stop reply.  */
6660       error (_("Unknown stop reply"));
6661
6662   push_stop_reply (stop_reply);
6663 }
6664
6665 static int
6666 remote_notif_stop_can_get_pending_events (struct notif_client *self)
6667 {
6668   /* We can't get pending events in remote_notif_process for
6669      notification stop, and we have to do this in remote_wait_ns
6670      instead.  If we fetch all queued events from stub, remote stub
6671      may exit and we have no chance to process them back in
6672      remote_wait_ns.  */
6673   mark_async_event_handler (remote_async_inferior_event_token);
6674   return 0;
6675 }
6676
6677 static void
6678 stop_reply_dtr (struct notif_event *event)
6679 {
6680   struct stop_reply *r = (struct stop_reply *) event;
6681   cached_reg_t *reg;
6682   int ix;
6683
6684   for (ix = 0;
6685        VEC_iterate (cached_reg_t, r->regcache, ix, reg);
6686        ix++)
6687     xfree (reg->data);
6688
6689   VEC_free (cached_reg_t, r->regcache);
6690 }
6691
6692 static struct notif_event *
6693 remote_notif_stop_alloc_reply (void)
6694 {
6695   /* We cast to a pointer to the "base class".  */
6696   struct notif_event *r = (struct notif_event *) XNEW (struct stop_reply);
6697
6698   r->dtr = stop_reply_dtr;
6699
6700   return r;
6701 }
6702
6703 /* A client of notification Stop.  */
6704
6705 struct notif_client notif_client_stop =
6706 {
6707   "Stop",
6708   "vStopped",
6709   remote_notif_stop_parse,
6710   remote_notif_stop_ack,
6711   remote_notif_stop_can_get_pending_events,
6712   remote_notif_stop_alloc_reply,
6713   REMOTE_NOTIF_STOP,
6714 };
6715
6716 /* A parameter to pass data in and out.  */
6717
6718 struct queue_iter_param
6719 {
6720   void *input;
6721   struct stop_reply *output;
6722 };
6723
6724 /* Determine if THREAD_PTID is a pending fork parent thread.  ARG contains
6725    the pid of the process that owns the threads we want to check, or
6726    -1 if we want to check all threads.  */
6727
6728 static int
6729 is_pending_fork_parent (struct target_waitstatus *ws, int event_pid,
6730                         ptid_t thread_ptid)
6731 {
6732   if (ws->kind == TARGET_WAITKIND_FORKED
6733       || ws->kind == TARGET_WAITKIND_VFORKED)
6734     {
6735       if (event_pid == -1 || event_pid == ptid_get_pid (thread_ptid))
6736         return 1;
6737     }
6738
6739   return 0;
6740 }
6741
6742 /* Return the thread's pending status used to determine whether the
6743    thread is a fork parent stopped at a fork event.  */
6744
6745 static struct target_waitstatus *
6746 thread_pending_fork_status (struct thread_info *thread)
6747 {
6748   if (thread->suspend.waitstatus_pending_p)
6749     return &thread->suspend.waitstatus;
6750   else
6751     return &thread->pending_follow;
6752 }
6753
6754 /* Determine if THREAD is a pending fork parent thread.  */
6755
6756 static int
6757 is_pending_fork_parent_thread (struct thread_info *thread)
6758 {
6759   struct target_waitstatus *ws = thread_pending_fork_status (thread);
6760   int pid = -1;
6761
6762   return is_pending_fork_parent (ws, pid, thread->ptid);
6763 }
6764
6765 /* Check whether EVENT is a fork event, and if it is, remove the
6766    fork child from the context list passed in DATA.  */
6767
6768 static int
6769 remove_child_of_pending_fork (QUEUE (stop_reply_p) *q,
6770                               QUEUE_ITER (stop_reply_p) *iter,
6771                               stop_reply_p event,
6772                               void *data)
6773 {
6774   struct queue_iter_param *param = (struct queue_iter_param *) data;
6775   struct threads_listing_context *context
6776     = (struct threads_listing_context *) param->input;
6777
6778   if (event->ws.kind == TARGET_WAITKIND_FORKED
6779       || event->ws.kind == TARGET_WAITKIND_VFORKED
6780       || event->ws.kind == TARGET_WAITKIND_THREAD_EXITED)
6781     context->remove_thread (event->ws.value.related_pid);
6782
6783   return 1;
6784 }
6785
6786 /* If CONTEXT contains any fork child threads that have not been
6787    reported yet, remove them from the CONTEXT list.  If such a
6788    thread exists it is because we are stopped at a fork catchpoint
6789    and have not yet called follow_fork, which will set up the
6790    host-side data structures for the new process.  */
6791
6792 static void
6793 remove_new_fork_children (struct threads_listing_context *context)
6794 {
6795   struct thread_info * thread;
6796   int pid = -1;
6797   struct notif_client *notif = &notif_client_stop;
6798   struct queue_iter_param param;
6799
6800   /* For any threads stopped at a fork event, remove the corresponding
6801      fork child threads from the CONTEXT list.  */
6802   ALL_NON_EXITED_THREADS (thread)
6803     {
6804       struct target_waitstatus *ws = thread_pending_fork_status (thread);
6805
6806       if (is_pending_fork_parent (ws, pid, thread->ptid))
6807         context->remove_thread (ws->value.related_pid);
6808     }
6809
6810   /* Check for any pending fork events (not reported or processed yet)
6811      in process PID and remove those fork child threads from the
6812      CONTEXT list as well.  */
6813   remote_notif_get_pending_events (notif);
6814   param.input = context;
6815   param.output = NULL;
6816   QUEUE_iterate (stop_reply_p, stop_reply_queue,
6817                  remove_child_of_pending_fork, &param);
6818 }
6819
6820 /* Check whether EVENT would prevent a global or process wildcard
6821    vCont action.  */
6822
6823 static int
6824 check_pending_event_prevents_wildcard_vcont_callback
6825   (QUEUE (stop_reply_p) *q,
6826    QUEUE_ITER (stop_reply_p) *iter,
6827    stop_reply_p event,
6828    void *data)
6829 {
6830   struct inferior *inf;
6831   int *may_global_wildcard_vcont = (int *) data;
6832
6833   if (event->ws.kind == TARGET_WAITKIND_NO_RESUMED
6834       || event->ws.kind == TARGET_WAITKIND_NO_HISTORY)
6835     return 1;
6836
6837   if (event->ws.kind == TARGET_WAITKIND_FORKED
6838       || event->ws.kind == TARGET_WAITKIND_VFORKED)
6839     *may_global_wildcard_vcont = 0;
6840
6841   inf = find_inferior_ptid (event->ptid);
6842
6843   /* This may be the first time we heard about this process.
6844      Regardless, we must not do a global wildcard resume, otherwise
6845      we'd resume this process too.  */
6846   *may_global_wildcard_vcont = 0;
6847   if (inf != NULL)
6848     get_remote_inferior (inf)->may_wildcard_vcont = false;
6849
6850   return 1;
6851 }
6852
6853 /* Check whether any event pending in the vStopped queue would prevent
6854    a global or process wildcard vCont action.  Clear
6855    *may_global_wildcard if we can't do a global wildcard (vCont;c),
6856    and clear the event inferior's may_wildcard_vcont flag if we can't
6857    do a process-wide wildcard resume (vCont;c:pPID.-1).  */
6858
6859 static void
6860 check_pending_events_prevent_wildcard_vcont (int *may_global_wildcard)
6861 {
6862   struct notif_client *notif = &notif_client_stop;
6863
6864   remote_notif_get_pending_events (notif);
6865   QUEUE_iterate (stop_reply_p, stop_reply_queue,
6866                  check_pending_event_prevents_wildcard_vcont_callback,
6867                  may_global_wildcard);
6868 }
6869
6870 /* Remove stop replies in the queue if its pid is equal to the given
6871    inferior's pid.  */
6872
6873 static int
6874 remove_stop_reply_for_inferior (QUEUE (stop_reply_p) *q,
6875                                 QUEUE_ITER (stop_reply_p) *iter,
6876                                 stop_reply_p event,
6877                                 void *data)
6878 {
6879   struct queue_iter_param *param = (struct queue_iter_param *) data;
6880   struct inferior *inf = (struct inferior *) param->input;
6881
6882   if (ptid_get_pid (event->ptid) == inf->pid)
6883     {
6884       stop_reply_xfree (event);
6885       QUEUE_remove_elem (stop_reply_p, q, iter);
6886     }
6887
6888   return 1;
6889 }
6890
6891 /* Discard all pending stop replies of inferior INF.  */
6892
6893 static void
6894 discard_pending_stop_replies (struct inferior *inf)
6895 {
6896   struct queue_iter_param param;
6897   struct stop_reply *reply;
6898   struct remote_state *rs = get_remote_state ();
6899   struct remote_notif_state *rns = rs->notif_state;
6900
6901   /* This function can be notified when an inferior exists.  When the
6902      target is not remote, the notification state is NULL.  */
6903   if (rs->remote_desc == NULL)
6904     return;
6905
6906   reply = (struct stop_reply *) rns->pending_event[notif_client_stop.id];
6907
6908   /* Discard the in-flight notification.  */
6909   if (reply != NULL && ptid_get_pid (reply->ptid) == inf->pid)
6910     {
6911       stop_reply_xfree (reply);
6912       rns->pending_event[notif_client_stop.id] = NULL;
6913     }
6914
6915   param.input = inf;
6916   param.output = NULL;
6917   /* Discard the stop replies we have already pulled with
6918      vStopped.  */
6919   QUEUE_iterate (stop_reply_p, stop_reply_queue,
6920                  remove_stop_reply_for_inferior, &param);
6921 }
6922
6923 /* If its remote state is equal to the given remote state,
6924    remove EVENT from the stop reply queue.  */
6925
6926 static int
6927 remove_stop_reply_of_remote_state (QUEUE (stop_reply_p) *q,
6928                                    QUEUE_ITER (stop_reply_p) *iter,
6929                                    stop_reply_p event,
6930                                    void *data)
6931 {
6932   struct queue_iter_param *param = (struct queue_iter_param *) data;
6933   struct remote_state *rs = (struct remote_state *) param->input;
6934
6935   if (event->rs == rs)
6936     {
6937       stop_reply_xfree (event);
6938       QUEUE_remove_elem (stop_reply_p, q, iter);
6939     }
6940
6941   return 1;
6942 }
6943
6944 /* Discard the stop replies for RS in stop_reply_queue.  */
6945
6946 static void
6947 discard_pending_stop_replies_in_queue (struct remote_state *rs)
6948 {
6949   struct queue_iter_param param;
6950
6951   param.input = rs;
6952   param.output = NULL;
6953   /* Discard the stop replies we have already pulled with
6954      vStopped.  */
6955   QUEUE_iterate (stop_reply_p, stop_reply_queue,
6956                  remove_stop_reply_of_remote_state, &param);
6957 }
6958
6959 /* A parameter to pass data in and out.  */
6960
6961 static int
6962 remote_notif_remove_once_on_match (QUEUE (stop_reply_p) *q,
6963                                    QUEUE_ITER (stop_reply_p) *iter,
6964                                    stop_reply_p event,
6965                                    void *data)
6966 {
6967   struct queue_iter_param *param = (struct queue_iter_param *) data;
6968   ptid_t *ptid = (ptid_t *) param->input;
6969
6970   if (ptid_match (event->ptid, *ptid))
6971     {
6972       param->output = event;
6973       QUEUE_remove_elem (stop_reply_p, q, iter);
6974       return 0;
6975     }
6976
6977   return 1;
6978 }
6979
6980 /* Remove the first reply in 'stop_reply_queue' which matches
6981    PTID.  */
6982
6983 static struct stop_reply *
6984 remote_notif_remove_queued_reply (ptid_t ptid)
6985 {
6986   struct queue_iter_param param;
6987
6988   param.input = &ptid;
6989   param.output = NULL;
6990
6991   QUEUE_iterate (stop_reply_p, stop_reply_queue,
6992                  remote_notif_remove_once_on_match, &param);
6993   if (notif_debug)
6994     fprintf_unfiltered (gdb_stdlog,
6995                         "notif: discard queued event: 'Stop' in %s\n",
6996                         target_pid_to_str (ptid));
6997
6998   return param.output;
6999 }
7000
7001 /* Look for a queued stop reply belonging to PTID.  If one is found,
7002    remove it from the queue, and return it.  Returns NULL if none is
7003    found.  If there are still queued events left to process, tell the
7004    event loop to get back to target_wait soon.  */
7005
7006 static struct stop_reply *
7007 queued_stop_reply (ptid_t ptid)
7008 {
7009   struct stop_reply *r = remote_notif_remove_queued_reply (ptid);
7010
7011   if (!QUEUE_is_empty (stop_reply_p, stop_reply_queue))
7012     /* There's still at least an event left.  */
7013     mark_async_event_handler (remote_async_inferior_event_token);
7014
7015   return r;
7016 }
7017
7018 /* Push a fully parsed stop reply in the stop reply queue.  Since we
7019    know that we now have at least one queued event left to pass to the
7020    core side, tell the event loop to get back to target_wait soon.  */
7021
7022 static void
7023 push_stop_reply (struct stop_reply *new_event)
7024 {
7025   QUEUE_enque (stop_reply_p, stop_reply_queue, new_event);
7026
7027   if (notif_debug)
7028     fprintf_unfiltered (gdb_stdlog,
7029                         "notif: push 'Stop' %s to queue %d\n",
7030                         target_pid_to_str (new_event->ptid),
7031                         QUEUE_length (stop_reply_p,
7032                                       stop_reply_queue));
7033
7034   mark_async_event_handler (remote_async_inferior_event_token);
7035 }
7036
7037 static int
7038 stop_reply_match_ptid_and_ws (QUEUE (stop_reply_p) *q,
7039                               QUEUE_ITER (stop_reply_p) *iter,
7040                               struct stop_reply *event,
7041                               void *data)
7042 {
7043   ptid_t *ptid = (ptid_t *) data;
7044
7045   return !(ptid_equal (*ptid, event->ptid)
7046            && event->ws.kind == TARGET_WAITKIND_STOPPED);
7047 }
7048
7049 /* Returns true if we have a stop reply for PTID.  */
7050
7051 static int
7052 peek_stop_reply (ptid_t ptid)
7053 {
7054   return !QUEUE_iterate (stop_reply_p, stop_reply_queue,
7055                          stop_reply_match_ptid_and_ws, &ptid);
7056 }
7057
7058 /* Helper for remote_parse_stop_reply.  Return nonzero if the substring
7059    starting with P and ending with PEND matches PREFIX.  */
7060
7061 static int
7062 strprefix (const char *p, const char *pend, const char *prefix)
7063 {
7064   for ( ; p < pend; p++, prefix++)
7065     if (*p != *prefix)
7066       return 0;
7067   return *prefix == '\0';
7068 }
7069
7070 /* Parse the stop reply in BUF.  Either the function succeeds, and the
7071    result is stored in EVENT, or throws an error.  */
7072
7073 static void
7074 remote_parse_stop_reply (char *buf, struct stop_reply *event)
7075 {
7076   remote_arch_state *rsa = NULL;
7077   ULONGEST addr;
7078   const char *p;
7079   int skipregs = 0;
7080
7081   event->ptid = null_ptid;
7082   event->rs = get_remote_state ();
7083   event->ws.kind = TARGET_WAITKIND_IGNORE;
7084   event->ws.value.integer = 0;
7085   event->stop_reason = TARGET_STOPPED_BY_NO_REASON;
7086   event->regcache = NULL;
7087   event->core = -1;
7088
7089   switch (buf[0])
7090     {
7091     case 'T':           /* Status with PC, SP, FP, ...  */
7092       /* Expedited reply, containing Signal, {regno, reg} repeat.  */
7093       /*  format is:  'Tssn...:r...;n...:r...;n...:r...;#cc', where
7094             ss = signal number
7095             n... = register number
7096             r... = register contents
7097       */
7098
7099       p = &buf[3];      /* after Txx */
7100       while (*p)
7101         {
7102           const char *p1;
7103           int fieldsize;
7104
7105           p1 = strchr (p, ':');
7106           if (p1 == NULL)
7107             error (_("Malformed packet(a) (missing colon): %s\n\
7108 Packet: '%s'\n"),
7109                    p, buf);
7110           if (p == p1)
7111             error (_("Malformed packet(a) (missing register number): %s\n\
7112 Packet: '%s'\n"),
7113                    p, buf);
7114
7115           /* Some "registers" are actually extended stop information.
7116              Note if you're adding a new entry here: GDB 7.9 and
7117              earlier assume that all register "numbers" that start
7118              with an hex digit are real register numbers.  Make sure
7119              the server only sends such a packet if it knows the
7120              client understands it.  */
7121
7122           if (strprefix (p, p1, "thread"))
7123             event->ptid = read_ptid (++p1, &p);
7124           else if (strprefix (p, p1, "syscall_entry"))
7125             {
7126               ULONGEST sysno;
7127
7128               event->ws.kind = TARGET_WAITKIND_SYSCALL_ENTRY;
7129               p = unpack_varlen_hex (++p1, &sysno);
7130               event->ws.value.syscall_number = (int) sysno;
7131             }
7132           else if (strprefix (p, p1, "syscall_return"))
7133             {
7134               ULONGEST sysno;
7135
7136               event->ws.kind = TARGET_WAITKIND_SYSCALL_RETURN;
7137               p = unpack_varlen_hex (++p1, &sysno);
7138               event->ws.value.syscall_number = (int) sysno;
7139             }
7140           else if (strprefix (p, p1, "watch")
7141                    || strprefix (p, p1, "rwatch")
7142                    || strprefix (p, p1, "awatch"))
7143             {
7144               event->stop_reason = TARGET_STOPPED_BY_WATCHPOINT;
7145               p = unpack_varlen_hex (++p1, &addr);
7146               event->watch_data_address = (CORE_ADDR) addr;
7147             }
7148           else if (strprefix (p, p1, "swbreak"))
7149             {
7150               event->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT;
7151
7152               /* Make sure the stub doesn't forget to indicate support
7153                  with qSupported.  */
7154               if (packet_support (PACKET_swbreak_feature) != PACKET_ENABLE)
7155                 error (_("Unexpected swbreak stop reason"));
7156
7157               /* The value part is documented as "must be empty",
7158                  though we ignore it, in case we ever decide to make
7159                  use of it in a backward compatible way.  */
7160               p = strchrnul (p1 + 1, ';');
7161             }
7162           else if (strprefix (p, p1, "hwbreak"))
7163             {
7164               event->stop_reason = TARGET_STOPPED_BY_HW_BREAKPOINT;
7165
7166               /* Make sure the stub doesn't forget to indicate support
7167                  with qSupported.  */
7168               if (packet_support (PACKET_hwbreak_feature) != PACKET_ENABLE)
7169                 error (_("Unexpected hwbreak stop reason"));
7170
7171               /* See above.  */
7172               p = strchrnul (p1 + 1, ';');
7173             }
7174           else if (strprefix (p, p1, "library"))
7175             {
7176               event->ws.kind = TARGET_WAITKIND_LOADED;
7177               p = strchrnul (p1 + 1, ';');
7178             }
7179           else if (strprefix (p, p1, "replaylog"))
7180             {
7181               event->ws.kind = TARGET_WAITKIND_NO_HISTORY;
7182               /* p1 will indicate "begin" or "end", but it makes
7183                  no difference for now, so ignore it.  */
7184               p = strchrnul (p1 + 1, ';');
7185             }
7186           else if (strprefix (p, p1, "core"))
7187             {
7188               ULONGEST c;
7189
7190               p = unpack_varlen_hex (++p1, &c);
7191               event->core = c;
7192             }
7193           else if (strprefix (p, p1, "fork"))
7194             {
7195               event->ws.value.related_pid = read_ptid (++p1, &p);
7196               event->ws.kind = TARGET_WAITKIND_FORKED;
7197             }
7198           else if (strprefix (p, p1, "vfork"))
7199             {
7200               event->ws.value.related_pid = read_ptid (++p1, &p);
7201               event->ws.kind = TARGET_WAITKIND_VFORKED;
7202             }
7203           else if (strprefix (p, p1, "vforkdone"))
7204             {
7205               event->ws.kind = TARGET_WAITKIND_VFORK_DONE;
7206               p = strchrnul (p1 + 1, ';');
7207             }
7208           else if (strprefix (p, p1, "exec"))
7209             {
7210               ULONGEST ignored;
7211               char pathname[PATH_MAX];
7212               int pathlen;
7213
7214               /* Determine the length of the execd pathname.  */
7215               p = unpack_varlen_hex (++p1, &ignored);
7216               pathlen = (p - p1) / 2;
7217
7218               /* Save the pathname for event reporting and for
7219                  the next run command.  */
7220               hex2bin (p1, (gdb_byte *) pathname, pathlen);
7221               pathname[pathlen] = '\0';
7222
7223               /* This is freed during event handling.  */
7224               event->ws.value.execd_pathname = xstrdup (pathname);
7225               event->ws.kind = TARGET_WAITKIND_EXECD;
7226
7227               /* Skip the registers included in this packet, since
7228                  they may be for an architecture different from the
7229                  one used by the original program.  */
7230               skipregs = 1;
7231             }
7232           else if (strprefix (p, p1, "create"))
7233             {
7234               event->ws.kind = TARGET_WAITKIND_THREAD_CREATED;
7235               p = strchrnul (p1 + 1, ';');
7236             }
7237           else
7238             {
7239               ULONGEST pnum;
7240               const char *p_temp;
7241
7242               if (skipregs)
7243                 {
7244                   p = strchrnul (p1 + 1, ';');
7245                   p++;
7246                   continue;
7247                 }
7248
7249               /* Maybe a real ``P'' register number.  */
7250               p_temp = unpack_varlen_hex (p, &pnum);
7251               /* If the first invalid character is the colon, we got a
7252                  register number.  Otherwise, it's an unknown stop
7253                  reason.  */
7254               if (p_temp == p1)
7255                 {
7256                   /* If we haven't parsed the event's thread yet, find
7257                      it now, in order to find the architecture of the
7258                      reported expedited registers.  */
7259                   if (event->ptid == null_ptid)
7260                     {
7261                       const char *thr = strstr (p1 + 1, ";thread:");
7262                       if (thr != NULL)
7263                         event->ptid = read_ptid (thr + strlen (";thread:"),
7264                                                  NULL);
7265                       else
7266                         {
7267                           /* Either the current thread hasn't changed,
7268                              or the inferior is not multi-threaded.
7269                              The event must be for the thread we last
7270                              set as (or learned as being) current.  */
7271                           event->ptid = event->rs->general_thread;
7272                         }
7273                     }
7274
7275                   if (rsa == NULL)
7276                     {
7277                       inferior *inf = (event->ptid == null_ptid
7278                                        ? NULL
7279                                        : find_inferior_ptid (event->ptid));
7280                       /* If this is the first time we learn anything
7281                          about this process, skip the registers
7282                          included in this packet, since we don't yet
7283                          know which architecture to use to parse them.
7284                          We'll determine the architecture later when
7285                          we process the stop reply and retrieve the
7286                          target description, via
7287                          remote_notice_new_inferior ->
7288                          post_create_inferior.  */
7289                       if (inf == NULL)
7290                         {
7291                           p = strchrnul (p1 + 1, ';');
7292                           p++;
7293                           continue;
7294                         }
7295
7296                       event->arch = inf->gdbarch;
7297                       rsa = event->rs->get_remote_arch_state (event->arch);
7298                     }
7299
7300                   packet_reg *reg
7301                     = packet_reg_from_pnum (event->arch, rsa, pnum);
7302                   cached_reg_t cached_reg;
7303
7304                   if (reg == NULL)
7305                     error (_("Remote sent bad register number %s: %s\n\
7306 Packet: '%s'\n"),
7307                            hex_string (pnum), p, buf);
7308
7309                   cached_reg.num = reg->regnum;
7310                   cached_reg.data = (gdb_byte *)
7311                     xmalloc (register_size (event->arch, reg->regnum));
7312
7313                   p = p1 + 1;
7314                   fieldsize = hex2bin (p, cached_reg.data,
7315                                        register_size (event->arch, reg->regnum));
7316                   p += 2 * fieldsize;
7317                   if (fieldsize < register_size (event->arch, reg->regnum))
7318                     warning (_("Remote reply is too short: %s"), buf);
7319
7320                   VEC_safe_push (cached_reg_t, event->regcache, &cached_reg);
7321                 }
7322               else
7323                 {
7324                   /* Not a number.  Silently skip unknown optional
7325                      info.  */
7326                   p = strchrnul (p1 + 1, ';');
7327                 }
7328             }
7329
7330           if (*p != ';')
7331             error (_("Remote register badly formatted: %s\nhere: %s"),
7332                    buf, p);
7333           ++p;
7334         }
7335
7336       if (event->ws.kind != TARGET_WAITKIND_IGNORE)
7337         break;
7338
7339       /* fall through */
7340     case 'S':           /* Old style status, just signal only.  */
7341       {
7342         int sig;
7343
7344         event->ws.kind = TARGET_WAITKIND_STOPPED;
7345         sig = (fromhex (buf[1]) << 4) + fromhex (buf[2]);
7346         if (GDB_SIGNAL_FIRST <= sig && sig < GDB_SIGNAL_LAST)
7347           event->ws.value.sig = (enum gdb_signal) sig;
7348         else
7349           event->ws.value.sig = GDB_SIGNAL_UNKNOWN;
7350       }
7351       break;
7352     case 'w':           /* Thread exited.  */
7353       {
7354         const char *p;
7355         ULONGEST value;
7356
7357         event->ws.kind = TARGET_WAITKIND_THREAD_EXITED;
7358         p = unpack_varlen_hex (&buf[1], &value);
7359         event->ws.value.integer = value;
7360         if (*p != ';')
7361           error (_("stop reply packet badly formatted: %s"), buf);
7362         event->ptid = read_ptid (++p, NULL);
7363         break;
7364       }
7365     case 'W':           /* Target exited.  */
7366     case 'X':
7367       {
7368         const char *p;
7369         int pid;
7370         ULONGEST value;
7371
7372         /* GDB used to accept only 2 hex chars here.  Stubs should
7373            only send more if they detect GDB supports multi-process
7374            support.  */
7375         p = unpack_varlen_hex (&buf[1], &value);
7376
7377         if (buf[0] == 'W')
7378           {
7379             /* The remote process exited.  */
7380             event->ws.kind = TARGET_WAITKIND_EXITED;
7381             event->ws.value.integer = value;
7382           }
7383         else
7384           {
7385             /* The remote process exited with a signal.  */
7386             event->ws.kind = TARGET_WAITKIND_SIGNALLED;
7387             if (GDB_SIGNAL_FIRST <= value && value < GDB_SIGNAL_LAST)
7388               event->ws.value.sig = (enum gdb_signal) value;
7389             else
7390               event->ws.value.sig = GDB_SIGNAL_UNKNOWN;
7391           }
7392
7393         /* If no process is specified, assume inferior_ptid.  */
7394         pid = ptid_get_pid (inferior_ptid);
7395         if (*p == '\0')
7396           ;
7397         else if (*p == ';')
7398           {
7399             p++;
7400
7401             if (*p == '\0')
7402               ;
7403             else if (startswith (p, "process:"))
7404               {
7405                 ULONGEST upid;
7406
7407                 p += sizeof ("process:") - 1;
7408                 unpack_varlen_hex (p, &upid);
7409                 pid = upid;
7410               }
7411             else
7412               error (_("unknown stop reply packet: %s"), buf);
7413           }
7414         else
7415           error (_("unknown stop reply packet: %s"), buf);
7416         event->ptid = pid_to_ptid (pid);
7417       }
7418       break;
7419     case 'N':
7420       event->ws.kind = TARGET_WAITKIND_NO_RESUMED;
7421       event->ptid = minus_one_ptid;
7422       break;
7423     }
7424
7425   if (target_is_non_stop_p () && ptid_equal (event->ptid, null_ptid))
7426     error (_("No process or thread specified in stop reply: %s"), buf);
7427 }
7428
7429 /* When the stub wants to tell GDB about a new notification reply, it
7430    sends a notification (%Stop, for example).  Those can come it at
7431    any time, hence, we have to make sure that any pending
7432    putpkt/getpkt sequence we're making is finished, before querying
7433    the stub for more events with the corresponding ack command
7434    (vStopped, for example).  E.g., if we started a vStopped sequence
7435    immediately upon receiving the notification, something like this
7436    could happen:
7437
7438     1.1) --> Hg 1
7439     1.2) <-- OK
7440     1.3) --> g
7441     1.4) <-- %Stop
7442     1.5) --> vStopped
7443     1.6) <-- (registers reply to step #1.3)
7444
7445    Obviously, the reply in step #1.6 would be unexpected to a vStopped
7446    query.
7447
7448    To solve this, whenever we parse a %Stop notification successfully,
7449    we mark the REMOTE_ASYNC_GET_PENDING_EVENTS_TOKEN, and carry on
7450    doing whatever we were doing:
7451
7452     2.1) --> Hg 1
7453     2.2) <-- OK
7454     2.3) --> g
7455     2.4) <-- %Stop
7456       <GDB marks the REMOTE_ASYNC_GET_PENDING_EVENTS_TOKEN>
7457     2.5) <-- (registers reply to step #2.3)
7458
7459    Eventualy after step #2.5, we return to the event loop, which
7460    notices there's an event on the
7461    REMOTE_ASYNC_GET_PENDING_EVENTS_TOKEN event and calls the
7462    associated callback --- the function below.  At this point, we're
7463    always safe to start a vStopped sequence. :
7464
7465     2.6) --> vStopped
7466     2.7) <-- T05 thread:2
7467     2.8) --> vStopped
7468     2.9) --> OK
7469 */
7470
7471 void
7472 remote_notif_get_pending_events (struct notif_client *nc)
7473 {
7474   struct remote_state *rs = get_remote_state ();
7475
7476   if (rs->notif_state->pending_event[nc->id] != NULL)
7477     {
7478       if (notif_debug)
7479         fprintf_unfiltered (gdb_stdlog,
7480                             "notif: process: '%s' ack pending event\n",
7481                             nc->name);
7482
7483       /* acknowledge */
7484       nc->ack (nc, rs->buf, rs->notif_state->pending_event[nc->id]);
7485       rs->notif_state->pending_event[nc->id] = NULL;
7486
7487       while (1)
7488         {
7489           getpkt (&rs->buf, &rs->buf_size, 0);
7490           if (strcmp (rs->buf, "OK") == 0)
7491             break;
7492           else
7493             remote_notif_ack (nc, rs->buf);
7494         }
7495     }
7496   else
7497     {
7498       if (notif_debug)
7499         fprintf_unfiltered (gdb_stdlog,
7500                             "notif: process: '%s' no pending reply\n",
7501                             nc->name);
7502     }
7503 }
7504
7505 /* Called when it is decided that STOP_REPLY holds the info of the
7506    event that is to be returned to the core.  This function always
7507    destroys STOP_REPLY.  */
7508
7509 static ptid_t
7510 process_stop_reply (struct stop_reply *stop_reply,
7511                     struct target_waitstatus *status)
7512 {
7513   ptid_t ptid;
7514
7515   *status = stop_reply->ws;
7516   ptid = stop_reply->ptid;
7517
7518   /* If no thread/process was reported by the stub, assume the current
7519      inferior.  */
7520   if (ptid_equal (ptid, null_ptid))
7521     ptid = inferior_ptid;
7522
7523   if (status->kind != TARGET_WAITKIND_EXITED
7524       && status->kind != TARGET_WAITKIND_SIGNALLED
7525       && status->kind != TARGET_WAITKIND_NO_RESUMED)
7526     {
7527       /* Expedited registers.  */
7528       if (stop_reply->regcache)
7529         {
7530           struct regcache *regcache
7531             = get_thread_arch_regcache (ptid, stop_reply->arch);
7532           cached_reg_t *reg;
7533           int ix;
7534
7535           for (ix = 0;
7536                VEC_iterate (cached_reg_t, stop_reply->regcache, ix, reg);
7537                ix++)
7538           {
7539             regcache_raw_supply (regcache, reg->num, reg->data);
7540             xfree (reg->data);
7541           }
7542
7543           VEC_free (cached_reg_t, stop_reply->regcache);
7544         }
7545
7546       remote_notice_new_inferior (ptid, 0);
7547       remote_thread_info *remote_thr = get_remote_thread_info (ptid);
7548       remote_thr->core = stop_reply->core;
7549       remote_thr->stop_reason = stop_reply->stop_reason;
7550       remote_thr->watch_data_address = stop_reply->watch_data_address;
7551       remote_thr->vcont_resumed = 0;
7552     }
7553
7554   stop_reply_xfree (stop_reply);
7555   return ptid;
7556 }
7557
7558 /* The non-stop mode version of target_wait.  */
7559
7560 static ptid_t
7561 remote_wait_ns (ptid_t ptid, struct target_waitstatus *status, int options)
7562 {
7563   struct remote_state *rs = get_remote_state ();
7564   struct stop_reply *stop_reply;
7565   int ret;
7566   int is_notif = 0;
7567
7568   /* If in non-stop mode, get out of getpkt even if a
7569      notification is received.  */
7570
7571   ret = getpkt_or_notif_sane (&rs->buf, &rs->buf_size,
7572                               0 /* forever */, &is_notif);
7573   while (1)
7574     {
7575       if (ret != -1 && !is_notif)
7576         switch (rs->buf[0])
7577           {
7578           case 'E':             /* Error of some sort.  */
7579             /* We're out of sync with the target now.  Did it continue
7580                or not?  We can't tell which thread it was in non-stop,
7581                so just ignore this.  */
7582             warning (_("Remote failure reply: %s"), rs->buf);
7583             break;
7584           case 'O':             /* Console output.  */
7585             remote_console_output (rs->buf + 1);
7586             break;
7587           default:
7588             warning (_("Invalid remote reply: %s"), rs->buf);
7589             break;
7590           }
7591
7592       /* Acknowledge a pending stop reply that may have arrived in the
7593          mean time.  */
7594       if (rs->notif_state->pending_event[notif_client_stop.id] != NULL)
7595         remote_notif_get_pending_events (&notif_client_stop);
7596
7597       /* If indeed we noticed a stop reply, we're done.  */
7598       stop_reply = queued_stop_reply (ptid);
7599       if (stop_reply != NULL)
7600         return process_stop_reply (stop_reply, status);
7601
7602       /* Still no event.  If we're just polling for an event, then
7603          return to the event loop.  */
7604       if (options & TARGET_WNOHANG)
7605         {
7606           status->kind = TARGET_WAITKIND_IGNORE;
7607           return minus_one_ptid;
7608         }
7609
7610       /* Otherwise do a blocking wait.  */
7611       ret = getpkt_or_notif_sane (&rs->buf, &rs->buf_size,
7612                                   1 /* forever */, &is_notif);
7613     }
7614 }
7615
7616 /* Wait until the remote machine stops, then return, storing status in
7617    STATUS just as `wait' would.  */
7618
7619 static ptid_t
7620 remote_wait_as (ptid_t ptid, struct target_waitstatus *status, int options)
7621 {
7622   struct remote_state *rs = get_remote_state ();
7623   ptid_t event_ptid = null_ptid;
7624   char *buf;
7625   struct stop_reply *stop_reply;
7626
7627  again:
7628
7629   status->kind = TARGET_WAITKIND_IGNORE;
7630   status->value.integer = 0;
7631
7632   stop_reply = queued_stop_reply (ptid);
7633   if (stop_reply != NULL)
7634     return process_stop_reply (stop_reply, status);
7635
7636   if (rs->cached_wait_status)
7637     /* Use the cached wait status, but only once.  */
7638     rs->cached_wait_status = 0;
7639   else
7640     {
7641       int ret;
7642       int is_notif;
7643       int forever = ((options & TARGET_WNOHANG) == 0
7644                      && wait_forever_enabled_p);
7645
7646       if (!rs->waiting_for_stop_reply)
7647         {
7648           status->kind = TARGET_WAITKIND_NO_RESUMED;
7649           return minus_one_ptid;
7650         }
7651
7652       /* FIXME: cagney/1999-09-27: If we're in async mode we should
7653          _never_ wait for ever -> test on target_is_async_p().
7654          However, before we do that we need to ensure that the caller
7655          knows how to take the target into/out of async mode.  */
7656       ret = getpkt_or_notif_sane (&rs->buf, &rs->buf_size,
7657                                   forever, &is_notif);
7658
7659       /* GDB gets a notification.  Return to core as this event is
7660          not interesting.  */
7661       if (ret != -1 && is_notif)
7662         return minus_one_ptid;
7663
7664       if (ret == -1 && (options & TARGET_WNOHANG) != 0)
7665         return minus_one_ptid;
7666     }
7667
7668   buf = rs->buf;
7669
7670   /* Assume that the target has acknowledged Ctrl-C unless we receive
7671      an 'F' or 'O' packet.  */
7672   if (buf[0] != 'F' && buf[0] != 'O')
7673     rs->ctrlc_pending_p = 0;
7674
7675   switch (buf[0])
7676     {
7677     case 'E':           /* Error of some sort.  */
7678       /* We're out of sync with the target now.  Did it continue or
7679          not?  Not is more likely, so report a stop.  */
7680       rs->waiting_for_stop_reply = 0;
7681
7682       warning (_("Remote failure reply: %s"), buf);
7683       status->kind = TARGET_WAITKIND_STOPPED;
7684       status->value.sig = GDB_SIGNAL_0;
7685       break;
7686     case 'F':           /* File-I/O request.  */
7687       /* GDB may access the inferior memory while handling the File-I/O
7688          request, but we don't want GDB accessing memory while waiting
7689          for a stop reply.  See the comments in putpkt_binary.  Set
7690          waiting_for_stop_reply to 0 temporarily.  */
7691       rs->waiting_for_stop_reply = 0;
7692       remote_fileio_request (buf, rs->ctrlc_pending_p);
7693       rs->ctrlc_pending_p = 0;
7694       /* GDB handled the File-I/O request, and the target is running
7695          again.  Keep waiting for events.  */
7696       rs->waiting_for_stop_reply = 1;
7697       break;
7698     case 'N': case 'T': case 'S': case 'X': case 'W':
7699       {
7700         struct stop_reply *stop_reply;
7701
7702         /* There is a stop reply to handle.  */
7703         rs->waiting_for_stop_reply = 0;
7704
7705         stop_reply
7706           = (struct stop_reply *) remote_notif_parse (&notif_client_stop,
7707                                                       rs->buf);
7708
7709         event_ptid = process_stop_reply (stop_reply, status);
7710         break;
7711       }
7712     case 'O':           /* Console output.  */
7713       remote_console_output (buf + 1);
7714       break;
7715     case '\0':
7716       if (rs->last_sent_signal != GDB_SIGNAL_0)
7717         {
7718           /* Zero length reply means that we tried 'S' or 'C' and the
7719              remote system doesn't support it.  */
7720           target_terminal::ours_for_output ();
7721           printf_filtered
7722             ("Can't send signals to this remote system.  %s not sent.\n",
7723              gdb_signal_to_name (rs->last_sent_signal));
7724           rs->last_sent_signal = GDB_SIGNAL_0;
7725           target_terminal::inferior ();
7726
7727           strcpy (buf, rs->last_sent_step ? "s" : "c");
7728           putpkt (buf);
7729           break;
7730         }
7731       /* fallthrough */
7732     default:
7733       warning (_("Invalid remote reply: %s"), buf);
7734       break;
7735     }
7736
7737   if (status->kind == TARGET_WAITKIND_NO_RESUMED)
7738     return minus_one_ptid;
7739   else if (status->kind == TARGET_WAITKIND_IGNORE)
7740     {
7741       /* Nothing interesting happened.  If we're doing a non-blocking
7742          poll, we're done.  Otherwise, go back to waiting.  */
7743       if (options & TARGET_WNOHANG)
7744         return minus_one_ptid;
7745       else
7746         goto again;
7747     }
7748   else if (status->kind != TARGET_WAITKIND_EXITED
7749            && status->kind != TARGET_WAITKIND_SIGNALLED)
7750     {
7751       if (!ptid_equal (event_ptid, null_ptid))
7752         record_currthread (rs, event_ptid);
7753       else
7754         event_ptid = inferior_ptid;
7755     }
7756   else
7757     /* A process exit.  Invalidate our notion of current thread.  */
7758     record_currthread (rs, minus_one_ptid);
7759
7760   return event_ptid;
7761 }
7762
7763 /* Wait until the remote machine stops, then return, storing status in
7764    STATUS just as `wait' would.  */
7765
7766 ptid_t
7767 remote_target::wait (ptid_t ptid, struct target_waitstatus *status, int options)
7768 {
7769   ptid_t event_ptid;
7770
7771   if (target_is_non_stop_p ())
7772     event_ptid = remote_wait_ns (ptid, status, options);
7773   else
7774     event_ptid = remote_wait_as (ptid, status, options);
7775
7776   if (target_is_async_p ())
7777     {
7778       /* If there are are events left in the queue tell the event loop
7779          to return here.  */
7780       if (!QUEUE_is_empty (stop_reply_p, stop_reply_queue))
7781         mark_async_event_handler (remote_async_inferior_event_token);
7782     }
7783
7784   return event_ptid;
7785 }
7786
7787 /* Fetch a single register using a 'p' packet.  */
7788
7789 static int
7790 fetch_register_using_p (struct regcache *regcache, struct packet_reg *reg)
7791 {
7792   struct gdbarch *gdbarch = regcache->arch ();
7793   struct remote_state *rs = get_remote_state ();
7794   char *buf, *p;
7795   gdb_byte *regp = (gdb_byte *) alloca (register_size (gdbarch, reg->regnum));
7796   int i;
7797
7798   if (packet_support (PACKET_p) == PACKET_DISABLE)
7799     return 0;
7800
7801   if (reg->pnum == -1)
7802     return 0;
7803
7804   p = rs->buf;
7805   *p++ = 'p';
7806   p += hexnumstr (p, reg->pnum);
7807   *p++ = '\0';
7808   putpkt (rs->buf);
7809   getpkt (&rs->buf, &rs->buf_size, 0);
7810
7811   buf = rs->buf;
7812
7813   switch (packet_ok (buf, &remote_protocol_packets[PACKET_p]))
7814     {
7815     case PACKET_OK:
7816       break;
7817     case PACKET_UNKNOWN:
7818       return 0;
7819     case PACKET_ERROR:
7820       error (_("Could not fetch register \"%s\"; remote failure reply '%s'"),
7821              gdbarch_register_name (regcache->arch (), 
7822                                     reg->regnum), 
7823              buf);
7824     }
7825
7826   /* If this register is unfetchable, tell the regcache.  */
7827   if (buf[0] == 'x')
7828     {
7829       regcache_raw_supply (regcache, reg->regnum, NULL);
7830       return 1;
7831     }
7832
7833   /* Otherwise, parse and supply the value.  */
7834   p = buf;
7835   i = 0;
7836   while (p[0] != 0)
7837     {
7838       if (p[1] == 0)
7839         error (_("fetch_register_using_p: early buf termination"));
7840
7841       regp[i++] = fromhex (p[0]) * 16 + fromhex (p[1]);
7842       p += 2;
7843     }
7844   regcache_raw_supply (regcache, reg->regnum, regp);
7845   return 1;
7846 }
7847
7848 /* Fetch the registers included in the target's 'g' packet.  */
7849
7850 static int
7851 send_g_packet (void)
7852 {
7853   struct remote_state *rs = get_remote_state ();
7854   int buf_len;
7855
7856   xsnprintf (rs->buf, get_remote_packet_size (), "g");
7857   putpkt (rs->buf);
7858   getpkt (&rs->buf, &rs->buf_size, 0);
7859   if (packet_check_result (rs->buf) == PACKET_ERROR)
7860     error (_("Could not read registers; remote failure reply '%s'"),
7861            rs->buf);
7862
7863   /* We can get out of synch in various cases.  If the first character
7864      in the buffer is not a hex character, assume that has happened
7865      and try to fetch another packet to read.  */
7866   while ((rs->buf[0] < '0' || rs->buf[0] > '9')
7867          && (rs->buf[0] < 'A' || rs->buf[0] > 'F')
7868          && (rs->buf[0] < 'a' || rs->buf[0] > 'f')
7869          && rs->buf[0] != 'x')  /* New: unavailable register value.  */
7870     {
7871       if (remote_debug)
7872         fprintf_unfiltered (gdb_stdlog,
7873                             "Bad register packet; fetching a new packet\n");
7874       getpkt (&rs->buf, &rs->buf_size, 0);
7875     }
7876
7877   buf_len = strlen (rs->buf);
7878
7879   /* Sanity check the received packet.  */
7880   if (buf_len % 2 != 0)
7881     error (_("Remote 'g' packet reply is of odd length: %s"), rs->buf);
7882
7883   return buf_len / 2;
7884 }
7885
7886 static void
7887 process_g_packet (struct regcache *regcache)
7888 {
7889   struct gdbarch *gdbarch = regcache->arch ();
7890   struct remote_state *rs = get_remote_state ();
7891   remote_arch_state *rsa = rs->get_remote_arch_state (gdbarch);
7892   int i, buf_len;
7893   char *p;
7894   char *regs;
7895
7896   buf_len = strlen (rs->buf);
7897
7898   /* Further sanity checks, with knowledge of the architecture.  */
7899   if (buf_len > 2 * rsa->sizeof_g_packet)
7900     error (_("Remote 'g' packet reply is too long (expected %ld bytes, got %d "
7901              "bytes): %s"), rsa->sizeof_g_packet, buf_len / 2, rs->buf);
7902
7903   /* Save the size of the packet sent to us by the target.  It is used
7904      as a heuristic when determining the max size of packets that the
7905      target can safely receive.  */
7906   if (rsa->actual_register_packet_size == 0)
7907     rsa->actual_register_packet_size = buf_len;
7908
7909   /* If this is smaller than we guessed the 'g' packet would be,
7910      update our records.  A 'g' reply that doesn't include a register's
7911      value implies either that the register is not available, or that
7912      the 'p' packet must be used.  */
7913   if (buf_len < 2 * rsa->sizeof_g_packet)
7914     {
7915       long sizeof_g_packet = buf_len / 2;
7916
7917       for (i = 0; i < gdbarch_num_regs (gdbarch); i++)
7918         {
7919           long offset = rsa->regs[i].offset;
7920           long reg_size = register_size (gdbarch, i);
7921
7922           if (rsa->regs[i].pnum == -1)
7923             continue;
7924
7925           if (offset >= sizeof_g_packet)
7926             rsa->regs[i].in_g_packet = 0;
7927           else if (offset + reg_size > sizeof_g_packet)
7928             error (_("Truncated register %d in remote 'g' packet"), i);
7929           else
7930             rsa->regs[i].in_g_packet = 1;
7931         }
7932
7933       /* Looks valid enough, we can assume this is the correct length
7934          for a 'g' packet.  It's important not to adjust
7935          rsa->sizeof_g_packet if we have truncated registers otherwise
7936          this "if" won't be run the next time the method is called
7937          with a packet of the same size and one of the internal errors
7938          below will trigger instead.  */
7939       rsa->sizeof_g_packet = sizeof_g_packet;
7940     }
7941
7942   regs = (char *) alloca (rsa->sizeof_g_packet);
7943
7944   /* Unimplemented registers read as all bits zero.  */
7945   memset (regs, 0, rsa->sizeof_g_packet);
7946
7947   /* Reply describes registers byte by byte, each byte encoded as two
7948      hex characters.  Suck them all up, then supply them to the
7949      register cacheing/storage mechanism.  */
7950
7951   p = rs->buf;
7952   for (i = 0; i < rsa->sizeof_g_packet; i++)
7953     {
7954       if (p[0] == 0 || p[1] == 0)
7955         /* This shouldn't happen - we adjusted sizeof_g_packet above.  */
7956         internal_error (__FILE__, __LINE__,
7957                         _("unexpected end of 'g' packet reply"));
7958
7959       if (p[0] == 'x' && p[1] == 'x')
7960         regs[i] = 0;            /* 'x' */
7961       else
7962         regs[i] = fromhex (p[0]) * 16 + fromhex (p[1]);
7963       p += 2;
7964     }
7965
7966   for (i = 0; i < gdbarch_num_regs (gdbarch); i++)
7967     {
7968       struct packet_reg *r = &rsa->regs[i];
7969       long reg_size = register_size (gdbarch, i);
7970
7971       if (r->in_g_packet)
7972         {
7973           if ((r->offset + reg_size) * 2 > strlen (rs->buf))
7974             /* This shouldn't happen - we adjusted in_g_packet above.  */
7975             internal_error (__FILE__, __LINE__,
7976                             _("unexpected end of 'g' packet reply"));
7977           else if (rs->buf[r->offset * 2] == 'x')
7978             {
7979               gdb_assert (r->offset * 2 < strlen (rs->buf));
7980               /* The register isn't available, mark it as such (at
7981                  the same time setting the value to zero).  */
7982               regcache_raw_supply (regcache, r->regnum, NULL);
7983             }
7984           else
7985             regcache_raw_supply (regcache, r->regnum,
7986                                  regs + r->offset);
7987         }
7988     }
7989 }
7990
7991 static void
7992 fetch_registers_using_g (struct regcache *regcache)
7993 {
7994   send_g_packet ();
7995   process_g_packet (regcache);
7996 }
7997
7998 /* Make the remote selected traceframe match GDB's selected
7999    traceframe.  */
8000
8001 static void
8002 set_remote_traceframe (void)
8003 {
8004   int newnum;
8005   struct remote_state *rs = get_remote_state ();
8006
8007   if (rs->remote_traceframe_number == get_traceframe_number ())
8008     return;
8009
8010   /* Avoid recursion, remote_trace_find calls us again.  */
8011   rs->remote_traceframe_number = get_traceframe_number ();
8012
8013   newnum = target_trace_find (tfind_number,
8014                               get_traceframe_number (), 0, 0, NULL);
8015
8016   /* Should not happen.  If it does, all bets are off.  */
8017   if (newnum != get_traceframe_number ())
8018     warning (_("could not set remote traceframe"));
8019 }
8020
8021 void
8022 remote_target::fetch_registers (struct regcache *regcache, int regnum)
8023 {
8024   struct gdbarch *gdbarch = regcache->arch ();
8025   struct remote_state *rs = get_remote_state ();
8026   remote_arch_state *rsa = rs->get_remote_arch_state (gdbarch);
8027   int i;
8028
8029   set_remote_traceframe ();
8030   set_general_thread (regcache_get_ptid (regcache));
8031
8032   if (regnum >= 0)
8033     {
8034       packet_reg *reg = packet_reg_from_regnum (gdbarch, rsa, regnum);
8035
8036       gdb_assert (reg != NULL);
8037
8038       /* If this register might be in the 'g' packet, try that first -
8039          we are likely to read more than one register.  If this is the
8040          first 'g' packet, we might be overly optimistic about its
8041          contents, so fall back to 'p'.  */
8042       if (reg->in_g_packet)
8043         {
8044           fetch_registers_using_g (regcache);
8045           if (reg->in_g_packet)
8046             return;
8047         }
8048
8049       if (fetch_register_using_p (regcache, reg))
8050         return;
8051
8052       /* This register is not available.  */
8053       regcache_raw_supply (regcache, reg->regnum, NULL);
8054
8055       return;
8056     }
8057
8058   fetch_registers_using_g (regcache);
8059
8060   for (i = 0; i < gdbarch_num_regs (gdbarch); i++)
8061     if (!rsa->regs[i].in_g_packet)
8062       if (!fetch_register_using_p (regcache, &rsa->regs[i]))
8063         {
8064           /* This register is not available.  */
8065           regcache_raw_supply (regcache, i, NULL);
8066         }
8067 }
8068
8069 /* Prepare to store registers.  Since we may send them all (using a
8070    'G' request), we have to read out the ones we don't want to change
8071    first.  */
8072
8073 void
8074 remote_target::prepare_to_store (struct regcache *regcache)
8075 {
8076   struct remote_state *rs = get_remote_state ();
8077   remote_arch_state *rsa = rs->get_remote_arch_state (regcache->arch ());
8078   int i;
8079
8080   /* Make sure the entire registers array is valid.  */
8081   switch (packet_support (PACKET_P))
8082     {
8083     case PACKET_DISABLE:
8084     case PACKET_SUPPORT_UNKNOWN:
8085       /* Make sure all the necessary registers are cached.  */
8086       for (i = 0; i < gdbarch_num_regs (regcache->arch ()); i++)
8087         if (rsa->regs[i].in_g_packet)
8088           regcache_raw_update (regcache, rsa->regs[i].regnum);
8089       break;
8090     case PACKET_ENABLE:
8091       break;
8092     }
8093 }
8094
8095 /* Helper: Attempt to store REGNUM using the P packet.  Return fail IFF
8096    packet was not recognized.  */
8097
8098 static int
8099 store_register_using_P (const struct regcache *regcache, 
8100                         struct packet_reg *reg)
8101 {
8102   struct gdbarch *gdbarch = regcache->arch ();
8103   struct remote_state *rs = get_remote_state ();
8104   /* Try storing a single register.  */
8105   char *buf = rs->buf;
8106   gdb_byte *regp = (gdb_byte *) alloca (register_size (gdbarch, reg->regnum));
8107   char *p;
8108
8109   if (packet_support (PACKET_P) == PACKET_DISABLE)
8110     return 0;
8111
8112   if (reg->pnum == -1)
8113     return 0;
8114
8115   xsnprintf (buf, get_remote_packet_size (), "P%s=", phex_nz (reg->pnum, 0));
8116   p = buf + strlen (buf);
8117   regcache_raw_collect (regcache, reg->regnum, regp);
8118   bin2hex (regp, p, register_size (gdbarch, reg->regnum));
8119   putpkt (rs->buf);
8120   getpkt (&rs->buf, &rs->buf_size, 0);
8121
8122   switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_P]))
8123     {
8124     case PACKET_OK:
8125       return 1;
8126     case PACKET_ERROR:
8127       error (_("Could not write register \"%s\"; remote failure reply '%s'"),
8128              gdbarch_register_name (gdbarch, reg->regnum), rs->buf);
8129     case PACKET_UNKNOWN:
8130       return 0;
8131     default:
8132       internal_error (__FILE__, __LINE__, _("Bad result from packet_ok"));
8133     }
8134 }
8135
8136 /* Store register REGNUM, or all registers if REGNUM == -1, from the
8137    contents of the register cache buffer.  FIXME: ignores errors.  */
8138
8139 static void
8140 store_registers_using_G (const struct regcache *regcache)
8141 {
8142   struct remote_state *rs = get_remote_state ();
8143   remote_arch_state *rsa = rs->get_remote_arch_state (regcache->arch ());
8144   gdb_byte *regs;
8145   char *p;
8146
8147   /* Extract all the registers in the regcache copying them into a
8148      local buffer.  */
8149   {
8150     int i;
8151
8152     regs = (gdb_byte *) alloca (rsa->sizeof_g_packet);
8153     memset (regs, 0, rsa->sizeof_g_packet);
8154     for (i = 0; i < gdbarch_num_regs (regcache->arch ()); i++)
8155       {
8156         struct packet_reg *r = &rsa->regs[i];
8157
8158         if (r->in_g_packet)
8159           regcache_raw_collect (regcache, r->regnum, regs + r->offset);
8160       }
8161   }
8162
8163   /* Command describes registers byte by byte,
8164      each byte encoded as two hex characters.  */
8165   p = rs->buf;
8166   *p++ = 'G';
8167   bin2hex (regs, p, rsa->sizeof_g_packet);
8168   putpkt (rs->buf);
8169   getpkt (&rs->buf, &rs->buf_size, 0);
8170   if (packet_check_result (rs->buf) == PACKET_ERROR)
8171     error (_("Could not write registers; remote failure reply '%s'"), 
8172            rs->buf);
8173 }
8174
8175 /* Store register REGNUM, or all registers if REGNUM == -1, from the contents
8176    of the register cache buffer.  FIXME: ignores errors.  */
8177
8178 void
8179 remote_target::store_registers (struct regcache *regcache, int regnum)
8180 {
8181   struct gdbarch *gdbarch = regcache->arch ();
8182   struct remote_state *rs = get_remote_state ();
8183   remote_arch_state *rsa = rs->get_remote_arch_state (gdbarch);
8184   int i;
8185
8186   set_remote_traceframe ();
8187   set_general_thread (regcache_get_ptid (regcache));
8188
8189   if (regnum >= 0)
8190     {
8191       packet_reg *reg = packet_reg_from_regnum (gdbarch, rsa, regnum);
8192
8193       gdb_assert (reg != NULL);
8194
8195       /* Always prefer to store registers using the 'P' packet if
8196          possible; we often change only a small number of registers.
8197          Sometimes we change a larger number; we'd need help from a
8198          higher layer to know to use 'G'.  */
8199       if (store_register_using_P (regcache, reg))
8200         return;
8201
8202       /* For now, don't complain if we have no way to write the
8203          register.  GDB loses track of unavailable registers too
8204          easily.  Some day, this may be an error.  We don't have
8205          any way to read the register, either...  */
8206       if (!reg->in_g_packet)
8207         return;
8208
8209       store_registers_using_G (regcache);
8210       return;
8211     }
8212
8213   store_registers_using_G (regcache);
8214
8215   for (i = 0; i < gdbarch_num_regs (gdbarch); i++)
8216     if (!rsa->regs[i].in_g_packet)
8217       if (!store_register_using_P (regcache, &rsa->regs[i]))
8218         /* See above for why we do not issue an error here.  */
8219         continue;
8220 }
8221 \f
8222
8223 /* Return the number of hex digits in num.  */
8224
8225 static int
8226 hexnumlen (ULONGEST num)
8227 {
8228   int i;
8229
8230   for (i = 0; num != 0; i++)
8231     num >>= 4;
8232
8233   return std::max (i, 1);
8234 }
8235
8236 /* Set BUF to the minimum number of hex digits representing NUM.  */
8237
8238 static int
8239 hexnumstr (char *buf, ULONGEST num)
8240 {
8241   int len = hexnumlen (num);
8242
8243   return hexnumnstr (buf, num, len);
8244 }
8245
8246
8247 /* Set BUF to the hex digits representing NUM, padded to WIDTH characters.  */
8248
8249 static int
8250 hexnumnstr (char *buf, ULONGEST num, int width)
8251 {
8252   int i;
8253
8254   buf[width] = '\0';
8255
8256   for (i = width - 1; i >= 0; i--)
8257     {
8258       buf[i] = "0123456789abcdef"[(num & 0xf)];
8259       num >>= 4;
8260     }
8261
8262   return width;
8263 }
8264
8265 /* Mask all but the least significant REMOTE_ADDRESS_SIZE bits.  */
8266
8267 static CORE_ADDR
8268 remote_address_masked (CORE_ADDR addr)
8269 {
8270   unsigned int address_size = remote_address_size;
8271
8272   /* If "remoteaddresssize" was not set, default to target address size.  */
8273   if (!address_size)
8274     address_size = gdbarch_addr_bit (target_gdbarch ());
8275
8276   if (address_size > 0
8277       && address_size < (sizeof (ULONGEST) * 8))
8278     {
8279       /* Only create a mask when that mask can safely be constructed
8280          in a ULONGEST variable.  */
8281       ULONGEST mask = 1;
8282
8283       mask = (mask << address_size) - 1;
8284       addr &= mask;
8285     }
8286   return addr;
8287 }
8288
8289 /* Determine whether the remote target supports binary downloading.
8290    This is accomplished by sending a no-op memory write of zero length
8291    to the target at the specified address. It does not suffice to send
8292    the whole packet, since many stubs strip the eighth bit and
8293    subsequently compute a wrong checksum, which causes real havoc with
8294    remote_write_bytes.
8295
8296    NOTE: This can still lose if the serial line is not eight-bit
8297    clean.  In cases like this, the user should clear "remote
8298    X-packet".  */
8299
8300 static void
8301 check_binary_download (CORE_ADDR addr)
8302 {
8303   struct remote_state *rs = get_remote_state ();
8304
8305   switch (packet_support (PACKET_X))
8306     {
8307     case PACKET_DISABLE:
8308       break;
8309     case PACKET_ENABLE:
8310       break;
8311     case PACKET_SUPPORT_UNKNOWN:
8312       {
8313         char *p;
8314
8315         p = rs->buf;
8316         *p++ = 'X';
8317         p += hexnumstr (p, (ULONGEST) addr);
8318         *p++ = ',';
8319         p += hexnumstr (p, (ULONGEST) 0);
8320         *p++ = ':';
8321         *p = '\0';
8322
8323         putpkt_binary (rs->buf, (int) (p - rs->buf));
8324         getpkt (&rs->buf, &rs->buf_size, 0);
8325
8326         if (rs->buf[0] == '\0')
8327           {
8328             if (remote_debug)
8329               fprintf_unfiltered (gdb_stdlog,
8330                                   "binary downloading NOT "
8331                                   "supported by target\n");
8332             remote_protocol_packets[PACKET_X].support = PACKET_DISABLE;
8333           }
8334         else
8335           {
8336             if (remote_debug)
8337               fprintf_unfiltered (gdb_stdlog,
8338                                   "binary downloading supported by target\n");
8339             remote_protocol_packets[PACKET_X].support = PACKET_ENABLE;
8340           }
8341         break;
8342       }
8343     }
8344 }
8345
8346 /* Helper function to resize the payload in order to try to get a good
8347    alignment.  We try to write an amount of data such that the next write will
8348    start on an address aligned on REMOTE_ALIGN_WRITES.  */
8349
8350 static int
8351 align_for_efficient_write (int todo, CORE_ADDR memaddr)
8352 {
8353   return ((memaddr + todo) & ~(REMOTE_ALIGN_WRITES - 1)) - memaddr;
8354 }
8355
8356 /* Write memory data directly to the remote machine.
8357    This does not inform the data cache; the data cache uses this.
8358    HEADER is the starting part of the packet.
8359    MEMADDR is the address in the remote memory space.
8360    MYADDR is the address of the buffer in our space.
8361    LEN_UNITS is the number of addressable units to write.
8362    UNIT_SIZE is the length in bytes of an addressable unit.
8363    PACKET_FORMAT should be either 'X' or 'M', and indicates if we
8364    should send data as binary ('X'), or hex-encoded ('M').
8365
8366    The function creates packet of the form
8367        <HEADER><ADDRESS>,<LENGTH>:<DATA>
8368
8369    where encoding of <DATA> is terminated by PACKET_FORMAT.
8370
8371    If USE_LENGTH is 0, then the <LENGTH> field and the preceding comma
8372    are omitted.
8373
8374    Return the transferred status, error or OK (an
8375    'enum target_xfer_status' value).  Save the number of addressable units
8376    transferred in *XFERED_LEN_UNITS.  Only transfer a single packet.
8377
8378    On a platform with an addressable memory size of 2 bytes (UNIT_SIZE == 2), an
8379    exchange between gdb and the stub could look like (?? in place of the
8380    checksum):
8381
8382    -> $m1000,4#??
8383    <- aaaabbbbccccdddd
8384
8385    -> $M1000,3:eeeeffffeeee#??
8386    <- OK
8387
8388    -> $m1000,4#??
8389    <- eeeeffffeeeedddd  */
8390
8391 static enum target_xfer_status
8392 remote_write_bytes_aux (const char *header, CORE_ADDR memaddr,
8393                         const gdb_byte *myaddr, ULONGEST len_units,
8394                         int unit_size, ULONGEST *xfered_len_units,
8395                         char packet_format, int use_length)
8396 {
8397   struct remote_state *rs = get_remote_state ();
8398   char *p;
8399   char *plen = NULL;
8400   int plenlen = 0;
8401   int todo_units;
8402   int units_written;
8403   int payload_capacity_bytes;
8404   int payload_length_bytes;
8405
8406   if (packet_format != 'X' && packet_format != 'M')
8407     internal_error (__FILE__, __LINE__,
8408                     _("remote_write_bytes_aux: bad packet format"));
8409
8410   if (len_units == 0)
8411     return TARGET_XFER_EOF;
8412
8413   payload_capacity_bytes = get_memory_write_packet_size ();
8414
8415   /* The packet buffer will be large enough for the payload;
8416      get_memory_packet_size ensures this.  */
8417   rs->buf[0] = '\0';
8418
8419   /* Compute the size of the actual payload by subtracting out the
8420      packet header and footer overhead: "$M<memaddr>,<len>:...#nn".  */
8421
8422   payload_capacity_bytes -= strlen ("$,:#NN");
8423   if (!use_length)
8424     /* The comma won't be used.  */
8425     payload_capacity_bytes += 1;
8426   payload_capacity_bytes -= strlen (header);
8427   payload_capacity_bytes -= hexnumlen (memaddr);
8428
8429   /* Construct the packet excluding the data: "<header><memaddr>,<len>:".  */
8430
8431   strcat (rs->buf, header);
8432   p = rs->buf + strlen (header);
8433
8434   /* Compute a best guess of the number of bytes actually transfered.  */
8435   if (packet_format == 'X')
8436     {
8437       /* Best guess at number of bytes that will fit.  */
8438       todo_units = std::min (len_units,
8439                              (ULONGEST) payload_capacity_bytes / unit_size);
8440       if (use_length)
8441         payload_capacity_bytes -= hexnumlen (todo_units);
8442       todo_units = std::min (todo_units, payload_capacity_bytes / unit_size);
8443     }
8444   else
8445     {
8446       /* Number of bytes that will fit.  */
8447       todo_units
8448         = std::min (len_units,
8449                     (ULONGEST) (payload_capacity_bytes / unit_size) / 2);
8450       if (use_length)
8451         payload_capacity_bytes -= hexnumlen (todo_units);
8452       todo_units = std::min (todo_units,
8453                              (payload_capacity_bytes / unit_size) / 2);
8454     }
8455
8456   if (todo_units <= 0)
8457     internal_error (__FILE__, __LINE__,
8458                     _("minimum packet size too small to write data"));
8459
8460   /* If we already need another packet, then try to align the end
8461      of this packet to a useful boundary.  */
8462   if (todo_units > 2 * REMOTE_ALIGN_WRITES && todo_units < len_units)
8463     todo_units = align_for_efficient_write (todo_units, memaddr);
8464
8465   /* Append "<memaddr>".  */
8466   memaddr = remote_address_masked (memaddr);
8467   p += hexnumstr (p, (ULONGEST) memaddr);
8468
8469   if (use_length)
8470     {
8471       /* Append ",".  */
8472       *p++ = ',';
8473
8474       /* Append the length and retain its location and size.  It may need to be
8475          adjusted once the packet body has been created.  */
8476       plen = p;
8477       plenlen = hexnumstr (p, (ULONGEST) todo_units);
8478       p += plenlen;
8479     }
8480
8481   /* Append ":".  */
8482   *p++ = ':';
8483   *p = '\0';
8484
8485   /* Append the packet body.  */
8486   if (packet_format == 'X')
8487     {
8488       /* Binary mode.  Send target system values byte by byte, in
8489          increasing byte addresses.  Only escape certain critical
8490          characters.  */
8491       payload_length_bytes =
8492           remote_escape_output (myaddr, todo_units, unit_size, (gdb_byte *) p,
8493                                 &units_written, payload_capacity_bytes);
8494
8495       /* If not all TODO units fit, then we'll need another packet.  Make
8496          a second try to keep the end of the packet aligned.  Don't do
8497          this if the packet is tiny.  */
8498       if (units_written < todo_units && units_written > 2 * REMOTE_ALIGN_WRITES)
8499         {
8500           int new_todo_units;
8501
8502           new_todo_units = align_for_efficient_write (units_written, memaddr);
8503
8504           if (new_todo_units != units_written)
8505             payload_length_bytes =
8506                 remote_escape_output (myaddr, new_todo_units, unit_size,
8507                                       (gdb_byte *) p, &units_written,
8508                                       payload_capacity_bytes);
8509         }
8510
8511       p += payload_length_bytes;
8512       if (use_length && units_written < todo_units)
8513         {
8514           /* Escape chars have filled up the buffer prematurely,
8515              and we have actually sent fewer units than planned.
8516              Fix-up the length field of the packet.  Use the same
8517              number of characters as before.  */
8518           plen += hexnumnstr (plen, (ULONGEST) units_written,
8519                               plenlen);
8520           *plen = ':';  /* overwrite \0 from hexnumnstr() */
8521         }
8522     }
8523   else
8524     {
8525       /* Normal mode: Send target system values byte by byte, in
8526          increasing byte addresses.  Each byte is encoded as a two hex
8527          value.  */
8528       p += 2 * bin2hex (myaddr, p, todo_units * unit_size);
8529       units_written = todo_units;
8530     }
8531
8532   putpkt_binary (rs->buf, (int) (p - rs->buf));
8533   getpkt (&rs->buf, &rs->buf_size, 0);
8534
8535   if (rs->buf[0] == 'E')
8536     return TARGET_XFER_E_IO;
8537
8538   /* Return UNITS_WRITTEN, not TODO_UNITS, in case escape chars caused us to
8539      send fewer units than we'd planned.  */
8540   *xfered_len_units = (ULONGEST) units_written;
8541   return (*xfered_len_units != 0) ? TARGET_XFER_OK : TARGET_XFER_EOF;
8542 }
8543
8544 /* Write memory data directly to the remote machine.
8545    This does not inform the data cache; the data cache uses this.
8546    MEMADDR is the address in the remote memory space.
8547    MYADDR is the address of the buffer in our space.
8548    LEN is the number of bytes.
8549
8550    Return the transferred status, error or OK (an
8551    'enum target_xfer_status' value).  Save the number of bytes
8552    transferred in *XFERED_LEN.  Only transfer a single packet.  */
8553
8554 static enum target_xfer_status
8555 remote_write_bytes (CORE_ADDR memaddr, const gdb_byte *myaddr, ULONGEST len,
8556                     int unit_size, ULONGEST *xfered_len)
8557 {
8558   const char *packet_format = NULL;
8559
8560   /* Check whether the target supports binary download.  */
8561   check_binary_download (memaddr);
8562
8563   switch (packet_support (PACKET_X))
8564     {
8565     case PACKET_ENABLE:
8566       packet_format = "X";
8567       break;
8568     case PACKET_DISABLE:
8569       packet_format = "M";
8570       break;
8571     case PACKET_SUPPORT_UNKNOWN:
8572       internal_error (__FILE__, __LINE__,
8573                       _("remote_write_bytes: bad internal state"));
8574     default:
8575       internal_error (__FILE__, __LINE__, _("bad switch"));
8576     }
8577
8578   return remote_write_bytes_aux (packet_format,
8579                                  memaddr, myaddr, len, unit_size, xfered_len,
8580                                  packet_format[0], 1);
8581 }
8582
8583 /* Read memory data directly from the remote machine.
8584    This does not use the data cache; the data cache uses this.
8585    MEMADDR is the address in the remote memory space.
8586    MYADDR is the address of the buffer in our space.
8587    LEN_UNITS is the number of addressable memory units to read..
8588    UNIT_SIZE is the length in bytes of an addressable unit.
8589
8590    Return the transferred status, error or OK (an
8591    'enum target_xfer_status' value).  Save the number of bytes
8592    transferred in *XFERED_LEN_UNITS.
8593
8594    See the comment of remote_write_bytes_aux for an example of
8595    memory read/write exchange between gdb and the stub.  */
8596
8597 static enum target_xfer_status
8598 remote_read_bytes_1 (CORE_ADDR memaddr, gdb_byte *myaddr, ULONGEST len_units,
8599                      int unit_size, ULONGEST *xfered_len_units)
8600 {
8601   struct remote_state *rs = get_remote_state ();
8602   int buf_size_bytes;           /* Max size of packet output buffer.  */
8603   char *p;
8604   int todo_units;
8605   int decoded_bytes;
8606
8607   buf_size_bytes = get_memory_read_packet_size ();
8608   /* The packet buffer will be large enough for the payload;
8609      get_memory_packet_size ensures this.  */
8610
8611   /* Number of units that will fit.  */
8612   todo_units = std::min (len_units,
8613                          (ULONGEST) (buf_size_bytes / unit_size) / 2);
8614
8615   /* Construct "m"<memaddr>","<len>".  */
8616   memaddr = remote_address_masked (memaddr);
8617   p = rs->buf;
8618   *p++ = 'm';
8619   p += hexnumstr (p, (ULONGEST) memaddr);
8620   *p++ = ',';
8621   p += hexnumstr (p, (ULONGEST) todo_units);
8622   *p = '\0';
8623   putpkt (rs->buf);
8624   getpkt (&rs->buf, &rs->buf_size, 0);
8625   if (rs->buf[0] == 'E'
8626       && isxdigit (rs->buf[1]) && isxdigit (rs->buf[2])
8627       && rs->buf[3] == '\0')
8628     return TARGET_XFER_E_IO;
8629   /* Reply describes memory byte by byte, each byte encoded as two hex
8630      characters.  */
8631   p = rs->buf;
8632   decoded_bytes = hex2bin (p, myaddr, todo_units * unit_size);
8633   /* Return what we have.  Let higher layers handle partial reads.  */
8634   *xfered_len_units = (ULONGEST) (decoded_bytes / unit_size);
8635   return (*xfered_len_units != 0) ? TARGET_XFER_OK : TARGET_XFER_EOF;
8636 }
8637
8638 /* Using the set of read-only target sections of remote, read live
8639    read-only memory.
8640
8641    For interface/parameters/return description see target.h,
8642    to_xfer_partial.  */
8643
8644 static enum target_xfer_status
8645 remote_xfer_live_readonly_partial (struct target_ops *ops, gdb_byte *readbuf,
8646                                    ULONGEST memaddr, ULONGEST len,
8647                                    int unit_size, ULONGEST *xfered_len)
8648 {
8649   struct target_section *secp;
8650   struct target_section_table *table;
8651
8652   secp = target_section_by_addr (ops, memaddr);
8653   if (secp != NULL
8654       && (bfd_get_section_flags (secp->the_bfd_section->owner,
8655                                  secp->the_bfd_section)
8656           & SEC_READONLY))
8657     {
8658       struct target_section *p;
8659       ULONGEST memend = memaddr + len;
8660
8661       table = target_get_section_table (ops);
8662
8663       for (p = table->sections; p < table->sections_end; p++)
8664         {
8665           if (memaddr >= p->addr)
8666             {
8667               if (memend <= p->endaddr)
8668                 {
8669                   /* Entire transfer is within this section.  */
8670                   return remote_read_bytes_1 (memaddr, readbuf, len, unit_size,
8671                                               xfered_len);
8672                 }
8673               else if (memaddr >= p->endaddr)
8674                 {
8675                   /* This section ends before the transfer starts.  */
8676                   continue;
8677                 }
8678               else
8679                 {
8680                   /* This section overlaps the transfer.  Just do half.  */
8681                   len = p->endaddr - memaddr;
8682                   return remote_read_bytes_1 (memaddr, readbuf, len, unit_size,
8683                                               xfered_len);
8684                 }
8685             }
8686         }
8687     }
8688
8689   return TARGET_XFER_EOF;
8690 }
8691
8692 /* Similar to remote_read_bytes_1, but it reads from the remote stub
8693    first if the requested memory is unavailable in traceframe.
8694    Otherwise, fall back to remote_read_bytes_1.  */
8695
8696 static enum target_xfer_status
8697 remote_read_bytes (struct target_ops *ops, CORE_ADDR memaddr,
8698                    gdb_byte *myaddr, ULONGEST len, int unit_size,
8699                    ULONGEST *xfered_len)
8700 {
8701   if (len == 0)
8702     return TARGET_XFER_EOF;
8703
8704   if (get_traceframe_number () != -1)
8705     {
8706       std::vector<mem_range> available;
8707
8708       /* If we fail to get the set of available memory, then the
8709          target does not support querying traceframe info, and so we
8710          attempt reading from the traceframe anyway (assuming the
8711          target implements the old QTro packet then).  */
8712       if (traceframe_available_memory (&available, memaddr, len))
8713         {
8714           if (available.empty () || available[0].start != memaddr)
8715             {
8716               enum target_xfer_status res;
8717
8718               /* Don't read into the traceframe's available
8719                  memory.  */
8720               if (!available.empty ())
8721                 {
8722                   LONGEST oldlen = len;
8723
8724                   len = available[0].start - memaddr;
8725                   gdb_assert (len <= oldlen);
8726                 }
8727
8728               /* This goes through the topmost target again.  */
8729               res = remote_xfer_live_readonly_partial (ops, myaddr, memaddr,
8730                                                        len, unit_size, xfered_len);
8731               if (res == TARGET_XFER_OK)
8732                 return TARGET_XFER_OK;
8733               else
8734                 {
8735                   /* No use trying further, we know some memory starting
8736                      at MEMADDR isn't available.  */
8737                   *xfered_len = len;
8738                   return (*xfered_len != 0) ?
8739                     TARGET_XFER_UNAVAILABLE : TARGET_XFER_EOF;
8740                 }
8741             }
8742
8743           /* Don't try to read more than how much is available, in
8744              case the target implements the deprecated QTro packet to
8745              cater for older GDBs (the target's knowledge of read-only
8746              sections may be outdated by now).  */
8747           len = available[0].length;
8748         }
8749     }
8750
8751   return remote_read_bytes_1 (memaddr, myaddr, len, unit_size, xfered_len);
8752 }
8753
8754 \f
8755
8756 /* Sends a packet with content determined by the printf format string
8757    FORMAT and the remaining arguments, then gets the reply.  Returns
8758    whether the packet was a success, a failure, or unknown.  */
8759
8760 static enum packet_result remote_send_printf (const char *format, ...)
8761   ATTRIBUTE_PRINTF (1, 2);
8762
8763 static enum packet_result
8764 remote_send_printf (const char *format, ...)
8765 {
8766   struct remote_state *rs = get_remote_state ();
8767   int max_size = get_remote_packet_size ();
8768   va_list ap;
8769
8770   va_start (ap, format);
8771
8772   rs->buf[0] = '\0';
8773   if (vsnprintf (rs->buf, max_size, format, ap) >= max_size)
8774     internal_error (__FILE__, __LINE__, _("Too long remote packet."));
8775
8776   if (putpkt (rs->buf) < 0)
8777     error (_("Communication problem with target."));
8778
8779   rs->buf[0] = '\0';
8780   getpkt (&rs->buf, &rs->buf_size, 0);
8781
8782   return packet_check_result (rs->buf);
8783 }
8784
8785 /* Flash writing can take quite some time.  We'll set
8786    effectively infinite timeout for flash operations.
8787    In future, we'll need to decide on a better approach.  */
8788 static const int remote_flash_timeout = 1000;
8789
8790 void
8791 remote_target::flash_erase (ULONGEST address, LONGEST length)
8792 {
8793   int addr_size = gdbarch_addr_bit (target_gdbarch ()) / 8;
8794   enum packet_result ret;
8795   scoped_restore restore_timeout
8796     = make_scoped_restore (&remote_timeout, remote_flash_timeout);
8797
8798   ret = remote_send_printf ("vFlashErase:%s,%s",
8799                             phex (address, addr_size),
8800                             phex (length, 4));
8801   switch (ret)
8802     {
8803     case PACKET_UNKNOWN:
8804       error (_("Remote target does not support flash erase"));
8805     case PACKET_ERROR:
8806       error (_("Error erasing flash with vFlashErase packet"));
8807     default:
8808       break;
8809     }
8810 }
8811
8812 static enum target_xfer_status
8813 remote_flash_write (struct target_ops *ops, ULONGEST address,
8814                     ULONGEST length, ULONGEST *xfered_len,
8815                     const gdb_byte *data)
8816 {
8817   scoped_restore restore_timeout
8818     = make_scoped_restore (&remote_timeout, remote_flash_timeout);
8819   return remote_write_bytes_aux ("vFlashWrite:", address, data, length, 1,
8820                                  xfered_len,'X', 0);
8821 }
8822
8823 void
8824 remote_target::flash_done ()
8825 {
8826   int ret;
8827
8828   scoped_restore restore_timeout
8829     = make_scoped_restore (&remote_timeout, remote_flash_timeout);
8830
8831   ret = remote_send_printf ("vFlashDone");
8832
8833   switch (ret)
8834     {
8835     case PACKET_UNKNOWN:
8836       error (_("Remote target does not support vFlashDone"));
8837     case PACKET_ERROR:
8838       error (_("Error finishing flash operation"));
8839     default:
8840       break;
8841     }
8842 }
8843
8844 void
8845 remote_target::files_info ()
8846 {
8847   puts_filtered ("Debugging a target over a serial line.\n");
8848 }
8849 \f
8850 /* Stuff for dealing with the packets which are part of this protocol.
8851    See comment at top of file for details.  */
8852
8853 /* Close/unpush the remote target, and throw a TARGET_CLOSE_ERROR
8854    error to higher layers.  Called when a serial error is detected.
8855    The exception message is STRING, followed by a colon and a blank,
8856    the system error message for errno at function entry and final dot
8857    for output compatibility with throw_perror_with_name.  */
8858
8859 static void
8860 unpush_and_perror (const char *string)
8861 {
8862   int saved_errno = errno;
8863
8864   remote_unpush_target ();
8865   throw_error (TARGET_CLOSE_ERROR, "%s: %s.", string,
8866                safe_strerror (saved_errno));
8867 }
8868
8869 /* Read a single character from the remote end.  The current quit
8870    handler is overridden to avoid quitting in the middle of packet
8871    sequence, as that would break communication with the remote server.
8872    See remote_serial_quit_handler for more detail.  */
8873
8874 static int
8875 readchar (int timeout)
8876 {
8877   int ch;
8878   struct remote_state *rs = get_remote_state ();
8879
8880   {
8881     scoped_restore restore_quit
8882       = make_scoped_restore (&quit_handler, remote_serial_quit_handler);
8883
8884     rs->got_ctrlc_during_io = 0;
8885
8886     ch = serial_readchar (rs->remote_desc, timeout);
8887
8888     if (rs->got_ctrlc_during_io)
8889       set_quit_flag ();
8890   }
8891
8892   if (ch >= 0)
8893     return ch;
8894
8895   switch ((enum serial_rc) ch)
8896     {
8897     case SERIAL_EOF:
8898       remote_unpush_target ();
8899       throw_error (TARGET_CLOSE_ERROR, _("Remote connection closed"));
8900       /* no return */
8901     case SERIAL_ERROR:
8902       unpush_and_perror (_("Remote communication error.  "
8903                            "Target disconnected."));
8904       /* no return */
8905     case SERIAL_TIMEOUT:
8906       break;
8907     }
8908   return ch;
8909 }
8910
8911 /* Wrapper for serial_write that closes the target and throws if
8912    writing fails.  The current quit handler is overridden to avoid
8913    quitting in the middle of packet sequence, as that would break
8914    communication with the remote server.  See
8915    remote_serial_quit_handler for more detail.  */
8916
8917 static void
8918 remote_serial_write (const char *str, int len)
8919 {
8920   struct remote_state *rs = get_remote_state ();
8921
8922   scoped_restore restore_quit
8923     = make_scoped_restore (&quit_handler, remote_serial_quit_handler);
8924
8925   rs->got_ctrlc_during_io = 0;
8926
8927   if (serial_write (rs->remote_desc, str, len))
8928     {
8929       unpush_and_perror (_("Remote communication error.  "
8930                            "Target disconnected."));
8931     }
8932
8933   if (rs->got_ctrlc_during_io)
8934     set_quit_flag ();
8935 }
8936
8937 /* Return a string representing an escaped version of BUF, of len N.
8938    E.g. \n is converted to \\n, \t to \\t, etc.  */
8939
8940 static std::string
8941 escape_buffer (const char *buf, int n)
8942 {
8943   string_file stb;
8944
8945   stb.putstrn (buf, n, '\\');
8946   return std::move (stb.string ());
8947 }
8948
8949 /* Display a null-terminated packet on stdout, for debugging, using C
8950    string notation.  */
8951
8952 static void
8953 print_packet (const char *buf)
8954 {
8955   puts_filtered ("\"");
8956   fputstr_filtered (buf, '"', gdb_stdout);
8957   puts_filtered ("\"");
8958 }
8959
8960 int
8961 putpkt (const char *buf)
8962 {
8963   return putpkt_binary (buf, strlen (buf));
8964 }
8965
8966 /* Send a packet to the remote machine, with error checking.  The data
8967    of the packet is in BUF.  The string in BUF can be at most
8968    get_remote_packet_size () - 5 to account for the $, # and checksum,
8969    and for a possible /0 if we are debugging (remote_debug) and want
8970    to print the sent packet as a string.  */
8971
8972 static int
8973 putpkt_binary (const char *buf, int cnt)
8974 {
8975   struct remote_state *rs = get_remote_state ();
8976   int i;
8977   unsigned char csum = 0;
8978   gdb::def_vector<char> data (cnt + 6);
8979   char *buf2 = data.data ();
8980
8981   int ch;
8982   int tcount = 0;
8983   char *p;
8984
8985   /* Catch cases like trying to read memory or listing threads while
8986      we're waiting for a stop reply.  The remote server wouldn't be
8987      ready to handle this request, so we'd hang and timeout.  We don't
8988      have to worry about this in synchronous mode, because in that
8989      case it's not possible to issue a command while the target is
8990      running.  This is not a problem in non-stop mode, because in that
8991      case, the stub is always ready to process serial input.  */
8992   if (!target_is_non_stop_p ()
8993       && target_is_async_p ()
8994       && rs->waiting_for_stop_reply)
8995     {
8996       error (_("Cannot execute this command while the target is running.\n"
8997                "Use the \"interrupt\" command to stop the target\n"
8998                "and then try again."));
8999     }
9000
9001   /* We're sending out a new packet.  Make sure we don't look at a
9002      stale cached response.  */
9003   rs->cached_wait_status = 0;
9004
9005   /* Copy the packet into buffer BUF2, encapsulating it
9006      and giving it a checksum.  */
9007
9008   p = buf2;
9009   *p++ = '$';
9010
9011   for (i = 0; i < cnt; i++)
9012     {
9013       csum += buf[i];
9014       *p++ = buf[i];
9015     }
9016   *p++ = '#';
9017   *p++ = tohex ((csum >> 4) & 0xf);
9018   *p++ = tohex (csum & 0xf);
9019
9020   /* Send it over and over until we get a positive ack.  */
9021
9022   while (1)
9023     {
9024       int started_error_output = 0;
9025
9026       if (remote_debug)
9027         {
9028           *p = '\0';
9029
9030           int len = (int) (p - buf2);
9031
9032           std::string str
9033             = escape_buffer (buf2, std::min (len, REMOTE_DEBUG_MAX_CHAR));
9034
9035           fprintf_unfiltered (gdb_stdlog, "Sending packet: %s", str.c_str ());
9036
9037           if (len > REMOTE_DEBUG_MAX_CHAR)
9038             fprintf_unfiltered (gdb_stdlog, "[%d bytes omitted]",
9039                                 len - REMOTE_DEBUG_MAX_CHAR);
9040
9041           fprintf_unfiltered (gdb_stdlog, "...");
9042
9043           gdb_flush (gdb_stdlog);
9044         }
9045       remote_serial_write (buf2, p - buf2);
9046
9047       /* If this is a no acks version of the remote protocol, send the
9048          packet and move on.  */
9049       if (rs->noack_mode)
9050         break;
9051
9052       /* Read until either a timeout occurs (-2) or '+' is read.
9053          Handle any notification that arrives in the mean time.  */
9054       while (1)
9055         {
9056           ch = readchar (remote_timeout);
9057
9058           if (remote_debug)
9059             {
9060               switch (ch)
9061                 {
9062                 case '+':
9063                 case '-':
9064                 case SERIAL_TIMEOUT:
9065                 case '$':
9066                 case '%':
9067                   if (started_error_output)
9068                     {
9069                       putchar_unfiltered ('\n');
9070                       started_error_output = 0;
9071                     }
9072                 }
9073             }
9074
9075           switch (ch)
9076             {
9077             case '+':
9078               if (remote_debug)
9079                 fprintf_unfiltered (gdb_stdlog, "Ack\n");
9080               return 1;
9081             case '-':
9082               if (remote_debug)
9083                 fprintf_unfiltered (gdb_stdlog, "Nak\n");
9084               /* FALLTHROUGH */
9085             case SERIAL_TIMEOUT:
9086               tcount++;
9087               if (tcount > 3)
9088                 return 0;
9089               break;            /* Retransmit buffer.  */
9090             case '$':
9091               {
9092                 if (remote_debug)
9093                   fprintf_unfiltered (gdb_stdlog,
9094                                       "Packet instead of Ack, ignoring it\n");
9095                 /* It's probably an old response sent because an ACK
9096                    was lost.  Gobble up the packet and ack it so it
9097                    doesn't get retransmitted when we resend this
9098                    packet.  */
9099                 skip_frame ();
9100                 remote_serial_write ("+", 1);
9101                 continue;       /* Now, go look for +.  */
9102               }
9103
9104             case '%':
9105               {
9106                 int val;
9107
9108                 /* If we got a notification, handle it, and go back to looking
9109                    for an ack.  */
9110                 /* We've found the start of a notification.  Now
9111                    collect the data.  */
9112                 val = read_frame (&rs->buf, &rs->buf_size);
9113                 if (val >= 0)
9114                   {
9115                     if (remote_debug)
9116                       {
9117                         std::string str = escape_buffer (rs->buf, val);
9118
9119                         fprintf_unfiltered (gdb_stdlog,
9120                                             "  Notification received: %s\n",
9121                                             str.c_str ());
9122                       }
9123                     handle_notification (rs->notif_state, rs->buf);
9124                     /* We're in sync now, rewait for the ack.  */
9125                     tcount = 0;
9126                   }
9127                 else
9128                   {
9129                     if (remote_debug)
9130                       {
9131                         if (!started_error_output)
9132                           {
9133                             started_error_output = 1;
9134                             fprintf_unfiltered (gdb_stdlog, "putpkt: Junk: ");
9135                           }
9136                         fputc_unfiltered (ch & 0177, gdb_stdlog);
9137                         fprintf_unfiltered (gdb_stdlog, "%s", rs->buf);
9138                       }
9139                   }
9140                 continue;
9141               }
9142               /* fall-through */
9143             default:
9144               if (remote_debug)
9145                 {
9146                   if (!started_error_output)
9147                     {
9148                       started_error_output = 1;
9149                       fprintf_unfiltered (gdb_stdlog, "putpkt: Junk: ");
9150                     }
9151                   fputc_unfiltered (ch & 0177, gdb_stdlog);
9152                 }
9153               continue;
9154             }
9155           break;                /* Here to retransmit.  */
9156         }
9157
9158 #if 0
9159       /* This is wrong.  If doing a long backtrace, the user should be
9160          able to get out next time we call QUIT, without anything as
9161          violent as interrupt_query.  If we want to provide a way out of
9162          here without getting to the next QUIT, it should be based on
9163          hitting ^C twice as in remote_wait.  */
9164       if (quit_flag)
9165         {
9166           quit_flag = 0;
9167           interrupt_query ();
9168         }
9169 #endif
9170     }
9171
9172   return 0;
9173 }
9174
9175 /* Come here after finding the start of a frame when we expected an
9176    ack.  Do our best to discard the rest of this packet.  */
9177
9178 static void
9179 skip_frame (void)
9180 {
9181   int c;
9182
9183   while (1)
9184     {
9185       c = readchar (remote_timeout);
9186       switch (c)
9187         {
9188         case SERIAL_TIMEOUT:
9189           /* Nothing we can do.  */
9190           return;
9191         case '#':
9192           /* Discard the two bytes of checksum and stop.  */
9193           c = readchar (remote_timeout);
9194           if (c >= 0)
9195             c = readchar (remote_timeout);
9196
9197           return;
9198         case '*':               /* Run length encoding.  */
9199           /* Discard the repeat count.  */
9200           c = readchar (remote_timeout);
9201           if (c < 0)
9202             return;
9203           break;
9204         default:
9205           /* A regular character.  */
9206           break;
9207         }
9208     }
9209 }
9210
9211 /* Come here after finding the start of the frame.  Collect the rest
9212    into *BUF, verifying the checksum, length, and handling run-length
9213    compression.  NUL terminate the buffer.  If there is not enough room,
9214    expand *BUF using xrealloc.
9215
9216    Returns -1 on error, number of characters in buffer (ignoring the
9217    trailing NULL) on success. (could be extended to return one of the
9218    SERIAL status indications).  */
9219
9220 static long
9221 read_frame (char **buf_p,
9222             long *sizeof_buf)
9223 {
9224   unsigned char csum;
9225   long bc;
9226   int c;
9227   char *buf = *buf_p;
9228   struct remote_state *rs = get_remote_state ();
9229
9230   csum = 0;
9231   bc = 0;
9232
9233   while (1)
9234     {
9235       c = readchar (remote_timeout);
9236       switch (c)
9237         {
9238         case SERIAL_TIMEOUT:
9239           if (remote_debug)
9240             fputs_filtered ("Timeout in mid-packet, retrying\n", gdb_stdlog);
9241           return -1;
9242         case '$':
9243           if (remote_debug)
9244             fputs_filtered ("Saw new packet start in middle of old one\n",
9245                             gdb_stdlog);
9246           return -1;            /* Start a new packet, count retries.  */
9247         case '#':
9248           {
9249             unsigned char pktcsum;
9250             int check_0 = 0;
9251             int check_1 = 0;
9252
9253             buf[bc] = '\0';
9254
9255             check_0 = readchar (remote_timeout);
9256             if (check_0 >= 0)
9257               check_1 = readchar (remote_timeout);
9258
9259             if (check_0 == SERIAL_TIMEOUT || check_1 == SERIAL_TIMEOUT)
9260               {
9261                 if (remote_debug)
9262                   fputs_filtered ("Timeout in checksum, retrying\n",
9263                                   gdb_stdlog);
9264                 return -1;
9265               }
9266             else if (check_0 < 0 || check_1 < 0)
9267               {
9268                 if (remote_debug)
9269                   fputs_filtered ("Communication error in checksum\n",
9270                                   gdb_stdlog);
9271                 return -1;
9272               }
9273
9274             /* Don't recompute the checksum; with no ack packets we
9275                don't have any way to indicate a packet retransmission
9276                is necessary.  */
9277             if (rs->noack_mode)
9278               return bc;
9279
9280             pktcsum = (fromhex (check_0) << 4) | fromhex (check_1);
9281             if (csum == pktcsum)
9282               return bc;
9283
9284             if (remote_debug)
9285               {
9286                 std::string str = escape_buffer (buf, bc);
9287
9288                 fprintf_unfiltered (gdb_stdlog,
9289                                     "Bad checksum, sentsum=0x%x, "
9290                                     "csum=0x%x, buf=%s\n",
9291                                     pktcsum, csum, str.c_str ());
9292               }
9293             /* Number of characters in buffer ignoring trailing
9294                NULL.  */
9295             return -1;
9296           }
9297         case '*':               /* Run length encoding.  */
9298           {
9299             int repeat;
9300
9301             csum += c;
9302             c = readchar (remote_timeout);
9303             csum += c;
9304             repeat = c - ' ' + 3;       /* Compute repeat count.  */
9305
9306             /* The character before ``*'' is repeated.  */
9307
9308             if (repeat > 0 && repeat <= 255 && bc > 0)
9309               {
9310                 if (bc + repeat - 1 >= *sizeof_buf - 1)
9311                   {
9312                     /* Make some more room in the buffer.  */
9313                     *sizeof_buf += repeat;
9314                     *buf_p = (char *) xrealloc (*buf_p, *sizeof_buf);
9315                     buf = *buf_p;
9316                   }
9317
9318                 memset (&buf[bc], buf[bc - 1], repeat);
9319                 bc += repeat;
9320                 continue;
9321               }
9322
9323             buf[bc] = '\0';
9324             printf_filtered (_("Invalid run length encoding: %s\n"), buf);
9325             return -1;
9326           }
9327         default:
9328           if (bc >= *sizeof_buf - 1)
9329             {
9330               /* Make some more room in the buffer.  */
9331               *sizeof_buf *= 2;
9332               *buf_p = (char *) xrealloc (*buf_p, *sizeof_buf);
9333               buf = *buf_p;
9334             }
9335
9336           buf[bc++] = c;
9337           csum += c;
9338           continue;
9339         }
9340     }
9341 }
9342
9343 /* Read a packet from the remote machine, with error checking, and
9344    store it in *BUF.  Resize *BUF using xrealloc if necessary to hold
9345    the result, and update *SIZEOF_BUF.  If FOREVER, wait forever
9346    rather than timing out; this is used (in synchronous mode) to wait
9347    for a target that is is executing user code to stop.  */
9348 /* FIXME: ezannoni 2000-02-01 this wrapper is necessary so that we
9349    don't have to change all the calls to getpkt to deal with the
9350    return value, because at the moment I don't know what the right
9351    thing to do it for those.  */
9352 void
9353 getpkt (char **buf,
9354         long *sizeof_buf,
9355         int forever)
9356 {
9357   getpkt_sane (buf, sizeof_buf, forever);
9358 }
9359
9360
9361 /* Read a packet from the remote machine, with error checking, and
9362    store it in *BUF.  Resize *BUF using xrealloc if necessary to hold
9363    the result, and update *SIZEOF_BUF.  If FOREVER, wait forever
9364    rather than timing out; this is used (in synchronous mode) to wait
9365    for a target that is is executing user code to stop.  If FOREVER ==
9366    0, this function is allowed to time out gracefully and return an
9367    indication of this to the caller.  Otherwise return the number of
9368    bytes read.  If EXPECTING_NOTIF, consider receiving a notification
9369    enough reason to return to the caller.  *IS_NOTIF is an output
9370    boolean that indicates whether *BUF holds a notification or not
9371    (a regular packet).  */
9372
9373 static int
9374 getpkt_or_notif_sane_1 (char **buf, long *sizeof_buf, int forever,
9375                         int expecting_notif, int *is_notif)
9376 {
9377   struct remote_state *rs = get_remote_state ();
9378   int c;
9379   int tries;
9380   int timeout;
9381   int val = -1;
9382
9383   /* We're reading a new response.  Make sure we don't look at a
9384      previously cached response.  */
9385   rs->cached_wait_status = 0;
9386
9387   strcpy (*buf, "timeout");
9388
9389   if (forever)
9390     timeout = watchdog > 0 ? watchdog : -1;
9391   else if (expecting_notif)
9392     timeout = 0; /* There should already be a char in the buffer.  If
9393                     not, bail out.  */
9394   else
9395     timeout = remote_timeout;
9396
9397 #define MAX_TRIES 3
9398
9399   /* Process any number of notifications, and then return when
9400      we get a packet.  */
9401   for (;;)
9402     {
9403       /* If we get a timeout or bad checksum, retry up to MAX_TRIES
9404          times.  */
9405       for (tries = 1; tries <= MAX_TRIES; tries++)
9406         {
9407           /* This can loop forever if the remote side sends us
9408              characters continuously, but if it pauses, we'll get
9409              SERIAL_TIMEOUT from readchar because of timeout.  Then
9410              we'll count that as a retry.
9411
9412              Note that even when forever is set, we will only wait
9413              forever prior to the start of a packet.  After that, we
9414              expect characters to arrive at a brisk pace.  They should
9415              show up within remote_timeout intervals.  */
9416           do
9417             c = readchar (timeout);
9418           while (c != SERIAL_TIMEOUT && c != '$' && c != '%');
9419
9420           if (c == SERIAL_TIMEOUT)
9421             {
9422               if (expecting_notif)
9423                 return -1; /* Don't complain, it's normal to not get
9424                               anything in this case.  */
9425
9426               if (forever)      /* Watchdog went off?  Kill the target.  */
9427                 {
9428                   remote_unpush_target ();
9429                   throw_error (TARGET_CLOSE_ERROR,
9430                                _("Watchdog timeout has expired.  "
9431                                  "Target detached."));
9432                 }
9433               if (remote_debug)
9434                 fputs_filtered ("Timed out.\n", gdb_stdlog);
9435             }
9436           else
9437             {
9438               /* We've found the start of a packet or notification.
9439                  Now collect the data.  */
9440               val = read_frame (buf, sizeof_buf);
9441               if (val >= 0)
9442                 break;
9443             }
9444
9445           remote_serial_write ("-", 1);
9446         }
9447
9448       if (tries > MAX_TRIES)
9449         {
9450           /* We have tried hard enough, and just can't receive the
9451              packet/notification.  Give up.  */
9452           printf_unfiltered (_("Ignoring packet error, continuing...\n"));
9453
9454           /* Skip the ack char if we're in no-ack mode.  */
9455           if (!rs->noack_mode)
9456             remote_serial_write ("+", 1);
9457           return -1;
9458         }
9459
9460       /* If we got an ordinary packet, return that to our caller.  */
9461       if (c == '$')
9462         {
9463           if (remote_debug)
9464             {
9465               std::string str
9466                 = escape_buffer (*buf,
9467                                  std::min (val, REMOTE_DEBUG_MAX_CHAR));
9468
9469               fprintf_unfiltered (gdb_stdlog, "Packet received: %s",
9470                                   str.c_str ());
9471
9472               if (val > REMOTE_DEBUG_MAX_CHAR)
9473                 fprintf_unfiltered (gdb_stdlog, "[%d bytes omitted]",
9474                                     val - REMOTE_DEBUG_MAX_CHAR);
9475
9476               fprintf_unfiltered (gdb_stdlog, "\n");
9477             }
9478
9479           /* Skip the ack char if we're in no-ack mode.  */
9480           if (!rs->noack_mode)
9481             remote_serial_write ("+", 1);
9482           if (is_notif != NULL)
9483             *is_notif = 0;
9484           return val;
9485         }
9486
9487        /* If we got a notification, handle it, and go back to looking
9488          for a packet.  */
9489       else
9490         {
9491           gdb_assert (c == '%');
9492
9493           if (remote_debug)
9494             {
9495               std::string str = escape_buffer (*buf, val);
9496
9497               fprintf_unfiltered (gdb_stdlog,
9498                                   "  Notification received: %s\n",
9499                                   str.c_str ());
9500             }
9501           if (is_notif != NULL)
9502             *is_notif = 1;
9503
9504           handle_notification (rs->notif_state, *buf);
9505
9506           /* Notifications require no acknowledgement.  */
9507
9508           if (expecting_notif)
9509             return val;
9510         }
9511     }
9512 }
9513
9514 static int
9515 getpkt_sane (char **buf, long *sizeof_buf, int forever)
9516 {
9517   return getpkt_or_notif_sane_1 (buf, sizeof_buf, forever, 0, NULL);
9518 }
9519
9520 static int
9521 getpkt_or_notif_sane (char **buf, long *sizeof_buf, int forever,
9522                       int *is_notif)
9523 {
9524   return getpkt_or_notif_sane_1 (buf, sizeof_buf, forever, 1,
9525                                  is_notif);
9526 }
9527
9528 /* Check whether EVENT is a fork event for the process specified
9529    by the pid passed in DATA, and if it is, kill the fork child.  */
9530
9531 static int
9532 kill_child_of_pending_fork (QUEUE (stop_reply_p) *q,
9533                             QUEUE_ITER (stop_reply_p) *iter,
9534                             stop_reply_p event,
9535                             void *data)
9536 {
9537   struct queue_iter_param *param = (struct queue_iter_param *) data;
9538   int parent_pid = *(int *) param->input;
9539
9540   if (is_pending_fork_parent (&event->ws, parent_pid, event->ptid))
9541     {
9542       struct remote_state *rs = get_remote_state ();
9543       int child_pid = ptid_get_pid (event->ws.value.related_pid);
9544       int res;
9545
9546       res = remote_vkill (child_pid, rs);
9547       if (res != 0)
9548         error (_("Can't kill fork child process %d"), child_pid);
9549     }
9550
9551   return 1;
9552 }
9553
9554 /* Kill any new fork children of process PID that haven't been
9555    processed by follow_fork.  */
9556
9557 static void
9558 kill_new_fork_children (int pid, struct remote_state *rs)
9559 {
9560   struct thread_info *thread;
9561   struct notif_client *notif = &notif_client_stop;
9562   struct queue_iter_param param;
9563
9564   /* Kill the fork child threads of any threads in process PID
9565      that are stopped at a fork event.  */
9566   ALL_NON_EXITED_THREADS (thread)
9567     {
9568       struct target_waitstatus *ws = &thread->pending_follow;
9569
9570       if (is_pending_fork_parent (ws, pid, thread->ptid))
9571         {
9572           struct remote_state *rs = get_remote_state ();
9573           int child_pid = ptid_get_pid (ws->value.related_pid);
9574           int res;
9575
9576           res = remote_vkill (child_pid, rs);
9577           if (res != 0)
9578             error (_("Can't kill fork child process %d"), child_pid);
9579         }
9580     }
9581
9582   /* Check for any pending fork events (not reported or processed yet)
9583      in process PID and kill those fork child threads as well.  */
9584   remote_notif_get_pending_events (notif);
9585   param.input = &pid;
9586   param.output = NULL;
9587   QUEUE_iterate (stop_reply_p, stop_reply_queue,
9588                  kill_child_of_pending_fork, &param);
9589 }
9590
9591 \f
9592 /* Target hook to kill the current inferior.  */
9593
9594 void
9595 remote_target::kill ()
9596 {
9597   int res = -1;
9598   int pid = ptid_get_pid (inferior_ptid);
9599   struct remote_state *rs = get_remote_state ();
9600
9601   if (packet_support (PACKET_vKill) != PACKET_DISABLE)
9602     {
9603       /* If we're stopped while forking and we haven't followed yet,
9604          kill the child task.  We need to do this before killing the
9605          parent task because if this is a vfork then the parent will
9606          be sleeping.  */
9607       kill_new_fork_children (pid, rs);
9608
9609       res = remote_vkill (pid, rs);
9610       if (res == 0)
9611         {
9612           target_mourn_inferior (inferior_ptid);
9613           return;
9614         }
9615     }
9616
9617   /* If we are in 'target remote' mode and we are killing the only
9618      inferior, then we will tell gdbserver to exit and unpush the
9619      target.  */
9620   if (res == -1 && !remote_multi_process_p (rs)
9621       && number_of_live_inferiors () == 1)
9622     {
9623       remote_kill_k ();
9624
9625       /* We've killed the remote end, we get to mourn it.  If we are
9626          not in extended mode, mourning the inferior also unpushes
9627          remote_ops from the target stack, which closes the remote
9628          connection.  */
9629       target_mourn_inferior (inferior_ptid);
9630
9631       return;
9632     }
9633
9634   error (_("Can't kill process"));
9635 }
9636
9637 /* Send a kill request to the target using the 'vKill' packet.  */
9638
9639 static int
9640 remote_vkill (int pid, struct remote_state *rs)
9641 {
9642   if (packet_support (PACKET_vKill) == PACKET_DISABLE)
9643     return -1;
9644
9645   /* Tell the remote target to detach.  */
9646   xsnprintf (rs->buf, get_remote_packet_size (), "vKill;%x", pid);
9647   putpkt (rs->buf);
9648   getpkt (&rs->buf, &rs->buf_size, 0);
9649
9650   switch (packet_ok (rs->buf,
9651                      &remote_protocol_packets[PACKET_vKill]))
9652     {
9653     case PACKET_OK:
9654       return 0;
9655     case PACKET_ERROR:
9656       return 1;
9657     case PACKET_UNKNOWN:
9658       return -1;
9659     default:
9660       internal_error (__FILE__, __LINE__, _("Bad result from packet_ok"));
9661     }
9662 }
9663
9664 /* Send a kill request to the target using the 'k' packet.  */
9665
9666 static void
9667 remote_kill_k (void)
9668 {
9669   /* Catch errors so the user can quit from gdb even when we
9670      aren't on speaking terms with the remote system.  */
9671   TRY
9672     {
9673       putpkt ("k");
9674     }
9675   CATCH (ex, RETURN_MASK_ERROR)
9676     {
9677       if (ex.error == TARGET_CLOSE_ERROR)
9678         {
9679           /* If we got an (EOF) error that caused the target
9680              to go away, then we're done, that's what we wanted.
9681              "k" is susceptible to cause a premature EOF, given
9682              that the remote server isn't actually required to
9683              reply to "k", and it can happen that it doesn't
9684              even get to reply ACK to the "k".  */
9685           return;
9686         }
9687
9688       /* Otherwise, something went wrong.  We didn't actually kill
9689          the target.  Just propagate the exception, and let the
9690          user or higher layers decide what to do.  */
9691       throw_exception (ex);
9692     }
9693   END_CATCH
9694 }
9695
9696 void
9697 remote_target::mourn_inferior ()
9698 {
9699   struct remote_state *rs = get_remote_state ();
9700
9701   /* We're no longer interested in notification events of an inferior
9702      that exited or was killed/detached.  */
9703   discard_pending_stop_replies (current_inferior ());
9704
9705   /* In 'target remote' mode with one inferior, we close the connection.  */
9706   if (!rs->extended && number_of_live_inferiors () <= 1)
9707     {
9708       unpush_target (this);
9709
9710       /* remote_close takes care of doing most of the clean up.  */
9711       generic_mourn_inferior ();
9712       return;
9713     }
9714
9715   /* In case we got here due to an error, but we're going to stay
9716      connected.  */
9717   rs->waiting_for_stop_reply = 0;
9718
9719   /* If the current general thread belonged to the process we just
9720      detached from or has exited, the remote side current general
9721      thread becomes undefined.  Considering a case like this:
9722
9723      - We just got here due to a detach.
9724      - The process that we're detaching from happens to immediately
9725        report a global breakpoint being hit in non-stop mode, in the
9726        same thread we had selected before.
9727      - GDB attaches to this process again.
9728      - This event happens to be the next event we handle.
9729
9730      GDB would consider that the current general thread didn't need to
9731      be set on the stub side (with Hg), since for all it knew,
9732      GENERAL_THREAD hadn't changed.
9733
9734      Notice that although in all-stop mode, the remote server always
9735      sets the current thread to the thread reporting the stop event,
9736      that doesn't happen in non-stop mode; in non-stop, the stub *must
9737      not* change the current thread when reporting a breakpoint hit,
9738      due to the decoupling of event reporting and event handling.
9739
9740      To keep things simple, we always invalidate our notion of the
9741      current thread.  */
9742   record_currthread (rs, minus_one_ptid);
9743
9744   /* Call common code to mark the inferior as not running.  */
9745   generic_mourn_inferior ();
9746
9747   if (!have_inferiors ())
9748     {
9749       if (!remote_multi_process_p (rs))
9750         {
9751           /* Check whether the target is running now - some remote stubs
9752              automatically restart after kill.  */
9753           putpkt ("?");
9754           getpkt (&rs->buf, &rs->buf_size, 0);
9755
9756           if (rs->buf[0] == 'S' || rs->buf[0] == 'T')
9757             {
9758               /* Assume that the target has been restarted.  Set
9759                  inferior_ptid so that bits of core GDB realizes
9760                  there's something here, e.g., so that the user can
9761                  say "kill" again.  */
9762               inferior_ptid = magic_null_ptid;
9763             }
9764         }
9765     }
9766 }
9767
9768 bool
9769 extended_remote_target::supports_disable_randomization ()
9770 {
9771   return packet_support (PACKET_QDisableRandomization) == PACKET_ENABLE;
9772 }
9773
9774 static void
9775 extended_remote_disable_randomization (int val)
9776 {
9777   struct remote_state *rs = get_remote_state ();
9778   char *reply;
9779
9780   xsnprintf (rs->buf, get_remote_packet_size (), "QDisableRandomization:%x",
9781              val);
9782   putpkt (rs->buf);
9783   reply = remote_get_noisy_reply ();
9784   if (*reply == '\0')
9785     error (_("Target does not support QDisableRandomization."));
9786   if (strcmp (reply, "OK") != 0)
9787     error (_("Bogus QDisableRandomization reply from target: %s"), reply);
9788 }
9789
9790 static int
9791 extended_remote_run (const std::string &args)
9792 {
9793   struct remote_state *rs = get_remote_state ();
9794   int len;
9795   const char *remote_exec_file = get_remote_exec_file ();
9796
9797   /* If the user has disabled vRun support, or we have detected that
9798      support is not available, do not try it.  */
9799   if (packet_support (PACKET_vRun) == PACKET_DISABLE)
9800     return -1;
9801
9802   strcpy (rs->buf, "vRun;");
9803   len = strlen (rs->buf);
9804
9805   if (strlen (remote_exec_file) * 2 + len >= get_remote_packet_size ())
9806     error (_("Remote file name too long for run packet"));
9807   len += 2 * bin2hex ((gdb_byte *) remote_exec_file, rs->buf + len,
9808                       strlen (remote_exec_file));
9809
9810   if (!args.empty ())
9811     {
9812       int i;
9813
9814       gdb_argv argv (args.c_str ());
9815       for (i = 0; argv[i] != NULL; i++)
9816         {
9817           if (strlen (argv[i]) * 2 + 1 + len >= get_remote_packet_size ())
9818             error (_("Argument list too long for run packet"));
9819           rs->buf[len++] = ';';
9820           len += 2 * bin2hex ((gdb_byte *) argv[i], rs->buf + len,
9821                               strlen (argv[i]));
9822         }
9823     }
9824
9825   rs->buf[len++] = '\0';
9826
9827   putpkt (rs->buf);
9828   getpkt (&rs->buf, &rs->buf_size, 0);
9829
9830   switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_vRun]))
9831     {
9832     case PACKET_OK:
9833       /* We have a wait response.  All is well.  */
9834       return 0;
9835     case PACKET_UNKNOWN:
9836       return -1;
9837     case PACKET_ERROR:
9838       if (remote_exec_file[0] == '\0')
9839         error (_("Running the default executable on the remote target failed; "
9840                  "try \"set remote exec-file\"?"));
9841       else
9842         error (_("Running \"%s\" on the remote target failed"),
9843                remote_exec_file);
9844     default:
9845       gdb_assert_not_reached (_("bad switch"));
9846     }
9847 }
9848
9849 /* Helper function to send set/unset environment packets.  ACTION is
9850    either "set" or "unset".  PACKET is either "QEnvironmentHexEncoded"
9851    or "QEnvironmentUnsetVariable".  VALUE is the variable to be
9852    sent.  */
9853
9854 static void
9855 send_environment_packet (struct remote_state *rs,
9856                          const char *action,
9857                          const char *packet,
9858                          const char *value)
9859 {
9860   /* Convert the environment variable to an hex string, which
9861      is the best format to be transmitted over the wire.  */
9862   std::string encoded_value = bin2hex ((const gdb_byte *) value,
9863                                          strlen (value));
9864
9865   xsnprintf (rs->buf, get_remote_packet_size (),
9866              "%s:%s", packet, encoded_value.c_str ());
9867
9868   putpkt (rs->buf);
9869   getpkt (&rs->buf, &rs->buf_size, 0);
9870   if (strcmp (rs->buf, "OK") != 0)
9871     warning (_("Unable to %s environment variable '%s' on remote."),
9872              action, value);
9873 }
9874
9875 /* Helper function to handle the QEnvironment* packets.  */
9876
9877 static void
9878 extended_remote_environment_support (struct remote_state *rs)
9879 {
9880   if (packet_support (PACKET_QEnvironmentReset) != PACKET_DISABLE)
9881     {
9882       putpkt ("QEnvironmentReset");
9883       getpkt (&rs->buf, &rs->buf_size, 0);
9884       if (strcmp (rs->buf, "OK") != 0)
9885         warning (_("Unable to reset environment on remote."));
9886     }
9887
9888   gdb_environ *e = &current_inferior ()->environment;
9889
9890   if (packet_support (PACKET_QEnvironmentHexEncoded) != PACKET_DISABLE)
9891     for (const std::string &el : e->user_set_env ())
9892       send_environment_packet (rs, "set", "QEnvironmentHexEncoded",
9893                                el.c_str ());
9894
9895   if (packet_support (PACKET_QEnvironmentUnset) != PACKET_DISABLE)
9896     for (const std::string &el : e->user_unset_env ())
9897       send_environment_packet (rs, "unset", "QEnvironmentUnset", el.c_str ());
9898 }
9899
9900 /* Helper function to set the current working directory for the
9901    inferior in the remote target.  */
9902
9903 static void
9904 extended_remote_set_inferior_cwd (struct remote_state *rs)
9905 {
9906   if (packet_support (PACKET_QSetWorkingDir) != PACKET_DISABLE)
9907     {
9908       const char *inferior_cwd = get_inferior_cwd ();
9909
9910       if (inferior_cwd != NULL)
9911         {
9912           std::string hexpath = bin2hex ((const gdb_byte *) inferior_cwd,
9913                                          strlen (inferior_cwd));
9914
9915           xsnprintf (rs->buf, get_remote_packet_size (),
9916                      "QSetWorkingDir:%s", hexpath.c_str ());
9917         }
9918       else
9919         {
9920           /* An empty inferior_cwd means that the user wants us to
9921              reset the remote server's inferior's cwd.  */
9922           xsnprintf (rs->buf, get_remote_packet_size (),
9923                      "QSetWorkingDir:");
9924         }
9925
9926       putpkt (rs->buf);
9927       getpkt (&rs->buf, &rs->buf_size, 0);
9928       if (packet_ok (rs->buf,
9929                      &remote_protocol_packets[PACKET_QSetWorkingDir])
9930           != PACKET_OK)
9931         error (_("\
9932 Remote replied unexpectedly while setting the inferior's working\n\
9933 directory: %s"),
9934                rs->buf);
9935
9936     }
9937 }
9938
9939 /* In the extended protocol we want to be able to do things like
9940    "run" and have them basically work as expected.  So we need
9941    a special create_inferior function.  We support changing the
9942    executable file and the command line arguments, but not the
9943    environment.  */
9944
9945 void
9946 extended_remote_target::create_inferior (const char *exec_file,
9947                                          const std::string &args,
9948                                          char **env, int from_tty)
9949 {
9950   int run_worked;
9951   char *stop_reply;
9952   struct remote_state *rs = get_remote_state ();
9953   const char *remote_exec_file = get_remote_exec_file ();
9954
9955   /* If running asynchronously, register the target file descriptor
9956      with the event loop.  */
9957   if (target_can_async_p ())
9958     target_async (1);
9959
9960   /* Disable address space randomization if requested (and supported).  */
9961   if (supports_disable_randomization ())
9962     extended_remote_disable_randomization (disable_randomization);
9963
9964   /* If startup-with-shell is on, we inform gdbserver to start the
9965      remote inferior using a shell.  */
9966   if (packet_support (PACKET_QStartupWithShell) != PACKET_DISABLE)
9967     {
9968       xsnprintf (rs->buf, get_remote_packet_size (),
9969                  "QStartupWithShell:%d", startup_with_shell ? 1 : 0);
9970       putpkt (rs->buf);
9971       getpkt (&rs->buf, &rs->buf_size, 0);
9972       if (strcmp (rs->buf, "OK") != 0)
9973         error (_("\
9974 Remote replied unexpectedly while setting startup-with-shell: %s"),
9975                rs->buf);
9976     }
9977
9978   extended_remote_environment_support (rs);
9979
9980   extended_remote_set_inferior_cwd (rs);
9981
9982   /* Now restart the remote server.  */
9983   run_worked = extended_remote_run (args) != -1;
9984   if (!run_worked)
9985     {
9986       /* vRun was not supported.  Fail if we need it to do what the
9987          user requested.  */
9988       if (remote_exec_file[0])
9989         error (_("Remote target does not support \"set remote exec-file\""));
9990       if (!args.empty ())
9991         error (_("Remote target does not support \"set args\" or run <ARGS>"));
9992
9993       /* Fall back to "R".  */
9994       extended_remote_restart ();
9995     }
9996
9997   if (!have_inferiors ())
9998     {
9999       /* Clean up from the last time we ran, before we mark the target
10000          running again.  This will mark breakpoints uninserted, and
10001          get_offsets may insert breakpoints.  */
10002       init_thread_list ();
10003       init_wait_for_inferior ();
10004     }
10005
10006   /* vRun's success return is a stop reply.  */
10007   stop_reply = run_worked ? rs->buf : NULL;
10008   add_current_inferior_and_thread (stop_reply);
10009
10010   /* Get updated offsets, if the stub uses qOffsets.  */
10011   get_offsets ();
10012 }
10013 \f
10014
10015 /* Given a location's target info BP_TGT and the packet buffer BUF,  output
10016    the list of conditions (in agent expression bytecode format), if any, the
10017    target needs to evaluate.  The output is placed into the packet buffer
10018    started from BUF and ended at BUF_END.  */
10019
10020 static int
10021 remote_add_target_side_condition (struct gdbarch *gdbarch,
10022                                   struct bp_target_info *bp_tgt, char *buf,
10023                                   char *buf_end)
10024 {
10025   if (bp_tgt->conditions.empty ())
10026     return 0;
10027
10028   buf += strlen (buf);
10029   xsnprintf (buf, buf_end - buf, "%s", ";");
10030   buf++;
10031
10032   /* Send conditions to the target.  */
10033   for (agent_expr *aexpr : bp_tgt->conditions)
10034     {
10035       xsnprintf (buf, buf_end - buf, "X%x,", aexpr->len);
10036       buf += strlen (buf);
10037       for (int i = 0; i < aexpr->len; ++i)
10038         buf = pack_hex_byte (buf, aexpr->buf[i]);
10039       *buf = '\0';
10040     }
10041   return 0;
10042 }
10043
10044 static void
10045 remote_add_target_side_commands (struct gdbarch *gdbarch,
10046                                  struct bp_target_info *bp_tgt, char *buf)
10047 {
10048   if (bp_tgt->tcommands.empty ())
10049     return;
10050
10051   buf += strlen (buf);
10052
10053   sprintf (buf, ";cmds:%x,", bp_tgt->persist);
10054   buf += strlen (buf);
10055
10056   /* Concatenate all the agent expressions that are commands into the
10057      cmds parameter.  */
10058   for (agent_expr *aexpr : bp_tgt->tcommands)
10059     {
10060       sprintf (buf, "X%x,", aexpr->len);
10061       buf += strlen (buf);
10062       for (int i = 0; i < aexpr->len; ++i)
10063         buf = pack_hex_byte (buf, aexpr->buf[i]);
10064       *buf = '\0';
10065     }
10066 }
10067
10068 /* Insert a breakpoint.  On targets that have software breakpoint
10069    support, we ask the remote target to do the work; on targets
10070    which don't, we insert a traditional memory breakpoint.  */
10071
10072 int
10073 remote_target::insert_breakpoint (struct gdbarch *gdbarch,
10074                                   struct bp_target_info *bp_tgt)
10075 {
10076   /* Try the "Z" s/w breakpoint packet if it is not already disabled.
10077      If it succeeds, then set the support to PACKET_ENABLE.  If it
10078      fails, and the user has explicitly requested the Z support then
10079      report an error, otherwise, mark it disabled and go on.  */
10080
10081   if (packet_support (PACKET_Z0) != PACKET_DISABLE)
10082     {
10083       CORE_ADDR addr = bp_tgt->reqstd_address;
10084       struct remote_state *rs;
10085       char *p, *endbuf;
10086
10087       /* Make sure the remote is pointing at the right process, if
10088          necessary.  */
10089       if (!gdbarch_has_global_breakpoints (target_gdbarch ()))
10090         set_general_process ();
10091
10092       rs = get_remote_state ();
10093       p = rs->buf;
10094       endbuf = rs->buf + get_remote_packet_size ();
10095
10096       *(p++) = 'Z';
10097       *(p++) = '0';
10098       *(p++) = ',';
10099       addr = (ULONGEST) remote_address_masked (addr);
10100       p += hexnumstr (p, addr);
10101       xsnprintf (p, endbuf - p, ",%d", bp_tgt->kind);
10102
10103       if (supports_evaluation_of_breakpoint_conditions ())
10104         remote_add_target_side_condition (gdbarch, bp_tgt, p, endbuf);
10105
10106       if (can_run_breakpoint_commands ())
10107         remote_add_target_side_commands (gdbarch, bp_tgt, p);
10108
10109       putpkt (rs->buf);
10110       getpkt (&rs->buf, &rs->buf_size, 0);
10111
10112       switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_Z0]))
10113         {
10114         case PACKET_ERROR:
10115           return -1;
10116         case PACKET_OK:
10117           return 0;
10118         case PACKET_UNKNOWN:
10119           break;
10120         }
10121     }
10122
10123   /* If this breakpoint has target-side commands but this stub doesn't
10124      support Z0 packets, throw error.  */
10125   if (!bp_tgt->tcommands.empty ())
10126     throw_error (NOT_SUPPORTED_ERROR, _("\
10127 Target doesn't support breakpoints that have target side commands."));
10128
10129   return memory_insert_breakpoint (this, gdbarch, bp_tgt);
10130 }
10131
10132 int
10133 remote_target::remove_breakpoint (struct gdbarch *gdbarch,
10134                                   struct bp_target_info *bp_tgt,
10135                                   enum remove_bp_reason reason)
10136 {
10137   CORE_ADDR addr = bp_tgt->placed_address;
10138   struct remote_state *rs = get_remote_state ();
10139
10140   if (packet_support (PACKET_Z0) != PACKET_DISABLE)
10141     {
10142       char *p = rs->buf;
10143       char *endbuf = rs->buf + get_remote_packet_size ();
10144
10145       /* Make sure the remote is pointing at the right process, if
10146          necessary.  */
10147       if (!gdbarch_has_global_breakpoints (target_gdbarch ()))
10148         set_general_process ();
10149
10150       *(p++) = 'z';
10151       *(p++) = '0';
10152       *(p++) = ',';
10153
10154       addr = (ULONGEST) remote_address_masked (bp_tgt->placed_address);
10155       p += hexnumstr (p, addr);
10156       xsnprintf (p, endbuf - p, ",%d", bp_tgt->kind);
10157
10158       putpkt (rs->buf);
10159       getpkt (&rs->buf, &rs->buf_size, 0);
10160
10161       return (rs->buf[0] == 'E');
10162     }
10163
10164   return memory_remove_breakpoint (this, gdbarch, bp_tgt, reason);
10165 }
10166
10167 static enum Z_packet_type
10168 watchpoint_to_Z_packet (int type)
10169 {
10170   switch (type)
10171     {
10172     case hw_write:
10173       return Z_PACKET_WRITE_WP;
10174       break;
10175     case hw_read:
10176       return Z_PACKET_READ_WP;
10177       break;
10178     case hw_access:
10179       return Z_PACKET_ACCESS_WP;
10180       break;
10181     default:
10182       internal_error (__FILE__, __LINE__,
10183                       _("hw_bp_to_z: bad watchpoint type %d"), type);
10184     }
10185 }
10186
10187 int
10188 remote_target::insert_watchpoint (CORE_ADDR addr, int len,
10189                                   enum target_hw_bp_type type, struct expression *cond)
10190 {
10191   struct remote_state *rs = get_remote_state ();
10192   char *endbuf = rs->buf + get_remote_packet_size ();
10193   char *p;
10194   enum Z_packet_type packet = watchpoint_to_Z_packet (type);
10195
10196   if (packet_support (PACKET_Z0 + packet) == PACKET_DISABLE)
10197     return 1;
10198
10199   /* Make sure the remote is pointing at the right process, if
10200      necessary.  */
10201   if (!gdbarch_has_global_breakpoints (target_gdbarch ()))
10202     set_general_process ();
10203
10204   xsnprintf (rs->buf, endbuf - rs->buf, "Z%x,", packet);
10205   p = strchr (rs->buf, '\0');
10206   addr = remote_address_masked (addr);
10207   p += hexnumstr (p, (ULONGEST) addr);
10208   xsnprintf (p, endbuf - p, ",%x", len);
10209
10210   putpkt (rs->buf);
10211   getpkt (&rs->buf, &rs->buf_size, 0);
10212
10213   switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_Z0 + packet]))
10214     {
10215     case PACKET_ERROR:
10216       return -1;
10217     case PACKET_UNKNOWN:
10218       return 1;
10219     case PACKET_OK:
10220       return 0;
10221     }
10222   internal_error (__FILE__, __LINE__,
10223                   _("remote_insert_watchpoint: reached end of function"));
10224 }
10225
10226 bool
10227 remote_target::watchpoint_addr_within_range (CORE_ADDR addr,
10228                                              CORE_ADDR start, int length)
10229 {
10230   CORE_ADDR diff = remote_address_masked (addr - start);
10231
10232   return diff < length;
10233 }
10234
10235
10236 int
10237 remote_target::remove_watchpoint (CORE_ADDR addr, int len,
10238                                   enum target_hw_bp_type type, struct expression *cond)
10239 {
10240   struct remote_state *rs = get_remote_state ();
10241   char *endbuf = rs->buf + get_remote_packet_size ();
10242   char *p;
10243   enum Z_packet_type packet = watchpoint_to_Z_packet (type);
10244
10245   if (packet_support (PACKET_Z0 + packet) == PACKET_DISABLE)
10246     return -1;
10247
10248   /* Make sure the remote is pointing at the right process, if
10249      necessary.  */
10250   if (!gdbarch_has_global_breakpoints (target_gdbarch ()))
10251     set_general_process ();
10252
10253   xsnprintf (rs->buf, endbuf - rs->buf, "z%x,", packet);
10254   p = strchr (rs->buf, '\0');
10255   addr = remote_address_masked (addr);
10256   p += hexnumstr (p, (ULONGEST) addr);
10257   xsnprintf (p, endbuf - p, ",%x", len);
10258   putpkt (rs->buf);
10259   getpkt (&rs->buf, &rs->buf_size, 0);
10260
10261   switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_Z0 + packet]))
10262     {
10263     case PACKET_ERROR:
10264     case PACKET_UNKNOWN:
10265       return -1;
10266     case PACKET_OK:
10267       return 0;
10268     }
10269   internal_error (__FILE__, __LINE__,
10270                   _("remote_remove_watchpoint: reached end of function"));
10271 }
10272
10273
10274 int remote_hw_watchpoint_limit = -1;
10275 int remote_hw_watchpoint_length_limit = -1;
10276 int remote_hw_breakpoint_limit = -1;
10277
10278 int
10279 remote_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
10280 {
10281   if (remote_hw_watchpoint_length_limit == 0)
10282     return 0;
10283   else if (remote_hw_watchpoint_length_limit < 0)
10284     return 1;
10285   else if (len <= remote_hw_watchpoint_length_limit)
10286     return 1;
10287   else
10288     return 0;
10289 }
10290
10291 int
10292 remote_target::can_use_hw_breakpoint (enum bptype type, int cnt, int ot)
10293 {
10294   if (type == bp_hardware_breakpoint)
10295     {
10296       if (remote_hw_breakpoint_limit == 0)
10297         return 0;
10298       else if (remote_hw_breakpoint_limit < 0)
10299         return 1;
10300       else if (cnt <= remote_hw_breakpoint_limit)
10301         return 1;
10302     }
10303   else
10304     {
10305       if (remote_hw_watchpoint_limit == 0)
10306         return 0;
10307       else if (remote_hw_watchpoint_limit < 0)
10308         return 1;
10309       else if (ot)
10310         return -1;
10311       else if (cnt <= remote_hw_watchpoint_limit)
10312         return 1;
10313     }
10314   return -1;
10315 }
10316
10317 /* The to_stopped_by_sw_breakpoint method of target remote.  */
10318
10319 bool
10320 remote_target::stopped_by_sw_breakpoint ()
10321 {
10322   struct thread_info *thread = inferior_thread ();
10323
10324   return (thread->priv != NULL
10325           && (get_remote_thread_info (thread)->stop_reason
10326               == TARGET_STOPPED_BY_SW_BREAKPOINT));
10327 }
10328
10329 /* The to_supports_stopped_by_sw_breakpoint method of target
10330    remote.  */
10331
10332 bool
10333 remote_target::supports_stopped_by_sw_breakpoint ()
10334 {
10335   return (packet_support (PACKET_swbreak_feature) == PACKET_ENABLE);
10336 }
10337
10338 /* The to_stopped_by_hw_breakpoint method of target remote.  */
10339
10340 bool
10341 remote_target::stopped_by_hw_breakpoint ()
10342 {
10343   struct thread_info *thread = inferior_thread ();
10344
10345   return (thread->priv != NULL
10346           && (get_remote_thread_info (thread)->stop_reason
10347               == TARGET_STOPPED_BY_HW_BREAKPOINT));
10348 }
10349
10350 /* The to_supports_stopped_by_hw_breakpoint method of target
10351    remote.  */
10352
10353 bool
10354 remote_target::supports_stopped_by_hw_breakpoint ()
10355 {
10356   return (packet_support (PACKET_hwbreak_feature) == PACKET_ENABLE);
10357 }
10358
10359 bool
10360 remote_target::stopped_by_watchpoint ()
10361 {
10362   struct thread_info *thread = inferior_thread ();
10363
10364   return (thread->priv != NULL
10365           && (get_remote_thread_info (thread)->stop_reason
10366               == TARGET_STOPPED_BY_WATCHPOINT));
10367 }
10368
10369 bool
10370 remote_target::stopped_data_address (CORE_ADDR *addr_p)
10371 {
10372   struct thread_info *thread = inferior_thread ();
10373
10374   if (thread->priv != NULL
10375       && (get_remote_thread_info (thread)->stop_reason
10376           == TARGET_STOPPED_BY_WATCHPOINT))
10377     {
10378       *addr_p = get_remote_thread_info (thread)->watch_data_address;
10379       return true;
10380     }
10381
10382   return false;
10383 }
10384
10385
10386 int
10387 remote_target::insert_hw_breakpoint (struct gdbarch *gdbarch,
10388                                      struct bp_target_info *bp_tgt)
10389 {
10390   CORE_ADDR addr = bp_tgt->reqstd_address;
10391   struct remote_state *rs;
10392   char *p, *endbuf;
10393   char *message;
10394
10395   if (packet_support (PACKET_Z1) == PACKET_DISABLE)
10396     return -1;
10397
10398   /* Make sure the remote is pointing at the right process, if
10399      necessary.  */
10400   if (!gdbarch_has_global_breakpoints (target_gdbarch ()))
10401     set_general_process ();
10402
10403   rs = get_remote_state ();
10404   p = rs->buf;
10405   endbuf = rs->buf + get_remote_packet_size ();
10406
10407   *(p++) = 'Z';
10408   *(p++) = '1';
10409   *(p++) = ',';
10410
10411   addr = remote_address_masked (addr);
10412   p += hexnumstr (p, (ULONGEST) addr);
10413   xsnprintf (p, endbuf - p, ",%x", bp_tgt->kind);
10414
10415   if (supports_evaluation_of_breakpoint_conditions ())
10416     remote_add_target_side_condition (gdbarch, bp_tgt, p, endbuf);
10417
10418   if (can_run_breakpoint_commands ())
10419     remote_add_target_side_commands (gdbarch, bp_tgt, p);
10420
10421   putpkt (rs->buf);
10422   getpkt (&rs->buf, &rs->buf_size, 0);
10423
10424   switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_Z1]))
10425     {
10426     case PACKET_ERROR:
10427       if (rs->buf[1] == '.')
10428         {
10429           message = strchr (rs->buf + 2, '.');
10430           if (message)
10431             error (_("Remote failure reply: %s"), message + 1);
10432         }
10433       return -1;
10434     case PACKET_UNKNOWN:
10435       return -1;
10436     case PACKET_OK:
10437       return 0;
10438     }
10439   internal_error (__FILE__, __LINE__,
10440                   _("remote_insert_hw_breakpoint: reached end of function"));
10441 }
10442
10443
10444 int
10445 remote_target::remove_hw_breakpoint (struct gdbarch *gdbarch,
10446                                      struct bp_target_info *bp_tgt)
10447 {
10448   CORE_ADDR addr;
10449   struct remote_state *rs = get_remote_state ();
10450   char *p = rs->buf;
10451   char *endbuf = rs->buf + get_remote_packet_size ();
10452
10453   if (packet_support (PACKET_Z1) == PACKET_DISABLE)
10454     return -1;
10455
10456   /* Make sure the remote is pointing at the right process, if
10457      necessary.  */
10458   if (!gdbarch_has_global_breakpoints (target_gdbarch ()))
10459     set_general_process ();
10460
10461   *(p++) = 'z';
10462   *(p++) = '1';
10463   *(p++) = ',';
10464
10465   addr = remote_address_masked (bp_tgt->placed_address);
10466   p += hexnumstr (p, (ULONGEST) addr);
10467   xsnprintf (p, endbuf  - p, ",%x", bp_tgt->kind);
10468
10469   putpkt (rs->buf);
10470   getpkt (&rs->buf, &rs->buf_size, 0);
10471
10472   switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_Z1]))
10473     {
10474     case PACKET_ERROR:
10475     case PACKET_UNKNOWN:
10476       return -1;
10477     case PACKET_OK:
10478       return 0;
10479     }
10480   internal_error (__FILE__, __LINE__,
10481                   _("remote_remove_hw_breakpoint: reached end of function"));
10482 }
10483
10484 /* Verify memory using the "qCRC:" request.  */
10485
10486 int
10487 remote_target::verify_memory (const gdb_byte *data, CORE_ADDR lma, ULONGEST size)
10488 {
10489   struct remote_state *rs = get_remote_state ();
10490   unsigned long host_crc, target_crc;
10491   char *tmp;
10492
10493   /* It doesn't make sense to use qCRC if the remote target is
10494      connected but not running.  */
10495   if (target_has_execution && packet_support (PACKET_qCRC) != PACKET_DISABLE)
10496     {
10497       enum packet_result result;
10498
10499       /* Make sure the remote is pointing at the right process.  */
10500       set_general_process ();
10501
10502       /* FIXME: assumes lma can fit into long.  */
10503       xsnprintf (rs->buf, get_remote_packet_size (), "qCRC:%lx,%lx",
10504                  (long) lma, (long) size);
10505       putpkt (rs->buf);
10506
10507       /* Be clever; compute the host_crc before waiting for target
10508          reply.  */
10509       host_crc = xcrc32 (data, size, 0xffffffff);
10510
10511       getpkt (&rs->buf, &rs->buf_size, 0);
10512
10513       result = packet_ok (rs->buf,
10514                           &remote_protocol_packets[PACKET_qCRC]);
10515       if (result == PACKET_ERROR)
10516         return -1;
10517       else if (result == PACKET_OK)
10518         {
10519           for (target_crc = 0, tmp = &rs->buf[1]; *tmp; tmp++)
10520             target_crc = target_crc * 16 + fromhex (*tmp);
10521
10522           return (host_crc == target_crc);
10523         }
10524     }
10525
10526   return simple_verify_memory (this, data, lma, size);
10527 }
10528
10529 /* compare-sections command
10530
10531    With no arguments, compares each loadable section in the exec bfd
10532    with the same memory range on the target, and reports mismatches.
10533    Useful for verifying the image on the target against the exec file.  */
10534
10535 static void
10536 compare_sections_command (const char *args, int from_tty)
10537 {
10538   asection *s;
10539   const char *sectname;
10540   bfd_size_type size;
10541   bfd_vma lma;
10542   int matched = 0;
10543   int mismatched = 0;
10544   int res;
10545   int read_only = 0;
10546
10547   if (!exec_bfd)
10548     error (_("command cannot be used without an exec file"));
10549
10550   if (args != NULL && strcmp (args, "-r") == 0)
10551     {
10552       read_only = 1;
10553       args = NULL;
10554     }
10555
10556   for (s = exec_bfd->sections; s; s = s->next)
10557     {
10558       if (!(s->flags & SEC_LOAD))
10559         continue;               /* Skip non-loadable section.  */
10560
10561       if (read_only && (s->flags & SEC_READONLY) == 0)
10562         continue;               /* Skip writeable sections */
10563
10564       size = bfd_get_section_size (s);
10565       if (size == 0)
10566         continue;               /* Skip zero-length section.  */
10567
10568       sectname = bfd_get_section_name (exec_bfd, s);
10569       if (args && strcmp (args, sectname) != 0)
10570         continue;               /* Not the section selected by user.  */
10571
10572       matched = 1;              /* Do this section.  */
10573       lma = s->lma;
10574
10575       gdb::byte_vector sectdata (size);
10576       bfd_get_section_contents (exec_bfd, s, sectdata.data (), 0, size);
10577
10578       res = target_verify_memory (sectdata.data (), lma, size);
10579
10580       if (res == -1)
10581         error (_("target memory fault, section %s, range %s -- %s"), sectname,
10582                paddress (target_gdbarch (), lma),
10583                paddress (target_gdbarch (), lma + size));
10584
10585       printf_filtered ("Section %s, range %s -- %s: ", sectname,
10586                        paddress (target_gdbarch (), lma),
10587                        paddress (target_gdbarch (), lma + size));
10588       if (res)
10589         printf_filtered ("matched.\n");
10590       else
10591         {
10592           printf_filtered ("MIS-MATCHED!\n");
10593           mismatched++;
10594         }
10595     }
10596   if (mismatched > 0)
10597     warning (_("One or more sections of the target image does not match\n\
10598 the loaded file\n"));
10599   if (args && !matched)
10600     printf_filtered (_("No loaded section named '%s'.\n"), args);
10601 }
10602
10603 /* Write LEN bytes from WRITEBUF into OBJECT_NAME/ANNEX at OFFSET
10604    into remote target.  The number of bytes written to the remote
10605    target is returned, or -1 for error.  */
10606
10607 static enum target_xfer_status
10608 remote_write_qxfer (const char *object_name,
10609                     const char *annex, const gdb_byte *writebuf, 
10610                     ULONGEST offset, LONGEST len, ULONGEST *xfered_len,
10611                     struct packet_config *packet)
10612 {
10613   int i, buf_len;
10614   ULONGEST n;
10615   struct remote_state *rs = get_remote_state ();
10616   int max_size = get_memory_write_packet_size (); 
10617
10618   if (packet_config_support (packet) == PACKET_DISABLE)
10619     return TARGET_XFER_E_IO;
10620
10621   /* Insert header.  */
10622   i = snprintf (rs->buf, max_size, 
10623                 "qXfer:%s:write:%s:%s:",
10624                 object_name, annex ? annex : "",
10625                 phex_nz (offset, sizeof offset));
10626   max_size -= (i + 1);
10627
10628   /* Escape as much data as fits into rs->buf.  */
10629   buf_len = remote_escape_output 
10630     (writebuf, len, 1, (gdb_byte *) rs->buf + i, &max_size, max_size);
10631
10632   if (putpkt_binary (rs->buf, i + buf_len) < 0
10633       || getpkt_sane (&rs->buf, &rs->buf_size, 0) < 0
10634       || packet_ok (rs->buf, packet) != PACKET_OK)
10635     return TARGET_XFER_E_IO;
10636
10637   unpack_varlen_hex (rs->buf, &n);
10638
10639   *xfered_len = n;
10640   return (*xfered_len != 0) ? TARGET_XFER_OK : TARGET_XFER_EOF;
10641 }
10642
10643 /* Read OBJECT_NAME/ANNEX from the remote target using a qXfer packet.
10644    Data at OFFSET, of up to LEN bytes, is read into READBUF; the
10645    number of bytes read is returned, or 0 for EOF, or -1 for error.
10646    The number of bytes read may be less than LEN without indicating an
10647    EOF.  PACKET is checked and updated to indicate whether the remote
10648    target supports this object.  */
10649
10650 static enum target_xfer_status
10651 remote_read_qxfer (const char *object_name,
10652                    const char *annex,
10653                    gdb_byte *readbuf, ULONGEST offset, LONGEST len,
10654                    ULONGEST *xfered_len,
10655                    struct packet_config *packet)
10656 {
10657   struct remote_state *rs = get_remote_state ();
10658   LONGEST i, n, packet_len;
10659
10660   if (packet_config_support (packet) == PACKET_DISABLE)
10661     return TARGET_XFER_E_IO;
10662
10663   /* Check whether we've cached an end-of-object packet that matches
10664      this request.  */
10665   if (rs->finished_object)
10666     {
10667       if (strcmp (object_name, rs->finished_object) == 0
10668           && strcmp (annex ? annex : "", rs->finished_annex) == 0
10669           && offset == rs->finished_offset)
10670         return TARGET_XFER_EOF;
10671
10672
10673       /* Otherwise, we're now reading something different.  Discard
10674          the cache.  */
10675       xfree (rs->finished_object);
10676       xfree (rs->finished_annex);
10677       rs->finished_object = NULL;
10678       rs->finished_annex = NULL;
10679     }
10680
10681   /* Request only enough to fit in a single packet.  The actual data
10682      may not, since we don't know how much of it will need to be escaped;
10683      the target is free to respond with slightly less data.  We subtract
10684      five to account for the response type and the protocol frame.  */
10685   n = std::min<LONGEST> (get_remote_packet_size () - 5, len);
10686   snprintf (rs->buf, get_remote_packet_size () - 4, "qXfer:%s:read:%s:%s,%s",
10687             object_name, annex ? annex : "",
10688             phex_nz (offset, sizeof offset),
10689             phex_nz (n, sizeof n));
10690   i = putpkt (rs->buf);
10691   if (i < 0)
10692     return TARGET_XFER_E_IO;
10693
10694   rs->buf[0] = '\0';
10695   packet_len = getpkt_sane (&rs->buf, &rs->buf_size, 0);
10696   if (packet_len < 0 || packet_ok (rs->buf, packet) != PACKET_OK)
10697     return TARGET_XFER_E_IO;
10698
10699   if (rs->buf[0] != 'l' && rs->buf[0] != 'm')
10700     error (_("Unknown remote qXfer reply: %s"), rs->buf);
10701
10702   /* 'm' means there is (or at least might be) more data after this
10703      batch.  That does not make sense unless there's at least one byte
10704      of data in this reply.  */
10705   if (rs->buf[0] == 'm' && packet_len == 1)
10706     error (_("Remote qXfer reply contained no data."));
10707
10708   /* Got some data.  */
10709   i = remote_unescape_input ((gdb_byte *) rs->buf + 1,
10710                              packet_len - 1, readbuf, n);
10711
10712   /* 'l' is an EOF marker, possibly including a final block of data,
10713      or possibly empty.  If we have the final block of a non-empty
10714      object, record this fact to bypass a subsequent partial read.  */
10715   if (rs->buf[0] == 'l' && offset + i > 0)
10716     {
10717       rs->finished_object = xstrdup (object_name);
10718       rs->finished_annex = xstrdup (annex ? annex : "");
10719       rs->finished_offset = offset + i;
10720     }
10721
10722   if (i == 0)
10723     return TARGET_XFER_EOF;
10724   else
10725     {
10726       *xfered_len = i;
10727       return TARGET_XFER_OK;
10728     }
10729 }
10730
10731 enum target_xfer_status
10732 remote_target::xfer_partial (enum target_object object,
10733                              const char *annex, gdb_byte *readbuf,
10734                              const gdb_byte *writebuf, ULONGEST offset, ULONGEST len,
10735                              ULONGEST *xfered_len)
10736 {
10737   struct remote_state *rs;
10738   int i;
10739   char *p2;
10740   char query_type;
10741   int unit_size = gdbarch_addressable_memory_unit_size (target_gdbarch ());
10742
10743   set_remote_traceframe ();
10744   set_general_thread (inferior_ptid);
10745
10746   rs = get_remote_state ();
10747
10748   /* Handle memory using the standard memory routines.  */
10749   if (object == TARGET_OBJECT_MEMORY)
10750     {
10751       /* If the remote target is connected but not running, we should
10752          pass this request down to a lower stratum (e.g. the executable
10753          file).  */
10754       if (!target_has_execution)
10755         return TARGET_XFER_EOF;
10756
10757       if (writebuf != NULL)
10758         return remote_write_bytes (offset, writebuf, len, unit_size,
10759                                    xfered_len);
10760       else
10761         return remote_read_bytes (this, offset, readbuf, len, unit_size,
10762                                   xfered_len);
10763     }
10764
10765   /* Handle SPU memory using qxfer packets.  */
10766   if (object == TARGET_OBJECT_SPU)
10767     {
10768       if (readbuf)
10769         return remote_read_qxfer ("spu", annex, readbuf, offset, len,
10770                                   xfered_len, &remote_protocol_packets
10771                                   [PACKET_qXfer_spu_read]);
10772       else
10773         return remote_write_qxfer ("spu", annex, writebuf, offset, len,
10774                                    xfered_len, &remote_protocol_packets
10775                                    [PACKET_qXfer_spu_write]);
10776     }
10777
10778   /* Handle extra signal info using qxfer packets.  */
10779   if (object == TARGET_OBJECT_SIGNAL_INFO)
10780     {
10781       if (readbuf)
10782         return remote_read_qxfer ("siginfo", annex, readbuf, offset, len,
10783                                   xfered_len, &remote_protocol_packets
10784                                   [PACKET_qXfer_siginfo_read]);
10785       else
10786         return remote_write_qxfer ("siginfo", annex,
10787                                    writebuf, offset, len, xfered_len,
10788                                    &remote_protocol_packets
10789                                    [PACKET_qXfer_siginfo_write]);
10790     }
10791
10792   if (object == TARGET_OBJECT_STATIC_TRACE_DATA)
10793     {
10794       if (readbuf)
10795         return remote_read_qxfer ("statictrace", annex,
10796                                   readbuf, offset, len, xfered_len,
10797                                   &remote_protocol_packets
10798                                   [PACKET_qXfer_statictrace_read]);
10799       else
10800         return TARGET_XFER_E_IO;
10801     }
10802
10803   /* Only handle flash writes.  */
10804   if (writebuf != NULL)
10805     {
10806       switch (object)
10807         {
10808         case TARGET_OBJECT_FLASH:
10809           return remote_flash_write (this, offset, len, xfered_len,
10810                                      writebuf);
10811
10812         default:
10813           return TARGET_XFER_E_IO;
10814         }
10815     }
10816
10817   /* Map pre-existing objects onto letters.  DO NOT do this for new
10818      objects!!!  Instead specify new query packets.  */
10819   switch (object)
10820     {
10821     case TARGET_OBJECT_AVR:
10822       query_type = 'R';
10823       break;
10824
10825     case TARGET_OBJECT_AUXV:
10826       gdb_assert (annex == NULL);
10827       return remote_read_qxfer ("auxv", annex, readbuf, offset, len,
10828                                 xfered_len,
10829                                 &remote_protocol_packets[PACKET_qXfer_auxv]);
10830
10831     case TARGET_OBJECT_AVAILABLE_FEATURES:
10832       return remote_read_qxfer
10833         ("features", annex, readbuf, offset, len, xfered_len,
10834          &remote_protocol_packets[PACKET_qXfer_features]);
10835
10836     case TARGET_OBJECT_LIBRARIES:
10837       return remote_read_qxfer
10838         ("libraries", annex, readbuf, offset, len, xfered_len,
10839          &remote_protocol_packets[PACKET_qXfer_libraries]);
10840
10841     case TARGET_OBJECT_LIBRARIES_SVR4:
10842       return remote_read_qxfer
10843         ("libraries-svr4", annex, readbuf, offset, len, xfered_len,
10844          &remote_protocol_packets[PACKET_qXfer_libraries_svr4]);
10845
10846     case TARGET_OBJECT_MEMORY_MAP:
10847       gdb_assert (annex == NULL);
10848       return remote_read_qxfer ("memory-map", annex, readbuf, offset, len,
10849                                  xfered_len,
10850                                 &remote_protocol_packets[PACKET_qXfer_memory_map]);
10851
10852     case TARGET_OBJECT_OSDATA:
10853       /* Should only get here if we're connected.  */
10854       gdb_assert (rs->remote_desc);
10855       return remote_read_qxfer
10856         ("osdata", annex, readbuf, offset, len, xfered_len,
10857         &remote_protocol_packets[PACKET_qXfer_osdata]);
10858
10859     case TARGET_OBJECT_THREADS:
10860       gdb_assert (annex == NULL);
10861       return remote_read_qxfer ("threads", annex, readbuf, offset, len,
10862                                 xfered_len,
10863                                 &remote_protocol_packets[PACKET_qXfer_threads]);
10864
10865     case TARGET_OBJECT_TRACEFRAME_INFO:
10866       gdb_assert (annex == NULL);
10867       return remote_read_qxfer
10868         ("traceframe-info", annex, readbuf, offset, len, xfered_len,
10869          &remote_protocol_packets[PACKET_qXfer_traceframe_info]);
10870
10871     case TARGET_OBJECT_FDPIC:
10872       return remote_read_qxfer ("fdpic", annex, readbuf, offset, len,
10873                                 xfered_len,
10874                                 &remote_protocol_packets[PACKET_qXfer_fdpic]);
10875
10876     case TARGET_OBJECT_OPENVMS_UIB:
10877       return remote_read_qxfer ("uib", annex, readbuf, offset, len,
10878                                 xfered_len,
10879                                 &remote_protocol_packets[PACKET_qXfer_uib]);
10880
10881     case TARGET_OBJECT_BTRACE:
10882       return remote_read_qxfer ("btrace", annex, readbuf, offset, len,
10883                                 xfered_len,
10884         &remote_protocol_packets[PACKET_qXfer_btrace]);
10885
10886     case TARGET_OBJECT_BTRACE_CONF:
10887       return remote_read_qxfer ("btrace-conf", annex, readbuf, offset,
10888                                 len, xfered_len,
10889         &remote_protocol_packets[PACKET_qXfer_btrace_conf]);
10890
10891     case TARGET_OBJECT_EXEC_FILE:
10892       return remote_read_qxfer ("exec-file", annex, readbuf, offset,
10893                                 len, xfered_len,
10894         &remote_protocol_packets[PACKET_qXfer_exec_file]);
10895
10896     default:
10897       return TARGET_XFER_E_IO;
10898     }
10899
10900   /* Minimum outbuf size is get_remote_packet_size ().  If LEN is not
10901      large enough let the caller deal with it.  */
10902   if (len < get_remote_packet_size ())
10903     return TARGET_XFER_E_IO;
10904   len = get_remote_packet_size ();
10905
10906   /* Except for querying the minimum buffer size, target must be open.  */
10907   if (!rs->remote_desc)
10908     error (_("remote query is only available after target open"));
10909
10910   gdb_assert (annex != NULL);
10911   gdb_assert (readbuf != NULL);
10912
10913   p2 = rs->buf;
10914   *p2++ = 'q';
10915   *p2++ = query_type;
10916
10917   /* We used one buffer char for the remote protocol q command and
10918      another for the query type.  As the remote protocol encapsulation
10919      uses 4 chars plus one extra in case we are debugging
10920      (remote_debug), we have PBUFZIZ - 7 left to pack the query
10921      string.  */
10922   i = 0;
10923   while (annex[i] && (i < (get_remote_packet_size () - 8)))
10924     {
10925       /* Bad caller may have sent forbidden characters.  */
10926       gdb_assert (isprint (annex[i]) && annex[i] != '$' && annex[i] != '#');
10927       *p2++ = annex[i];
10928       i++;
10929     }
10930   *p2 = '\0';
10931   gdb_assert (annex[i] == '\0');
10932
10933   i = putpkt (rs->buf);
10934   if (i < 0)
10935     return TARGET_XFER_E_IO;
10936
10937   getpkt (&rs->buf, &rs->buf_size, 0);
10938   strcpy ((char *) readbuf, rs->buf);
10939
10940   *xfered_len = strlen ((char *) readbuf);
10941   return (*xfered_len != 0) ? TARGET_XFER_OK : TARGET_XFER_EOF;
10942 }
10943
10944 /* Implementation of to_get_memory_xfer_limit.  */
10945
10946 ULONGEST
10947 remote_target::get_memory_xfer_limit ()
10948 {
10949   return get_memory_write_packet_size ();
10950 }
10951
10952 int
10953 remote_target::search_memory (CORE_ADDR start_addr, ULONGEST search_space_len,
10954                               const gdb_byte *pattern, ULONGEST pattern_len,
10955                               CORE_ADDR *found_addrp)
10956 {
10957   int addr_size = gdbarch_addr_bit (target_gdbarch ()) / 8;
10958   struct remote_state *rs = get_remote_state ();
10959   int max_size = get_memory_write_packet_size ();
10960   struct packet_config *packet =
10961     &remote_protocol_packets[PACKET_qSearch_memory];
10962   /* Number of packet bytes used to encode the pattern;
10963      this could be more than PATTERN_LEN due to escape characters.  */
10964   int escaped_pattern_len;
10965   /* Amount of pattern that was encodable in the packet.  */
10966   int used_pattern_len;
10967   int i;
10968   int found;
10969   ULONGEST found_addr;
10970
10971   /* Don't go to the target if we don't have to.  This is done before
10972      checking packet_config_support to avoid the possibility that a
10973      success for this edge case means the facility works in
10974      general.  */
10975   if (pattern_len > search_space_len)
10976     return 0;
10977   if (pattern_len == 0)
10978     {
10979       *found_addrp = start_addr;
10980       return 1;
10981     }
10982
10983   /* If we already know the packet isn't supported, fall back to the simple
10984      way of searching memory.  */
10985
10986   if (packet_config_support (packet) == PACKET_DISABLE)
10987     {
10988       /* Target doesn't provided special support, fall back and use the
10989          standard support (copy memory and do the search here).  */
10990       return simple_search_memory (this, start_addr, search_space_len,
10991                                    pattern, pattern_len, found_addrp);
10992     }
10993
10994   /* Make sure the remote is pointing at the right process.  */
10995   set_general_process ();
10996
10997   /* Insert header.  */
10998   i = snprintf (rs->buf, max_size, 
10999                 "qSearch:memory:%s;%s;",
11000                 phex_nz (start_addr, addr_size),
11001                 phex_nz (search_space_len, sizeof (search_space_len)));
11002   max_size -= (i + 1);
11003
11004   /* Escape as much data as fits into rs->buf.  */
11005   escaped_pattern_len =
11006     remote_escape_output (pattern, pattern_len, 1, (gdb_byte *) rs->buf + i,
11007                           &used_pattern_len, max_size);
11008
11009   /* Bail if the pattern is too large.  */
11010   if (used_pattern_len != pattern_len)
11011     error (_("Pattern is too large to transmit to remote target."));
11012
11013   if (putpkt_binary (rs->buf, i + escaped_pattern_len) < 0
11014       || getpkt_sane (&rs->buf, &rs->buf_size, 0) < 0
11015       || packet_ok (rs->buf, packet) != PACKET_OK)
11016     {
11017       /* The request may not have worked because the command is not
11018          supported.  If so, fall back to the simple way.  */
11019       if (packet_config_support (packet) == PACKET_DISABLE)
11020         {
11021           return simple_search_memory (this, start_addr, search_space_len,
11022                                        pattern, pattern_len, found_addrp);
11023         }
11024       return -1;
11025     }
11026
11027   if (rs->buf[0] == '0')
11028     found = 0;
11029   else if (rs->buf[0] == '1')
11030     {
11031       found = 1;
11032       if (rs->buf[1] != ',')
11033         error (_("Unknown qSearch:memory reply: %s"), rs->buf);
11034       unpack_varlen_hex (rs->buf + 2, &found_addr);
11035       *found_addrp = found_addr;
11036     }
11037   else
11038     error (_("Unknown qSearch:memory reply: %s"), rs->buf);
11039
11040   return found;
11041 }
11042
11043 void
11044 remote_target::rcmd (const char *command, struct ui_file *outbuf)
11045 {
11046   struct remote_state *rs = get_remote_state ();
11047   char *p = rs->buf;
11048
11049   if (!rs->remote_desc)
11050     error (_("remote rcmd is only available after target open"));
11051
11052   /* Send a NULL command across as an empty command.  */
11053   if (command == NULL)
11054     command = "";
11055
11056   /* The query prefix.  */
11057   strcpy (rs->buf, "qRcmd,");
11058   p = strchr (rs->buf, '\0');
11059
11060   if ((strlen (rs->buf) + strlen (command) * 2 + 8/*misc*/)
11061       > get_remote_packet_size ())
11062     error (_("\"monitor\" command ``%s'' is too long."), command);
11063
11064   /* Encode the actual command.  */
11065   bin2hex ((const gdb_byte *) command, p, strlen (command));
11066
11067   if (putpkt (rs->buf) < 0)
11068     error (_("Communication problem with target."));
11069
11070   /* get/display the response */
11071   while (1)
11072     {
11073       char *buf;
11074
11075       /* XXX - see also remote_get_noisy_reply().  */
11076       QUIT;                     /* Allow user to bail out with ^C.  */
11077       rs->buf[0] = '\0';
11078       if (getpkt_sane (&rs->buf, &rs->buf_size, 0) == -1)
11079         { 
11080           /* Timeout.  Continue to (try to) read responses.
11081              This is better than stopping with an error, assuming the stub
11082              is still executing the (long) monitor command.
11083              If needed, the user can interrupt gdb using C-c, obtaining
11084              an effect similar to stop on timeout.  */
11085           continue;
11086         }
11087       buf = rs->buf;
11088       if (buf[0] == '\0')
11089         error (_("Target does not support this command."));
11090       if (buf[0] == 'O' && buf[1] != 'K')
11091         {
11092           remote_console_output (buf + 1); /* 'O' message from stub.  */
11093           continue;
11094         }
11095       if (strcmp (buf, "OK") == 0)
11096         break;
11097       if (strlen (buf) == 3 && buf[0] == 'E'
11098           && isdigit (buf[1]) && isdigit (buf[2]))
11099         {
11100           error (_("Protocol error with Rcmd"));
11101         }
11102       for (p = buf; p[0] != '\0' && p[1] != '\0'; p += 2)
11103         {
11104           char c = (fromhex (p[0]) << 4) + fromhex (p[1]);
11105
11106           fputc_unfiltered (c, outbuf);
11107         }
11108       break;
11109     }
11110 }
11111
11112 std::vector<mem_region>
11113 remote_target::memory_map ()
11114 {
11115   std::vector<mem_region> result;
11116   gdb::optional<gdb::char_vector> text
11117     = target_read_stralloc (target_stack, TARGET_OBJECT_MEMORY_MAP, NULL);
11118
11119   if (text)
11120     result = parse_memory_map (text->data ());
11121
11122   return result;
11123 }
11124
11125 static void
11126 packet_command (const char *args, int from_tty)
11127 {
11128   struct remote_state *rs = get_remote_state ();
11129
11130   if (!rs->remote_desc)
11131     error (_("command can only be used with remote target"));
11132
11133   if (!args)
11134     error (_("remote-packet command requires packet text as argument"));
11135
11136   puts_filtered ("sending: ");
11137   print_packet (args);
11138   puts_filtered ("\n");
11139   putpkt (args);
11140
11141   getpkt (&rs->buf, &rs->buf_size, 0);
11142   puts_filtered ("received: ");
11143   print_packet (rs->buf);
11144   puts_filtered ("\n");
11145 }
11146
11147 #if 0
11148 /* --------- UNIT_TEST for THREAD oriented PACKETS ------------------- */
11149
11150 static void display_thread_info (struct gdb_ext_thread_info *info);
11151
11152 static void threadset_test_cmd (char *cmd, int tty);
11153
11154 static void threadalive_test (char *cmd, int tty);
11155
11156 static void threadlist_test_cmd (char *cmd, int tty);
11157
11158 int get_and_display_threadinfo (threadref *ref);
11159
11160 static void threadinfo_test_cmd (char *cmd, int tty);
11161
11162 static int thread_display_step (threadref *ref, void *context);
11163
11164 static void threadlist_update_test_cmd (char *cmd, int tty);
11165
11166 static void init_remote_threadtests (void);
11167
11168 #define SAMPLE_THREAD  0x05060708       /* Truncated 64 bit threadid.  */
11169
11170 static void
11171 threadset_test_cmd (const char *cmd, int tty)
11172 {
11173   int sample_thread = SAMPLE_THREAD;
11174
11175   printf_filtered (_("Remote threadset test\n"));
11176   set_general_thread (sample_thread);
11177 }
11178
11179
11180 static void
11181 threadalive_test (const char *cmd, int tty)
11182 {
11183   int sample_thread = SAMPLE_THREAD;
11184   int pid = ptid_get_pid (inferior_ptid);
11185   ptid_t ptid = ptid_build (pid, sample_thread, 0);
11186
11187   if (remote_thread_alive (ptid))
11188     printf_filtered ("PASS: Thread alive test\n");
11189   else
11190     printf_filtered ("FAIL: Thread alive test\n");
11191 }
11192
11193 void output_threadid (char *title, threadref *ref);
11194
11195 void
11196 output_threadid (char *title, threadref *ref)
11197 {
11198   char hexid[20];
11199
11200   pack_threadid (&hexid[0], ref);       /* Convert threead id into hex.  */
11201   hexid[16] = 0;
11202   printf_filtered ("%s  %s\n", title, (&hexid[0]));
11203 }
11204
11205 static void
11206 threadlist_test_cmd (const char *cmd, int tty)
11207 {
11208   int startflag = 1;
11209   threadref nextthread;
11210   int done, result_count;
11211   threadref threadlist[3];
11212
11213   printf_filtered ("Remote Threadlist test\n");
11214   if (!remote_get_threadlist (startflag, &nextthread, 3, &done,
11215                               &result_count, &threadlist[0]))
11216     printf_filtered ("FAIL: threadlist test\n");
11217   else
11218     {
11219       threadref *scan = threadlist;
11220       threadref *limit = scan + result_count;
11221
11222       while (scan < limit)
11223         output_threadid (" thread ", scan++);
11224     }
11225 }
11226
11227 void
11228 display_thread_info (struct gdb_ext_thread_info *info)
11229 {
11230   output_threadid ("Threadid: ", &info->threadid);
11231   printf_filtered ("Name: %s\n ", info->shortname);
11232   printf_filtered ("State: %s\n", info->display);
11233   printf_filtered ("other: %s\n\n", info->more_display);
11234 }
11235
11236 int
11237 get_and_display_threadinfo (threadref *ref)
11238 {
11239   int result;
11240   int set;
11241   struct gdb_ext_thread_info threadinfo;
11242
11243   set = TAG_THREADID | TAG_EXISTS | TAG_THREADNAME
11244     | TAG_MOREDISPLAY | TAG_DISPLAY;
11245   if (0 != (result = remote_get_threadinfo (ref, set, &threadinfo)))
11246     display_thread_info (&threadinfo);
11247   return result;
11248 }
11249
11250 static void
11251 threadinfo_test_cmd (const char *cmd, int tty)
11252 {
11253   int athread = SAMPLE_THREAD;
11254   threadref thread;
11255   int set;
11256
11257   int_to_threadref (&thread, athread);
11258   printf_filtered ("Remote Threadinfo test\n");
11259   if (!get_and_display_threadinfo (&thread))
11260     printf_filtered ("FAIL cannot get thread info\n");
11261 }
11262
11263 static int
11264 thread_display_step (threadref *ref, void *context)
11265 {
11266   /* output_threadid(" threadstep ",ref); *//* simple test */
11267   return get_and_display_threadinfo (ref);
11268 }
11269
11270 static void
11271 threadlist_update_test_cmd (const char *cmd, int tty)
11272 {
11273   printf_filtered ("Remote Threadlist update test\n");
11274   remote_threadlist_iterator (thread_display_step, 0, CRAZY_MAX_THREADS);
11275 }
11276
11277 static void
11278 init_remote_threadtests (void)
11279 {
11280   add_com ("tlist", class_obscure, threadlist_test_cmd,
11281            _("Fetch and print the remote list of "
11282              "thread identifiers, one pkt only"));
11283   add_com ("tinfo", class_obscure, threadinfo_test_cmd,
11284            _("Fetch and display info about one thread"));
11285   add_com ("tset", class_obscure, threadset_test_cmd,
11286            _("Test setting to a different thread"));
11287   add_com ("tupd", class_obscure, threadlist_update_test_cmd,
11288            _("Iterate through updating all remote thread info"));
11289   add_com ("talive", class_obscure, threadalive_test,
11290            _(" Remote thread alive test "));
11291 }
11292
11293 #endif /* 0 */
11294
11295 /* Convert a thread ID to a string.  Returns the string in a static
11296    buffer.  */
11297
11298 const char *
11299 remote_target::pid_to_str (ptid_t ptid)
11300 {
11301   static char buf[64];
11302   struct remote_state *rs = get_remote_state ();
11303
11304   if (ptid_equal (ptid, null_ptid))
11305     return normal_pid_to_str (ptid);
11306   else if (ptid_is_pid (ptid))
11307     {
11308       /* Printing an inferior target id.  */
11309
11310       /* When multi-process extensions are off, there's no way in the
11311          remote protocol to know the remote process id, if there's any
11312          at all.  There's one exception --- when we're connected with
11313          target extended-remote, and we manually attached to a process
11314          with "attach PID".  We don't record anywhere a flag that
11315          allows us to distinguish that case from the case of
11316          connecting with extended-remote and the stub already being
11317          attached to a process, and reporting yes to qAttached, hence
11318          no smart special casing here.  */
11319       if (!remote_multi_process_p (rs))
11320         {
11321           xsnprintf (buf, sizeof buf, "Remote target");
11322           return buf;
11323         }
11324
11325       return normal_pid_to_str (ptid);
11326     }
11327   else
11328     {
11329       if (ptid_equal (magic_null_ptid, ptid))
11330         xsnprintf (buf, sizeof buf, "Thread <main>");
11331       else if (remote_multi_process_p (rs))
11332         if (ptid_get_lwp (ptid) == 0)
11333           return normal_pid_to_str (ptid);
11334         else
11335           xsnprintf (buf, sizeof buf, "Thread %d.%ld",
11336                      ptid_get_pid (ptid), ptid_get_lwp (ptid));
11337       else
11338         xsnprintf (buf, sizeof buf, "Thread %ld",
11339                    ptid_get_lwp (ptid));
11340       return buf;
11341     }
11342 }
11343
11344 /* Get the address of the thread local variable in OBJFILE which is
11345    stored at OFFSET within the thread local storage for thread PTID.  */
11346
11347 CORE_ADDR
11348 remote_target::get_thread_local_address (ptid_t ptid, CORE_ADDR lm,
11349                                          CORE_ADDR offset)
11350 {
11351   if (packet_support (PACKET_qGetTLSAddr) != PACKET_DISABLE)
11352     {
11353       struct remote_state *rs = get_remote_state ();
11354       char *p = rs->buf;
11355       char *endp = rs->buf + get_remote_packet_size ();
11356       enum packet_result result;
11357
11358       strcpy (p, "qGetTLSAddr:");
11359       p += strlen (p);
11360       p = write_ptid (p, endp, ptid);
11361       *p++ = ',';
11362       p += hexnumstr (p, offset);
11363       *p++ = ',';
11364       p += hexnumstr (p, lm);
11365       *p++ = '\0';
11366
11367       putpkt (rs->buf);
11368       getpkt (&rs->buf, &rs->buf_size, 0);
11369       result = packet_ok (rs->buf,
11370                           &remote_protocol_packets[PACKET_qGetTLSAddr]);
11371       if (result == PACKET_OK)
11372         {
11373           ULONGEST result;
11374
11375           unpack_varlen_hex (rs->buf, &result);
11376           return result;
11377         }
11378       else if (result == PACKET_UNKNOWN)
11379         throw_error (TLS_GENERIC_ERROR,
11380                      _("Remote target doesn't support qGetTLSAddr packet"));
11381       else
11382         throw_error (TLS_GENERIC_ERROR,
11383                      _("Remote target failed to process qGetTLSAddr request"));
11384     }
11385   else
11386     throw_error (TLS_GENERIC_ERROR,
11387                  _("TLS not supported or disabled on this target"));
11388   /* Not reached.  */
11389   return 0;
11390 }
11391
11392 /* Provide thread local base, i.e. Thread Information Block address.
11393    Returns 1 if ptid is found and thread_local_base is non zero.  */
11394
11395 bool
11396 remote_target::get_tib_address (ptid_t ptid, CORE_ADDR *addr)
11397 {
11398   if (packet_support (PACKET_qGetTIBAddr) != PACKET_DISABLE)
11399     {
11400       struct remote_state *rs = get_remote_state ();
11401       char *p = rs->buf;
11402       char *endp = rs->buf + get_remote_packet_size ();
11403       enum packet_result result;
11404
11405       strcpy (p, "qGetTIBAddr:");
11406       p += strlen (p);
11407       p = write_ptid (p, endp, ptid);
11408       *p++ = '\0';
11409
11410       putpkt (rs->buf);
11411       getpkt (&rs->buf, &rs->buf_size, 0);
11412       result = packet_ok (rs->buf,
11413                           &remote_protocol_packets[PACKET_qGetTIBAddr]);
11414       if (result == PACKET_OK)
11415         {
11416           ULONGEST result;
11417
11418           unpack_varlen_hex (rs->buf, &result);
11419           if (addr)
11420             *addr = (CORE_ADDR) result;
11421           return true;
11422         }
11423       else if (result == PACKET_UNKNOWN)
11424         error (_("Remote target doesn't support qGetTIBAddr packet"));
11425       else
11426         error (_("Remote target failed to process qGetTIBAddr request"));
11427     }
11428   else
11429     error (_("qGetTIBAddr not supported or disabled on this target"));
11430   /* Not reached.  */
11431   return false;
11432 }
11433
11434 /* Support for inferring a target description based on the current
11435    architecture and the size of a 'g' packet.  While the 'g' packet
11436    can have any size (since optional registers can be left off the
11437    end), some sizes are easily recognizable given knowledge of the
11438    approximate architecture.  */
11439
11440 struct remote_g_packet_guess
11441 {
11442   int bytes;
11443   const struct target_desc *tdesc;
11444 };
11445 typedef struct remote_g_packet_guess remote_g_packet_guess_s;
11446 DEF_VEC_O(remote_g_packet_guess_s);
11447
11448 struct remote_g_packet_data
11449 {
11450   VEC(remote_g_packet_guess_s) *guesses;
11451 };
11452
11453 static struct gdbarch_data *remote_g_packet_data_handle;
11454
11455 static void *
11456 remote_g_packet_data_init (struct obstack *obstack)
11457 {
11458   return OBSTACK_ZALLOC (obstack, struct remote_g_packet_data);
11459 }
11460
11461 void
11462 register_remote_g_packet_guess (struct gdbarch *gdbarch, int bytes,
11463                                 const struct target_desc *tdesc)
11464 {
11465   struct remote_g_packet_data *data
11466     = ((struct remote_g_packet_data *)
11467        gdbarch_data (gdbarch, remote_g_packet_data_handle));
11468   struct remote_g_packet_guess new_guess, *guess;
11469   int ix;
11470
11471   gdb_assert (tdesc != NULL);
11472
11473   for (ix = 0;
11474        VEC_iterate (remote_g_packet_guess_s, data->guesses, ix, guess);
11475        ix++)
11476     if (guess->bytes == bytes)
11477       internal_error (__FILE__, __LINE__,
11478                       _("Duplicate g packet description added for size %d"),
11479                       bytes);
11480
11481   new_guess.bytes = bytes;
11482   new_guess.tdesc = tdesc;
11483   VEC_safe_push (remote_g_packet_guess_s, data->guesses, &new_guess);
11484 }
11485
11486 /* Return 1 if remote_read_description would do anything on this target
11487    and architecture, 0 otherwise.  */
11488
11489 static int
11490 remote_read_description_p (struct target_ops *target)
11491 {
11492   struct remote_g_packet_data *data
11493     = ((struct remote_g_packet_data *)
11494        gdbarch_data (target_gdbarch (), remote_g_packet_data_handle));
11495
11496   if (!VEC_empty (remote_g_packet_guess_s, data->guesses))
11497     return 1;
11498
11499   return 0;
11500 }
11501
11502 const struct target_desc *
11503 remote_target::read_description ()
11504 {
11505   struct remote_g_packet_data *data
11506     = ((struct remote_g_packet_data *)
11507        gdbarch_data (target_gdbarch (), remote_g_packet_data_handle));
11508
11509   /* Do not try this during initial connection, when we do not know
11510      whether there is a running but stopped thread.  */
11511   if (!target_has_execution || ptid_equal (inferior_ptid, null_ptid))
11512     return beneath->read_description ();
11513
11514   if (!VEC_empty (remote_g_packet_guess_s, data->guesses))
11515     {
11516       struct remote_g_packet_guess *guess;
11517       int ix;
11518       int bytes = send_g_packet ();
11519
11520       for (ix = 0;
11521            VEC_iterate (remote_g_packet_guess_s, data->guesses, ix, guess);
11522            ix++)
11523         if (guess->bytes == bytes)
11524           return guess->tdesc;
11525
11526       /* We discard the g packet.  A minor optimization would be to
11527          hold on to it, and fill the register cache once we have selected
11528          an architecture, but it's too tricky to do safely.  */
11529     }
11530
11531   return beneath->read_description ();
11532 }
11533
11534 /* Remote file transfer support.  This is host-initiated I/O, not
11535    target-initiated; for target-initiated, see remote-fileio.c.  */
11536
11537 /* If *LEFT is at least the length of STRING, copy STRING to
11538    *BUFFER, update *BUFFER to point to the new end of the buffer, and
11539    decrease *LEFT.  Otherwise raise an error.  */
11540
11541 static void
11542 remote_buffer_add_string (char **buffer, int *left, const char *string)
11543 {
11544   int len = strlen (string);
11545
11546   if (len > *left)
11547     error (_("Packet too long for target."));
11548
11549   memcpy (*buffer, string, len);
11550   *buffer += len;
11551   *left -= len;
11552
11553   /* NUL-terminate the buffer as a convenience, if there is
11554      room.  */
11555   if (*left)
11556     **buffer = '\0';
11557 }
11558
11559 /* If *LEFT is large enough, hex encode LEN bytes from BYTES into
11560    *BUFFER, update *BUFFER to point to the new end of the buffer, and
11561    decrease *LEFT.  Otherwise raise an error.  */
11562
11563 static void
11564 remote_buffer_add_bytes (char **buffer, int *left, const gdb_byte *bytes,
11565                          int len)
11566 {
11567   if (2 * len > *left)
11568     error (_("Packet too long for target."));
11569
11570   bin2hex (bytes, *buffer, len);
11571   *buffer += 2 * len;
11572   *left -= 2 * len;
11573
11574   /* NUL-terminate the buffer as a convenience, if there is
11575      room.  */
11576   if (*left)
11577     **buffer = '\0';
11578 }
11579
11580 /* If *LEFT is large enough, convert VALUE to hex and add it to
11581    *BUFFER, update *BUFFER to point to the new end of the buffer, and
11582    decrease *LEFT.  Otherwise raise an error.  */
11583
11584 static void
11585 remote_buffer_add_int (char **buffer, int *left, ULONGEST value)
11586 {
11587   int len = hexnumlen (value);
11588
11589   if (len > *left)
11590     error (_("Packet too long for target."));
11591
11592   hexnumstr (*buffer, value);
11593   *buffer += len;
11594   *left -= len;
11595
11596   /* NUL-terminate the buffer as a convenience, if there is
11597      room.  */
11598   if (*left)
11599     **buffer = '\0';
11600 }
11601
11602 /* Parse an I/O result packet from BUFFER.  Set RETCODE to the return
11603    value, *REMOTE_ERRNO to the remote error number or zero if none
11604    was included, and *ATTACHMENT to point to the start of the annex
11605    if any.  The length of the packet isn't needed here; there may
11606    be NUL bytes in BUFFER, but they will be after *ATTACHMENT.
11607
11608    Return 0 if the packet could be parsed, -1 if it could not.  If
11609    -1 is returned, the other variables may not be initialized.  */
11610
11611 static int
11612 remote_hostio_parse_result (char *buffer, int *retcode,
11613                             int *remote_errno, char **attachment)
11614 {
11615   char *p, *p2;
11616
11617   *remote_errno = 0;
11618   *attachment = NULL;
11619
11620   if (buffer[0] != 'F')
11621     return -1;
11622
11623   errno = 0;
11624   *retcode = strtol (&buffer[1], &p, 16);
11625   if (errno != 0 || p == &buffer[1])
11626     return -1;
11627
11628   /* Check for ",errno".  */
11629   if (*p == ',')
11630     {
11631       errno = 0;
11632       *remote_errno = strtol (p + 1, &p2, 16);
11633       if (errno != 0 || p + 1 == p2)
11634         return -1;
11635       p = p2;
11636     }
11637
11638   /* Check for ";attachment".  If there is no attachment, the
11639      packet should end here.  */
11640   if (*p == ';')
11641     {
11642       *attachment = p + 1;
11643       return 0;
11644     }
11645   else if (*p == '\0')
11646     return 0;
11647   else
11648     return -1;
11649 }
11650
11651 /* Send a prepared I/O packet to the target and read its response.
11652    The prepared packet is in the global RS->BUF before this function
11653    is called, and the answer is there when we return.
11654
11655    COMMAND_BYTES is the length of the request to send, which may include
11656    binary data.  WHICH_PACKET is the packet configuration to check
11657    before attempting a packet.  If an error occurs, *REMOTE_ERRNO
11658    is set to the error number and -1 is returned.  Otherwise the value
11659    returned by the function is returned.
11660
11661    ATTACHMENT and ATTACHMENT_LEN should be non-NULL if and only if an
11662    attachment is expected; an error will be reported if there's a
11663    mismatch.  If one is found, *ATTACHMENT will be set to point into
11664    the packet buffer and *ATTACHMENT_LEN will be set to the
11665    attachment's length.  */
11666
11667 static int
11668 remote_hostio_send_command (int command_bytes, int which_packet,
11669                             int *remote_errno, char **attachment,
11670                             int *attachment_len)
11671 {
11672   struct remote_state *rs = get_remote_state ();
11673   int ret, bytes_read;
11674   char *attachment_tmp;
11675
11676   if (packet_support (which_packet) == PACKET_DISABLE)
11677     {
11678       *remote_errno = FILEIO_ENOSYS;
11679       return -1;
11680     }
11681
11682   putpkt_binary (rs->buf, command_bytes);
11683   bytes_read = getpkt_sane (&rs->buf, &rs->buf_size, 0);
11684
11685   /* If it timed out, something is wrong.  Don't try to parse the
11686      buffer.  */
11687   if (bytes_read < 0)
11688     {
11689       *remote_errno = FILEIO_EINVAL;
11690       return -1;
11691     }
11692
11693   switch (packet_ok (rs->buf, &remote_protocol_packets[which_packet]))
11694     {
11695     case PACKET_ERROR:
11696       *remote_errno = FILEIO_EINVAL;
11697       return -1;
11698     case PACKET_UNKNOWN:
11699       *remote_errno = FILEIO_ENOSYS;
11700       return -1;
11701     case PACKET_OK:
11702       break;
11703     }
11704
11705   if (remote_hostio_parse_result (rs->buf, &ret, remote_errno,
11706                                   &attachment_tmp))
11707     {
11708       *remote_errno = FILEIO_EINVAL;
11709       return -1;
11710     }
11711
11712   /* Make sure we saw an attachment if and only if we expected one.  */
11713   if ((attachment_tmp == NULL && attachment != NULL)
11714       || (attachment_tmp != NULL && attachment == NULL))
11715     {
11716       *remote_errno = FILEIO_EINVAL;
11717       return -1;
11718     }
11719
11720   /* If an attachment was found, it must point into the packet buffer;
11721      work out how many bytes there were.  */
11722   if (attachment_tmp != NULL)
11723     {
11724       *attachment = attachment_tmp;
11725       *attachment_len = bytes_read - (*attachment - rs->buf);
11726     }
11727
11728   return ret;
11729 }
11730
11731 /* See declaration.h.  */
11732
11733 void
11734 readahead_cache::invalidate ()
11735 {
11736   this->fd = -1;
11737 }
11738
11739 /* See declaration.h.  */
11740
11741 void
11742 readahead_cache::invalidate_fd (int fd)
11743 {
11744   if (this->fd == fd)
11745     this->fd = -1;
11746 }
11747
11748 /* Set the filesystem remote_hostio functions that take FILENAME
11749    arguments will use.  Return 0 on success, or -1 if an error
11750    occurs (and set *REMOTE_ERRNO).  */
11751
11752 static int
11753 remote_hostio_set_filesystem (struct inferior *inf, int *remote_errno)
11754 {
11755   struct remote_state *rs = get_remote_state ();
11756   int required_pid = (inf == NULL || inf->fake_pid_p) ? 0 : inf->pid;
11757   char *p = rs->buf;
11758   int left = get_remote_packet_size () - 1;
11759   char arg[9];
11760   int ret;
11761
11762   if (packet_support (PACKET_vFile_setfs) == PACKET_DISABLE)
11763     return 0;
11764
11765   if (rs->fs_pid != -1 && required_pid == rs->fs_pid)
11766     return 0;
11767
11768   remote_buffer_add_string (&p, &left, "vFile:setfs:");
11769
11770   xsnprintf (arg, sizeof (arg), "%x", required_pid);
11771   remote_buffer_add_string (&p, &left, arg);
11772
11773   ret = remote_hostio_send_command (p - rs->buf, PACKET_vFile_setfs,
11774                                     remote_errno, NULL, NULL);
11775
11776   if (packet_support (PACKET_vFile_setfs) == PACKET_DISABLE)
11777     return 0;
11778
11779   if (ret == 0)
11780     rs->fs_pid = required_pid;
11781
11782   return ret;
11783 }
11784
11785 /* Implementation of to_fileio_open.  */
11786
11787 static int
11788 remote_hostio_open (struct target_ops *self,
11789                     struct inferior *inf, const char *filename,
11790                     int flags, int mode, int warn_if_slow,
11791                     int *remote_errno)
11792 {
11793   struct remote_state *rs = get_remote_state ();
11794   char *p = rs->buf;
11795   int left = get_remote_packet_size () - 1;
11796
11797   if (warn_if_slow)
11798     {
11799       static int warning_issued = 0;
11800
11801       printf_unfiltered (_("Reading %s from remote target...\n"),
11802                          filename);
11803
11804       if (!warning_issued)
11805         {
11806           warning (_("File transfers from remote targets can be slow."
11807                      " Use \"set sysroot\" to access files locally"
11808                      " instead."));
11809           warning_issued = 1;
11810         }
11811     }
11812
11813   if (remote_hostio_set_filesystem (inf, remote_errno) != 0)
11814     return -1;
11815
11816   remote_buffer_add_string (&p, &left, "vFile:open:");
11817
11818   remote_buffer_add_bytes (&p, &left, (const gdb_byte *) filename,
11819                            strlen (filename));
11820   remote_buffer_add_string (&p, &left, ",");
11821
11822   remote_buffer_add_int (&p, &left, flags);
11823   remote_buffer_add_string (&p, &left, ",");
11824
11825   remote_buffer_add_int (&p, &left, mode);
11826
11827   return remote_hostio_send_command (p - rs->buf, PACKET_vFile_open,
11828                                      remote_errno, NULL, NULL);
11829 }
11830
11831 int
11832 remote_target::fileio_open (struct inferior *inf, const char *filename,
11833                             int flags, int mode, int warn_if_slow,
11834                             int *remote_errno)
11835 {
11836   return remote_hostio_open (this, inf, filename, flags, mode, warn_if_slow,
11837                              remote_errno);
11838 }
11839
11840 /* Implementation of to_fileio_pwrite.  */
11841
11842 static int
11843 remote_hostio_pwrite (struct target_ops *self,
11844                       int fd, const gdb_byte *write_buf, int len,
11845                       ULONGEST offset, int *remote_errno)
11846 {
11847   struct remote_state *rs = get_remote_state ();
11848   char *p = rs->buf;
11849   int left = get_remote_packet_size ();
11850   int out_len;
11851
11852   rs->readahead_cache.invalidate_fd (fd);
11853
11854   remote_buffer_add_string (&p, &left, "vFile:pwrite:");
11855
11856   remote_buffer_add_int (&p, &left, fd);
11857   remote_buffer_add_string (&p, &left, ",");
11858
11859   remote_buffer_add_int (&p, &left, offset);
11860   remote_buffer_add_string (&p, &left, ",");
11861
11862   p += remote_escape_output (write_buf, len, 1, (gdb_byte *) p, &out_len,
11863                              get_remote_packet_size () - (p - rs->buf));
11864
11865   return remote_hostio_send_command (p - rs->buf, PACKET_vFile_pwrite,
11866                                      remote_errno, NULL, NULL);
11867 }
11868
11869 int
11870 remote_target::fileio_pwrite (int fd, const gdb_byte *write_buf, int len,
11871                               ULONGEST offset, int *remote_errno)
11872 {
11873   return remote_hostio_pwrite (this, fd, write_buf, len, offset, remote_errno);
11874 }
11875
11876 /* Helper for the implementation of to_fileio_pread.  Read the file
11877    from the remote side with vFile:pread.  */
11878
11879 static int
11880 remote_hostio_pread_vFile (struct target_ops *self,
11881                            int fd, gdb_byte *read_buf, int len,
11882                            ULONGEST offset, int *remote_errno)
11883 {
11884   struct remote_state *rs = get_remote_state ();
11885   char *p = rs->buf;
11886   char *attachment;
11887   int left = get_remote_packet_size ();
11888   int ret, attachment_len;
11889   int read_len;
11890
11891   remote_buffer_add_string (&p, &left, "vFile:pread:");
11892
11893   remote_buffer_add_int (&p, &left, fd);
11894   remote_buffer_add_string (&p, &left, ",");
11895
11896   remote_buffer_add_int (&p, &left, len);
11897   remote_buffer_add_string (&p, &left, ",");
11898
11899   remote_buffer_add_int (&p, &left, offset);
11900
11901   ret = remote_hostio_send_command (p - rs->buf, PACKET_vFile_pread,
11902                                     remote_errno, &attachment,
11903                                     &attachment_len);
11904
11905   if (ret < 0)
11906     return ret;
11907
11908   read_len = remote_unescape_input ((gdb_byte *) attachment, attachment_len,
11909                                     read_buf, len);
11910   if (read_len != ret)
11911     error (_("Read returned %d, but %d bytes."), ret, (int) read_len);
11912
11913   return ret;
11914 }
11915
11916 /* See declaration.h.  */
11917
11918 int
11919 readahead_cache::pread (int fd, gdb_byte *read_buf, size_t len,
11920                         ULONGEST offset)
11921 {
11922   if (this->fd == fd
11923       && this->offset <= offset
11924       && offset < this->offset + this->bufsize)
11925     {
11926       ULONGEST max = this->offset + this->bufsize;
11927
11928       if (offset + len > max)
11929         len = max - offset;
11930
11931       memcpy (read_buf, this->buf + offset - this->offset, len);
11932       return len;
11933     }
11934
11935   return 0;
11936 }
11937
11938 /* Implementation of to_fileio_pread.  */
11939
11940 static int
11941 remote_hostio_pread (struct target_ops *self,
11942                      int fd, gdb_byte *read_buf, int len,
11943                      ULONGEST offset, int *remote_errno)
11944 {
11945   int ret;
11946   struct remote_state *rs = get_remote_state ();
11947   readahead_cache *cache = &rs->readahead_cache;
11948
11949   ret = cache->pread (fd, read_buf, len, offset);
11950   if (ret > 0)
11951     {
11952       cache->hit_count++;
11953
11954       if (remote_debug)
11955         fprintf_unfiltered (gdb_stdlog, "readahead cache hit %s\n",
11956                             pulongest (cache->hit_count));
11957       return ret;
11958     }
11959
11960   cache->miss_count++;
11961   if (remote_debug)
11962     fprintf_unfiltered (gdb_stdlog, "readahead cache miss %s\n",
11963                         pulongest (cache->miss_count));
11964
11965   cache->fd = fd;
11966   cache->offset = offset;
11967   cache->bufsize = get_remote_packet_size ();
11968   cache->buf = (gdb_byte *) xrealloc (cache->buf, cache->bufsize);
11969
11970   ret = remote_hostio_pread_vFile (self, cache->fd, cache->buf, cache->bufsize,
11971                                    cache->offset, remote_errno);
11972   if (ret <= 0)
11973     {
11974       cache->invalidate_fd (fd);
11975       return ret;
11976     }
11977
11978   cache->bufsize = ret;
11979   return cache->pread (fd, read_buf, len, offset);
11980 }
11981
11982 int
11983 remote_target::fileio_pread (int fd, gdb_byte *read_buf, int len,
11984                              ULONGEST offset, int *remote_errno)
11985 {
11986   return remote_hostio_pread (this, fd, read_buf, len, offset, remote_errno);
11987 }
11988
11989 /* Implementation of to_fileio_close.  */
11990
11991 static int
11992 remote_hostio_close (struct target_ops *self, int fd, int *remote_errno)
11993 {
11994   struct remote_state *rs = get_remote_state ();
11995   char *p = rs->buf;
11996   int left = get_remote_packet_size () - 1;
11997
11998   rs->readahead_cache.invalidate_fd (fd);
11999
12000   remote_buffer_add_string (&p, &left, "vFile:close:");
12001
12002   remote_buffer_add_int (&p, &left, fd);
12003
12004   return remote_hostio_send_command (p - rs->buf, PACKET_vFile_close,
12005                                      remote_errno, NULL, NULL);
12006 }
12007
12008 int
12009 remote_target::fileio_close (int fd, int *remote_errno)
12010 {
12011   return remote_hostio_close (this, fd, remote_errno);
12012 }
12013
12014 /* Implementation of to_fileio_unlink.  */
12015
12016 static int
12017 remote_hostio_unlink (struct target_ops *self,
12018                       struct inferior *inf, const char *filename,
12019                       int *remote_errno)
12020 {
12021   struct remote_state *rs = get_remote_state ();
12022   char *p = rs->buf;
12023   int left = get_remote_packet_size () - 1;
12024
12025   if (remote_hostio_set_filesystem (inf, remote_errno) != 0)
12026     return -1;
12027
12028   remote_buffer_add_string (&p, &left, "vFile:unlink:");
12029
12030   remote_buffer_add_bytes (&p, &left, (const gdb_byte *) filename,
12031                            strlen (filename));
12032
12033   return remote_hostio_send_command (p - rs->buf, PACKET_vFile_unlink,
12034                                      remote_errno, NULL, NULL);
12035 }
12036
12037 int
12038 remote_target::fileio_unlink (struct inferior *inf, const char *filename,
12039                               int *remote_errno)
12040 {
12041   return remote_hostio_unlink (this, inf, filename, remote_errno);
12042 }
12043
12044 /* Implementation of to_fileio_readlink.  */
12045
12046 gdb::optional<std::string>
12047 remote_target::fileio_readlink (struct inferior *inf, const char *filename,
12048                                 int *remote_errno)
12049 {
12050   struct remote_state *rs = get_remote_state ();
12051   char *p = rs->buf;
12052   char *attachment;
12053   int left = get_remote_packet_size ();
12054   int len, attachment_len;
12055   int read_len;
12056
12057   if (remote_hostio_set_filesystem (inf, remote_errno) != 0)
12058     return {};
12059
12060   remote_buffer_add_string (&p, &left, "vFile:readlink:");
12061
12062   remote_buffer_add_bytes (&p, &left, (const gdb_byte *) filename,
12063                            strlen (filename));
12064
12065   len = remote_hostio_send_command (p - rs->buf, PACKET_vFile_readlink,
12066                                     remote_errno, &attachment,
12067                                     &attachment_len);
12068
12069   if (len < 0)
12070     return {};
12071
12072   std::string ret (len, '\0');
12073
12074   read_len = remote_unescape_input ((gdb_byte *) attachment, attachment_len,
12075                                     (gdb_byte *) &ret[0], len);
12076   if (read_len != len)
12077     error (_("Readlink returned %d, but %d bytes."), len, read_len);
12078
12079   return ret;
12080 }
12081
12082 /* Implementation of to_fileio_fstat.  */
12083
12084 int
12085 remote_target::fileio_fstat (int fd, struct stat *st, int *remote_errno)
12086 {
12087   struct remote_state *rs = get_remote_state ();
12088   char *p = rs->buf;
12089   int left = get_remote_packet_size ();
12090   int attachment_len, ret;
12091   char *attachment;
12092   struct fio_stat fst;
12093   int read_len;
12094
12095   remote_buffer_add_string (&p, &left, "vFile:fstat:");
12096
12097   remote_buffer_add_int (&p, &left, fd);
12098
12099   ret = remote_hostio_send_command (p - rs->buf, PACKET_vFile_fstat,
12100                                     remote_errno, &attachment,
12101                                     &attachment_len);
12102   if (ret < 0)
12103     {
12104       if (*remote_errno != FILEIO_ENOSYS)
12105         return ret;
12106
12107       /* Strictly we should return -1, ENOSYS here, but when
12108          "set sysroot remote:" was implemented in August 2008
12109          BFD's need for a stat function was sidestepped with
12110          this hack.  This was not remedied until March 2015
12111          so we retain the previous behavior to avoid breaking
12112          compatibility.
12113
12114          Note that the memset is a March 2015 addition; older
12115          GDBs set st_size *and nothing else* so the structure
12116          would have garbage in all other fields.  This might
12117          break something but retaining the previous behavior
12118          here would be just too wrong.  */
12119
12120       memset (st, 0, sizeof (struct stat));
12121       st->st_size = INT_MAX;
12122       return 0;
12123     }
12124
12125   read_len = remote_unescape_input ((gdb_byte *) attachment, attachment_len,
12126                                     (gdb_byte *) &fst, sizeof (fst));
12127
12128   if (read_len != ret)
12129     error (_("vFile:fstat returned %d, but %d bytes."), ret, read_len);
12130
12131   if (read_len != sizeof (fst))
12132     error (_("vFile:fstat returned %d bytes, but expecting %d."),
12133            read_len, (int) sizeof (fst));
12134
12135   remote_fileio_to_host_stat (&fst, st);
12136
12137   return 0;
12138 }
12139
12140 /* Implementation of to_filesystem_is_local.  */
12141
12142 bool
12143 remote_target::filesystem_is_local ()
12144 {
12145   /* Valgrind GDB presents itself as a remote target but works
12146      on the local filesystem: it does not implement remote get
12147      and users are not expected to set a sysroot.  To handle
12148      this case we treat the remote filesystem as local if the
12149      sysroot is exactly TARGET_SYSROOT_PREFIX and if the stub
12150      does not support vFile:open.  */
12151   if (strcmp (gdb_sysroot, TARGET_SYSROOT_PREFIX) == 0)
12152     {
12153       enum packet_support ps = packet_support (PACKET_vFile_open);
12154
12155       if (ps == PACKET_SUPPORT_UNKNOWN)
12156         {
12157           int fd, remote_errno;
12158
12159           /* Try opening a file to probe support.  The supplied
12160              filename is irrelevant, we only care about whether
12161              the stub recognizes the packet or not.  */
12162           fd = remote_hostio_open (this, NULL, "just probing",
12163                                    FILEIO_O_RDONLY, 0700, 0,
12164                                    &remote_errno);
12165
12166           if (fd >= 0)
12167             remote_hostio_close (this, fd, &remote_errno);
12168
12169           ps = packet_support (PACKET_vFile_open);
12170         }
12171
12172       if (ps == PACKET_DISABLE)
12173         {
12174           static int warning_issued = 0;
12175
12176           if (!warning_issued)
12177             {
12178               warning (_("remote target does not support file"
12179                          " transfer, attempting to access files"
12180                          " from local filesystem."));
12181               warning_issued = 1;
12182             }
12183
12184           return true;
12185         }
12186     }
12187
12188   return false;
12189 }
12190
12191 static int
12192 remote_fileio_errno_to_host (int errnum)
12193 {
12194   switch (errnum)
12195     {
12196       case FILEIO_EPERM:
12197         return EPERM;
12198       case FILEIO_ENOENT:
12199         return ENOENT;
12200       case FILEIO_EINTR:
12201         return EINTR;
12202       case FILEIO_EIO:
12203         return EIO;
12204       case FILEIO_EBADF:
12205         return EBADF;
12206       case FILEIO_EACCES:
12207         return EACCES;
12208       case FILEIO_EFAULT:
12209         return EFAULT;
12210       case FILEIO_EBUSY:
12211         return EBUSY;
12212       case FILEIO_EEXIST:
12213         return EEXIST;
12214       case FILEIO_ENODEV:
12215         return ENODEV;
12216       case FILEIO_ENOTDIR:
12217         return ENOTDIR;
12218       case FILEIO_EISDIR:
12219         return EISDIR;
12220       case FILEIO_EINVAL:
12221         return EINVAL;
12222       case FILEIO_ENFILE:
12223         return ENFILE;
12224       case FILEIO_EMFILE:
12225         return EMFILE;
12226       case FILEIO_EFBIG:
12227         return EFBIG;
12228       case FILEIO_ENOSPC:
12229         return ENOSPC;
12230       case FILEIO_ESPIPE:
12231         return ESPIPE;
12232       case FILEIO_EROFS:
12233         return EROFS;
12234       case FILEIO_ENOSYS:
12235         return ENOSYS;
12236       case FILEIO_ENAMETOOLONG:
12237         return ENAMETOOLONG;
12238     }
12239   return -1;
12240 }
12241
12242 static char *
12243 remote_hostio_error (int errnum)
12244 {
12245   int host_error = remote_fileio_errno_to_host (errnum);
12246
12247   if (host_error == -1)
12248     error (_("Unknown remote I/O error %d"), errnum);
12249   else
12250     error (_("Remote I/O error: %s"), safe_strerror (host_error));
12251 }
12252
12253 /* A RAII wrapper around a remote file descriptor.  */
12254
12255 class scoped_remote_fd
12256 {
12257 public:
12258   explicit scoped_remote_fd (int fd)
12259     : m_fd (fd)
12260   {
12261   }
12262
12263   ~scoped_remote_fd ()
12264   {
12265     if (m_fd != -1)
12266       {
12267         try
12268           {
12269             int remote_errno;
12270             remote_hostio_close (find_target_at (process_stratum),
12271                                  m_fd, &remote_errno);
12272           }
12273         catch (...)
12274           {
12275             /* Swallow exception before it escapes the dtor.  If
12276                something goes wrong, likely the connection is gone,
12277                and there's nothing else that can be done.  */
12278           }
12279       }
12280   }
12281
12282   DISABLE_COPY_AND_ASSIGN (scoped_remote_fd);
12283
12284   /* Release ownership of the file descriptor, and return it.  */
12285   int release () noexcept
12286   {
12287     int fd = m_fd;
12288     m_fd = -1;
12289     return fd;
12290   }
12291
12292   /* Return the owned file descriptor.  */
12293   int get () const noexcept
12294   {
12295     return m_fd;
12296   }
12297
12298 private:
12299   /* The owned remote I/O file descriptor.  */
12300   int m_fd;
12301 };
12302
12303 void
12304 remote_file_put (const char *local_file, const char *remote_file, int from_tty)
12305 {
12306   struct cleanup *back_to;
12307   int retcode, remote_errno, bytes, io_size;
12308   gdb_byte *buffer;
12309   int bytes_in_buffer;
12310   int saw_eof;
12311   ULONGEST offset;
12312   struct remote_state *rs = get_remote_state ();
12313
12314   if (!rs->remote_desc)
12315     error (_("command can only be used with remote target"));
12316
12317   gdb_file_up file = gdb_fopen_cloexec (local_file, "rb");
12318   if (file == NULL)
12319     perror_with_name (local_file);
12320
12321   scoped_remote_fd fd
12322     (remote_hostio_open (find_target_at (process_stratum), NULL,
12323                          remote_file, (FILEIO_O_WRONLY | FILEIO_O_CREAT
12324                                        | FILEIO_O_TRUNC),
12325                          0700, 0, &remote_errno));
12326   if (fd.get () == -1)
12327     remote_hostio_error (remote_errno);
12328
12329   /* Send up to this many bytes at once.  They won't all fit in the
12330      remote packet limit, so we'll transfer slightly fewer.  */
12331   io_size = get_remote_packet_size ();
12332   buffer = (gdb_byte *) xmalloc (io_size);
12333   back_to = make_cleanup (xfree, buffer);
12334
12335   bytes_in_buffer = 0;
12336   saw_eof = 0;
12337   offset = 0;
12338   while (bytes_in_buffer || !saw_eof)
12339     {
12340       if (!saw_eof)
12341         {
12342           bytes = fread (buffer + bytes_in_buffer, 1,
12343                          io_size - bytes_in_buffer,
12344                          file.get ());
12345           if (bytes == 0)
12346             {
12347               if (ferror (file.get ()))
12348                 error (_("Error reading %s."), local_file);
12349               else
12350                 {
12351                   /* EOF.  Unless there is something still in the
12352                      buffer from the last iteration, we are done.  */
12353                   saw_eof = 1;
12354                   if (bytes_in_buffer == 0)
12355                     break;
12356                 }
12357             }
12358         }
12359       else
12360         bytes = 0;
12361
12362       bytes += bytes_in_buffer;
12363       bytes_in_buffer = 0;
12364
12365       retcode = remote_hostio_pwrite (find_target_at (process_stratum),
12366                                       fd.get (), buffer, bytes,
12367                                       offset, &remote_errno);
12368
12369       if (retcode < 0)
12370         remote_hostio_error (remote_errno);
12371       else if (retcode == 0)
12372         error (_("Remote write of %d bytes returned 0!"), bytes);
12373       else if (retcode < bytes)
12374         {
12375           /* Short write.  Save the rest of the read data for the next
12376              write.  */
12377           bytes_in_buffer = bytes - retcode;
12378           memmove (buffer, buffer + retcode, bytes_in_buffer);
12379         }
12380
12381       offset += retcode;
12382     }
12383
12384   if (remote_hostio_close (find_target_at (process_stratum),
12385                            fd.release (), &remote_errno))
12386     remote_hostio_error (remote_errno);
12387
12388   if (from_tty)
12389     printf_filtered (_("Successfully sent file \"%s\".\n"), local_file);
12390   do_cleanups (back_to);
12391 }
12392
12393 void
12394 remote_file_get (const char *remote_file, const char *local_file, int from_tty)
12395 {
12396   struct cleanup *back_to;
12397   int remote_errno, bytes, io_size;
12398   gdb_byte *buffer;
12399   ULONGEST offset;
12400   struct remote_state *rs = get_remote_state ();
12401
12402   if (!rs->remote_desc)
12403     error (_("command can only be used with remote target"));
12404
12405   scoped_remote_fd fd
12406     (remote_hostio_open (find_target_at (process_stratum), NULL,
12407                          remote_file, FILEIO_O_RDONLY, 0, 0,
12408                          &remote_errno));
12409   if (fd.get () == -1)
12410     remote_hostio_error (remote_errno);
12411
12412   gdb_file_up file = gdb_fopen_cloexec (local_file, "wb");
12413   if (file == NULL)
12414     perror_with_name (local_file);
12415
12416   /* Send up to this many bytes at once.  They won't all fit in the
12417      remote packet limit, so we'll transfer slightly fewer.  */
12418   io_size = get_remote_packet_size ();
12419   buffer = (gdb_byte *) xmalloc (io_size);
12420   back_to = make_cleanup (xfree, buffer);
12421
12422   offset = 0;
12423   while (1)
12424     {
12425       bytes = remote_hostio_pread (find_target_at (process_stratum),
12426                                    fd.get (), buffer, io_size, offset,
12427                                    &remote_errno);
12428       if (bytes == 0)
12429         /* Success, but no bytes, means end-of-file.  */
12430         break;
12431       if (bytes == -1)
12432         remote_hostio_error (remote_errno);
12433
12434       offset += bytes;
12435
12436       bytes = fwrite (buffer, 1, bytes, file.get ());
12437       if (bytes == 0)
12438         perror_with_name (local_file);
12439     }
12440
12441   if (remote_hostio_close (find_target_at (process_stratum),
12442                            fd.release (), &remote_errno))
12443     remote_hostio_error (remote_errno);
12444
12445   if (from_tty)
12446     printf_filtered (_("Successfully fetched file \"%s\".\n"), remote_file);
12447   do_cleanups (back_to);
12448 }
12449
12450 void
12451 remote_file_delete (const char *remote_file, int from_tty)
12452 {
12453   int retcode, remote_errno;
12454   struct remote_state *rs = get_remote_state ();
12455
12456   if (!rs->remote_desc)
12457     error (_("command can only be used with remote target"));
12458
12459   retcode = remote_hostio_unlink (find_target_at (process_stratum),
12460                                   NULL, remote_file, &remote_errno);
12461   if (retcode == -1)
12462     remote_hostio_error (remote_errno);
12463
12464   if (from_tty)
12465     printf_filtered (_("Successfully deleted file \"%s\".\n"), remote_file);
12466 }
12467
12468 static void
12469 remote_put_command (const char *args, int from_tty)
12470 {
12471   if (args == NULL)
12472     error_no_arg (_("file to put"));
12473
12474   gdb_argv argv (args);
12475   if (argv[0] == NULL || argv[1] == NULL || argv[2] != NULL)
12476     error (_("Invalid parameters to remote put"));
12477
12478   remote_file_put (argv[0], argv[1], from_tty);
12479 }
12480
12481 static void
12482 remote_get_command (const char *args, int from_tty)
12483 {
12484   if (args == NULL)
12485     error_no_arg (_("file to get"));
12486
12487   gdb_argv argv (args);
12488   if (argv[0] == NULL || argv[1] == NULL || argv[2] != NULL)
12489     error (_("Invalid parameters to remote get"));
12490
12491   remote_file_get (argv[0], argv[1], from_tty);
12492 }
12493
12494 static void
12495 remote_delete_command (const char *args, int from_tty)
12496 {
12497   if (args == NULL)
12498     error_no_arg (_("file to delete"));
12499
12500   gdb_argv argv (args);
12501   if (argv[0] == NULL || argv[1] != NULL)
12502     error (_("Invalid parameters to remote delete"));
12503
12504   remote_file_delete (argv[0], from_tty);
12505 }
12506
12507 static void
12508 remote_command (const char *args, int from_tty)
12509 {
12510   help_list (remote_cmdlist, "remote ", all_commands, gdb_stdout);
12511 }
12512
12513 bool
12514 remote_target::can_execute_reverse ()
12515 {
12516   if (packet_support (PACKET_bs) == PACKET_ENABLE
12517       || packet_support (PACKET_bc) == PACKET_ENABLE)
12518     return true;
12519   else
12520     return false;
12521 }
12522
12523 bool
12524 remote_target::supports_non_stop ()
12525 {
12526   return true;
12527 }
12528
12529 bool
12530 remote_target::supports_disable_randomization ()
12531 {
12532   /* Only supported in extended mode.  */
12533   return false;
12534 }
12535
12536 bool
12537 remote_target::supports_multi_process ()
12538 {
12539   struct remote_state *rs = get_remote_state ();
12540
12541   return remote_multi_process_p (rs);
12542 }
12543
12544 static int
12545 remote_supports_cond_tracepoints ()
12546 {
12547   return packet_support (PACKET_ConditionalTracepoints) == PACKET_ENABLE;
12548 }
12549
12550 bool
12551 remote_target::supports_evaluation_of_breakpoint_conditions ()
12552 {
12553   return packet_support (PACKET_ConditionalBreakpoints) == PACKET_ENABLE;
12554 }
12555
12556 static int
12557 remote_supports_fast_tracepoints ()
12558 {
12559   return packet_support (PACKET_FastTracepoints) == PACKET_ENABLE;
12560 }
12561
12562 static int
12563 remote_supports_static_tracepoints ()
12564 {
12565   return packet_support (PACKET_StaticTracepoints) == PACKET_ENABLE;
12566 }
12567
12568 static int
12569 remote_supports_install_in_trace ()
12570 {
12571   return packet_support (PACKET_InstallInTrace) == PACKET_ENABLE;
12572 }
12573
12574 bool
12575 remote_target::supports_enable_disable_tracepoint ()
12576 {
12577   return (packet_support (PACKET_EnableDisableTracepoints_feature)
12578           == PACKET_ENABLE);
12579 }
12580
12581 bool
12582 remote_target::supports_string_tracing ()
12583 {
12584   return packet_support (PACKET_tracenz_feature) == PACKET_ENABLE;
12585 }
12586
12587 bool
12588 remote_target::can_run_breakpoint_commands ()
12589 {
12590   return packet_support (PACKET_BreakpointCommands) == PACKET_ENABLE;
12591 }
12592
12593 void
12594 remote_target::trace_init ()
12595 {
12596   struct remote_state *rs = get_remote_state ();
12597
12598   putpkt ("QTinit");
12599   remote_get_noisy_reply ();
12600   if (strcmp (rs->buf, "OK") != 0)
12601     error (_("Target does not support this command."));
12602 }
12603
12604 /* Recursive routine to walk through command list including loops, and
12605    download packets for each command.  */
12606
12607 static void
12608 remote_download_command_source (int num, ULONGEST addr,
12609                                 struct command_line *cmds)
12610 {
12611   struct remote_state *rs = get_remote_state ();
12612   struct command_line *cmd;
12613
12614   for (cmd = cmds; cmd; cmd = cmd->next)
12615     {
12616       QUIT;     /* Allow user to bail out with ^C.  */
12617       strcpy (rs->buf, "QTDPsrc:");
12618       encode_source_string (num, addr, "cmd", cmd->line,
12619                             rs->buf + strlen (rs->buf),
12620                             rs->buf_size - strlen (rs->buf));
12621       putpkt (rs->buf);
12622       remote_get_noisy_reply ();
12623       if (strcmp (rs->buf, "OK"))
12624         warning (_("Target does not support source download."));
12625
12626       if (cmd->control_type == while_control
12627           || cmd->control_type == while_stepping_control)
12628         {
12629           remote_download_command_source (num, addr, cmd->body_list_0.get ());
12630
12631           QUIT; /* Allow user to bail out with ^C.  */
12632           strcpy (rs->buf, "QTDPsrc:");
12633           encode_source_string (num, addr, "cmd", "end",
12634                                 rs->buf + strlen (rs->buf),
12635                                 rs->buf_size - strlen (rs->buf));
12636           putpkt (rs->buf);
12637           remote_get_noisy_reply ();
12638           if (strcmp (rs->buf, "OK"))
12639             warning (_("Target does not support source download."));
12640         }
12641     }
12642 }
12643
12644 void
12645 remote_target::download_tracepoint (struct bp_location *loc)
12646 {
12647 #define BUF_SIZE 2048
12648
12649   CORE_ADDR tpaddr;
12650   char addrbuf[40];
12651   char buf[BUF_SIZE];
12652   std::vector<std::string> tdp_actions;
12653   std::vector<std::string> stepping_actions;
12654   char *pkt;
12655   struct breakpoint *b = loc->owner;
12656   struct tracepoint *t = (struct tracepoint *) b;
12657   struct remote_state *rs = get_remote_state ();
12658
12659   encode_actions_rsp (loc, &tdp_actions, &stepping_actions);
12660
12661   tpaddr = loc->address;
12662   sprintf_vma (addrbuf, tpaddr);
12663   xsnprintf (buf, BUF_SIZE, "QTDP:%x:%s:%c:%lx:%x", b->number,
12664              addrbuf, /* address */
12665              (b->enable_state == bp_enabled ? 'E' : 'D'),
12666              t->step_count, t->pass_count);
12667   /* Fast tracepoints are mostly handled by the target, but we can
12668      tell the target how big of an instruction block should be moved
12669      around.  */
12670   if (b->type == bp_fast_tracepoint)
12671     {
12672       /* Only test for support at download time; we may not know
12673          target capabilities at definition time.  */
12674       if (remote_supports_fast_tracepoints ())
12675         {
12676           if (gdbarch_fast_tracepoint_valid_at (loc->gdbarch, tpaddr,
12677                                                 NULL))
12678             xsnprintf (buf + strlen (buf), BUF_SIZE - strlen (buf), ":F%x",
12679                        gdb_insn_length (loc->gdbarch, tpaddr));
12680           else
12681             /* If it passed validation at definition but fails now,
12682                something is very wrong.  */
12683             internal_error (__FILE__, __LINE__,
12684                             _("Fast tracepoint not "
12685                               "valid during download"));
12686         }
12687       else
12688         /* Fast tracepoints are functionally identical to regular
12689            tracepoints, so don't take lack of support as a reason to
12690            give up on the trace run.  */
12691         warning (_("Target does not support fast tracepoints, "
12692                    "downloading %d as regular tracepoint"), b->number);
12693     }
12694   else if (b->type == bp_static_tracepoint)
12695     {
12696       /* Only test for support at download time; we may not know
12697          target capabilities at definition time.  */
12698       if (remote_supports_static_tracepoints ())
12699         {
12700           struct static_tracepoint_marker marker;
12701
12702           if (target_static_tracepoint_marker_at (tpaddr, &marker))
12703             strcat (buf, ":S");
12704           else
12705             error (_("Static tracepoint not valid during download"));
12706         }
12707       else
12708         /* Fast tracepoints are functionally identical to regular
12709            tracepoints, so don't take lack of support as a reason
12710            to give up on the trace run.  */
12711         error (_("Target does not support static tracepoints"));
12712     }
12713   /* If the tracepoint has a conditional, make it into an agent
12714      expression and append to the definition.  */
12715   if (loc->cond)
12716     {
12717       /* Only test support at download time, we may not know target
12718          capabilities at definition time.  */
12719       if (remote_supports_cond_tracepoints ())
12720         {
12721           agent_expr_up aexpr = gen_eval_for_expr (tpaddr, loc->cond.get ());
12722           xsnprintf (buf + strlen (buf), BUF_SIZE - strlen (buf), ":X%x,",
12723                      aexpr->len);
12724           pkt = buf + strlen (buf);
12725           for (int ndx = 0; ndx < aexpr->len; ++ndx)
12726             pkt = pack_hex_byte (pkt, aexpr->buf[ndx]);
12727           *pkt = '\0';
12728         }
12729       else
12730         warning (_("Target does not support conditional tracepoints, "
12731                    "ignoring tp %d cond"), b->number);
12732     }
12733
12734   if (b->commands || *default_collect)
12735     strcat (buf, "-");
12736   putpkt (buf);
12737   remote_get_noisy_reply ();
12738   if (strcmp (rs->buf, "OK"))
12739     error (_("Target does not support tracepoints."));
12740
12741   /* do_single_steps (t); */
12742   for (auto action_it = tdp_actions.begin ();
12743        action_it != tdp_actions.end (); action_it++)
12744     {
12745       QUIT;     /* Allow user to bail out with ^C.  */
12746
12747       bool has_more = (action_it != tdp_actions.end ()
12748                        || !stepping_actions.empty ());
12749
12750       xsnprintf (buf, BUF_SIZE, "QTDP:-%x:%s:%s%c",
12751                  b->number, addrbuf, /* address */
12752                  action_it->c_str (),
12753                  has_more ? '-' : 0);
12754       putpkt (buf);
12755       remote_get_noisy_reply ();
12756       if (strcmp (rs->buf, "OK"))
12757         error (_("Error on target while setting tracepoints."));
12758     }
12759
12760     for (auto action_it = stepping_actions.begin ();
12761          action_it != stepping_actions.end (); action_it++)
12762       {
12763         QUIT;   /* Allow user to bail out with ^C.  */
12764
12765         bool is_first = action_it == stepping_actions.begin ();
12766         bool has_more = action_it != stepping_actions.end ();
12767
12768         xsnprintf (buf, BUF_SIZE, "QTDP:-%x:%s:%s%s%s",
12769                    b->number, addrbuf, /* address */
12770                    is_first ? "S" : "",
12771                    action_it->c_str (),
12772                    has_more ? "-" : "");
12773         putpkt (buf);
12774         remote_get_noisy_reply ();
12775         if (strcmp (rs->buf, "OK"))
12776           error (_("Error on target while setting tracepoints."));
12777       }
12778
12779   if (packet_support (PACKET_TracepointSource) == PACKET_ENABLE)
12780     {
12781       if (b->location != NULL)
12782         {
12783           strcpy (buf, "QTDPsrc:");
12784           encode_source_string (b->number, loc->address, "at",
12785                                 event_location_to_string (b->location.get ()),
12786                                 buf + strlen (buf), 2048 - strlen (buf));
12787           putpkt (buf);
12788           remote_get_noisy_reply ();
12789           if (strcmp (rs->buf, "OK"))
12790             warning (_("Target does not support source download."));
12791         }
12792       if (b->cond_string)
12793         {
12794           strcpy (buf, "QTDPsrc:");
12795           encode_source_string (b->number, loc->address,
12796                                 "cond", b->cond_string, buf + strlen (buf),
12797                                 2048 - strlen (buf));
12798           putpkt (buf);
12799           remote_get_noisy_reply ();
12800           if (strcmp (rs->buf, "OK"))
12801             warning (_("Target does not support source download."));
12802         }
12803       remote_download_command_source (b->number, loc->address,
12804                                       breakpoint_commands (b));
12805     }
12806 }
12807
12808 bool
12809 remote_target::can_download_tracepoint ()
12810 {
12811   struct remote_state *rs = get_remote_state ();
12812   struct trace_status *ts;
12813   int status;
12814
12815   /* Don't try to install tracepoints until we've relocated our
12816      symbols, and fetched and merged the target's tracepoint list with
12817      ours.  */
12818   if (rs->starting_up)
12819     return false;
12820
12821   ts = current_trace_status ();
12822   status = get_trace_status (ts);
12823
12824   if (status == -1 || !ts->running_known || !ts->running)
12825     return false;
12826
12827   /* If we are in a tracing experiment, but remote stub doesn't support
12828      installing tracepoint in trace, we have to return.  */
12829   if (!remote_supports_install_in_trace ())
12830     return false;
12831
12832   return true;
12833 }
12834
12835
12836 void
12837 remote_target::download_trace_state_variable (const trace_state_variable &tsv)
12838 {
12839   struct remote_state *rs = get_remote_state ();
12840   char *p;
12841
12842   xsnprintf (rs->buf, get_remote_packet_size (), "QTDV:%x:%s:%x:",
12843              tsv.number, phex ((ULONGEST) tsv.initial_value, 8),
12844              tsv.builtin);
12845   p = rs->buf + strlen (rs->buf);
12846   if ((p - rs->buf) + tsv.name.length () * 2 >= get_remote_packet_size ())
12847     error (_("Trace state variable name too long for tsv definition packet"));
12848   p += 2 * bin2hex ((gdb_byte *) (tsv.name.data ()), p, tsv.name.length ());
12849   *p++ = '\0';
12850   putpkt (rs->buf);
12851   remote_get_noisy_reply ();
12852   if (*rs->buf == '\0')
12853     error (_("Target does not support this command."));
12854   if (strcmp (rs->buf, "OK") != 0)
12855     error (_("Error on target while downloading trace state variable."));
12856 }
12857
12858 void
12859 remote_target::enable_tracepoint (struct bp_location *location)
12860 {
12861   struct remote_state *rs = get_remote_state ();
12862   char addr_buf[40];
12863
12864   sprintf_vma (addr_buf, location->address);
12865   xsnprintf (rs->buf, get_remote_packet_size (), "QTEnable:%x:%s",
12866              location->owner->number, addr_buf);
12867   putpkt (rs->buf);
12868   remote_get_noisy_reply ();
12869   if (*rs->buf == '\0')
12870     error (_("Target does not support enabling tracepoints while a trace run is ongoing."));
12871   if (strcmp (rs->buf, "OK") != 0)
12872     error (_("Error on target while enabling tracepoint."));
12873 }
12874
12875 void
12876 remote_target::disable_tracepoint (struct bp_location *location)
12877 {
12878   struct remote_state *rs = get_remote_state ();
12879   char addr_buf[40];
12880
12881   sprintf_vma (addr_buf, location->address);
12882   xsnprintf (rs->buf, get_remote_packet_size (), "QTDisable:%x:%s",
12883              location->owner->number, addr_buf);
12884   putpkt (rs->buf);
12885   remote_get_noisy_reply ();
12886   if (*rs->buf == '\0')
12887     error (_("Target does not support disabling tracepoints while a trace run is ongoing."));
12888   if (strcmp (rs->buf, "OK") != 0)
12889     error (_("Error on target while disabling tracepoint."));
12890 }
12891
12892 void
12893 remote_target::trace_set_readonly_regions ()
12894 {
12895   asection *s;
12896   bfd *abfd = NULL;
12897   bfd_size_type size;
12898   bfd_vma vma;
12899   int anysecs = 0;
12900   int offset = 0;
12901
12902   if (!exec_bfd)
12903     return;                     /* No information to give.  */
12904
12905   struct remote_state *rs = get_remote_state ();
12906
12907   strcpy (rs->buf, "QTro");
12908   offset = strlen (rs->buf);
12909   for (s = exec_bfd->sections; s; s = s->next)
12910     {
12911       char tmp1[40], tmp2[40];
12912       int sec_length;
12913
12914       if ((s->flags & SEC_LOAD) == 0 ||
12915       /*  (s->flags & SEC_CODE) == 0 || */
12916           (s->flags & SEC_READONLY) == 0)
12917         continue;
12918
12919       anysecs = 1;
12920       vma = bfd_get_section_vma (abfd, s);
12921       size = bfd_get_section_size (s);
12922       sprintf_vma (tmp1, vma);
12923       sprintf_vma (tmp2, vma + size);
12924       sec_length = 1 + strlen (tmp1) + 1 + strlen (tmp2);
12925       if (offset + sec_length + 1 > rs->buf_size)
12926         {
12927           if (packet_support (PACKET_qXfer_traceframe_info) != PACKET_ENABLE)
12928             warning (_("\
12929 Too many sections for read-only sections definition packet."));
12930           break;
12931         }
12932       xsnprintf (rs->buf + offset, rs->buf_size - offset, ":%s,%s",
12933                  tmp1, tmp2);
12934       offset += sec_length;
12935     }
12936   if (anysecs)
12937     {
12938       putpkt (rs->buf);
12939       getpkt (&rs->buf, &rs->buf_size, 0);
12940     }
12941 }
12942
12943 void
12944 remote_target::trace_start ()
12945 {
12946   struct remote_state *rs = get_remote_state ();
12947
12948   putpkt ("QTStart");
12949   remote_get_noisy_reply ();
12950   if (*rs->buf == '\0')
12951     error (_("Target does not support this command."));
12952   if (strcmp (rs->buf, "OK") != 0)
12953     error (_("Bogus reply from target: %s"), rs->buf);
12954 }
12955
12956 int
12957 remote_target::get_trace_status (struct trace_status *ts)
12958 {
12959   /* Initialize it just to avoid a GCC false warning.  */
12960   char *p = NULL;
12961   /* FIXME we need to get register block size some other way.  */
12962   extern int trace_regblock_size;
12963   enum packet_result result;
12964   struct remote_state *rs = get_remote_state ();
12965
12966   if (packet_support (PACKET_qTStatus) == PACKET_DISABLE)
12967     return -1;
12968
12969   trace_regblock_size
12970     = rs->get_remote_arch_state (target_gdbarch ())->sizeof_g_packet;
12971
12972   putpkt ("qTStatus");
12973
12974   TRY
12975     {
12976       p = remote_get_noisy_reply ();
12977     }
12978   CATCH (ex, RETURN_MASK_ERROR)
12979     {
12980       if (ex.error != TARGET_CLOSE_ERROR)
12981         {
12982           exception_fprintf (gdb_stderr, ex, "qTStatus: ");
12983           return -1;
12984         }
12985       throw_exception (ex);
12986     }
12987   END_CATCH
12988
12989   result = packet_ok (p, &remote_protocol_packets[PACKET_qTStatus]);
12990
12991   /* If the remote target doesn't do tracing, flag it.  */
12992   if (result == PACKET_UNKNOWN)
12993     return -1;
12994
12995   /* We're working with a live target.  */
12996   ts->filename = NULL;
12997
12998   if (*p++ != 'T')
12999     error (_("Bogus trace status reply from target: %s"), rs->buf);
13000
13001   /* Function 'parse_trace_status' sets default value of each field of
13002      'ts' at first, so we don't have to do it here.  */
13003   parse_trace_status (p, ts);
13004
13005   return ts->running;
13006 }
13007
13008 void
13009 remote_target::get_tracepoint_status (struct breakpoint *bp,
13010                                       struct uploaded_tp *utp)
13011 {
13012   struct remote_state *rs = get_remote_state ();
13013   char *reply;
13014   struct bp_location *loc;
13015   struct tracepoint *tp = (struct tracepoint *) bp;
13016   size_t size = get_remote_packet_size ();
13017
13018   if (tp)
13019     {
13020       tp->hit_count = 0;
13021       tp->traceframe_usage = 0;
13022       for (loc = tp->loc; loc; loc = loc->next)
13023         {
13024           /* If the tracepoint was never downloaded, don't go asking for
13025              any status.  */
13026           if (tp->number_on_target == 0)
13027             continue;
13028           xsnprintf (rs->buf, size, "qTP:%x:%s", tp->number_on_target,
13029                      phex_nz (loc->address, 0));
13030           putpkt (rs->buf);
13031           reply = remote_get_noisy_reply ();
13032           if (reply && *reply)
13033             {
13034               if (*reply == 'V')
13035                 parse_tracepoint_status (reply + 1, bp, utp);
13036             }
13037         }
13038     }
13039   else if (utp)
13040     {
13041       utp->hit_count = 0;
13042       utp->traceframe_usage = 0;
13043       xsnprintf (rs->buf, size, "qTP:%x:%s", utp->number,
13044                  phex_nz (utp->addr, 0));
13045       putpkt (rs->buf);
13046       reply = remote_get_noisy_reply ();
13047       if (reply && *reply)
13048         {
13049           if (*reply == 'V')
13050             parse_tracepoint_status (reply + 1, bp, utp);
13051         }
13052     }
13053 }
13054
13055 void
13056 remote_target::trace_stop ()
13057 {
13058   struct remote_state *rs = get_remote_state ();
13059
13060   putpkt ("QTStop");
13061   remote_get_noisy_reply ();
13062   if (*rs->buf == '\0')
13063     error (_("Target does not support this command."));
13064   if (strcmp (rs->buf, "OK") != 0)
13065     error (_("Bogus reply from target: %s"), rs->buf);
13066 }
13067
13068 int
13069 remote_target::trace_find (enum trace_find_type type, int num,
13070                            CORE_ADDR addr1, CORE_ADDR addr2,
13071                            int *tpp)
13072 {
13073   struct remote_state *rs = get_remote_state ();
13074   char *endbuf = rs->buf + get_remote_packet_size ();
13075   char *p, *reply;
13076   int target_frameno = -1, target_tracept = -1;
13077
13078   /* Lookups other than by absolute frame number depend on the current
13079      trace selected, so make sure it is correct on the remote end
13080      first.  */
13081   if (type != tfind_number)
13082     set_remote_traceframe ();
13083
13084   p = rs->buf;
13085   strcpy (p, "QTFrame:");
13086   p = strchr (p, '\0');
13087   switch (type)
13088     {
13089     case tfind_number:
13090       xsnprintf (p, endbuf - p, "%x", num);
13091       break;
13092     case tfind_pc:
13093       xsnprintf (p, endbuf - p, "pc:%s", phex_nz (addr1, 0));
13094       break;
13095     case tfind_tp:
13096       xsnprintf (p, endbuf - p, "tdp:%x", num);
13097       break;
13098     case tfind_range:
13099       xsnprintf (p, endbuf - p, "range:%s:%s", phex_nz (addr1, 0),
13100                  phex_nz (addr2, 0));
13101       break;
13102     case tfind_outside:
13103       xsnprintf (p, endbuf - p, "outside:%s:%s", phex_nz (addr1, 0),
13104                  phex_nz (addr2, 0));
13105       break;
13106     default:
13107       error (_("Unknown trace find type %d"), type);
13108     }
13109
13110   putpkt (rs->buf);
13111   reply = remote_get_noisy_reply ();
13112   if (*reply == '\0')
13113     error (_("Target does not support this command."));
13114
13115   while (reply && *reply)
13116     switch (*reply)
13117       {
13118       case 'F':
13119         p = ++reply;
13120         target_frameno = (int) strtol (p, &reply, 16);
13121         if (reply == p)
13122           error (_("Unable to parse trace frame number"));
13123         /* Don't update our remote traceframe number cache on failure
13124            to select a remote traceframe.  */
13125         if (target_frameno == -1)
13126           return -1;
13127         break;
13128       case 'T':
13129         p = ++reply;
13130         target_tracept = (int) strtol (p, &reply, 16);
13131         if (reply == p)
13132           error (_("Unable to parse tracepoint number"));
13133         break;
13134       case 'O':         /* "OK"? */
13135         if (reply[1] == 'K' && reply[2] == '\0')
13136           reply += 2;
13137         else
13138           error (_("Bogus reply from target: %s"), reply);
13139         break;
13140       default:
13141         error (_("Bogus reply from target: %s"), reply);
13142       }
13143   if (tpp)
13144     *tpp = target_tracept;
13145
13146   rs->remote_traceframe_number = target_frameno;
13147   return target_frameno;
13148 }
13149
13150 bool
13151 remote_target::get_trace_state_variable_value (int tsvnum, LONGEST *val)
13152 {
13153   struct remote_state *rs = get_remote_state ();
13154   char *reply;
13155   ULONGEST uval;
13156
13157   set_remote_traceframe ();
13158
13159   xsnprintf (rs->buf, get_remote_packet_size (), "qTV:%x", tsvnum);
13160   putpkt (rs->buf);
13161   reply = remote_get_noisy_reply ();
13162   if (reply && *reply)
13163     {
13164       if (*reply == 'V')
13165         {
13166           unpack_varlen_hex (reply + 1, &uval);
13167           *val = (LONGEST) uval;
13168           return true;
13169         }
13170     }
13171   return false;
13172 }
13173
13174 int
13175 remote_target::save_trace_data (const char *filename)
13176 {
13177   struct remote_state *rs = get_remote_state ();
13178   char *p, *reply;
13179
13180   p = rs->buf;
13181   strcpy (p, "QTSave:");
13182   p += strlen (p);
13183   if ((p - rs->buf) + strlen (filename) * 2 >= get_remote_packet_size ())
13184     error (_("Remote file name too long for trace save packet"));
13185   p += 2 * bin2hex ((gdb_byte *) filename, p, strlen (filename));
13186   *p++ = '\0';
13187   putpkt (rs->buf);
13188   reply = remote_get_noisy_reply ();
13189   if (*reply == '\0')
13190     error (_("Target does not support this command."));
13191   if (strcmp (reply, "OK") != 0)
13192     error (_("Bogus reply from target: %s"), reply);
13193   return 0;
13194 }
13195
13196 /* This is basically a memory transfer, but needs to be its own packet
13197    because we don't know how the target actually organizes its trace
13198    memory, plus we want to be able to ask for as much as possible, but
13199    not be unhappy if we don't get as much as we ask for.  */
13200
13201 LONGEST
13202 remote_target::get_raw_trace_data (gdb_byte *buf, ULONGEST offset, LONGEST len)
13203 {
13204   struct remote_state *rs = get_remote_state ();
13205   char *reply;
13206   char *p;
13207   int rslt;
13208
13209   p = rs->buf;
13210   strcpy (p, "qTBuffer:");
13211   p += strlen (p);
13212   p += hexnumstr (p, offset);
13213   *p++ = ',';
13214   p += hexnumstr (p, len);
13215   *p++ = '\0';
13216
13217   putpkt (rs->buf);
13218   reply = remote_get_noisy_reply ();
13219   if (reply && *reply)
13220     {
13221       /* 'l' by itself means we're at the end of the buffer and
13222          there is nothing more to get.  */
13223       if (*reply == 'l')
13224         return 0;
13225
13226       /* Convert the reply into binary.  Limit the number of bytes to
13227          convert according to our passed-in buffer size, rather than
13228          what was returned in the packet; if the target is
13229          unexpectedly generous and gives us a bigger reply than we
13230          asked for, we don't want to crash.  */
13231       rslt = hex2bin (reply, buf, len);
13232       return rslt;
13233     }
13234
13235   /* Something went wrong, flag as an error.  */
13236   return -1;
13237 }
13238
13239 void
13240 remote_target::set_disconnected_tracing (int val)
13241 {
13242   struct remote_state *rs = get_remote_state ();
13243
13244   if (packet_support (PACKET_DisconnectedTracing_feature) == PACKET_ENABLE)
13245     {
13246       char *reply;
13247
13248       xsnprintf (rs->buf, get_remote_packet_size (), "QTDisconnected:%x", val);
13249       putpkt (rs->buf);
13250       reply = remote_get_noisy_reply ();
13251       if (*reply == '\0')
13252         error (_("Target does not support this command."));
13253       if (strcmp (reply, "OK") != 0)
13254         error (_("Bogus reply from target: %s"), reply);
13255     }
13256   else if (val)
13257     warning (_("Target does not support disconnected tracing."));
13258 }
13259
13260 int
13261 remote_target::core_of_thread (ptid_t ptid)
13262 {
13263   struct thread_info *info = find_thread_ptid (ptid);
13264
13265   if (info != NULL && info->priv != NULL)
13266     return get_remote_thread_info (info)->core;
13267
13268   return -1;
13269 }
13270
13271 void
13272 remote_target::set_circular_trace_buffer (int val)
13273 {
13274   struct remote_state *rs = get_remote_state ();
13275   char *reply;
13276
13277   xsnprintf (rs->buf, get_remote_packet_size (), "QTBuffer:circular:%x", val);
13278   putpkt (rs->buf);
13279   reply = remote_get_noisy_reply ();
13280   if (*reply == '\0')
13281     error (_("Target does not support this command."));
13282   if (strcmp (reply, "OK") != 0)
13283     error (_("Bogus reply from target: %s"), reply);
13284 }
13285
13286 traceframe_info_up
13287 remote_target::traceframe_info ()
13288 {
13289   gdb::optional<gdb::char_vector> text
13290     = target_read_stralloc (target_stack, TARGET_OBJECT_TRACEFRAME_INFO,
13291                             NULL);
13292   if (text)
13293     return parse_traceframe_info (text->data ());
13294
13295   return NULL;
13296 }
13297
13298 /* Handle the qTMinFTPILen packet.  Returns the minimum length of
13299    instruction on which a fast tracepoint may be placed.  Returns -1
13300    if the packet is not supported, and 0 if the minimum instruction
13301    length is unknown.  */
13302
13303 int
13304 remote_target::get_min_fast_tracepoint_insn_len ()
13305 {
13306   struct remote_state *rs = get_remote_state ();
13307   char *reply;
13308
13309   /* If we're not debugging a process yet, the IPA can't be
13310      loaded.  */
13311   if (!target_has_execution)
13312     return 0;
13313
13314   /* Make sure the remote is pointing at the right process.  */
13315   set_general_process ();
13316
13317   xsnprintf (rs->buf, get_remote_packet_size (), "qTMinFTPILen");
13318   putpkt (rs->buf);
13319   reply = remote_get_noisy_reply ();
13320   if (*reply == '\0')
13321     return -1;
13322   else
13323     {
13324       ULONGEST min_insn_len;
13325
13326       unpack_varlen_hex (reply, &min_insn_len);
13327
13328       return (int) min_insn_len;
13329     }
13330 }
13331
13332 void
13333 remote_target::set_trace_buffer_size (LONGEST val)
13334 {
13335   if (packet_support (PACKET_QTBuffer_size) != PACKET_DISABLE)
13336     {
13337       struct remote_state *rs = get_remote_state ();
13338       char *buf = rs->buf;
13339       char *endbuf = rs->buf + get_remote_packet_size ();
13340       enum packet_result result;
13341
13342       gdb_assert (val >= 0 || val == -1);
13343       buf += xsnprintf (buf, endbuf - buf, "QTBuffer:size:");
13344       /* Send -1 as literal "-1" to avoid host size dependency.  */
13345       if (val < 0)
13346         {
13347           *buf++ = '-';
13348           buf += hexnumstr (buf, (ULONGEST) -val);
13349         }
13350       else
13351         buf += hexnumstr (buf, (ULONGEST) val);
13352
13353       putpkt (rs->buf);
13354       remote_get_noisy_reply ();
13355       result = packet_ok (rs->buf,
13356                   &remote_protocol_packets[PACKET_QTBuffer_size]);
13357
13358       if (result != PACKET_OK)
13359         warning (_("Bogus reply from target: %s"), rs->buf);
13360     }
13361 }
13362
13363 bool
13364 remote_target::set_trace_notes (const char *user, const char *notes,
13365                                 const char *stop_notes)
13366 {
13367   struct remote_state *rs = get_remote_state ();
13368   char *reply;
13369   char *buf = rs->buf;
13370   char *endbuf = rs->buf + get_remote_packet_size ();
13371   int nbytes;
13372
13373   buf += xsnprintf (buf, endbuf - buf, "QTNotes:");
13374   if (user)
13375     {
13376       buf += xsnprintf (buf, endbuf - buf, "user:");
13377       nbytes = bin2hex ((gdb_byte *) user, buf, strlen (user));
13378       buf += 2 * nbytes;
13379       *buf++ = ';';
13380     }
13381   if (notes)
13382     {
13383       buf += xsnprintf (buf, endbuf - buf, "notes:");
13384       nbytes = bin2hex ((gdb_byte *) notes, buf, strlen (notes));
13385       buf += 2 * nbytes;
13386       *buf++ = ';';
13387     }
13388   if (stop_notes)
13389     {
13390       buf += xsnprintf (buf, endbuf - buf, "tstop:");
13391       nbytes = bin2hex ((gdb_byte *) stop_notes, buf, strlen (stop_notes));
13392       buf += 2 * nbytes;
13393       *buf++ = ';';
13394     }
13395   /* Ensure the buffer is terminated.  */
13396   *buf = '\0';
13397
13398   putpkt (rs->buf);
13399   reply = remote_get_noisy_reply ();
13400   if (*reply == '\0')
13401     return false;
13402
13403   if (strcmp (reply, "OK") != 0)
13404     error (_("Bogus reply from target: %s"), reply);
13405
13406   return true;
13407 }
13408
13409 bool
13410 remote_target::use_agent (bool use)
13411 {
13412   if (packet_support (PACKET_QAgent) != PACKET_DISABLE)
13413     {
13414       struct remote_state *rs = get_remote_state ();
13415
13416       /* If the stub supports QAgent.  */
13417       xsnprintf (rs->buf, get_remote_packet_size (), "QAgent:%d", use);
13418       putpkt (rs->buf);
13419       getpkt (&rs->buf, &rs->buf_size, 0);
13420
13421       if (strcmp (rs->buf, "OK") == 0)
13422         {
13423           ::use_agent = use;
13424           return true;
13425         }
13426     }
13427
13428   return false;
13429 }
13430
13431 bool
13432 remote_target::can_use_agent ()
13433 {
13434   return (packet_support (PACKET_QAgent) != PACKET_DISABLE);
13435 }
13436
13437 struct btrace_target_info
13438 {
13439   /* The ptid of the traced thread.  */
13440   ptid_t ptid;
13441
13442   /* The obtained branch trace configuration.  */
13443   struct btrace_config conf;
13444 };
13445
13446 /* Reset our idea of our target's btrace configuration.  */
13447
13448 static void
13449 remote_btrace_reset (void)
13450 {
13451   struct remote_state *rs = get_remote_state ();
13452
13453   memset (&rs->btrace_config, 0, sizeof (rs->btrace_config));
13454 }
13455
13456 /* Synchronize the configuration with the target.  */
13457
13458 static void
13459 btrace_sync_conf (const struct btrace_config *conf)
13460 {
13461   struct packet_config *packet;
13462   struct remote_state *rs;
13463   char *buf, *pos, *endbuf;
13464
13465   rs = get_remote_state ();
13466   buf = rs->buf;
13467   endbuf = buf + get_remote_packet_size ();
13468
13469   packet = &remote_protocol_packets[PACKET_Qbtrace_conf_bts_size];
13470   if (packet_config_support (packet) == PACKET_ENABLE
13471       && conf->bts.size != rs->btrace_config.bts.size)
13472     {
13473       pos = buf;
13474       pos += xsnprintf (pos, endbuf - pos, "%s=0x%x", packet->name,
13475                         conf->bts.size);
13476
13477       putpkt (buf);
13478       getpkt (&buf, &rs->buf_size, 0);
13479
13480       if (packet_ok (buf, packet) == PACKET_ERROR)
13481         {
13482           if (buf[0] == 'E' && buf[1] == '.')
13483             error (_("Failed to configure the BTS buffer size: %s"), buf + 2);
13484           else
13485             error (_("Failed to configure the BTS buffer size."));
13486         }
13487
13488       rs->btrace_config.bts.size = conf->bts.size;
13489     }
13490
13491   packet = &remote_protocol_packets[PACKET_Qbtrace_conf_pt_size];
13492   if (packet_config_support (packet) == PACKET_ENABLE
13493       && conf->pt.size != rs->btrace_config.pt.size)
13494     {
13495       pos = buf;
13496       pos += xsnprintf (pos, endbuf - pos, "%s=0x%x", packet->name,
13497                         conf->pt.size);
13498
13499       putpkt (buf);
13500       getpkt (&buf, &rs->buf_size, 0);
13501
13502       if (packet_ok (buf, packet) == PACKET_ERROR)
13503         {
13504           if (buf[0] == 'E' && buf[1] == '.')
13505             error (_("Failed to configure the trace buffer size: %s"), buf + 2);
13506           else
13507             error (_("Failed to configure the trace buffer size."));
13508         }
13509
13510       rs->btrace_config.pt.size = conf->pt.size;
13511     }
13512 }
13513
13514 /* Read the current thread's btrace configuration from the target and
13515    store it into CONF.  */
13516
13517 static void
13518 btrace_read_config (struct btrace_config *conf)
13519 {
13520   gdb::optional<gdb::char_vector> xml
13521     = target_read_stralloc (target_stack, TARGET_OBJECT_BTRACE_CONF, "");
13522   if (xml)
13523     parse_xml_btrace_conf (conf, xml->data ());
13524 }
13525
13526 /* Maybe reopen target btrace.  */
13527
13528 static void
13529 remote_btrace_maybe_reopen (void)
13530 {
13531   struct remote_state *rs = get_remote_state ();
13532   struct thread_info *tp;
13533   int btrace_target_pushed = 0;
13534   int warned = 0;
13535
13536   scoped_restore_current_thread restore_thread;
13537
13538   ALL_NON_EXITED_THREADS (tp)
13539     {
13540       set_general_thread (tp->ptid);
13541
13542       memset (&rs->btrace_config, 0x00, sizeof (struct btrace_config));
13543       btrace_read_config (&rs->btrace_config);
13544
13545       if (rs->btrace_config.format == BTRACE_FORMAT_NONE)
13546         continue;
13547
13548 #if !defined (HAVE_LIBIPT)
13549       if (rs->btrace_config.format == BTRACE_FORMAT_PT)
13550         {
13551           if (!warned)
13552             {
13553               warned = 1;
13554               warning (_("Target is recording using Intel Processor Trace "
13555                          "but support was disabled at compile time."));
13556             }
13557
13558           continue;
13559         }
13560 #endif /* !defined (HAVE_LIBIPT) */
13561
13562       /* Push target, once, but before anything else happens.  This way our
13563          changes to the threads will be cleaned up by unpushing the target
13564          in case btrace_read_config () throws.  */
13565       if (!btrace_target_pushed)
13566         {
13567           btrace_target_pushed = 1;
13568           record_btrace_push_target ();
13569           printf_filtered (_("Target is recording using %s.\n"),
13570                            btrace_format_string (rs->btrace_config.format));
13571         }
13572
13573       tp->btrace.target = XCNEW (struct btrace_target_info);
13574       tp->btrace.target->ptid = tp->ptid;
13575       tp->btrace.target->conf = rs->btrace_config;
13576     }
13577 }
13578
13579 /* Enable branch tracing.  */
13580
13581 struct btrace_target_info *
13582 remote_target::enable_btrace (ptid_t ptid, const struct btrace_config *conf)
13583 {
13584   struct btrace_target_info *tinfo = NULL;
13585   struct packet_config *packet = NULL;
13586   struct remote_state *rs = get_remote_state ();
13587   char *buf = rs->buf;
13588   char *endbuf = rs->buf + get_remote_packet_size ();
13589
13590   switch (conf->format)
13591     {
13592       case BTRACE_FORMAT_BTS:
13593         packet = &remote_protocol_packets[PACKET_Qbtrace_bts];
13594         break;
13595
13596       case BTRACE_FORMAT_PT:
13597         packet = &remote_protocol_packets[PACKET_Qbtrace_pt];
13598         break;
13599     }
13600
13601   if (packet == NULL || packet_config_support (packet) != PACKET_ENABLE)
13602     error (_("Target does not support branch tracing."));
13603
13604   btrace_sync_conf (conf);
13605
13606   set_general_thread (ptid);
13607
13608   buf += xsnprintf (buf, endbuf - buf, "%s", packet->name);
13609   putpkt (rs->buf);
13610   getpkt (&rs->buf, &rs->buf_size, 0);
13611
13612   if (packet_ok (rs->buf, packet) == PACKET_ERROR)
13613     {
13614       if (rs->buf[0] == 'E' && rs->buf[1] == '.')
13615         error (_("Could not enable branch tracing for %s: %s"),
13616                target_pid_to_str (ptid), rs->buf + 2);
13617       else
13618         error (_("Could not enable branch tracing for %s."),
13619                target_pid_to_str (ptid));
13620     }
13621
13622   tinfo = XCNEW (struct btrace_target_info);
13623   tinfo->ptid = ptid;
13624
13625   /* If we fail to read the configuration, we lose some information, but the
13626      tracing itself is not impacted.  */
13627   TRY
13628     {
13629       btrace_read_config (&tinfo->conf);
13630     }
13631   CATCH (err, RETURN_MASK_ERROR)
13632     {
13633       if (err.message != NULL)
13634         warning ("%s", err.message);
13635     }
13636   END_CATCH
13637
13638   return tinfo;
13639 }
13640
13641 /* Disable branch tracing.  */
13642
13643 void
13644 remote_target::disable_btrace (struct btrace_target_info *tinfo)
13645 {
13646   struct packet_config *packet = &remote_protocol_packets[PACKET_Qbtrace_off];
13647   struct remote_state *rs = get_remote_state ();
13648   char *buf = rs->buf;
13649   char *endbuf = rs->buf + get_remote_packet_size ();
13650
13651   if (packet_config_support (packet) != PACKET_ENABLE)
13652     error (_("Target does not support branch tracing."));
13653
13654   set_general_thread (tinfo->ptid);
13655
13656   buf += xsnprintf (buf, endbuf - buf, "%s", packet->name);
13657   putpkt (rs->buf);
13658   getpkt (&rs->buf, &rs->buf_size, 0);
13659
13660   if (packet_ok (rs->buf, packet) == PACKET_ERROR)
13661     {
13662       if (rs->buf[0] == 'E' && rs->buf[1] == '.')
13663         error (_("Could not disable branch tracing for %s: %s"),
13664                target_pid_to_str (tinfo->ptid), rs->buf + 2);
13665       else
13666         error (_("Could not disable branch tracing for %s."),
13667                target_pid_to_str (tinfo->ptid));
13668     }
13669
13670   xfree (tinfo);
13671 }
13672
13673 /* Teardown branch tracing.  */
13674
13675 void
13676 remote_target::teardown_btrace (struct btrace_target_info *tinfo)
13677 {
13678   /* We must not talk to the target during teardown.  */
13679   xfree (tinfo);
13680 }
13681
13682 /* Read the branch trace.  */
13683
13684 enum btrace_error
13685 remote_target::read_btrace (struct btrace_data *btrace,
13686                             struct btrace_target_info *tinfo,
13687                             enum btrace_read_type type)
13688 {
13689   struct packet_config *packet = &remote_protocol_packets[PACKET_qXfer_btrace];
13690   const char *annex;
13691
13692   if (packet_config_support (packet) != PACKET_ENABLE)
13693     error (_("Target does not support branch tracing."));
13694
13695 #if !defined(HAVE_LIBEXPAT)
13696   error (_("Cannot process branch tracing result. XML parsing not supported."));
13697 #endif
13698
13699   switch (type)
13700     {
13701     case BTRACE_READ_ALL:
13702       annex = "all";
13703       break;
13704     case BTRACE_READ_NEW:
13705       annex = "new";
13706       break;
13707     case BTRACE_READ_DELTA:
13708       annex = "delta";
13709       break;
13710     default:
13711       internal_error (__FILE__, __LINE__,
13712                       _("Bad branch tracing read type: %u."),
13713                       (unsigned int) type);
13714     }
13715
13716   gdb::optional<gdb::char_vector> xml
13717     = target_read_stralloc (target_stack, TARGET_OBJECT_BTRACE, annex);
13718   if (!xml)
13719     return BTRACE_ERR_UNKNOWN;
13720
13721   parse_xml_btrace (btrace, xml->data ());
13722
13723   return BTRACE_ERR_NONE;
13724 }
13725
13726 const struct btrace_config *
13727 remote_target::btrace_conf (const struct btrace_target_info *tinfo)
13728 {
13729   return &tinfo->conf;
13730 }
13731
13732 bool
13733 remote_target::augmented_libraries_svr4_read ()
13734 {
13735   return (packet_support (PACKET_augmented_libraries_svr4_read_feature)
13736           == PACKET_ENABLE);
13737 }
13738
13739 /* Implementation of to_load.  */
13740
13741 void
13742 remote_target::load (const char *name, int from_tty)
13743 {
13744   generic_load (name, from_tty);
13745 }
13746
13747 /* Accepts an integer PID; returns a string representing a file that
13748    can be opened on the remote side to get the symbols for the child
13749    process.  Returns NULL if the operation is not supported.  */
13750
13751 char *
13752 remote_target::pid_to_exec_file (int pid)
13753 {
13754   static gdb::optional<gdb::char_vector> filename;
13755   struct inferior *inf;
13756   char *annex = NULL;
13757
13758   if (packet_support (PACKET_qXfer_exec_file) != PACKET_ENABLE)
13759     return NULL;
13760
13761   inf = find_inferior_pid (pid);
13762   if (inf == NULL)
13763     internal_error (__FILE__, __LINE__,
13764                     _("not currently attached to process %d"), pid);
13765
13766   if (!inf->fake_pid_p)
13767     {
13768       const int annex_size = 9;
13769
13770       annex = (char *) alloca (annex_size);
13771       xsnprintf (annex, annex_size, "%x", pid);
13772     }
13773
13774   filename = target_read_stralloc (target_stack,
13775                                    TARGET_OBJECT_EXEC_FILE, annex);
13776
13777   return filename ? filename->data () : nullptr;
13778 }
13779
13780 /* Implement the to_can_do_single_step target_ops method.  */
13781
13782 int
13783 remote_target::can_do_single_step ()
13784 {
13785   /* We can only tell whether target supports single step or not by
13786      supported s and S vCont actions if the stub supports vContSupported
13787      feature.  If the stub doesn't support vContSupported feature,
13788      we have conservatively to think target doesn't supports single
13789      step.  */
13790   if (packet_support (PACKET_vContSupported) == PACKET_ENABLE)
13791     {
13792       struct remote_state *rs = get_remote_state ();
13793
13794       if (packet_support (PACKET_vCont) == PACKET_SUPPORT_UNKNOWN)
13795         remote_vcont_probe (rs);
13796
13797       return rs->supports_vCont.s && rs->supports_vCont.S;
13798     }
13799   else
13800     return 0;
13801 }
13802
13803 /* Implementation of the to_execution_direction method for the remote
13804    target.  */
13805
13806 enum exec_direction_kind
13807 remote_target::execution_direction ()
13808 {
13809   struct remote_state *rs = get_remote_state ();
13810
13811   return rs->last_resume_exec_dir;
13812 }
13813
13814 /* Return pointer to the thread_info struct which corresponds to
13815    THREAD_HANDLE (having length HANDLE_LEN).  */
13816
13817 thread_info *
13818 remote_target::thread_handle_to_thread_info (const gdb_byte *thread_handle,
13819                                              int handle_len,
13820                                              inferior *inf)
13821 {
13822   struct thread_info *tp;
13823
13824   ALL_NON_EXITED_THREADS (tp)
13825     {
13826       remote_thread_info *priv = get_remote_thread_info (tp);
13827
13828       if (tp->inf == inf && priv != NULL)
13829         {
13830           if (handle_len != priv->thread_handle.size ())
13831             error (_("Thread handle size mismatch: %d vs %zu (from remote)"),
13832                    handle_len, priv->thread_handle.size ());
13833           if (memcmp (thread_handle, priv->thread_handle.data (),
13834                       handle_len) == 0)
13835             return tp;
13836         }
13837     }
13838
13839   return NULL;
13840 }
13841
13842 bool
13843 remote_target::can_async_p ()
13844 {
13845   struct remote_state *rs = get_remote_state ();
13846
13847   /* We don't go async if the user has explicitly prevented it with the
13848      "maint set target-async" command.  */
13849   if (!target_async_permitted)
13850     return false;
13851
13852   /* We're async whenever the serial device is.  */
13853   return serial_can_async_p (rs->remote_desc);
13854 }
13855
13856 bool
13857 remote_target::is_async_p ()
13858 {
13859   struct remote_state *rs = get_remote_state ();
13860
13861   if (!target_async_permitted)
13862     /* We only enable async when the user specifically asks for it.  */
13863     return false;
13864
13865   /* We're async whenever the serial device is.  */
13866   return serial_is_async_p (rs->remote_desc);
13867 }
13868
13869 /* Pass the SERIAL event on and up to the client.  One day this code
13870    will be able to delay notifying the client of an event until the
13871    point where an entire packet has been received.  */
13872
13873 static serial_event_ftype remote_async_serial_handler;
13874
13875 static void
13876 remote_async_serial_handler (struct serial *scb, void *context)
13877 {
13878   /* Don't propogate error information up to the client.  Instead let
13879      the client find out about the error by querying the target.  */
13880   inferior_event_handler (INF_REG_EVENT, NULL);
13881 }
13882
13883 static void
13884 remote_async_inferior_event_handler (gdb_client_data data)
13885 {
13886   inferior_event_handler (INF_REG_EVENT, NULL);
13887 }
13888
13889 void
13890 remote_target::async (int enable)
13891 {
13892   struct remote_state *rs = get_remote_state ();
13893
13894   if (enable)
13895     {
13896       serial_async (rs->remote_desc, remote_async_serial_handler, rs);
13897
13898       /* If there are pending events in the stop reply queue tell the
13899          event loop to process them.  */
13900       if (!QUEUE_is_empty (stop_reply_p, stop_reply_queue))
13901         mark_async_event_handler (remote_async_inferior_event_token);
13902       /* For simplicity, below we clear the pending events token
13903          without remembering whether it is marked, so here we always
13904          mark it.  If there's actually no pending notification to
13905          process, this ends up being a no-op (other than a spurious
13906          event-loop wakeup).  */
13907       if (target_is_non_stop_p ())
13908         mark_async_event_handler (rs->notif_state->get_pending_events_token);
13909     }
13910   else
13911     {
13912       serial_async (rs->remote_desc, NULL, NULL);
13913       /* If the core is disabling async, it doesn't want to be
13914          disturbed with target events.  Clear all async event sources
13915          too.  */
13916       clear_async_event_handler (remote_async_inferior_event_token);
13917       if (target_is_non_stop_p ())
13918         clear_async_event_handler (rs->notif_state->get_pending_events_token);
13919     }
13920 }
13921
13922 /* Implementation of the to_thread_events method.  */
13923
13924 void
13925 remote_target::thread_events (int enable)
13926 {
13927   struct remote_state *rs = get_remote_state ();
13928   size_t size = get_remote_packet_size ();
13929
13930   if (packet_support (PACKET_QThreadEvents) == PACKET_DISABLE)
13931     return;
13932
13933   xsnprintf (rs->buf, size, "QThreadEvents:%x", enable ? 1 : 0);
13934   putpkt (rs->buf);
13935   getpkt (&rs->buf, &rs->buf_size, 0);
13936
13937   switch (packet_ok (rs->buf,
13938                      &remote_protocol_packets[PACKET_QThreadEvents]))
13939     {
13940     case PACKET_OK:
13941       if (strcmp (rs->buf, "OK") != 0)
13942         error (_("Remote refused setting thread events: %s"), rs->buf);
13943       break;
13944     case PACKET_ERROR:
13945       warning (_("Remote failure reply: %s"), rs->buf);
13946       break;
13947     case PACKET_UNKNOWN:
13948       break;
13949     }
13950 }
13951
13952 static void
13953 set_remote_cmd (const char *args, int from_tty)
13954 {
13955   help_list (remote_set_cmdlist, "set remote ", all_commands, gdb_stdout);
13956 }
13957
13958 static void
13959 show_remote_cmd (const char *args, int from_tty)
13960 {
13961   /* We can't just use cmd_show_list here, because we want to skip
13962      the redundant "show remote Z-packet" and the legacy aliases.  */
13963   struct cmd_list_element *list = remote_show_cmdlist;
13964   struct ui_out *uiout = current_uiout;
13965
13966   ui_out_emit_tuple tuple_emitter (uiout, "showlist");
13967   for (; list != NULL; list = list->next)
13968     if (strcmp (list->name, "Z-packet") == 0)
13969       continue;
13970     else if (list->type == not_set_cmd)
13971       /* Alias commands are exactly like the original, except they
13972          don't have the normal type.  */
13973       continue;
13974     else
13975       {
13976         ui_out_emit_tuple option_emitter (uiout, "option");
13977
13978         uiout->field_string ("name", list->name);
13979         uiout->text (":  ");
13980         if (list->type == show_cmd)
13981           do_show_command (NULL, from_tty, list);
13982         else
13983           cmd_func (list, NULL, from_tty);
13984       }
13985 }
13986
13987
13988 /* Function to be called whenever a new objfile (shlib) is detected.  */
13989 static void
13990 remote_new_objfile (struct objfile *objfile)
13991 {
13992   struct remote_state *rs = get_remote_state ();
13993
13994   if (rs->remote_desc != 0)             /* Have a remote connection.  */
13995     remote_check_symbols ();
13996 }
13997
13998 /* Pull all the tracepoints defined on the target and create local
13999    data structures representing them.  We don't want to create real
14000    tracepoints yet, we don't want to mess up the user's existing
14001    collection.  */
14002   
14003 int
14004 remote_target::upload_tracepoints (struct uploaded_tp **utpp)
14005 {
14006   struct remote_state *rs = get_remote_state ();
14007   char *p;
14008
14009   /* Ask for a first packet of tracepoint definition.  */
14010   putpkt ("qTfP");
14011   getpkt (&rs->buf, &rs->buf_size, 0);
14012   p = rs->buf;
14013   while (*p && *p != 'l')
14014     {
14015       parse_tracepoint_definition (p, utpp);
14016       /* Ask for another packet of tracepoint definition.  */
14017       putpkt ("qTsP");
14018       getpkt (&rs->buf, &rs->buf_size, 0);
14019       p = rs->buf;
14020     }
14021   return 0;
14022 }
14023
14024 int
14025 remote_target::upload_trace_state_variables (struct uploaded_tsv **utsvp)
14026 {
14027   struct remote_state *rs = get_remote_state ();
14028   char *p;
14029
14030   /* Ask for a first packet of variable definition.  */
14031   putpkt ("qTfV");
14032   getpkt (&rs->buf, &rs->buf_size, 0);
14033   p = rs->buf;
14034   while (*p && *p != 'l')
14035     {
14036       parse_tsv_definition (p, utsvp);
14037       /* Ask for another packet of variable definition.  */
14038       putpkt ("qTsV");
14039       getpkt (&rs->buf, &rs->buf_size, 0);
14040       p = rs->buf;
14041     }
14042   return 0;
14043 }
14044
14045 /* The "set/show range-stepping" show hook.  */
14046
14047 static void
14048 show_range_stepping (struct ui_file *file, int from_tty,
14049                      struct cmd_list_element *c,
14050                      const char *value)
14051 {
14052   fprintf_filtered (file,
14053                     _("Debugger's willingness to use range stepping "
14054                       "is %s.\n"), value);
14055 }
14056
14057 /* The "set/show range-stepping" set hook.  */
14058
14059 static void
14060 set_range_stepping (const char *ignore_args, int from_tty,
14061                     struct cmd_list_element *c)
14062 {
14063   struct remote_state *rs = get_remote_state ();
14064
14065   /* Whene enabling, check whether range stepping is actually
14066      supported by the target, and warn if not.  */
14067   if (use_range_stepping)
14068     {
14069       if (rs->remote_desc != NULL)
14070         {
14071           if (packet_support (PACKET_vCont) == PACKET_SUPPORT_UNKNOWN)
14072             remote_vcont_probe (rs);
14073
14074           if (packet_support (PACKET_vCont) == PACKET_ENABLE
14075               && rs->supports_vCont.r)
14076             return;
14077         }
14078
14079       warning (_("Range stepping is not supported by the current target"));
14080     }
14081 }
14082
14083 void
14084 _initialize_remote (void)
14085 {
14086   struct cmd_list_element *cmd;
14087   const char *cmd_name;
14088
14089   /* architecture specific data */
14090   remote_g_packet_data_handle =
14091     gdbarch_data_register_pre_init (remote_g_packet_data_init);
14092
14093   remote_pspace_data
14094     = register_program_space_data_with_cleanup (NULL,
14095                                                 remote_pspace_data_cleanup);
14096
14097   /* Initialize the per-target state.  At the moment there is only one
14098      of these, not one per target.  Only one target is active at a
14099      time.  */
14100   remote_state = new struct remote_state ();
14101
14102   add_target (remote_target_info, remote_target::open);
14103   add_target (extended_remote_target_info, extended_remote_target::open);
14104
14105   /* Hook into new objfile notification.  */
14106   gdb::observers::new_objfile.attach (remote_new_objfile);
14107
14108 #if 0
14109   init_remote_threadtests ();
14110 #endif
14111
14112   stop_reply_queue = QUEUE_alloc (stop_reply_p, stop_reply_xfree);
14113   /* set/show remote ...  */
14114
14115   add_prefix_cmd ("remote", class_maintenance, set_remote_cmd, _("\
14116 Remote protocol specific variables\n\
14117 Configure various remote-protocol specific variables such as\n\
14118 the packets being used"),
14119                   &remote_set_cmdlist, "set remote ",
14120                   0 /* allow-unknown */, &setlist);
14121   add_prefix_cmd ("remote", class_maintenance, show_remote_cmd, _("\
14122 Remote protocol specific variables\n\
14123 Configure various remote-protocol specific variables such as\n\
14124 the packets being used"),
14125                   &remote_show_cmdlist, "show remote ",
14126                   0 /* allow-unknown */, &showlist);
14127
14128   add_cmd ("compare-sections", class_obscure, compare_sections_command, _("\
14129 Compare section data on target to the exec file.\n\
14130 Argument is a single section name (default: all loaded sections).\n\
14131 To compare only read-only loaded sections, specify the -r option."),
14132            &cmdlist);
14133
14134   add_cmd ("packet", class_maintenance, packet_command, _("\
14135 Send an arbitrary packet to a remote target.\n\
14136    maintenance packet TEXT\n\
14137 If GDB is talking to an inferior via the GDB serial protocol, then\n\
14138 this command sends the string TEXT to the inferior, and displays the\n\
14139 response packet.  GDB supplies the initial `$' character, and the\n\
14140 terminating `#' character and checksum."),
14141            &maintenancelist);
14142
14143   add_setshow_boolean_cmd ("remotebreak", no_class, &remote_break, _("\
14144 Set whether to send break if interrupted."), _("\
14145 Show whether to send break if interrupted."), _("\
14146 If set, a break, instead of a cntrl-c, is sent to the remote target."),
14147                            set_remotebreak, show_remotebreak,
14148                            &setlist, &showlist);
14149   cmd_name = "remotebreak";
14150   cmd = lookup_cmd (&cmd_name, setlist, "", -1, 1);
14151   deprecate_cmd (cmd, "set remote interrupt-sequence");
14152   cmd_name = "remotebreak"; /* needed because lookup_cmd updates the pointer */
14153   cmd = lookup_cmd (&cmd_name, showlist, "", -1, 1);
14154   deprecate_cmd (cmd, "show remote interrupt-sequence");
14155
14156   add_setshow_enum_cmd ("interrupt-sequence", class_support,
14157                         interrupt_sequence_modes, &interrupt_sequence_mode,
14158                         _("\
14159 Set interrupt sequence to remote target."), _("\
14160 Show interrupt sequence to remote target."), _("\
14161 Valid value is \"Ctrl-C\", \"BREAK\" or \"BREAK-g\". The default is \"Ctrl-C\"."),
14162                         NULL, show_interrupt_sequence,
14163                         &remote_set_cmdlist,
14164                         &remote_show_cmdlist);
14165
14166   add_setshow_boolean_cmd ("interrupt-on-connect", class_support,
14167                            &interrupt_on_connect, _("\
14168 Set whether interrupt-sequence is sent to remote target when gdb connects to."), _("            \
14169 Show whether interrupt-sequence is sent to remote target when gdb connects to."), _("           \
14170 If set, interrupt sequence is sent to remote target."),
14171                            NULL, NULL,
14172                            &remote_set_cmdlist, &remote_show_cmdlist);
14173
14174   /* Install commands for configuring memory read/write packets.  */
14175
14176   add_cmd ("remotewritesize", no_class, set_memory_write_packet_size, _("\
14177 Set the maximum number of bytes per memory write packet (deprecated)."),
14178            &setlist);
14179   add_cmd ("remotewritesize", no_class, show_memory_write_packet_size, _("\
14180 Show the maximum number of bytes per memory write packet (deprecated)."),
14181            &showlist);
14182   add_cmd ("memory-write-packet-size", no_class,
14183            set_memory_write_packet_size, _("\
14184 Set the maximum number of bytes per memory-write packet.\n\
14185 Specify the number of bytes in a packet or 0 (zero) for the\n\
14186 default packet size.  The actual limit is further reduced\n\
14187 dependent on the target.  Specify ``fixed'' to disable the\n\
14188 further restriction and ``limit'' to enable that restriction."),
14189            &remote_set_cmdlist);
14190   add_cmd ("memory-read-packet-size", no_class,
14191            set_memory_read_packet_size, _("\
14192 Set the maximum number of bytes per memory-read packet.\n\
14193 Specify the number of bytes in a packet or 0 (zero) for the\n\
14194 default packet size.  The actual limit is further reduced\n\
14195 dependent on the target.  Specify ``fixed'' to disable the\n\
14196 further restriction and ``limit'' to enable that restriction."),
14197            &remote_set_cmdlist);
14198   add_cmd ("memory-write-packet-size", no_class,
14199            show_memory_write_packet_size,
14200            _("Show the maximum number of bytes per memory-write packet."),
14201            &remote_show_cmdlist);
14202   add_cmd ("memory-read-packet-size", no_class,
14203            show_memory_read_packet_size,
14204            _("Show the maximum number of bytes per memory-read packet."),
14205            &remote_show_cmdlist);
14206
14207   add_setshow_zinteger_cmd ("hardware-watchpoint-limit", no_class,
14208                             &remote_hw_watchpoint_limit, _("\
14209 Set the maximum number of target hardware watchpoints."), _("\
14210 Show the maximum number of target hardware watchpoints."), _("\
14211 Specify a negative limit for unlimited."),
14212                             NULL, NULL, /* FIXME: i18n: The maximum
14213                                            number of target hardware
14214                                            watchpoints is %s.  */
14215                             &remote_set_cmdlist, &remote_show_cmdlist);
14216   add_setshow_zinteger_cmd ("hardware-watchpoint-length-limit", no_class,
14217                             &remote_hw_watchpoint_length_limit, _("\
14218 Set the maximum length (in bytes) of a target hardware watchpoint."), _("\
14219 Show the maximum length (in bytes) of a target hardware watchpoint."), _("\
14220 Specify a negative limit for unlimited."),
14221                             NULL, NULL, /* FIXME: i18n: The maximum
14222                                            length (in bytes) of a target
14223                                            hardware watchpoint is %s.  */
14224                             &remote_set_cmdlist, &remote_show_cmdlist);
14225   add_setshow_zinteger_cmd ("hardware-breakpoint-limit", no_class,
14226                             &remote_hw_breakpoint_limit, _("\
14227 Set the maximum number of target hardware breakpoints."), _("\
14228 Show the maximum number of target hardware breakpoints."), _("\
14229 Specify a negative limit for unlimited."),
14230                             NULL, NULL, /* FIXME: i18n: The maximum
14231                                            number of target hardware
14232                                            breakpoints is %s.  */
14233                             &remote_set_cmdlist, &remote_show_cmdlist);
14234
14235   add_setshow_zuinteger_cmd ("remoteaddresssize", class_obscure,
14236                              &remote_address_size, _("\
14237 Set the maximum size of the address (in bits) in a memory packet."), _("\
14238 Show the maximum size of the address (in bits) in a memory packet."), NULL,
14239                              NULL,
14240                              NULL, /* FIXME: i18n: */
14241                              &setlist, &showlist);
14242
14243   init_all_packet_configs ();
14244
14245   add_packet_config_cmd (&remote_protocol_packets[PACKET_X],
14246                          "X", "binary-download", 1);
14247
14248   add_packet_config_cmd (&remote_protocol_packets[PACKET_vCont],
14249                          "vCont", "verbose-resume", 0);
14250
14251   add_packet_config_cmd (&remote_protocol_packets[PACKET_QPassSignals],
14252                          "QPassSignals", "pass-signals", 0);
14253
14254   add_packet_config_cmd (&remote_protocol_packets[PACKET_QCatchSyscalls],
14255                          "QCatchSyscalls", "catch-syscalls", 0);
14256
14257   add_packet_config_cmd (&remote_protocol_packets[PACKET_QProgramSignals],
14258                          "QProgramSignals", "program-signals", 0);
14259
14260   add_packet_config_cmd (&remote_protocol_packets[PACKET_QSetWorkingDir],
14261                          "QSetWorkingDir", "set-working-dir", 0);
14262
14263   add_packet_config_cmd (&remote_protocol_packets[PACKET_QStartupWithShell],
14264                          "QStartupWithShell", "startup-with-shell", 0);
14265
14266   add_packet_config_cmd (&remote_protocol_packets
14267                          [PACKET_QEnvironmentHexEncoded],
14268                          "QEnvironmentHexEncoded", "environment-hex-encoded",
14269                          0);
14270
14271   add_packet_config_cmd (&remote_protocol_packets[PACKET_QEnvironmentReset],
14272                          "QEnvironmentReset", "environment-reset",
14273                          0);
14274
14275   add_packet_config_cmd (&remote_protocol_packets[PACKET_QEnvironmentUnset],
14276                          "QEnvironmentUnset", "environment-unset",
14277                          0);
14278
14279   add_packet_config_cmd (&remote_protocol_packets[PACKET_qSymbol],
14280                          "qSymbol", "symbol-lookup", 0);
14281
14282   add_packet_config_cmd (&remote_protocol_packets[PACKET_P],
14283                          "P", "set-register", 1);
14284
14285   add_packet_config_cmd (&remote_protocol_packets[PACKET_p],
14286                          "p", "fetch-register", 1);
14287
14288   add_packet_config_cmd (&remote_protocol_packets[PACKET_Z0],
14289                          "Z0", "software-breakpoint", 0);
14290
14291   add_packet_config_cmd (&remote_protocol_packets[PACKET_Z1],
14292                          "Z1", "hardware-breakpoint", 0);
14293
14294   add_packet_config_cmd (&remote_protocol_packets[PACKET_Z2],
14295                          "Z2", "write-watchpoint", 0);
14296
14297   add_packet_config_cmd (&remote_protocol_packets[PACKET_Z3],
14298                          "Z3", "read-watchpoint", 0);
14299
14300   add_packet_config_cmd (&remote_protocol_packets[PACKET_Z4],
14301                          "Z4", "access-watchpoint", 0);
14302
14303   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_auxv],
14304                          "qXfer:auxv:read", "read-aux-vector", 0);
14305
14306   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_exec_file],
14307                          "qXfer:exec-file:read", "pid-to-exec-file", 0);
14308
14309   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_features],
14310                          "qXfer:features:read", "target-features", 0);
14311
14312   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_libraries],
14313                          "qXfer:libraries:read", "library-info", 0);
14314
14315   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_libraries_svr4],
14316                          "qXfer:libraries-svr4:read", "library-info-svr4", 0);
14317
14318   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_memory_map],
14319                          "qXfer:memory-map:read", "memory-map", 0);
14320
14321   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_spu_read],
14322                          "qXfer:spu:read", "read-spu-object", 0);
14323
14324   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_spu_write],
14325                          "qXfer:spu:write", "write-spu-object", 0);
14326
14327   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_osdata],
14328                         "qXfer:osdata:read", "osdata", 0);
14329
14330   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_threads],
14331                          "qXfer:threads:read", "threads", 0);
14332
14333   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_siginfo_read],
14334                          "qXfer:siginfo:read", "read-siginfo-object", 0);
14335
14336   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_siginfo_write],
14337                          "qXfer:siginfo:write", "write-siginfo-object", 0);
14338
14339   add_packet_config_cmd
14340     (&remote_protocol_packets[PACKET_qXfer_traceframe_info],
14341      "qXfer:traceframe-info:read", "traceframe-info", 0);
14342
14343   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_uib],
14344                          "qXfer:uib:read", "unwind-info-block", 0);
14345
14346   add_packet_config_cmd (&remote_protocol_packets[PACKET_qGetTLSAddr],
14347                          "qGetTLSAddr", "get-thread-local-storage-address",
14348                          0);
14349
14350   add_packet_config_cmd (&remote_protocol_packets[PACKET_qGetTIBAddr],
14351                          "qGetTIBAddr", "get-thread-information-block-address",
14352                          0);
14353
14354   add_packet_config_cmd (&remote_protocol_packets[PACKET_bc],
14355                          "bc", "reverse-continue", 0);
14356
14357   add_packet_config_cmd (&remote_protocol_packets[PACKET_bs],
14358                          "bs", "reverse-step", 0);
14359
14360   add_packet_config_cmd (&remote_protocol_packets[PACKET_qSupported],
14361                          "qSupported", "supported-packets", 0);
14362
14363   add_packet_config_cmd (&remote_protocol_packets[PACKET_qSearch_memory],
14364                          "qSearch:memory", "search-memory", 0);
14365
14366   add_packet_config_cmd (&remote_protocol_packets[PACKET_qTStatus],
14367                          "qTStatus", "trace-status", 0);
14368
14369   add_packet_config_cmd (&remote_protocol_packets[PACKET_vFile_setfs],
14370                          "vFile:setfs", "hostio-setfs", 0);
14371
14372   add_packet_config_cmd (&remote_protocol_packets[PACKET_vFile_open],
14373                          "vFile:open", "hostio-open", 0);
14374
14375   add_packet_config_cmd (&remote_protocol_packets[PACKET_vFile_pread],
14376                          "vFile:pread", "hostio-pread", 0);
14377
14378   add_packet_config_cmd (&remote_protocol_packets[PACKET_vFile_pwrite],
14379                          "vFile:pwrite", "hostio-pwrite", 0);
14380
14381   add_packet_config_cmd (&remote_protocol_packets[PACKET_vFile_close],
14382                          "vFile:close", "hostio-close", 0);
14383
14384   add_packet_config_cmd (&remote_protocol_packets[PACKET_vFile_unlink],
14385                          "vFile:unlink", "hostio-unlink", 0);
14386
14387   add_packet_config_cmd (&remote_protocol_packets[PACKET_vFile_readlink],
14388                          "vFile:readlink", "hostio-readlink", 0);
14389
14390   add_packet_config_cmd (&remote_protocol_packets[PACKET_vFile_fstat],
14391                          "vFile:fstat", "hostio-fstat", 0);
14392
14393   add_packet_config_cmd (&remote_protocol_packets[PACKET_vAttach],
14394                          "vAttach", "attach", 0);
14395
14396   add_packet_config_cmd (&remote_protocol_packets[PACKET_vRun],
14397                          "vRun", "run", 0);
14398
14399   add_packet_config_cmd (&remote_protocol_packets[PACKET_QStartNoAckMode],
14400                          "QStartNoAckMode", "noack", 0);
14401
14402   add_packet_config_cmd (&remote_protocol_packets[PACKET_vKill],
14403                          "vKill", "kill", 0);
14404
14405   add_packet_config_cmd (&remote_protocol_packets[PACKET_qAttached],
14406                          "qAttached", "query-attached", 0);
14407
14408   add_packet_config_cmd (&remote_protocol_packets[PACKET_ConditionalTracepoints],
14409                          "ConditionalTracepoints",
14410                          "conditional-tracepoints", 0);
14411
14412   add_packet_config_cmd (&remote_protocol_packets[PACKET_ConditionalBreakpoints],
14413                          "ConditionalBreakpoints",
14414                          "conditional-breakpoints", 0);
14415
14416   add_packet_config_cmd (&remote_protocol_packets[PACKET_BreakpointCommands],
14417                          "BreakpointCommands",
14418                          "breakpoint-commands", 0);
14419
14420   add_packet_config_cmd (&remote_protocol_packets[PACKET_FastTracepoints],
14421                          "FastTracepoints", "fast-tracepoints", 0);
14422
14423   add_packet_config_cmd (&remote_protocol_packets[PACKET_TracepointSource],
14424                          "TracepointSource", "TracepointSource", 0);
14425
14426   add_packet_config_cmd (&remote_protocol_packets[PACKET_QAllow],
14427                          "QAllow", "allow", 0);
14428
14429   add_packet_config_cmd (&remote_protocol_packets[PACKET_StaticTracepoints],
14430                          "StaticTracepoints", "static-tracepoints", 0);
14431
14432   add_packet_config_cmd (&remote_protocol_packets[PACKET_InstallInTrace],
14433                          "InstallInTrace", "install-in-trace", 0);
14434
14435   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_statictrace_read],
14436                          "qXfer:statictrace:read", "read-sdata-object", 0);
14437
14438   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_fdpic],
14439                          "qXfer:fdpic:read", "read-fdpic-loadmap", 0);
14440
14441   add_packet_config_cmd (&remote_protocol_packets[PACKET_QDisableRandomization],
14442                          "QDisableRandomization", "disable-randomization", 0);
14443
14444   add_packet_config_cmd (&remote_protocol_packets[PACKET_QAgent],
14445                          "QAgent", "agent", 0);
14446
14447   add_packet_config_cmd (&remote_protocol_packets[PACKET_QTBuffer_size],
14448                          "QTBuffer:size", "trace-buffer-size", 0);
14449
14450   add_packet_config_cmd (&remote_protocol_packets[PACKET_Qbtrace_off],
14451        "Qbtrace:off", "disable-btrace", 0);
14452
14453   add_packet_config_cmd (&remote_protocol_packets[PACKET_Qbtrace_bts],
14454        "Qbtrace:bts", "enable-btrace-bts", 0);
14455
14456   add_packet_config_cmd (&remote_protocol_packets[PACKET_Qbtrace_pt],
14457        "Qbtrace:pt", "enable-btrace-pt", 0);
14458
14459   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_btrace],
14460        "qXfer:btrace", "read-btrace", 0);
14461
14462   add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_btrace_conf],
14463        "qXfer:btrace-conf", "read-btrace-conf", 0);
14464
14465   add_packet_config_cmd (&remote_protocol_packets[PACKET_Qbtrace_conf_bts_size],
14466        "Qbtrace-conf:bts:size", "btrace-conf-bts-size", 0);
14467
14468   add_packet_config_cmd (&remote_protocol_packets[PACKET_multiprocess_feature],
14469        "multiprocess-feature", "multiprocess-feature", 0);
14470
14471   add_packet_config_cmd (&remote_protocol_packets[PACKET_swbreak_feature],
14472                          "swbreak-feature", "swbreak-feature", 0);
14473
14474   add_packet_config_cmd (&remote_protocol_packets[PACKET_hwbreak_feature],
14475                          "hwbreak-feature", "hwbreak-feature", 0);
14476
14477   add_packet_config_cmd (&remote_protocol_packets[PACKET_fork_event_feature],
14478                          "fork-event-feature", "fork-event-feature", 0);
14479
14480   add_packet_config_cmd (&remote_protocol_packets[PACKET_vfork_event_feature],
14481                          "vfork-event-feature", "vfork-event-feature", 0);
14482
14483   add_packet_config_cmd (&remote_protocol_packets[PACKET_Qbtrace_conf_pt_size],
14484        "Qbtrace-conf:pt:size", "btrace-conf-pt-size", 0);
14485
14486   add_packet_config_cmd (&remote_protocol_packets[PACKET_vContSupported],
14487                          "vContSupported", "verbose-resume-supported", 0);
14488
14489   add_packet_config_cmd (&remote_protocol_packets[PACKET_exec_event_feature],
14490                          "exec-event-feature", "exec-event-feature", 0);
14491
14492   add_packet_config_cmd (&remote_protocol_packets[PACKET_vCtrlC],
14493                          "vCtrlC", "ctrl-c", 0);
14494
14495   add_packet_config_cmd (&remote_protocol_packets[PACKET_QThreadEvents],
14496                          "QThreadEvents", "thread-events", 0);
14497
14498   add_packet_config_cmd (&remote_protocol_packets[PACKET_no_resumed],
14499                          "N stop reply", "no-resumed-stop-reply", 0);
14500
14501   /* Assert that we've registered "set remote foo-packet" commands
14502      for all packet configs.  */
14503   {
14504     int i;
14505
14506     for (i = 0; i < PACKET_MAX; i++)
14507       {
14508         /* Ideally all configs would have a command associated.  Some
14509            still don't though.  */
14510         int excepted;
14511
14512         switch (i)
14513           {
14514           case PACKET_QNonStop:
14515           case PACKET_EnableDisableTracepoints_feature:
14516           case PACKET_tracenz_feature:
14517           case PACKET_DisconnectedTracing_feature:
14518           case PACKET_augmented_libraries_svr4_read_feature:
14519           case PACKET_qCRC:
14520             /* Additions to this list need to be well justified:
14521                pre-existing packets are OK; new packets are not.  */
14522             excepted = 1;
14523             break;
14524           default:
14525             excepted = 0;
14526             break;
14527           }
14528
14529         /* This catches both forgetting to add a config command, and
14530            forgetting to remove a packet from the exception list.  */
14531         gdb_assert (excepted == (remote_protocol_packets[i].name == NULL));
14532       }
14533   }
14534
14535   /* Keep the old ``set remote Z-packet ...'' working.  Each individual
14536      Z sub-packet has its own set and show commands, but users may
14537      have sets to this variable in their .gdbinit files (or in their
14538      documentation).  */
14539   add_setshow_auto_boolean_cmd ("Z-packet", class_obscure,
14540                                 &remote_Z_packet_detect, _("\
14541 Set use of remote protocol `Z' packets"), _("\
14542 Show use of remote protocol `Z' packets "), _("\
14543 When set, GDB will attempt to use the remote breakpoint and watchpoint\n\
14544 packets."),
14545                                 set_remote_protocol_Z_packet_cmd,
14546                                 show_remote_protocol_Z_packet_cmd,
14547                                 /* FIXME: i18n: Use of remote protocol
14548                                    `Z' packets is %s.  */
14549                                 &remote_set_cmdlist, &remote_show_cmdlist);
14550
14551   add_prefix_cmd ("remote", class_files, remote_command, _("\
14552 Manipulate files on the remote system\n\
14553 Transfer files to and from the remote target system."),
14554                   &remote_cmdlist, "remote ",
14555                   0 /* allow-unknown */, &cmdlist);
14556
14557   add_cmd ("put", class_files, remote_put_command,
14558            _("Copy a local file to the remote system."),
14559            &remote_cmdlist);
14560
14561   add_cmd ("get", class_files, remote_get_command,
14562            _("Copy a remote file to the local system."),
14563            &remote_cmdlist);
14564
14565   add_cmd ("delete", class_files, remote_delete_command,
14566            _("Delete a remote file."),
14567            &remote_cmdlist);
14568
14569   add_setshow_string_noescape_cmd ("exec-file", class_files,
14570                                    &remote_exec_file_var, _("\
14571 Set the remote pathname for \"run\""), _("\
14572 Show the remote pathname for \"run\""), NULL,
14573                                    set_remote_exec_file,
14574                                    show_remote_exec_file,
14575                                    &remote_set_cmdlist,
14576                                    &remote_show_cmdlist);
14577
14578   add_setshow_boolean_cmd ("range-stepping", class_run,
14579                            &use_range_stepping, _("\
14580 Enable or disable range stepping."), _("\
14581 Show whether target-assisted range stepping is enabled."), _("\
14582 If on, and the target supports it, when stepping a source line, GDB\n\
14583 tells the target to step the corresponding range of addresses itself instead\n\
14584 of issuing multiple single-steps.  This speeds up source level\n\
14585 stepping.  If off, GDB always issues single-steps, even if range\n\
14586 stepping is supported by the target.  The default is on."),
14587                            set_range_stepping,
14588                            show_range_stepping,
14589                            &setlist,
14590                            &showlist);
14591
14592   /* Eventually initialize fileio.  See fileio.c */
14593   initialize_remote_fileio (remote_set_cmdlist, remote_show_cmdlist);
14594
14595   /* Take advantage of the fact that the TID field is not used, to tag
14596      special ptids with it set to != 0.  */
14597   magic_null_ptid = ptid_build (42000, -1, 1);
14598   not_sent_ptid = ptid_build (42000, -2, 1);
14599   any_thread_ptid = ptid_build (42000, 0, 1);
14600 }