1 /* Remote target communications for serial-line targets in custom GDB protocol
3 Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
4 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
5 Free Software Foundation, Inc.
7 This file is part of GDB.
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
22 /* See the GDB User Guide for details of the GDB remote protocol. */
25 #include "gdb_string.h"
31 #include "exceptions.h"
33 /*#include "terminal.h" */
36 #include "gdb-stabs.h"
37 #include "gdbthread.h"
41 #include "gdb_assert.h"
44 #include "cli/cli-decode.h"
45 #include "cli/cli-setshow.h"
46 #include "target-descriptions.h"
51 #include "event-loop.h"
52 #include "event-top.h"
58 #include "gdbcore.h" /* for exec_bfd */
60 #include "remote-fileio.h"
61 #include "gdb/fileio.h"
64 #include "memory-map.h"
66 /* The size to align memory write packets, when practical. The protocol
67 does not guarantee any alignment, and gdb will generate short
68 writes and unaligned writes, but even as a best-effort attempt this
69 can improve bulk transfers. For instance, if a write is misaligned
70 relative to the target's data bus, the stub may need to make an extra
71 round trip fetching data from the target. This doesn't make a
72 huge difference, but it's easy to do, so we try to be helpful.
74 The alignment chosen is arbitrary; usually data bus width is
75 important here, not the possibly larger cache line size. */
76 enum { REMOTE_ALIGN_WRITES = 16 };
78 /* Prototypes for local functions. */
79 static void cleanup_sigint_signal_handler (void *dummy);
80 static void initialize_sigint_signal_handler (void);
81 static int getpkt_sane (char **buf, long *sizeof_buf, int forever);
83 static void handle_remote_sigint (int);
84 static void handle_remote_sigint_twice (int);
85 static void async_remote_interrupt (gdb_client_data);
86 void async_remote_interrupt_twice (gdb_client_data);
88 static void remote_files_info (struct target_ops *ignore);
90 static void remote_prepare_to_store (struct regcache *regcache);
92 static void remote_fetch_registers (struct regcache *regcache, int regno);
94 static void remote_resume (ptid_t ptid, int step,
95 enum target_signal siggnal);
96 static void remote_open (char *name, int from_tty);
98 static void extended_remote_open (char *name, int from_tty);
100 static void remote_open_1 (char *, int, struct target_ops *, int extended_p);
102 static void remote_close (int quitting);
104 static void remote_store_registers (struct regcache *regcache, int regno);
106 static void remote_mourn (void);
108 static void extended_remote_restart (void);
110 static void extended_remote_mourn (void);
112 static void remote_mourn_1 (struct target_ops *);
114 static void remote_send (char **buf, long *sizeof_buf_p);
116 static int readchar (int timeout);
118 static ptid_t remote_wait (ptid_t ptid,
119 struct target_waitstatus *status);
121 static void remote_kill (void);
123 static int tohex (int nib);
125 static int remote_can_async_p (void);
127 static int remote_is_async_p (void);
129 static void remote_async (void (*callback) (enum inferior_event_type event_type,
130 void *context), void *context);
132 static int remote_async_mask (int new_mask);
134 static void remote_detach (char *args, int from_tty);
136 static void remote_interrupt (int signo);
138 static void remote_interrupt_twice (int signo);
140 static void interrupt_query (void);
142 static void set_general_thread (struct ptid ptid);
143 static void set_continue_thread (struct ptid ptid);
145 static int remote_thread_alive (ptid_t);
147 static void get_offsets (void);
149 static void skip_frame (void);
151 static long read_frame (char **buf_p, long *sizeof_buf);
153 static int hexnumlen (ULONGEST num);
155 static void init_remote_ops (void);
157 static void init_extended_remote_ops (void);
159 static void remote_stop (ptid_t);
161 static int ishex (int ch, int *val);
163 static int stubhex (int ch);
165 static int hexnumstr (char *, ULONGEST);
167 static int hexnumnstr (char *, ULONGEST, int);
169 static CORE_ADDR remote_address_masked (CORE_ADDR);
171 static void print_packet (char *);
173 static unsigned long crc32 (unsigned char *, int, unsigned int);
175 static void compare_sections_command (char *, int);
177 static void packet_command (char *, int);
179 static int stub_unpack_int (char *buff, int fieldlength);
181 static ptid_t remote_current_thread (ptid_t oldptid);
183 static void remote_find_new_threads (void);
185 static void record_currthread (ptid_t currthread);
187 static int fromhex (int a);
189 static int hex2bin (const char *hex, gdb_byte *bin, int count);
191 static int bin2hex (const gdb_byte *bin, char *hex, int count);
193 static int putpkt_binary (char *buf, int cnt);
195 static void check_binary_download (CORE_ADDR addr);
197 struct packet_config;
199 static void show_packet_config_cmd (struct packet_config *config);
201 static void update_packet_config (struct packet_config *config);
203 static void set_remote_protocol_packet_cmd (char *args, int from_tty,
204 struct cmd_list_element *c);
206 static void show_remote_protocol_packet_cmd (struct ui_file *file,
208 struct cmd_list_element *c,
211 static char *write_ptid (char *buf, const char *endbuf, ptid_t ptid);
212 static ptid_t read_ptid (char *buf, char **obuf);
214 void _initialize_remote (void);
218 static struct cmd_list_element *remote_cmdlist;
220 /* For "set remote" and "show remote". */
222 static struct cmd_list_element *remote_set_cmdlist;
223 static struct cmd_list_element *remote_show_cmdlist;
225 /* Description of the remote protocol state for the currently
226 connected target. This is per-target state, and independent of the
227 selected architecture. */
231 /* A buffer to use for incoming packets, and its current size. The
232 buffer is grown dynamically for larger incoming packets.
233 Outgoing packets may also be constructed in this buffer.
234 BUF_SIZE is always at least REMOTE_PACKET_SIZE;
235 REMOTE_PACKET_SIZE should be used to limit the length of outgoing
240 /* If we negotiated packet size explicitly (and thus can bypass
241 heuristics for the largest packet size that will not overflow
242 a buffer in the stub), this will be set to that packet size.
243 Otherwise zero, meaning to use the guessed size. */
244 long explicit_packet_size;
246 /* remote_wait is normally called when the target is running and
247 waits for a stop reply packet. But sometimes we need to call it
248 when the target is already stopped. We can send a "?" packet
249 and have remote_wait read the response. Or, if we already have
250 the response, we can stash it in BUF and tell remote_wait to
251 skip calling getpkt. This flag is set when BUF contains a
252 stop reply packet and the target is not waiting. */
253 int cached_wait_status;
255 /* True, if in no ack mode. That is, neither GDB nor the stub will
256 expect acks from each other. The connection is assumed to be
260 /* True if we're connected in extended remote mode. */
263 /* True if the stub reported support for multi-process
265 int multi_process_aware;
268 /* Returns true if the multi-process extensions are in effect. */
270 remote_multi_process_p (struct remote_state *rs)
272 return rs->extended && rs->multi_process_aware;
275 /* This data could be associated with a target, but we do not always
276 have access to the current target when we need it, so for now it is
277 static. This will be fine for as long as only one target is in use
279 static struct remote_state remote_state;
281 static struct remote_state *
282 get_remote_state_raw (void)
284 return &remote_state;
287 /* Description of the remote protocol for a given architecture. */
291 long offset; /* Offset into G packet. */
292 long regnum; /* GDB's internal register number. */
293 LONGEST pnum; /* Remote protocol register number. */
294 int in_g_packet; /* Always part of G packet. */
295 /* long size in bytes; == register_size (target_gdbarch, regnum);
297 /* char *name; == gdbarch_register_name (target_gdbarch, regnum);
301 struct remote_arch_state
303 /* Description of the remote protocol registers. */
304 long sizeof_g_packet;
306 /* Description of the remote protocol registers indexed by REGNUM
307 (making an array gdbarch_num_regs in size). */
308 struct packet_reg *regs;
310 /* This is the size (in chars) of the first response to the ``g''
311 packet. It is used as a heuristic when determining the maximum
312 size of memory-read and memory-write packets. A target will
313 typically only reserve a buffer large enough to hold the ``g''
314 packet. The size does not include packet overhead (headers and
316 long actual_register_packet_size;
318 /* This is the maximum size (in chars) of a non read/write packet.
319 It is also used as a cap on the size of read/write packets. */
320 long remote_packet_size;
324 /* Handle for retreving the remote protocol data from gdbarch. */
325 static struct gdbarch_data *remote_gdbarch_data_handle;
327 static struct remote_arch_state *
328 get_remote_arch_state (void)
330 return gdbarch_data (target_gdbarch, remote_gdbarch_data_handle);
333 /* Fetch the global remote target state. */
335 static struct remote_state *
336 get_remote_state (void)
338 /* Make sure that the remote architecture state has been
339 initialized, because doing so might reallocate rs->buf. Any
340 function which calls getpkt also needs to be mindful of changes
341 to rs->buf, but this call limits the number of places which run
343 get_remote_arch_state ();
345 return get_remote_state_raw ();
349 compare_pnums (const void *lhs_, const void *rhs_)
351 const struct packet_reg * const *lhs = lhs_;
352 const struct packet_reg * const *rhs = rhs_;
354 if ((*lhs)->pnum < (*rhs)->pnum)
356 else if ((*lhs)->pnum == (*rhs)->pnum)
363 init_remote_state (struct gdbarch *gdbarch)
365 int regnum, num_remote_regs, offset;
366 struct remote_state *rs = get_remote_state_raw ();
367 struct remote_arch_state *rsa;
368 struct packet_reg **remote_regs;
370 rsa = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct remote_arch_state);
372 /* Use the architecture to build a regnum<->pnum table, which will be
373 1:1 unless a feature set specifies otherwise. */
374 rsa->regs = GDBARCH_OBSTACK_CALLOC (gdbarch,
375 gdbarch_num_regs (gdbarch),
377 for (regnum = 0; regnum < gdbarch_num_regs (gdbarch); regnum++)
379 struct packet_reg *r = &rsa->regs[regnum];
381 if (register_size (gdbarch, regnum) == 0)
382 /* Do not try to fetch zero-sized (placeholder) registers. */
385 r->pnum = gdbarch_remote_register_number (gdbarch, regnum);
390 /* Define the g/G packet format as the contents of each register
391 with a remote protocol number, in order of ascending protocol
394 remote_regs = alloca (gdbarch_num_regs (gdbarch)
395 * sizeof (struct packet_reg *));
396 for (num_remote_regs = 0, regnum = 0;
397 regnum < gdbarch_num_regs (gdbarch);
399 if (rsa->regs[regnum].pnum != -1)
400 remote_regs[num_remote_regs++] = &rsa->regs[regnum];
402 qsort (remote_regs, num_remote_regs, sizeof (struct packet_reg *),
405 for (regnum = 0, offset = 0; regnum < num_remote_regs; regnum++)
407 remote_regs[regnum]->in_g_packet = 1;
408 remote_regs[regnum]->offset = offset;
409 offset += register_size (gdbarch, remote_regs[regnum]->regnum);
412 /* Record the maximum possible size of the g packet - it may turn out
414 rsa->sizeof_g_packet = offset;
416 /* Default maximum number of characters in a packet body. Many
417 remote stubs have a hardwired buffer size of 400 bytes
418 (c.f. BUFMAX in m68k-stub.c and i386-stub.c). BUFMAX-1 is used
419 as the maximum packet-size to ensure that the packet and an extra
420 NUL character can always fit in the buffer. This stops GDB
421 trashing stubs that try to squeeze an extra NUL into what is
422 already a full buffer (As of 1999-12-04 that was most stubs). */
423 rsa->remote_packet_size = 400 - 1;
425 /* This one is filled in when a ``g'' packet is received. */
426 rsa->actual_register_packet_size = 0;
428 /* Should rsa->sizeof_g_packet needs more space than the
429 default, adjust the size accordingly. Remember that each byte is
430 encoded as two characters. 32 is the overhead for the packet
431 header / footer. NOTE: cagney/1999-10-26: I suspect that 8
432 (``$NN:G...#NN'') is a better guess, the below has been padded a
434 if (rsa->sizeof_g_packet > ((rsa->remote_packet_size - 32) / 2))
435 rsa->remote_packet_size = (rsa->sizeof_g_packet * 2 + 32);
437 /* Make sure that the packet buffer is plenty big enough for
438 this architecture. */
439 if (rs->buf_size < rsa->remote_packet_size)
441 rs->buf_size = 2 * rsa->remote_packet_size;
442 rs->buf = xrealloc (rs->buf, rs->buf_size);
448 /* Return the current allowed size of a remote packet. This is
449 inferred from the current architecture, and should be used to
450 limit the length of outgoing packets. */
452 get_remote_packet_size (void)
454 struct remote_state *rs = get_remote_state ();
455 struct remote_arch_state *rsa = get_remote_arch_state ();
457 if (rs->explicit_packet_size)
458 return rs->explicit_packet_size;
460 return rsa->remote_packet_size;
463 static struct packet_reg *
464 packet_reg_from_regnum (struct remote_arch_state *rsa, long regnum)
466 if (regnum < 0 && regnum >= gdbarch_num_regs (target_gdbarch))
470 struct packet_reg *r = &rsa->regs[regnum];
471 gdb_assert (r->regnum == regnum);
476 static struct packet_reg *
477 packet_reg_from_pnum (struct remote_arch_state *rsa, LONGEST pnum)
480 for (i = 0; i < gdbarch_num_regs (target_gdbarch); i++)
482 struct packet_reg *r = &rsa->regs[i];
489 /* FIXME: graces/2002-08-08: These variables should eventually be
490 bound to an instance of the target object (as in gdbarch-tdep()),
491 when such a thing exists. */
493 /* This is set to the data address of the access causing the target
494 to stop for a watchpoint. */
495 static CORE_ADDR remote_watch_data_address;
497 /* This is non-zero if target stopped for a watchpoint. */
498 static int remote_stopped_by_watchpoint_p;
500 static struct target_ops remote_ops;
502 static struct target_ops extended_remote_ops;
504 static int remote_async_mask_value = 1;
506 /* FIXME: cagney/1999-09-23: Even though getpkt was called with
507 ``forever'' still use the normal timeout mechanism. This is
508 currently used by the ASYNC code to guarentee that target reads
509 during the initial connect always time-out. Once getpkt has been
510 modified to return a timeout indication and, in turn
511 remote_wait()/wait_for_inferior() have gained a timeout parameter
513 static int wait_forever_enabled_p = 1;
516 /* This variable chooses whether to send a ^C or a break when the user
517 requests program interruption. Although ^C is usually what remote
518 systems expect, and that is the default here, sometimes a break is
519 preferable instead. */
521 static int remote_break;
523 /* Descriptor for I/O to remote machine. Initialize it to NULL so that
524 remote_open knows that we don't have a file open when the program
526 static struct serial *remote_desc = NULL;
528 /* This variable sets the number of bits in an address that are to be
529 sent in a memory ("M" or "m") packet. Normally, after stripping
530 leading zeros, the entire address would be sent. This variable
531 restricts the address to REMOTE_ADDRESS_SIZE bits. HISTORY: The
532 initial implementation of remote.c restricted the address sent in
533 memory packets to ``host::sizeof long'' bytes - (typically 32
534 bits). Consequently, for 64 bit targets, the upper 32 bits of an
535 address was never sent. Since fixing this bug may cause a break in
536 some remote targets this variable is principly provided to
537 facilitate backward compatibility. */
539 static int remote_address_size;
541 /* Temporary to track who currently owns the terminal. See
542 remote_terminal_* for more details. */
544 static int remote_async_terminal_ours_p;
546 /* The executable file to use for "run" on the remote side. */
548 static char *remote_exec_file = "";
551 /* User configurable variables for the number of characters in a
552 memory read/write packet. MIN (rsa->remote_packet_size,
553 rsa->sizeof_g_packet) is the default. Some targets need smaller
554 values (fifo overruns, et.al.) and some users need larger values
555 (speed up transfers). The variables ``preferred_*'' (the user
556 request), ``current_*'' (what was actually set) and ``forced_*''
557 (Positive - a soft limit, negative - a hard limit). */
559 struct memory_packet_config
566 /* Compute the current size of a read/write packet. Since this makes
567 use of ``actual_register_packet_size'' the computation is dynamic. */
570 get_memory_packet_size (struct memory_packet_config *config)
572 struct remote_state *rs = get_remote_state ();
573 struct remote_arch_state *rsa = get_remote_arch_state ();
575 /* NOTE: The somewhat arbitrary 16k comes from the knowledge (folk
576 law?) that some hosts don't cope very well with large alloca()
577 calls. Eventually the alloca() code will be replaced by calls to
578 xmalloc() and make_cleanups() allowing this restriction to either
579 be lifted or removed. */
580 #ifndef MAX_REMOTE_PACKET_SIZE
581 #define MAX_REMOTE_PACKET_SIZE 16384
583 /* NOTE: 20 ensures we can write at least one byte. */
584 #ifndef MIN_REMOTE_PACKET_SIZE
585 #define MIN_REMOTE_PACKET_SIZE 20
590 if (config->size <= 0)
591 what_they_get = MAX_REMOTE_PACKET_SIZE;
593 what_they_get = config->size;
597 what_they_get = get_remote_packet_size ();
598 /* Limit the packet to the size specified by the user. */
600 && what_they_get > config->size)
601 what_they_get = config->size;
603 /* Limit it to the size of the targets ``g'' response unless we have
604 permission from the stub to use a larger packet size. */
605 if (rs->explicit_packet_size == 0
606 && rsa->actual_register_packet_size > 0
607 && what_they_get > rsa->actual_register_packet_size)
608 what_they_get = rsa->actual_register_packet_size;
610 if (what_they_get > MAX_REMOTE_PACKET_SIZE)
611 what_they_get = MAX_REMOTE_PACKET_SIZE;
612 if (what_they_get < MIN_REMOTE_PACKET_SIZE)
613 what_they_get = MIN_REMOTE_PACKET_SIZE;
615 /* Make sure there is room in the global buffer for this packet
616 (including its trailing NUL byte). */
617 if (rs->buf_size < what_they_get + 1)
619 rs->buf_size = 2 * what_they_get;
620 rs->buf = xrealloc (rs->buf, 2 * what_they_get);
623 return what_they_get;
626 /* Update the size of a read/write packet. If they user wants
627 something really big then do a sanity check. */
630 set_memory_packet_size (char *args, struct memory_packet_config *config)
632 int fixed_p = config->fixed_p;
633 long size = config->size;
635 error (_("Argument required (integer, `fixed' or `limited')."));
636 else if (strcmp (args, "hard") == 0
637 || strcmp (args, "fixed") == 0)
639 else if (strcmp (args, "soft") == 0
640 || strcmp (args, "limit") == 0)
645 size = strtoul (args, &end, 0);
647 error (_("Invalid %s (bad syntax)."), config->name);
649 /* Instead of explicitly capping the size of a packet to
650 MAX_REMOTE_PACKET_SIZE or dissallowing it, the user is
651 instead allowed to set the size to something arbitrarily
653 if (size > MAX_REMOTE_PACKET_SIZE)
654 error (_("Invalid %s (too large)."), config->name);
658 if (fixed_p && !config->fixed_p)
660 if (! query (_("The target may not be able to correctly handle a %s\n"
661 "of %ld bytes. Change the packet size? "),
663 error (_("Packet size not changed."));
665 /* Update the config. */
666 config->fixed_p = fixed_p;
671 show_memory_packet_size (struct memory_packet_config *config)
673 printf_filtered (_("The %s is %ld. "), config->name, config->size);
675 printf_filtered (_("Packets are fixed at %ld bytes.\n"),
676 get_memory_packet_size (config));
678 printf_filtered (_("Packets are limited to %ld bytes.\n"),
679 get_memory_packet_size (config));
682 static struct memory_packet_config memory_write_packet_config =
684 "memory-write-packet-size",
688 set_memory_write_packet_size (char *args, int from_tty)
690 set_memory_packet_size (args, &memory_write_packet_config);
694 show_memory_write_packet_size (char *args, int from_tty)
696 show_memory_packet_size (&memory_write_packet_config);
700 get_memory_write_packet_size (void)
702 return get_memory_packet_size (&memory_write_packet_config);
705 static struct memory_packet_config memory_read_packet_config =
707 "memory-read-packet-size",
711 set_memory_read_packet_size (char *args, int from_tty)
713 set_memory_packet_size (args, &memory_read_packet_config);
717 show_memory_read_packet_size (char *args, int from_tty)
719 show_memory_packet_size (&memory_read_packet_config);
723 get_memory_read_packet_size (void)
725 long size = get_memory_packet_size (&memory_read_packet_config);
726 /* FIXME: cagney/1999-11-07: Functions like getpkt() need to get an
727 extra buffer size argument before the memory read size can be
728 increased beyond this. */
729 if (size > get_remote_packet_size ())
730 size = get_remote_packet_size ();
735 /* Generic configuration support for packets the stub optionally
736 supports. Allows the user to specify the use of the packet as well
737 as allowing GDB to auto-detect support in the remote stub. */
741 PACKET_SUPPORT_UNKNOWN = 0,
750 enum auto_boolean detect;
751 enum packet_support support;
754 /* Analyze a packet's return value and update the packet config
765 update_packet_config (struct packet_config *config)
767 switch (config->detect)
769 case AUTO_BOOLEAN_TRUE:
770 config->support = PACKET_ENABLE;
772 case AUTO_BOOLEAN_FALSE:
773 config->support = PACKET_DISABLE;
775 case AUTO_BOOLEAN_AUTO:
776 config->support = PACKET_SUPPORT_UNKNOWN;
782 show_packet_config_cmd (struct packet_config *config)
784 char *support = "internal-error";
785 switch (config->support)
791 support = "disabled";
793 case PACKET_SUPPORT_UNKNOWN:
797 switch (config->detect)
799 case AUTO_BOOLEAN_AUTO:
800 printf_filtered (_("Support for the `%s' packet is auto-detected, currently %s.\n"),
801 config->name, support);
803 case AUTO_BOOLEAN_TRUE:
804 case AUTO_BOOLEAN_FALSE:
805 printf_filtered (_("Support for the `%s' packet is currently %s.\n"),
806 config->name, support);
812 add_packet_config_cmd (struct packet_config *config, const char *name,
813 const char *title, int legacy)
820 config->title = title;
821 config->detect = AUTO_BOOLEAN_AUTO;
822 config->support = PACKET_SUPPORT_UNKNOWN;
823 set_doc = xstrprintf ("Set use of remote protocol `%s' (%s) packet",
825 show_doc = xstrprintf ("Show current use of remote protocol `%s' (%s) packet",
827 /* set/show TITLE-packet {auto,on,off} */
828 cmd_name = xstrprintf ("%s-packet", title);
829 add_setshow_auto_boolean_cmd (cmd_name, class_obscure,
830 &config->detect, set_doc, show_doc, NULL, /* help_doc */
831 set_remote_protocol_packet_cmd,
832 show_remote_protocol_packet_cmd,
833 &remote_set_cmdlist, &remote_show_cmdlist);
834 /* set/show remote NAME-packet {auto,on,off} -- legacy. */
838 legacy_name = xstrprintf ("%s-packet", name);
839 add_alias_cmd (legacy_name, cmd_name, class_obscure, 0,
840 &remote_set_cmdlist);
841 add_alias_cmd (legacy_name, cmd_name, class_obscure, 0,
842 &remote_show_cmdlist);
846 static enum packet_result
847 packet_check_result (const char *buf)
851 /* The stub recognized the packet request. Check that the
852 operation succeeded. */
854 && isxdigit (buf[1]) && isxdigit (buf[2])
856 /* "Enn" - definitly an error. */
859 /* Always treat "E." as an error. This will be used for
860 more verbose error messages, such as E.memtypes. */
861 if (buf[0] == 'E' && buf[1] == '.')
864 /* The packet may or may not be OK. Just assume it is. */
868 /* The stub does not support the packet. */
869 return PACKET_UNKNOWN;
872 static enum packet_result
873 packet_ok (const char *buf, struct packet_config *config)
875 enum packet_result result;
877 result = packet_check_result (buf);
882 /* The stub recognized the packet request. */
883 switch (config->support)
885 case PACKET_SUPPORT_UNKNOWN:
887 fprintf_unfiltered (gdb_stdlog,
888 "Packet %s (%s) is supported\n",
889 config->name, config->title);
890 config->support = PACKET_ENABLE;
893 internal_error (__FILE__, __LINE__,
894 _("packet_ok: attempt to use a disabled packet"));
901 /* The stub does not support the packet. */
902 switch (config->support)
905 if (config->detect == AUTO_BOOLEAN_AUTO)
906 /* If the stub previously indicated that the packet was
907 supported then there is a protocol error.. */
908 error (_("Protocol error: %s (%s) conflicting enabled responses."),
909 config->name, config->title);
911 /* The user set it wrong. */
912 error (_("Enabled packet %s (%s) not recognized by stub"),
913 config->name, config->title);
915 case PACKET_SUPPORT_UNKNOWN:
917 fprintf_unfiltered (gdb_stdlog,
918 "Packet %s (%s) is NOT supported\n",
919 config->name, config->title);
920 config->support = PACKET_DISABLE;
948 PACKET_qXfer_features,
949 PACKET_qXfer_libraries,
950 PACKET_qXfer_memory_map,
951 PACKET_qXfer_spu_read,
952 PACKET_qXfer_spu_write,
956 PACKET_qSearch_memory,
959 PACKET_QStartNoAckMode,
964 static struct packet_config remote_protocol_packets[PACKET_MAX];
967 set_remote_protocol_packet_cmd (char *args, int from_tty,
968 struct cmd_list_element *c)
970 struct packet_config *packet;
972 for (packet = remote_protocol_packets;
973 packet < &remote_protocol_packets[PACKET_MAX];
976 if (&packet->detect == c->var)
978 update_packet_config (packet);
982 internal_error (__FILE__, __LINE__, "Could not find config for %s",
987 show_remote_protocol_packet_cmd (struct ui_file *file, int from_tty,
988 struct cmd_list_element *c,
991 struct packet_config *packet;
993 for (packet = remote_protocol_packets;
994 packet < &remote_protocol_packets[PACKET_MAX];
997 if (&packet->detect == c->var)
999 show_packet_config_cmd (packet);
1003 internal_error (__FILE__, __LINE__, "Could not find config for %s",
1007 /* Should we try one of the 'Z' requests? */
1011 Z_PACKET_SOFTWARE_BP,
1012 Z_PACKET_HARDWARE_BP,
1019 /* For compatibility with older distributions. Provide a ``set remote
1020 Z-packet ...'' command that updates all the Z packet types. */
1022 static enum auto_boolean remote_Z_packet_detect;
1025 set_remote_protocol_Z_packet_cmd (char *args, int from_tty,
1026 struct cmd_list_element *c)
1029 for (i = 0; i < NR_Z_PACKET_TYPES; i++)
1031 remote_protocol_packets[PACKET_Z0 + i].detect = remote_Z_packet_detect;
1032 update_packet_config (&remote_protocol_packets[PACKET_Z0 + i]);
1037 show_remote_protocol_Z_packet_cmd (struct ui_file *file, int from_tty,
1038 struct cmd_list_element *c,
1042 for (i = 0; i < NR_Z_PACKET_TYPES; i++)
1044 show_packet_config_cmd (&remote_protocol_packets[PACKET_Z0 + i]);
1048 /* Should we try the 'ThreadInfo' query packet?
1050 This variable (NOT available to the user: auto-detect only!)
1051 determines whether GDB will use the new, simpler "ThreadInfo"
1052 query or the older, more complex syntax for thread queries.
1053 This is an auto-detect variable (set to true at each connect,
1054 and set to false when the target fails to recognize it). */
1056 static int use_threadinfo_query;
1057 static int use_threadextra_query;
1059 /* Tokens for use by the asynchronous signal handlers for SIGINT. */
1060 static struct async_signal_handler *sigint_remote_twice_token;
1061 static struct async_signal_handler *sigint_remote_token;
1065 static ptid_t magic_null_ptid;
1066 static ptid_t not_sent_ptid;
1067 static ptid_t any_thread_ptid;
1069 /* These are the threads which we last sent to the remote system. The
1070 TID member will be -1 for all or -2 for not sent yet. */
1072 static ptid_t general_thread;
1073 static ptid_t continue_thread;
1076 /* Call this function as a result of
1077 1) A halt indication (T packet) containing a thread id
1078 2) A direct query of currthread
1079 3) Successful execution of set thread
1083 record_currthread (ptid_t currthread)
1085 general_thread = currthread;
1087 /* If this is a new thread, add it to GDB's thread list.
1088 If we leave it up to WFI to do this, bad things will happen. */
1090 if (in_thread_list (currthread) && is_exited (currthread))
1092 /* We're seeing an event on a thread id we knew had exited.
1093 This has to be a new thread reusing the old id. Add it. */
1094 add_thread (currthread);
1098 if (!in_thread_list (currthread))
1100 if (ptid_equal (pid_to_ptid (ptid_get_pid (currthread)), inferior_ptid))
1102 /* inferior_ptid has no thread member yet. This can happen
1103 with the vAttach -> remote_wait,"TAAthread:" path if the
1104 stub doesn't support qC. This is the first stop reported
1105 after an attach, so this is the main thread. Update the
1106 ptid in the thread list. */
1107 thread_change_ptid (inferior_ptid, currthread);
1111 if (ptid_equal (magic_null_ptid, inferior_ptid))
1113 /* inferior_ptid is not set yet. This can happen with the
1114 vRun -> remote_wait,"TAAthread:" path if the stub
1115 doesn't support qC. This is the first stop reported
1116 after an attach, so this is the main thread. Update the
1117 ptid in the thread list. */
1118 thread_change_ptid (inferior_ptid, currthread);
1122 /* This is really a new thread. Add it. */
1123 add_thread (currthread);
1126 if (!in_inferior_list (ptid_get_pid (currthread)))
1127 /* When connecting to a target remote, or to a target
1128 extended-remote which already was debugging an inferior, we may
1129 not know about it yet --- add it. */
1130 add_inferior (ptid_get_pid (currthread));
1133 static char *last_pass_packet;
1135 /* If 'QPassSignals' is supported, tell the remote stub what signals
1136 it can simply pass through to the inferior without reporting. */
1139 remote_pass_signals (void)
1141 if (remote_protocol_packets[PACKET_QPassSignals].support != PACKET_DISABLE)
1143 char *pass_packet, *p;
1144 int numsigs = (int) TARGET_SIGNAL_LAST;
1147 gdb_assert (numsigs < 256);
1148 for (i = 0; i < numsigs; i++)
1150 if (signal_stop_state (i) == 0
1151 && signal_print_state (i) == 0
1152 && signal_pass_state (i) == 1)
1155 pass_packet = xmalloc (count * 3 + strlen ("QPassSignals:") + 1);
1156 strcpy (pass_packet, "QPassSignals:");
1157 p = pass_packet + strlen (pass_packet);
1158 for (i = 0; i < numsigs; i++)
1160 if (signal_stop_state (i) == 0
1161 && signal_print_state (i) == 0
1162 && signal_pass_state (i) == 1)
1165 *p++ = tohex (i >> 4);
1166 *p++ = tohex (i & 15);
1175 if (!last_pass_packet || strcmp (last_pass_packet, pass_packet))
1177 struct remote_state *rs = get_remote_state ();
1178 char *buf = rs->buf;
1180 putpkt (pass_packet);
1181 getpkt (&rs->buf, &rs->buf_size, 0);
1182 packet_ok (buf, &remote_protocol_packets[PACKET_QPassSignals]);
1183 if (last_pass_packet)
1184 xfree (last_pass_packet);
1185 last_pass_packet = pass_packet;
1188 xfree (pass_packet);
1192 /* If PTID is MAGIC_NULL_PTID, don't set any thread. If PTID is
1193 MINUS_ONE_PTID, set the thread to -1, so the stub returns the
1194 thread. If GEN is set, set the general thread, if not, then set
1195 the step/continue thread. */
1197 set_thread (struct ptid ptid, int gen)
1199 struct remote_state *rs = get_remote_state ();
1200 ptid_t state = gen ? general_thread : continue_thread;
1201 char *buf = rs->buf;
1202 char *endbuf = rs->buf + get_remote_packet_size ();
1204 if (ptid_equal (state, ptid))
1208 *buf++ = gen ? 'g' : 'c';
1209 if (ptid_equal (ptid, magic_null_ptid))
1210 xsnprintf (buf, endbuf - buf, "0");
1211 else if (ptid_equal (ptid, any_thread_ptid))
1212 xsnprintf (buf, endbuf - buf, "0");
1213 else if (ptid_equal (ptid, minus_one_ptid))
1214 xsnprintf (buf, endbuf - buf, "-1");
1216 write_ptid (buf, endbuf, ptid);
1218 getpkt (&rs->buf, &rs->buf_size, 0);
1220 general_thread = ptid;
1222 continue_thread = ptid;
1226 set_general_thread (struct ptid ptid)
1228 set_thread (ptid, 1);
1232 set_continue_thread (struct ptid ptid)
1234 set_thread (ptid, 0);
1238 /* Return nonzero if the thread PTID is still alive on the remote
1242 remote_thread_alive (ptid_t ptid)
1244 struct remote_state *rs = get_remote_state ();
1245 int tid = ptid_get_tid (ptid);
1248 if (ptid_equal (ptid, magic_null_ptid))
1249 /* The main thread is always alive. */
1252 if (ptid_get_pid (ptid) != 0 && ptid_get_tid (ptid) == 0)
1253 /* The main thread is always alive. This can happen after a
1254 vAttach, if the remote side doesn't support
1259 endp = rs->buf + get_remote_packet_size ();
1262 write_ptid (p, endp, ptid);
1265 getpkt (&rs->buf, &rs->buf_size, 0);
1266 return (rs->buf[0] == 'O' && rs->buf[1] == 'K');
1269 /* About these extended threadlist and threadinfo packets. They are
1270 variable length packets but, the fields within them are often fixed
1271 length. They are redundent enough to send over UDP as is the
1272 remote protocol in general. There is a matching unit test module
1275 #define OPAQUETHREADBYTES 8
1277 /* a 64 bit opaque identifier */
1278 typedef unsigned char threadref[OPAQUETHREADBYTES];
1280 /* WARNING: This threadref data structure comes from the remote O.S.,
1281 libstub protocol encoding, and remote.c. it is not particularly
1284 /* Right now, the internal structure is int. We want it to be bigger.
1288 typedef int gdb_threadref; /* Internal GDB thread reference. */
1290 /* gdb_ext_thread_info is an internal GDB data structure which is
1291 equivalent to the reply of the remote threadinfo packet. */
1293 struct gdb_ext_thread_info
1295 threadref threadid; /* External form of thread reference. */
1296 int active; /* Has state interesting to GDB?
1298 char display[256]; /* Brief state display, name,
1299 blocked/suspended. */
1300 char shortname[32]; /* To be used to name threads. */
1301 char more_display[256]; /* Long info, statistics, queue depth,
1305 /* The volume of remote transfers can be limited by submitting
1306 a mask containing bits specifying the desired information.
1307 Use a union of these values as the 'selection' parameter to
1308 get_thread_info. FIXME: Make these TAG names more thread specific.
1311 #define TAG_THREADID 1
1312 #define TAG_EXISTS 2
1313 #define TAG_DISPLAY 4
1314 #define TAG_THREADNAME 8
1315 #define TAG_MOREDISPLAY 16
1317 #define BUF_THREAD_ID_SIZE (OPAQUETHREADBYTES * 2)
1319 char *unpack_varlen_hex (char *buff, ULONGEST *result);
1321 static char *unpack_nibble (char *buf, int *val);
1323 static char *pack_nibble (char *buf, int nibble);
1325 static char *pack_hex_byte (char *pkt, int /* unsigned char */ byte);
1327 static char *unpack_byte (char *buf, int *value);
1329 static char *pack_int (char *buf, int value);
1331 static char *unpack_int (char *buf, int *value);
1333 static char *unpack_string (char *src, char *dest, int length);
1335 static char *pack_threadid (char *pkt, threadref *id);
1337 static char *unpack_threadid (char *inbuf, threadref *id);
1339 void int_to_threadref (threadref *id, int value);
1341 static int threadref_to_int (threadref *ref);
1343 static void copy_threadref (threadref *dest, threadref *src);
1345 static int threadmatch (threadref *dest, threadref *src);
1347 static char *pack_threadinfo_request (char *pkt, int mode,
1350 static int remote_unpack_thread_info_response (char *pkt,
1351 threadref *expectedref,
1352 struct gdb_ext_thread_info
1356 static int remote_get_threadinfo (threadref *threadid,
1357 int fieldset, /*TAG mask */
1358 struct gdb_ext_thread_info *info);
1360 static char *pack_threadlist_request (char *pkt, int startflag,
1362 threadref *nextthread);
1364 static int parse_threadlist_response (char *pkt,
1366 threadref *original_echo,
1367 threadref *resultlist,
1370 static int remote_get_threadlist (int startflag,
1371 threadref *nextthread,
1375 threadref *threadlist);
1377 typedef int (*rmt_thread_action) (threadref *ref, void *context);
1379 static int remote_threadlist_iterator (rmt_thread_action stepfunction,
1380 void *context, int looplimit);
1382 static int remote_newthread_step (threadref *ref, void *context);
1385 /* Write a PTID to BUF. ENDBUF points to one-passed-the-end of the
1386 buffer we're allowed to write to. Returns
1387 BUF+CHARACTERS_WRITTEN. */
1390 write_ptid (char *buf, const char *endbuf, ptid_t ptid)
1393 struct remote_state *rs = get_remote_state ();
1395 if (remote_multi_process_p (rs))
1397 pid = ptid_get_pid (ptid);
1399 buf += xsnprintf (buf, endbuf - buf, "p-%x.", -pid);
1401 buf += xsnprintf (buf, endbuf - buf, "p%x.", pid);
1403 tid = ptid_get_tid (ptid);
1405 buf += xsnprintf (buf, endbuf - buf, "-%x", -tid);
1407 buf += xsnprintf (buf, endbuf - buf, "%x", tid);
1412 /* Extract a PTID from BUF. If non-null, OBUF is set to the to one
1413 passed the last parsed char. Returns null_ptid on error. */
1416 read_ptid (char *buf, char **obuf)
1420 ULONGEST pid = 0, tid = 0;
1425 /* Multi-process ptid. */
1426 pp = unpack_varlen_hex (p + 1, &pid);
1428 error (_("invalid remote ptid: %s\n"), p);
1431 pp = unpack_varlen_hex (p + 1, &tid);
1434 return ptid_build (pid, 0, tid);
1437 /* No multi-process. Just a tid. */
1438 pp = unpack_varlen_hex (p, &tid);
1440 /* Since the stub is not sending a process id, then default to
1441 what's in inferior_ptid. */
1442 pid = ptid_get_pid (inferior_ptid);
1446 return ptid_build (pid, 0, tid);
1449 /* Encode 64 bits in 16 chars of hex. */
1451 static const char hexchars[] = "0123456789abcdef";
1454 ishex (int ch, int *val)
1456 if ((ch >= 'a') && (ch <= 'f'))
1458 *val = ch - 'a' + 10;
1461 if ((ch >= 'A') && (ch <= 'F'))
1463 *val = ch - 'A' + 10;
1466 if ((ch >= '0') && (ch <= '9'))
1477 if (ch >= 'a' && ch <= 'f')
1478 return ch - 'a' + 10;
1479 if (ch >= '0' && ch <= '9')
1481 if (ch >= 'A' && ch <= 'F')
1482 return ch - 'A' + 10;
1487 stub_unpack_int (char *buff, int fieldlength)
1494 nibble = stubhex (*buff++);
1498 retval = retval << 4;
1504 unpack_varlen_hex (char *buff, /* packet to parse */
1508 ULONGEST retval = 0;
1510 while (ishex (*buff, &nibble))
1513 retval = retval << 4;
1514 retval |= nibble & 0x0f;
1521 unpack_nibble (char *buf, int *val)
1523 *val = fromhex (*buf++);
1528 pack_nibble (char *buf, int nibble)
1530 *buf++ = hexchars[(nibble & 0x0f)];
1535 pack_hex_byte (char *pkt, int byte)
1537 *pkt++ = hexchars[(byte >> 4) & 0xf];
1538 *pkt++ = hexchars[(byte & 0xf)];
1543 unpack_byte (char *buf, int *value)
1545 *value = stub_unpack_int (buf, 2);
1550 pack_int (char *buf, int value)
1552 buf = pack_hex_byte (buf, (value >> 24) & 0xff);
1553 buf = pack_hex_byte (buf, (value >> 16) & 0xff);
1554 buf = pack_hex_byte (buf, (value >> 8) & 0x0ff);
1555 buf = pack_hex_byte (buf, (value & 0xff));
1560 unpack_int (char *buf, int *value)
1562 *value = stub_unpack_int (buf, 8);
1566 #if 0 /* Currently unused, uncomment when needed. */
1567 static char *pack_string (char *pkt, char *string);
1570 pack_string (char *pkt, char *string)
1575 len = strlen (string);
1577 len = 200; /* Bigger than most GDB packets, junk??? */
1578 pkt = pack_hex_byte (pkt, len);
1582 if ((ch == '\0') || (ch == '#'))
1583 ch = '*'; /* Protect encapsulation. */
1588 #endif /* 0 (unused) */
1591 unpack_string (char *src, char *dest, int length)
1600 pack_threadid (char *pkt, threadref *id)
1603 unsigned char *altid;
1605 altid = (unsigned char *) id;
1606 limit = pkt + BUF_THREAD_ID_SIZE;
1608 pkt = pack_hex_byte (pkt, *altid++);
1614 unpack_threadid (char *inbuf, threadref *id)
1617 char *limit = inbuf + BUF_THREAD_ID_SIZE;
1620 altref = (char *) id;
1622 while (inbuf < limit)
1624 x = stubhex (*inbuf++);
1625 y = stubhex (*inbuf++);
1626 *altref++ = (x << 4) | y;
1631 /* Externally, threadrefs are 64 bits but internally, they are still
1632 ints. This is due to a mismatch of specifications. We would like
1633 to use 64bit thread references internally. This is an adapter
1637 int_to_threadref (threadref *id, int value)
1639 unsigned char *scan;
1641 scan = (unsigned char *) id;
1647 *scan++ = (value >> 24) & 0xff;
1648 *scan++ = (value >> 16) & 0xff;
1649 *scan++ = (value >> 8) & 0xff;
1650 *scan++ = (value & 0xff);
1654 threadref_to_int (threadref *ref)
1657 unsigned char *scan;
1663 value = (value << 8) | ((*scan++) & 0xff);
1668 copy_threadref (threadref *dest, threadref *src)
1671 unsigned char *csrc, *cdest;
1673 csrc = (unsigned char *) src;
1674 cdest = (unsigned char *) dest;
1681 threadmatch (threadref *dest, threadref *src)
1683 /* Things are broken right now, so just assume we got a match. */
1685 unsigned char *srcp, *destp;
1687 srcp = (char *) src;
1688 destp = (char *) dest;
1692 result &= (*srcp++ == *destp++) ? 1 : 0;
1699 threadid:1, # always request threadid
1706 /* Encoding: 'Q':8,'P':8,mask:32,threadid:64 */
1709 pack_threadinfo_request (char *pkt, int mode, threadref *id)
1711 *pkt++ = 'q'; /* Info Query */
1712 *pkt++ = 'P'; /* process or thread info */
1713 pkt = pack_int (pkt, mode); /* mode */
1714 pkt = pack_threadid (pkt, id); /* threadid */
1715 *pkt = '\0'; /* terminate */
1719 /* These values tag the fields in a thread info response packet. */
1720 /* Tagging the fields allows us to request specific fields and to
1721 add more fields as time goes by. */
1723 #define TAG_THREADID 1 /* Echo the thread identifier. */
1724 #define TAG_EXISTS 2 /* Is this process defined enough to
1725 fetch registers and its stack? */
1726 #define TAG_DISPLAY 4 /* A short thing maybe to put on a window */
1727 #define TAG_THREADNAME 8 /* string, maps 1-to-1 with a thread is. */
1728 #define TAG_MOREDISPLAY 16 /* Whatever the kernel wants to say about
1732 remote_unpack_thread_info_response (char *pkt, threadref *expectedref,
1733 struct gdb_ext_thread_info *info)
1735 struct remote_state *rs = get_remote_state ();
1739 char *limit = pkt + rs->buf_size; /* Plausible parsing limit. */
1742 /* info->threadid = 0; FIXME: implement zero_threadref. */
1744 info->display[0] = '\0';
1745 info->shortname[0] = '\0';
1746 info->more_display[0] = '\0';
1748 /* Assume the characters indicating the packet type have been
1750 pkt = unpack_int (pkt, &mask); /* arg mask */
1751 pkt = unpack_threadid (pkt, &ref);
1754 warning (_("Incomplete response to threadinfo request."));
1755 if (!threadmatch (&ref, expectedref))
1756 { /* This is an answer to a different request. */
1757 warning (_("ERROR RMT Thread info mismatch."));
1760 copy_threadref (&info->threadid, &ref);
1762 /* Loop on tagged fields , try to bail if somthing goes wrong. */
1764 /* Packets are terminated with nulls. */
1765 while ((pkt < limit) && mask && *pkt)
1767 pkt = unpack_int (pkt, &tag); /* tag */
1768 pkt = unpack_byte (pkt, &length); /* length */
1769 if (!(tag & mask)) /* Tags out of synch with mask. */
1771 warning (_("ERROR RMT: threadinfo tag mismatch."));
1775 if (tag == TAG_THREADID)
1779 warning (_("ERROR RMT: length of threadid is not 16."));
1783 pkt = unpack_threadid (pkt, &ref);
1784 mask = mask & ~TAG_THREADID;
1787 if (tag == TAG_EXISTS)
1789 info->active = stub_unpack_int (pkt, length);
1791 mask = mask & ~(TAG_EXISTS);
1794 warning (_("ERROR RMT: 'exists' length too long."));
1800 if (tag == TAG_THREADNAME)
1802 pkt = unpack_string (pkt, &info->shortname[0], length);
1803 mask = mask & ~TAG_THREADNAME;
1806 if (tag == TAG_DISPLAY)
1808 pkt = unpack_string (pkt, &info->display[0], length);
1809 mask = mask & ~TAG_DISPLAY;
1812 if (tag == TAG_MOREDISPLAY)
1814 pkt = unpack_string (pkt, &info->more_display[0], length);
1815 mask = mask & ~TAG_MOREDISPLAY;
1818 warning (_("ERROR RMT: unknown thread info tag."));
1819 break; /* Not a tag we know about. */
1825 remote_get_threadinfo (threadref *threadid, int fieldset, /* TAG mask */
1826 struct gdb_ext_thread_info *info)
1828 struct remote_state *rs = get_remote_state ();
1831 pack_threadinfo_request (rs->buf, fieldset, threadid);
1833 getpkt (&rs->buf, &rs->buf_size, 0);
1834 result = remote_unpack_thread_info_response (rs->buf + 2,
1839 /* Format: i'Q':8,i"L":8,initflag:8,batchsize:16,lastthreadid:32 */
1842 pack_threadlist_request (char *pkt, int startflag, int threadcount,
1843 threadref *nextthread)
1845 *pkt++ = 'q'; /* info query packet */
1846 *pkt++ = 'L'; /* Process LIST or threadLIST request */
1847 pkt = pack_nibble (pkt, startflag); /* initflag 1 bytes */
1848 pkt = pack_hex_byte (pkt, threadcount); /* threadcount 2 bytes */
1849 pkt = pack_threadid (pkt, nextthread); /* 64 bit thread identifier */
1854 /* Encoding: 'q':8,'M':8,count:16,done:8,argthreadid:64,(threadid:64)* */
1857 parse_threadlist_response (char *pkt, int result_limit,
1858 threadref *original_echo, threadref *resultlist,
1861 struct remote_state *rs = get_remote_state ();
1863 int count, resultcount, done;
1866 /* Assume the 'q' and 'M chars have been stripped. */
1867 limit = pkt + (rs->buf_size - BUF_THREAD_ID_SIZE);
1868 /* done parse past here */
1869 pkt = unpack_byte (pkt, &count); /* count field */
1870 pkt = unpack_nibble (pkt, &done);
1871 /* The first threadid is the argument threadid. */
1872 pkt = unpack_threadid (pkt, original_echo); /* should match query packet */
1873 while ((count-- > 0) && (pkt < limit))
1875 pkt = unpack_threadid (pkt, resultlist++);
1876 if (resultcount++ >= result_limit)
1885 remote_get_threadlist (int startflag, threadref *nextthread, int result_limit,
1886 int *done, int *result_count, threadref *threadlist)
1888 struct remote_state *rs = get_remote_state ();
1889 static threadref echo_nextthread;
1892 /* Trancate result limit to be smaller than the packet size. */
1893 if ((((result_limit + 1) * BUF_THREAD_ID_SIZE) + 10) >= get_remote_packet_size ())
1894 result_limit = (get_remote_packet_size () / BUF_THREAD_ID_SIZE) - 2;
1896 pack_threadlist_request (rs->buf, startflag, result_limit, nextthread);
1898 getpkt (&rs->buf, &rs->buf_size, 0);
1900 if (*rs->buf == '\0')
1904 parse_threadlist_response (rs->buf + 2, result_limit, &echo_nextthread,
1907 if (!threadmatch (&echo_nextthread, nextthread))
1909 /* FIXME: This is a good reason to drop the packet. */
1910 /* Possably, there is a duplicate response. */
1912 retransmit immediatly - race conditions
1913 retransmit after timeout - yes
1915 wait for packet, then exit
1917 warning (_("HMM: threadlist did not echo arg thread, dropping it."));
1918 return 0; /* I choose simply exiting. */
1920 if (*result_count <= 0)
1924 warning (_("RMT ERROR : failed to get remote thread list."));
1927 return result; /* break; */
1929 if (*result_count > result_limit)
1932 warning (_("RMT ERROR: threadlist response longer than requested."));
1938 /* This is the interface between remote and threads, remotes upper
1941 /* remote_find_new_threads retrieves the thread list and for each
1942 thread in the list, looks up the thread in GDB's internal list,
1943 adding the thread if it does not already exist. This involves
1944 getting partial thread lists from the remote target so, polling the
1945 quit_flag is required. */
1948 /* About this many threadisds fit in a packet. */
1950 #define MAXTHREADLISTRESULTS 32
1953 remote_threadlist_iterator (rmt_thread_action stepfunction, void *context,
1956 int done, i, result_count;
1960 static threadref nextthread;
1961 static threadref resultthreadlist[MAXTHREADLISTRESULTS];
1966 if (loopcount++ > looplimit)
1969 warning (_("Remote fetch threadlist -infinite loop-."));
1972 if (!remote_get_threadlist (startflag, &nextthread, MAXTHREADLISTRESULTS,
1973 &done, &result_count, resultthreadlist))
1978 /* Clear for later iterations. */
1980 /* Setup to resume next batch of thread references, set nextthread. */
1981 if (result_count >= 1)
1982 copy_threadref (&nextthread, &resultthreadlist[result_count - 1]);
1984 while (result_count--)
1985 if (!(result = (*stepfunction) (&resultthreadlist[i++], context)))
1992 remote_newthread_step (threadref *ref, void *context)
1994 int pid = ptid_get_pid (inferior_ptid);
1995 ptid_t ptid = ptid_build (pid, 0, threadref_to_int (ref));
1997 if (!in_thread_list (ptid))
1999 return 1; /* continue iterator */
2002 #define CRAZY_MAX_THREADS 1000
2005 remote_current_thread (ptid_t oldpid)
2007 struct remote_state *rs = get_remote_state ();
2013 getpkt (&rs->buf, &rs->buf_size, 0);
2014 if (rs->buf[0] == 'Q' && rs->buf[1] == 'C')
2015 return read_ptid (&rs->buf[2], NULL);
2020 /* Find new threads for info threads command.
2021 * Original version, using John Metzler's thread protocol.
2025 remote_find_new_threads (void)
2027 remote_threadlist_iterator (remote_newthread_step, 0,
2032 * Find all threads for info threads command.
2033 * Uses new thread protocol contributed by Cisco.
2034 * Falls back and attempts to use the older method (above)
2035 * if the target doesn't respond to the new method.
2039 remote_threads_info (void)
2041 struct remote_state *rs = get_remote_state ();
2045 if (remote_desc == 0) /* paranoia */
2046 error (_("Command can only be used when connected to the remote target."));
2048 if (use_threadinfo_query)
2050 putpkt ("qfThreadInfo");
2051 getpkt (&rs->buf, &rs->buf_size, 0);
2053 if (bufp[0] != '\0') /* q packet recognized */
2055 while (*bufp++ == 'm') /* reply contains one or more TID */
2059 new_thread = read_ptid (bufp, &bufp);
2060 if (!ptid_equal (new_thread, null_ptid)
2061 && !in_thread_list (new_thread))
2063 if (!in_inferior_list (ptid_get_pid (new_thread)))
2064 /* When connected to a multi-process aware
2065 stub, "info threads" may show up threads of
2066 inferiors we didn't know about yet. Add
2068 add_inferior (ptid_get_pid (new_thread));
2070 add_thread (new_thread);
2073 while (*bufp++ == ','); /* comma-separated list */
2074 putpkt ("qsThreadInfo");
2075 getpkt (&rs->buf, &rs->buf_size, 0);
2082 /* Else fall back to old method based on jmetzler protocol. */
2083 use_threadinfo_query = 0;
2084 remote_find_new_threads ();
2089 * Collect a descriptive string about the given thread.
2090 * The target may say anything it wants to about the thread
2091 * (typically info about its blocked / runnable state, name, etc.).
2092 * This string will appear in the info threads display.
2094 * Optional: targets are not required to implement this function.
2098 remote_threads_extra_info (struct thread_info *tp)
2100 struct remote_state *rs = get_remote_state ();
2104 struct gdb_ext_thread_info threadinfo;
2105 static char display_buf[100]; /* arbitrary... */
2106 int n = 0; /* position in display_buf */
2108 if (remote_desc == 0) /* paranoia */
2109 internal_error (__FILE__, __LINE__,
2110 _("remote_threads_extra_info"));
2112 if (ptid_equal (tp->ptid, magic_null_ptid)
2113 || (ptid_get_pid (tp->ptid) != 0 && ptid_get_tid (tp->ptid) == 0))
2114 /* This is the main thread which was added by GDB. The remote
2115 server doesn't know about it. */
2118 if (use_threadextra_query)
2121 char *endb = rs->buf + get_remote_packet_size ();
2123 xsnprintf (b, endb - b, "qThreadExtraInfo,");
2125 write_ptid (b, endb, tp->ptid);
2128 getpkt (&rs->buf, &rs->buf_size, 0);
2129 if (rs->buf[0] != 0)
2131 n = min (strlen (rs->buf) / 2, sizeof (display_buf));
2132 result = hex2bin (rs->buf, (gdb_byte *) display_buf, n);
2133 display_buf [result] = '\0';
2138 /* If the above query fails, fall back to the old method. */
2139 use_threadextra_query = 0;
2140 set = TAG_THREADID | TAG_EXISTS | TAG_THREADNAME
2141 | TAG_MOREDISPLAY | TAG_DISPLAY;
2142 int_to_threadref (&id, ptid_get_tid (tp->ptid));
2143 if (remote_get_threadinfo (&id, set, &threadinfo))
2144 if (threadinfo.active)
2146 if (*threadinfo.shortname)
2147 n += xsnprintf (&display_buf[0], sizeof (display_buf) - n,
2148 " Name: %s,", threadinfo.shortname);
2149 if (*threadinfo.display)
2150 n += xsnprintf (&display_buf[n], sizeof (display_buf) - n,
2151 " State: %s,", threadinfo.display);
2152 if (*threadinfo.more_display)
2153 n += xsnprintf (&display_buf[n], sizeof (display_buf) - n,
2154 " Priority: %s", threadinfo.more_display);
2158 /* For purely cosmetic reasons, clear up trailing commas. */
2159 if (',' == display_buf[n-1])
2160 display_buf[n-1] = ' ';
2168 /* Restart the remote side; this is an extended protocol operation. */
2171 extended_remote_restart (void)
2173 struct remote_state *rs = get_remote_state ();
2175 /* Send the restart command; for reasons I don't understand the
2176 remote side really expects a number after the "R". */
2177 xsnprintf (rs->buf, get_remote_packet_size (), "R%x", 0);
2180 remote_fileio_reset ();
2183 /* Clean up connection to a remote debugger. */
2186 remote_close (int quitting)
2189 serial_close (remote_desc);
2193 /* Query the remote side for the text, data and bss offsets. */
2198 struct remote_state *rs = get_remote_state ();
2201 int lose, num_segments = 0, do_sections, do_segments;
2202 CORE_ADDR text_addr, data_addr, bss_addr, segments[2];
2203 struct section_offsets *offs;
2204 struct symfile_segment_data *data;
2206 if (symfile_objfile == NULL)
2209 putpkt ("qOffsets");
2210 getpkt (&rs->buf, &rs->buf_size, 0);
2213 if (buf[0] == '\000')
2214 return; /* Return silently. Stub doesn't support
2218 warning (_("Remote failure reply: %s"), buf);
2222 /* Pick up each field in turn. This used to be done with scanf, but
2223 scanf will make trouble if CORE_ADDR size doesn't match
2224 conversion directives correctly. The following code will work
2225 with any size of CORE_ADDR. */
2226 text_addr = data_addr = bss_addr = 0;
2230 if (strncmp (ptr, "Text=", 5) == 0)
2233 /* Don't use strtol, could lose on big values. */
2234 while (*ptr && *ptr != ';')
2235 text_addr = (text_addr << 4) + fromhex (*ptr++);
2237 if (strncmp (ptr, ";Data=", 6) == 0)
2240 while (*ptr && *ptr != ';')
2241 data_addr = (data_addr << 4) + fromhex (*ptr++);
2246 if (!lose && strncmp (ptr, ";Bss=", 5) == 0)
2249 while (*ptr && *ptr != ';')
2250 bss_addr = (bss_addr << 4) + fromhex (*ptr++);
2252 if (bss_addr != data_addr)
2253 warning (_("Target reported unsupported offsets: %s"), buf);
2258 else if (strncmp (ptr, "TextSeg=", 8) == 0)
2261 /* Don't use strtol, could lose on big values. */
2262 while (*ptr && *ptr != ';')
2263 text_addr = (text_addr << 4) + fromhex (*ptr++);
2266 if (strncmp (ptr, ";DataSeg=", 9) == 0)
2269 while (*ptr && *ptr != ';')
2270 data_addr = (data_addr << 4) + fromhex (*ptr++);
2278 error (_("Malformed response to offset query, %s"), buf);
2279 else if (*ptr != '\0')
2280 warning (_("Target reported unsupported offsets: %s"), buf);
2282 offs = ((struct section_offsets *)
2283 alloca (SIZEOF_N_SECTION_OFFSETS (symfile_objfile->num_sections)));
2284 memcpy (offs, symfile_objfile->section_offsets,
2285 SIZEOF_N_SECTION_OFFSETS (symfile_objfile->num_sections));
2287 data = get_symfile_segment_data (symfile_objfile->obfd);
2288 do_segments = (data != NULL);
2289 do_sections = num_segments == 0;
2291 if (num_segments > 0)
2293 segments[0] = text_addr;
2294 segments[1] = data_addr;
2296 /* If we have two segments, we can still try to relocate everything
2297 by assuming that the .text and .data offsets apply to the whole
2298 text and data segments. Convert the offsets given in the packet
2299 to base addresses for symfile_map_offsets_to_segments. */
2300 else if (data && data->num_segments == 2)
2302 segments[0] = data->segment_bases[0] + text_addr;
2303 segments[1] = data->segment_bases[1] + data_addr;
2306 /* If the object file has only one segment, assume that it is text
2307 rather than data; main programs with no writable data are rare,
2308 but programs with no code are useless. Of course the code might
2309 have ended up in the data segment... to detect that we would need
2310 the permissions here. */
2311 else if (data && data->num_segments == 1)
2313 segments[0] = data->segment_bases[0] + text_addr;
2316 /* There's no way to relocate by segment. */
2322 int ret = symfile_map_offsets_to_segments (symfile_objfile->obfd, data,
2323 offs, num_segments, segments);
2325 if (ret == 0 && !do_sections)
2326 error (_("Can not handle qOffsets TextSeg response with this symbol file"));
2333 free_symfile_segment_data (data);
2337 offs->offsets[SECT_OFF_TEXT (symfile_objfile)] = text_addr;
2339 /* This is a temporary kludge to force data and bss to use the same offsets
2340 because that's what nlmconv does now. The real solution requires changes
2341 to the stub and remote.c that I don't have time to do right now. */
2343 offs->offsets[SECT_OFF_DATA (symfile_objfile)] = data_addr;
2344 offs->offsets[SECT_OFF_BSS (symfile_objfile)] = data_addr;
2347 objfile_relocate (symfile_objfile, offs);
2350 /* Stub for catch_exception. */
2352 struct start_remote_args
2356 /* The current target. */
2357 struct target_ops *target;
2359 /* Non-zero if this is an extended-remote target. */
2364 remote_start_remote (struct ui_out *uiout, void *opaque)
2366 struct remote_state *rs = get_remote_state ();
2367 struct start_remote_args *args = opaque;
2368 char *wait_status = NULL;
2370 immediate_quit++; /* Allow user to interrupt it. */
2372 /* Check whether the target is running now. */
2374 getpkt (&rs->buf, &rs->buf_size, 0);
2376 if (rs->buf[0] == 'W' || rs->buf[0] == 'X')
2378 if (args->extended_p)
2380 /* We're connected, but not running. Drop out before we
2381 call start_remote. */
2382 target_mark_exited (args->target);
2386 error (_("The target is not running (try extended-remote?)"));
2390 if (args->extended_p)
2391 target_mark_running (args->target);
2393 /* Save the reply for later. */
2394 wait_status = alloca (strlen (rs->buf) + 1);
2395 strcpy (wait_status, rs->buf);
2399 init_thread_list ();
2401 /* Let the stub know that we want it to return the thread. */
2402 set_continue_thread (minus_one_ptid);
2404 /* Without this, some commands which require an active target
2405 (such as kill) won't work. This variable serves (at least)
2406 double duty as both the pid of the target process (if it has
2407 such), and as a flag indicating that a target is active.
2408 These functions should be split out into seperate variables,
2409 especially since GDB will someday have a notion of debugging
2410 several processes. */
2411 inferior_ptid = magic_null_ptid;
2413 /* Now, if we have thread information, update inferior_ptid. */
2414 inferior_ptid = remote_current_thread (inferior_ptid);
2416 add_inferior (ptid_get_pid (inferior_ptid));
2418 /* Always add the main thread. */
2419 add_thread_silent (inferior_ptid);
2421 get_offsets (); /* Get text, data & bss offsets. */
2423 /* Use the previously fetched status. */
2424 gdb_assert (wait_status != NULL);
2425 strcpy (rs->buf, wait_status);
2426 rs->cached_wait_status = 1;
2429 start_remote (args->from_tty); /* Initialize gdb process mechanisms. */
2432 /* Open a connection to a remote debugger.
2433 NAME is the filename used for communication. */
2436 remote_open (char *name, int from_tty)
2438 remote_open_1 (name, from_tty, &remote_ops, 0);
2441 /* Open a connection to a remote debugger using the extended
2442 remote gdb protocol. NAME is the filename used for communication. */
2445 extended_remote_open (char *name, int from_tty)
2447 remote_open_1 (name, from_tty, &extended_remote_ops, 1 /*extended_p */);
2450 /* Generic code for opening a connection to a remote target. */
2453 init_all_packet_configs (void)
2456 for (i = 0; i < PACKET_MAX; i++)
2457 update_packet_config (&remote_protocol_packets[i]);
2460 /* Symbol look-up. */
2463 remote_check_symbols (struct objfile *objfile)
2465 struct remote_state *rs = get_remote_state ();
2466 char *msg, *reply, *tmp;
2467 struct minimal_symbol *sym;
2470 if (remote_protocol_packets[PACKET_qSymbol].support == PACKET_DISABLE)
2473 /* Allocate a message buffer. We can't reuse the input buffer in RS,
2474 because we need both at the same time. */
2475 msg = alloca (get_remote_packet_size ());
2477 /* Invite target to request symbol lookups. */
2479 putpkt ("qSymbol::");
2480 getpkt (&rs->buf, &rs->buf_size, 0);
2481 packet_ok (rs->buf, &remote_protocol_packets[PACKET_qSymbol]);
2484 while (strncmp (reply, "qSymbol:", 8) == 0)
2487 end = hex2bin (tmp, (gdb_byte *) msg, strlen (tmp) / 2);
2489 sym = lookup_minimal_symbol (msg, NULL, NULL);
2491 xsnprintf (msg, get_remote_packet_size (), "qSymbol::%s", &reply[8]);
2494 CORE_ADDR sym_addr = SYMBOL_VALUE_ADDRESS (sym);
2496 /* If this is a function address, return the start of code
2497 instead of any data function descriptor. */
2498 sym_addr = gdbarch_convert_from_func_ptr_addr (target_gdbarch,
2502 xsnprintf (msg, get_remote_packet_size (), "qSymbol:%s:%s",
2503 paddr_nz (sym_addr), &reply[8]);
2507 getpkt (&rs->buf, &rs->buf_size, 0);
2512 static struct serial *
2513 remote_serial_open (char *name)
2515 static int udp_warning = 0;
2517 /* FIXME: Parsing NAME here is a hack. But we want to warn here instead
2518 of in ser-tcp.c, because it is the remote protocol assuming that the
2519 serial connection is reliable and not the serial connection promising
2521 if (!udp_warning && strncmp (name, "udp:", 4) == 0)
2524 The remote protocol may be unreliable over UDP.\n\
2525 Some events may be lost, rendering further debugging impossible."));
2529 return serial_open (name);
2532 /* This type describes each known response to the qSupported
2534 struct protocol_feature
2536 /* The name of this protocol feature. */
2539 /* The default for this protocol feature. */
2540 enum packet_support default_support;
2542 /* The function to call when this feature is reported, or after
2543 qSupported processing if the feature is not supported.
2544 The first argument points to this structure. The second
2545 argument indicates whether the packet requested support be
2546 enabled, disabled, or probed (or the default, if this function
2547 is being called at the end of processing and this feature was
2548 not reported). The third argument may be NULL; if not NULL, it
2549 is a NUL-terminated string taken from the packet following
2550 this feature's name and an equals sign. */
2551 void (*func) (const struct protocol_feature *, enum packet_support,
2554 /* The corresponding packet for this feature. Only used if
2555 FUNC is remote_supported_packet. */
2560 remote_supported_packet (const struct protocol_feature *feature,
2561 enum packet_support support,
2562 const char *argument)
2566 warning (_("Remote qSupported response supplied an unexpected value for"
2567 " \"%s\"."), feature->name);
2571 if (remote_protocol_packets[feature->packet].support
2572 == PACKET_SUPPORT_UNKNOWN)
2573 remote_protocol_packets[feature->packet].support = support;
2577 remote_packet_size (const struct protocol_feature *feature,
2578 enum packet_support support, const char *value)
2580 struct remote_state *rs = get_remote_state ();
2585 if (support != PACKET_ENABLE)
2588 if (value == NULL || *value == '\0')
2590 warning (_("Remote target reported \"%s\" without a size."),
2596 packet_size = strtol (value, &value_end, 16);
2597 if (errno != 0 || *value_end != '\0' || packet_size < 0)
2599 warning (_("Remote target reported \"%s\" with a bad size: \"%s\"."),
2600 feature->name, value);
2604 if (packet_size > MAX_REMOTE_PACKET_SIZE)
2606 warning (_("limiting remote suggested packet size (%d bytes) to %d"),
2607 packet_size, MAX_REMOTE_PACKET_SIZE);
2608 packet_size = MAX_REMOTE_PACKET_SIZE;
2611 /* Record the new maximum packet size. */
2612 rs->explicit_packet_size = packet_size;
2616 remote_multi_process_feature (const struct protocol_feature *feature,
2617 enum packet_support support, const char *value)
2619 struct remote_state *rs = get_remote_state ();
2620 rs->multi_process_aware = (support == PACKET_ENABLE);
2623 static struct protocol_feature remote_protocol_features[] = {
2624 { "PacketSize", PACKET_DISABLE, remote_packet_size, -1 },
2625 { "qXfer:auxv:read", PACKET_DISABLE, remote_supported_packet,
2626 PACKET_qXfer_auxv },
2627 { "qXfer:features:read", PACKET_DISABLE, remote_supported_packet,
2628 PACKET_qXfer_features },
2629 { "qXfer:libraries:read", PACKET_DISABLE, remote_supported_packet,
2630 PACKET_qXfer_libraries },
2631 { "qXfer:memory-map:read", PACKET_DISABLE, remote_supported_packet,
2632 PACKET_qXfer_memory_map },
2633 { "qXfer:spu:read", PACKET_DISABLE, remote_supported_packet,
2634 PACKET_qXfer_spu_read },
2635 { "qXfer:spu:write", PACKET_DISABLE, remote_supported_packet,
2636 PACKET_qXfer_spu_write },
2637 { "QPassSignals", PACKET_DISABLE, remote_supported_packet,
2638 PACKET_QPassSignals },
2639 { "QStartNoAckMode", PACKET_DISABLE, remote_supported_packet,
2640 PACKET_QStartNoAckMode },
2641 { "multiprocess", PACKET_DISABLE, remote_multi_process_feature, -1 },
2645 remote_query_supported (void)
2647 struct remote_state *rs = get_remote_state ();
2650 unsigned char seen [ARRAY_SIZE (remote_protocol_features)];
2652 /* The packet support flags are handled differently for this packet
2653 than for most others. We treat an error, a disabled packet, and
2654 an empty response identically: any features which must be reported
2655 to be used will be automatically disabled. An empty buffer
2656 accomplishes this, since that is also the representation for a list
2657 containing no features. */
2660 if (remote_protocol_packets[PACKET_qSupported].support != PACKET_DISABLE)
2663 putpkt ("qSupported:multiprocess+");
2665 putpkt ("qSupported");
2667 getpkt (&rs->buf, &rs->buf_size, 0);
2669 /* If an error occured, warn, but do not return - just reset the
2670 buffer to empty and go on to disable features. */
2671 if (packet_ok (rs->buf, &remote_protocol_packets[PACKET_qSupported])
2674 warning (_("Remote failure reply: %s"), rs->buf);
2679 memset (seen, 0, sizeof (seen));
2684 enum packet_support is_supported;
2685 char *p, *end, *name_end, *value;
2687 /* First separate out this item from the rest of the packet. If
2688 there's another item after this, we overwrite the separator
2689 (terminated strings are much easier to work with). */
2691 end = strchr (p, ';');
2694 end = p + strlen (p);
2704 warning (_("empty item in \"qSupported\" response"));
2709 name_end = strchr (p, '=');
2712 /* This is a name=value entry. */
2713 is_supported = PACKET_ENABLE;
2714 value = name_end + 1;
2723 is_supported = PACKET_ENABLE;
2727 is_supported = PACKET_DISABLE;
2731 is_supported = PACKET_SUPPORT_UNKNOWN;
2735 warning (_("unrecognized item \"%s\" in \"qSupported\" response"), p);
2741 for (i = 0; i < ARRAY_SIZE (remote_protocol_features); i++)
2742 if (strcmp (remote_protocol_features[i].name, p) == 0)
2744 const struct protocol_feature *feature;
2747 feature = &remote_protocol_features[i];
2748 feature->func (feature, is_supported, value);
2753 /* If we increased the packet size, make sure to increase the global
2754 buffer size also. We delay this until after parsing the entire
2755 qSupported packet, because this is the same buffer we were
2757 if (rs->buf_size < rs->explicit_packet_size)
2759 rs->buf_size = rs->explicit_packet_size;
2760 rs->buf = xrealloc (rs->buf, rs->buf_size);
2763 /* Handle the defaults for unmentioned features. */
2764 for (i = 0; i < ARRAY_SIZE (remote_protocol_features); i++)
2767 const struct protocol_feature *feature;
2769 feature = &remote_protocol_features[i];
2770 feature->func (feature, feature->default_support, NULL);
2776 remote_open_1 (char *name, int from_tty, struct target_ops *target, int extended_p)
2778 struct remote_state *rs = get_remote_state ();
2779 struct packet_config *noack_config;
2782 error (_("To open a remote debug connection, you need to specify what\n"
2783 "serial device is attached to the remote system\n"
2784 "(e.g. /dev/ttyS0, /dev/ttya, COM1, etc.)."));
2786 /* See FIXME above. */
2787 if (!target_async_permitted)
2788 wait_forever_enabled_p = 1;
2790 /* If we're connected to a running target, target_preopen will kill it.
2791 But if we're connected to a target system with no running process,
2792 then we will still be connected when it returns. Ask this question
2793 first, before target_preopen has a chance to kill anything. */
2794 if (remote_desc != NULL && !target_has_execution)
2797 || query (_("Already connected to a remote target. Disconnect? ")))
2800 error (_("Still connected."));
2803 target_preopen (from_tty);
2805 unpush_target (target);
2807 /* This time without a query. If we were connected to an
2808 extended-remote target and target_preopen killed the running
2809 process, we may still be connected. If we are starting "target
2810 remote" now, the extended-remote target will not have been
2811 removed by unpush_target. */
2812 if (remote_desc != NULL && !target_has_execution)
2815 /* Make sure we send the passed signals list the next time we resume. */
2816 xfree (last_pass_packet);
2817 last_pass_packet = NULL;
2819 remote_fileio_reset ();
2820 reopen_exec_file ();
2823 remote_desc = remote_serial_open (name);
2825 perror_with_name (name);
2827 if (baud_rate != -1)
2829 if (serial_setbaudrate (remote_desc, baud_rate))
2831 /* The requested speed could not be set. Error out to
2832 top level after closing remote_desc. Take care to
2833 set remote_desc to NULL to avoid closing remote_desc
2835 serial_close (remote_desc);
2837 perror_with_name (name);
2841 serial_raw (remote_desc);
2843 /* If there is something sitting in the buffer we might take it as a
2844 response to a command, which would be bad. */
2845 serial_flush_input (remote_desc);
2849 puts_filtered ("Remote debugging using ");
2850 puts_filtered (name);
2851 puts_filtered ("\n");
2853 push_target (target); /* Switch to using remote target now. */
2855 /* Assume that the target is running, unless we learn otherwise. */
2856 target_mark_running (target);
2858 /* Reset the target state; these things will be queried either by
2859 remote_query_supported or as they are needed. */
2860 init_all_packet_configs ();
2861 rs->explicit_packet_size = 0;
2863 rs->multi_process_aware = 0;
2864 rs->extended = extended_p;
2866 general_thread = not_sent_ptid;
2867 continue_thread = not_sent_ptid;
2869 /* Probe for ability to use "ThreadInfo" query, as required. */
2870 use_threadinfo_query = 1;
2871 use_threadextra_query = 1;
2873 /* Ack any packet which the remote side has already sent. */
2874 serial_write (remote_desc, "+", 1);
2876 /* The first packet we send to the target is the optional "supported
2877 packets" request. If the target can answer this, it will tell us
2878 which later probes to skip. */
2879 remote_query_supported ();
2881 /* Next, we possibly activate noack mode.
2883 If the QStartNoAckMode packet configuration is set to AUTO,
2884 enable noack mode if the stub reported a wish for it with
2887 If set to TRUE, then enable noack mode even if the stub didn't
2888 report it in qSupported. If the stub doesn't reply OK, the
2889 session ends with an error.
2891 If FALSE, then don't activate noack mode, regardless of what the
2892 stub claimed should be the default with qSupported. */
2894 noack_config = &remote_protocol_packets[PACKET_QStartNoAckMode];
2896 if (noack_config->detect == AUTO_BOOLEAN_TRUE
2897 || (noack_config->detect == AUTO_BOOLEAN_AUTO
2898 && noack_config->support == PACKET_ENABLE))
2900 putpkt ("QStartNoAckMode");
2901 getpkt (&rs->buf, &rs->buf_size, 0);
2902 if (packet_ok (rs->buf, noack_config) == PACKET_OK)
2906 /* Next, if the target can specify a description, read it. We do
2907 this before anything involving memory or registers. */
2908 target_find_description ();
2910 if (target_async_permitted)
2912 /* With this target we start out by owning the terminal. */
2913 remote_async_terminal_ours_p = 1;
2915 /* FIXME: cagney/1999-09-23: During the initial connection it is
2916 assumed that the target is already ready and able to respond to
2917 requests. Unfortunately remote_start_remote() eventually calls
2918 wait_for_inferior() with no timeout. wait_forever_enabled_p gets
2919 around this. Eventually a mechanism that allows
2920 wait_for_inferior() to expect/get timeouts will be
2922 wait_forever_enabled_p = 0;
2925 /* First delete any symbols previously loaded from shared libraries. */
2926 no_shared_libraries (NULL, 0);
2928 /* Start the remote connection. If error() or QUIT, discard this
2929 target (we'd otherwise be in an inconsistent state) and then
2930 propogate the error on up the exception chain. This ensures that
2931 the caller doesn't stumble along blindly assuming that the
2932 function succeeded. The CLI doesn't have this problem but other
2933 UI's, such as MI do.
2935 FIXME: cagney/2002-05-19: Instead of re-throwing the exception,
2936 this function should return an error indication letting the
2937 caller restore the previous state. Unfortunately the command
2938 ``target remote'' is directly wired to this function making that
2939 impossible. On a positive note, the CLI side of this problem has
2940 been fixed - the function set_cmd_context() makes it possible for
2941 all the ``target ....'' commands to share a common callback
2942 function. See cli-dump.c. */
2944 struct gdb_exception ex;
2945 struct start_remote_args args;
2947 args.from_tty = from_tty;
2948 args.target = target;
2949 args.extended_p = extended_p;
2951 ex = catch_exception (uiout, remote_start_remote, &args, RETURN_MASK_ALL);
2955 if (target_async_permitted)
2956 wait_forever_enabled_p = 1;
2957 throw_exception (ex);
2961 if (target_async_permitted)
2962 wait_forever_enabled_p = 1;
2966 /* Tell the remote that we are using the extended protocol. */
2968 getpkt (&rs->buf, &rs->buf_size, 0);
2971 /* If we connected to a live target, do some additional setup. */
2972 if (target_has_execution)
2974 if (exec_bfd) /* No use without an exec file. */
2975 remote_check_symbols (symfile_objfile);
2979 /* This takes a program previously attached to and detaches it. After
2980 this is done, GDB can be used to debug some other program. We
2981 better not have left any breakpoints in the target program or it'll
2982 die when it hits one. */
2985 remote_detach_1 (char *args, int from_tty, int extended)
2987 int pid = ptid_get_pid (inferior_ptid);
2988 struct remote_state *rs = get_remote_state ();
2991 error (_("Argument given to \"detach\" when remotely debugging."));
2993 if (!target_has_execution)
2994 error (_("No process to detach from."));
2996 /* Tell the remote target to detach. */
2997 if (remote_multi_process_p (rs))
2998 sprintf (rs->buf, "D;%x", pid);
3000 strcpy (rs->buf, "D");
3003 getpkt (&rs->buf, &rs->buf_size, 0);
3005 if (rs->buf[0] == 'O' && rs->buf[1] == 'K')
3007 else if (rs->buf[0] == '\0')
3008 error (_("Remote doesn't know how to detach"));
3010 error (_("Can't detach process."));
3012 /* Unregister the file descriptor from the event loop. */
3013 if (target_is_async_p ())
3014 serial_async (remote_desc, NULL, 0);
3018 if (remote_multi_process_p (rs))
3019 printf_filtered (_("Detached from remote %s.\n"),
3020 target_pid_to_str (pid_to_ptid (pid)));
3024 puts_filtered (_("Detached from remote process.\n"));
3026 puts_filtered (_("Ending remote debugging.\n"));
3030 detach_inferior (pid);
3031 target_mourn_inferior ();
3035 remote_detach (char *args, int from_tty)
3037 remote_detach_1 (args, from_tty, 0);
3041 extended_remote_detach (char *args, int from_tty)
3043 remote_detach_1 (args, from_tty, 1);
3046 /* Same as remote_detach, but don't send the "D" packet; just disconnect. */
3049 remote_disconnect (struct target_ops *target, char *args, int from_tty)
3052 error (_("Argument given to \"disconnect\" when remotely debugging."));
3054 /* Unregister the file descriptor from the event loop. */
3055 if (target_is_async_p ())
3056 serial_async (remote_desc, NULL, 0);
3058 /* Make sure we unpush even the extended remote targets; mourn
3059 won't do it. So call remote_mourn_1 directly instead of
3060 target_mourn_inferior. */
3061 remote_mourn_1 (target);
3064 puts_filtered ("Ending remote debugging.\n");
3067 /* Attach to the process specified by ARGS. If FROM_TTY is non-zero,
3068 be chatty about it. */
3071 extended_remote_attach_1 (struct target_ops *target, char *args, int from_tty)
3073 struct remote_state *rs = get_remote_state ();
3076 char *wait_status = NULL;
3077 struct inferior *inf;
3080 error_no_arg (_("process-id to attach"));
3083 pid = strtol (args, &dummy, 0);
3084 /* Some targets don't set errno on errors, grrr! */
3085 if (pid == 0 && args == dummy)
3086 error (_("Illegal process-id: %s."), args);
3088 if (remote_protocol_packets[PACKET_vAttach].support == PACKET_DISABLE)
3089 error (_("This target does not support attaching to a process"));
3091 sprintf (rs->buf, "vAttach;%x", pid);
3093 getpkt (&rs->buf, &rs->buf_size, 0);
3095 if (packet_ok (rs->buf, &remote_protocol_packets[PACKET_vAttach]) == PACKET_OK)
3098 printf_unfiltered (_("Attached to %s\n"),
3099 target_pid_to_str (pid_to_ptid (pid)));
3101 /* Save the reply for later. */
3102 wait_status = alloca (strlen (rs->buf) + 1);
3103 strcpy (wait_status, rs->buf);
3105 else if (remote_protocol_packets[PACKET_vAttach].support == PACKET_DISABLE)
3106 error (_("This target does not support attaching to a process"));
3108 error (_("Attaching to %s failed"),
3109 target_pid_to_str (pid_to_ptid (pid)));
3111 target_mark_running (target);
3112 inferior_ptid = pid_to_ptid (pid);
3114 /* Now, if we have thread information, update inferior_ptid. */
3115 inferior_ptid = remote_current_thread (inferior_ptid);
3117 inf = add_inferior (pid);
3118 inf->attach_flag = 1;
3120 /* Now, add the main thread to the thread list. */
3121 add_thread_silent (inferior_ptid);
3123 /* Next, if the target can specify a description, read it. We do
3124 this before anything involving memory or registers. */
3125 target_find_description ();
3127 /* Use the previously fetched status. */
3128 gdb_assert (wait_status != NULL);
3129 strcpy (rs->buf, wait_status);
3130 rs->cached_wait_status = 1;
3134 extended_remote_attach (char *args, int from_tty)
3136 extended_remote_attach_1 (&extended_remote_ops, args, from_tty);
3139 /* Convert hex digit A to a number. */
3144 if (a >= '0' && a <= '9')
3146 else if (a >= 'a' && a <= 'f')
3147 return a - 'a' + 10;
3148 else if (a >= 'A' && a <= 'F')
3149 return a - 'A' + 10;
3151 error (_("Reply contains invalid hex digit %d"), a);
3155 hex2bin (const char *hex, gdb_byte *bin, int count)
3159 for (i = 0; i < count; i++)
3161 if (hex[0] == 0 || hex[1] == 0)
3163 /* Hex string is short, or of uneven length.
3164 Return the count that has been converted so far. */
3167 *bin++ = fromhex (hex[0]) * 16 + fromhex (hex[1]);
3173 /* Convert number NIB to a hex digit. */
3181 return 'a' + nib - 10;
3185 bin2hex (const gdb_byte *bin, char *hex, int count)
3188 /* May use a length, or a nul-terminated string as input. */
3190 count = strlen ((char *) bin);
3192 for (i = 0; i < count; i++)
3194 *hex++ = tohex ((*bin >> 4) & 0xf);
3195 *hex++ = tohex (*bin++ & 0xf);
3201 /* Check for the availability of vCont. This function should also check
3205 remote_vcont_probe (struct remote_state *rs)
3209 strcpy (rs->buf, "vCont?");
3211 getpkt (&rs->buf, &rs->buf_size, 0);
3214 /* Make sure that the features we assume are supported. */
3215 if (strncmp (buf, "vCont", 5) == 0)
3218 int support_s, support_S, support_c, support_C;
3224 while (p && *p == ';')
3227 if (*p == 's' && (*(p + 1) == ';' || *(p + 1) == 0))
3229 else if (*p == 'S' && (*(p + 1) == ';' || *(p + 1) == 0))
3231 else if (*p == 'c' && (*(p + 1) == ';' || *(p + 1) == 0))
3233 else if (*p == 'C' && (*(p + 1) == ';' || *(p + 1) == 0))
3236 p = strchr (p, ';');
3239 /* If s, S, c, and C are not all supported, we can't use vCont. Clearing
3240 BUF will make packet_ok disable the packet. */
3241 if (!support_s || !support_S || !support_c || !support_C)
3245 packet_ok (buf, &remote_protocol_packets[PACKET_vCont]);
3248 /* Resume the remote inferior by using a "vCont" packet. The thread
3249 to be resumed is PTID; STEP and SIGGNAL indicate whether the
3250 resumed thread should be single-stepped and/or signalled. If PTID
3251 equals minus_one_ptid, then all threads are resumed; the thread to
3252 be stepped and/or signalled is given in the global INFERIOR_PTID.
3253 This function returns non-zero iff it resumes the inferior.
3255 This function issues a strict subset of all possible vCont commands at the
3259 remote_vcont_resume (ptid_t ptid, int step, enum target_signal siggnal)
3261 struct remote_state *rs = get_remote_state ();
3265 if (remote_protocol_packets[PACKET_vCont].support == PACKET_SUPPORT_UNKNOWN)
3266 remote_vcont_probe (rs);
3268 if (remote_protocol_packets[PACKET_vCont].support == PACKET_DISABLE)
3272 endp = rs->buf + get_remote_packet_size ();
3274 /* If we could generate a wider range of packets, we'd have to worry
3275 about overflowing BUF. Should there be a generic
3276 "multi-part-packet" packet? */
3278 if (ptid_equal (ptid, magic_null_ptid))
3280 /* MAGIC_NULL_PTID means that we don't have any active threads,
3281 so we don't have any TID numbers the inferior will
3282 understand. Make sure to only send forms that do not specify
3284 if (step && siggnal != TARGET_SIGNAL_0)
3285 xsnprintf (p, endp - p, "vCont;S%02x", siggnal);
3287 xsnprintf (p, endp - p, "vCont;s");
3288 else if (siggnal != TARGET_SIGNAL_0)
3289 xsnprintf (p, endp - p, "vCont;C%02x", siggnal);
3291 xsnprintf (p, endp - p, "vCont;c");
3293 else if (ptid_equal (ptid, minus_one_ptid))
3295 /* Resume all threads, with preference for INFERIOR_PTID. */
3296 if (step && siggnal != TARGET_SIGNAL_0)
3298 /* Step inferior_ptid with signal. */
3299 p += xsnprintf (p, endp - p, "vCont;S%02x:", siggnal);
3300 p = write_ptid (p, endp, inferior_ptid);
3301 /* And continue others. */
3302 p += xsnprintf (p, endp - p, ";c");
3306 /* Step inferior_ptid. */
3307 p += xsnprintf (p, endp - p, "vCont;s:");
3308 p = write_ptid (p, endp, inferior_ptid);
3309 /* And continue others. */
3310 p += xsnprintf (p, endp - p, ";c");
3312 else if (siggnal != TARGET_SIGNAL_0)
3314 /* Continue inferior_ptid with signal. */
3315 p += xsnprintf (p, endp - p, "vCont;C%02x:", siggnal);
3316 p = write_ptid (p, endp, inferior_ptid);
3317 /* And continue others. */
3318 p += xsnprintf (p, endp - p, ";c");
3321 xsnprintf (p, endp - p, "vCont;c");
3325 /* Scheduler locking; resume only PTID. */
3326 if (step && siggnal != TARGET_SIGNAL_0)
3328 /* Step ptid with signal. */
3329 p += xsnprintf (p, endp - p, "vCont;S%02x:", siggnal);
3330 p = write_ptid (p, endp, ptid);
3335 p += xsnprintf (p, endp - p, "vCont;s:");
3336 p = write_ptid (p, endp, ptid);
3338 else if (siggnal != TARGET_SIGNAL_0)
3340 /* Continue ptid with signal. */
3341 p += xsnprintf (p, endp - p, "vCont;C%02x:", siggnal);
3342 p = write_ptid (p, endp, ptid);
3346 /* Continue ptid. */
3347 p += xsnprintf (p, endp - p, "vCont;c:");
3348 p = write_ptid (p, endp, ptid);
3352 gdb_assert (strlen (rs->buf) < get_remote_packet_size ());
3358 /* Tell the remote machine to resume. */
3360 static enum target_signal last_sent_signal = TARGET_SIGNAL_0;
3362 static int last_sent_step;
3365 remote_resume (ptid_t ptid, int step, enum target_signal siggnal)
3367 struct remote_state *rs = get_remote_state ();
3370 last_sent_signal = siggnal;
3371 last_sent_step = step;
3373 /* Update the inferior on signals to silently pass, if they've changed. */
3374 remote_pass_signals ();
3376 /* The vCont packet doesn't need to specify threads via Hc. */
3377 if (remote_vcont_resume (ptid, step, siggnal))
3380 /* All other supported resume packets do use Hc, so set the continue
3382 if (ptid_equal (ptid, minus_one_ptid))
3383 set_continue_thread (any_thread_ptid);
3385 set_continue_thread (ptid);
3388 if (siggnal != TARGET_SIGNAL_0)
3390 buf[0] = step ? 'S' : 'C';
3391 buf[1] = tohex (((int) siggnal >> 4) & 0xf);
3392 buf[2] = tohex (((int) siggnal) & 0xf);
3396 strcpy (buf, step ? "s" : "c");
3401 /* We are about to start executing the inferior, let's register it
3402 with the event loop. NOTE: this is the one place where all the
3403 execution commands end up. We could alternatively do this in each
3404 of the execution commands in infcmd.c. */
3405 /* FIXME: ezannoni 1999-09-28: We may need to move this out of here
3406 into infcmd.c in order to allow inferior function calls to work
3407 NOT asynchronously. */
3408 if (target_can_async_p ())
3409 target_async (inferior_event_handler, 0);
3413 /* Set up the signal handler for SIGINT, while the target is
3414 executing, ovewriting the 'regular' SIGINT signal handler. */
3416 initialize_sigint_signal_handler (void)
3418 signal (SIGINT, handle_remote_sigint);
3421 /* Signal handler for SIGINT, while the target is executing. */
3423 handle_remote_sigint (int sig)
3425 signal (sig, handle_remote_sigint_twice);
3426 mark_async_signal_handler_wrapper (sigint_remote_token);
3429 /* Signal handler for SIGINT, installed after SIGINT has already been
3430 sent once. It will take effect the second time that the user sends
3433 handle_remote_sigint_twice (int sig)
3435 signal (sig, handle_remote_sigint);
3436 mark_async_signal_handler_wrapper (sigint_remote_twice_token);
3439 /* Perform the real interruption of the target execution, in response
3442 async_remote_interrupt (gdb_client_data arg)
3445 fprintf_unfiltered (gdb_stdlog, "remote_interrupt called\n");
3447 target_stop (inferior_ptid);
3450 /* Perform interrupt, if the first attempt did not succeed. Just give
3451 up on the target alltogether. */
3453 async_remote_interrupt_twice (gdb_client_data arg)
3456 fprintf_unfiltered (gdb_stdlog, "remote_interrupt_twice called\n");
3461 /* Reinstall the usual SIGINT handlers, after the target has
3464 cleanup_sigint_signal_handler (void *dummy)
3466 signal (SIGINT, handle_sigint);
3469 /* Send ^C to target to halt it. Target will respond, and send us a
3471 static void (*ofunc) (int);
3473 /* The command line interface's stop routine. This function is installed
3474 as a signal handler for SIGINT. The first time a user requests a
3475 stop, we call remote_stop to send a break or ^C. If there is no
3476 response from the target (it didn't stop when the user requested it),
3477 we ask the user if he'd like to detach from the target. */
3479 remote_interrupt (int signo)
3481 /* If this doesn't work, try more severe steps. */
3482 signal (signo, remote_interrupt_twice);
3484 gdb_call_async_signal_handler (sigint_remote_token, 1);
3487 /* The user typed ^C twice. */
3490 remote_interrupt_twice (int signo)
3492 signal (signo, ofunc);
3493 gdb_call_async_signal_handler (sigint_remote_twice_token, 1);
3494 signal (signo, remote_interrupt);
3497 /* This is the generic stop called via the target vector. When a target
3498 interrupt is requested, either by the command line or the GUI, we
3499 will eventually end up here. */
3501 remote_stop (ptid_t ptid)
3503 /* Send a break or a ^C, depending on user preference. */
3505 fprintf_unfiltered (gdb_stdlog, "remote_stop called\n");
3508 serial_send_break (remote_desc);
3510 serial_write (remote_desc, "\003", 1);
3513 /* Ask the user what to do when an interrupt is received. */
3516 interrupt_query (void)
3518 target_terminal_ours ();
3520 if (query ("Interrupted while waiting for the program.\n\
3521 Give up (and stop debugging it)? "))
3523 target_mourn_inferior ();
3524 signal (SIGINT, handle_sigint);
3525 deprecated_throw_reason (RETURN_QUIT);
3528 target_terminal_inferior ();
3531 /* Enable/disable target terminal ownership. Most targets can use
3532 terminal groups to control terminal ownership. Remote targets are
3533 different in that explicit transfer of ownership to/from GDB/target
3537 remote_terminal_inferior (void)
3539 if (!target_async_permitted)
3540 /* Nothing to do. */
3543 /* FIXME: cagney/1999-09-27: Shouldn't need to test for
3544 sync_execution here. This function should only be called when
3545 GDB is resuming the inferior in the forground. A background
3546 resume (``run&'') should leave GDB in control of the terminal and
3547 consequently should not call this code. */
3548 if (!sync_execution)
3550 /* FIXME: cagney/1999-09-27: Closely related to the above. Make
3551 calls target_terminal_*() idenpotent. The event-loop GDB talking
3552 to an asynchronous target with a synchronous command calls this
3553 function from both event-top.c and infrun.c/infcmd.c. Once GDB
3554 stops trying to transfer the terminal to the target when it
3555 shouldn't this guard can go away. */
3556 if (!remote_async_terminal_ours_p)
3558 delete_file_handler (input_fd);
3559 remote_async_terminal_ours_p = 0;
3560 initialize_sigint_signal_handler ();
3561 /* NOTE: At this point we could also register our selves as the
3562 recipient of all input. Any characters typed could then be
3563 passed on down to the target. */
3567 remote_terminal_ours (void)
3569 if (!target_async_permitted)
3570 /* Nothing to do. */
3573 /* See FIXME in remote_terminal_inferior. */
3574 if (!sync_execution)
3576 /* See FIXME in remote_terminal_inferior. */
3577 if (remote_async_terminal_ours_p)
3579 cleanup_sigint_signal_handler (NULL);
3580 add_file_handler (input_fd, stdin_event_handler, 0);
3581 remote_async_terminal_ours_p = 1;
3585 remote_console_output (char *msg)
3589 for (p = msg; p[0] && p[1]; p += 2)
3592 char c = fromhex (p[0]) * 16 + fromhex (p[1]);
3595 fputs_unfiltered (tb, gdb_stdtarg);
3597 gdb_flush (gdb_stdtarg);
3600 /* Wait until the remote machine stops, then return,
3601 storing status in STATUS just as `wait' would. */
3604 remote_wait (ptid_t ptid, struct target_waitstatus *status)
3606 struct remote_state *rs = get_remote_state ();
3607 struct remote_arch_state *rsa = get_remote_arch_state ();
3608 ptid_t event_ptid = null_ptid;
3610 int solibs_changed = 0;
3612 status->kind = TARGET_WAITKIND_EXITED;
3613 status->value.integer = 0;
3619 if (rs->cached_wait_status)
3620 /* Use the cached wait status, but only once. */
3621 rs->cached_wait_status = 0;
3624 if (!target_is_async_p ())
3626 ofunc = signal (SIGINT, remote_interrupt);
3627 /* If the user hit C-c before this packet, or between packets,
3628 pretend that it was hit right here. */
3632 remote_interrupt (SIGINT);
3635 /* FIXME: cagney/1999-09-27: If we're in async mode we should
3636 _never_ wait for ever -> test on target_is_async_p().
3637 However, before we do that we need to ensure that the caller
3638 knows how to take the target into/out of async mode. */
3639 getpkt (&rs->buf, &rs->buf_size, wait_forever_enabled_p);
3640 if (!target_is_async_p ())
3641 signal (SIGINT, ofunc);
3646 remote_stopped_by_watchpoint_p = 0;
3650 case 'E': /* Error of some sort. */
3651 /* We're out of sync with the target now. Did it continue or not?
3652 Not is more likely, so report a stop. */
3653 warning (_("Remote failure reply: %s"), buf);
3654 status->kind = TARGET_WAITKIND_STOPPED;
3655 status->value.sig = TARGET_SIGNAL_0;
3657 case 'F': /* File-I/O request. */
3658 remote_fileio_request (buf);
3660 case 'T': /* Status with PC, SP, FP, ... */
3662 gdb_byte regs[MAX_REGISTER_SIZE];
3664 /* Expedited reply, containing Signal, {regno, reg} repeat. */
3665 /* format is: 'Tssn...:r...;n...:r...;n...:r...;#cc', where
3667 n... = register number
3668 r... = register contents
3670 p = &buf[3]; /* after Txx */
3679 /* If the packet contains a register number, save it
3680 in pnum and set p1 to point to the character
3681 following it. Otherwise p1 points to p. */
3683 /* If this packet is an awatch packet, don't parse the
3684 'a' as a register number. */
3686 if (strncmp (p, "awatch", strlen("awatch")) != 0)
3688 /* Read the ``P'' register number. */
3689 pnum = strtol (p, &p_temp, 16);
3695 if (p1 == p) /* No register number present here. */
3697 p1 = strchr (p, ':');
3699 error (_("Malformed packet(a) (missing colon): %s\n\
3702 if (strncmp (p, "thread", p1 - p) == 0)
3703 event_ptid = read_ptid (++p1, &p);
3704 else if ((strncmp (p, "watch", p1 - p) == 0)
3705 || (strncmp (p, "rwatch", p1 - p) == 0)
3706 || (strncmp (p, "awatch", p1 - p) == 0))
3708 remote_stopped_by_watchpoint_p = 1;
3709 p = unpack_varlen_hex (++p1, &addr);
3710 remote_watch_data_address = (CORE_ADDR)addr;
3712 else if (strncmp (p, "library", p1 - p) == 0)
3716 while (*p_temp && *p_temp != ';')
3724 /* Silently skip unknown optional info. */
3725 p_temp = strchr (p1 + 1, ';');
3732 struct packet_reg *reg = packet_reg_from_pnum (rsa, pnum);
3736 error (_("Malformed packet(b) (missing colon): %s\n\
3742 error (_("Remote sent bad register number %s: %s\n\
3744 phex_nz (pnum, 0), p, buf);
3746 fieldsize = hex2bin (p, regs,
3747 register_size (target_gdbarch,
3750 if (fieldsize < register_size (target_gdbarch,
3752 warning (_("Remote reply is too short: %s"), buf);
3753 regcache_raw_supply (get_current_regcache (),
3758 error (_("Remote register badly formatted: %s\nhere: %s"),
3764 case 'S': /* Old style status, just signal only. */
3766 status->kind = TARGET_WAITKIND_LOADED;
3769 status->kind = TARGET_WAITKIND_STOPPED;
3770 status->value.sig = (enum target_signal)
3771 (((fromhex (buf[1])) << 4) + (fromhex (buf[2])));
3774 case 'W': /* Target exited. */
3781 /* GDB used to accept only 2 hex chars here. Stubs should
3782 only send more if they detect GDB supports
3783 multi-process support. */
3784 p = unpack_varlen_hex (&buf[1], &value);
3788 /* The remote process exited. */
3789 status->kind = TARGET_WAITKIND_EXITED;
3790 status->value.integer = value;
3794 /* The remote process exited with a signal. */
3795 status->kind = TARGET_WAITKIND_SIGNALLED;
3796 status->value.sig = (enum target_signal) value;
3799 /* If no process is specified, assume inferior_ptid. */
3800 pid = ptid_get_pid (inferior_ptid);
3809 else if (strncmp (p,
3810 "process:", sizeof ("process:") - 1) == 0)
3813 p += sizeof ("process:") - 1;
3814 unpack_varlen_hex (p, &upid);
3818 error (_("unknown stop reply packet: %s"), buf);
3821 error (_("unknown stop reply packet: %s"), buf);
3822 event_ptid = ptid_build (pid, 0, 0);
3825 case 'O': /* Console output. */
3826 remote_console_output (buf + 1);
3827 if (target_can_async_p ())
3829 /* Return immediately to the event loop. The event loop
3830 will still be waiting on the inferior afterwards. */
3831 status->kind = TARGET_WAITKIND_IGNORE;
3837 if (last_sent_signal != TARGET_SIGNAL_0)
3839 /* Zero length reply means that we tried 'S' or 'C' and
3840 the remote system doesn't support it. */
3841 target_terminal_ours_for_output ();
3843 ("Can't send signals to this remote system. %s not sent.\n",
3844 target_signal_to_name (last_sent_signal));
3845 last_sent_signal = TARGET_SIGNAL_0;
3846 target_terminal_inferior ();
3848 strcpy ((char *) buf, last_sent_step ? "s" : "c");
3849 putpkt ((char *) buf);
3852 /* else fallthrough */
3854 warning (_("Invalid remote reply: %s"), buf);
3859 if (status->kind == TARGET_WAITKIND_EXITED
3860 || status->kind == TARGET_WAITKIND_SIGNALLED)
3862 int pid = ptid_get_pid (event_ptid);
3863 delete_inferior (pid);
3867 if (!ptid_equal (event_ptid, null_ptid))
3868 record_currthread (event_ptid);
3870 event_ptid = inferior_ptid;
3876 /* Fetch a single register using a 'p' packet. */
3879 fetch_register_using_p (struct regcache *regcache, struct packet_reg *reg)
3881 struct remote_state *rs = get_remote_state ();
3883 char regp[MAX_REGISTER_SIZE];
3886 if (remote_protocol_packets[PACKET_p].support == PACKET_DISABLE)
3889 if (reg->pnum == -1)
3894 p += hexnumstr (p, reg->pnum);
3896 remote_send (&rs->buf, &rs->buf_size);
3900 switch (packet_ok (buf, &remote_protocol_packets[PACKET_p]))
3904 case PACKET_UNKNOWN:
3907 error (_("Could not fetch register \"%s\""),
3908 gdbarch_register_name (get_regcache_arch (regcache), reg->regnum));
3911 /* If this register is unfetchable, tell the regcache. */
3914 regcache_raw_supply (regcache, reg->regnum, NULL);
3918 /* Otherwise, parse and supply the value. */
3924 error (_("fetch_register_using_p: early buf termination"));
3926 regp[i++] = fromhex (p[0]) * 16 + fromhex (p[1]);
3929 regcache_raw_supply (regcache, reg->regnum, regp);
3933 /* Fetch the registers included in the target's 'g' packet. */
3936 send_g_packet (void)
3938 struct remote_state *rs = get_remote_state ();
3943 sprintf (rs->buf, "g");
3944 remote_send (&rs->buf, &rs->buf_size);
3946 /* We can get out of synch in various cases. If the first character
3947 in the buffer is not a hex character, assume that has happened
3948 and try to fetch another packet to read. */
3949 while ((rs->buf[0] < '0' || rs->buf[0] > '9')
3950 && (rs->buf[0] < 'A' || rs->buf[0] > 'F')
3951 && (rs->buf[0] < 'a' || rs->buf[0] > 'f')
3952 && rs->buf[0] != 'x') /* New: unavailable register value. */
3955 fprintf_unfiltered (gdb_stdlog,
3956 "Bad register packet; fetching a new packet\n");
3957 getpkt (&rs->buf, &rs->buf_size, 0);
3960 buf_len = strlen (rs->buf);
3962 /* Sanity check the received packet. */
3963 if (buf_len % 2 != 0)
3964 error (_("Remote 'g' packet reply is of odd length: %s"), rs->buf);
3970 process_g_packet (struct regcache *regcache)
3972 struct gdbarch *gdbarch = get_regcache_arch (regcache);
3973 struct remote_state *rs = get_remote_state ();
3974 struct remote_arch_state *rsa = get_remote_arch_state ();
3979 buf_len = strlen (rs->buf);
3981 /* Further sanity checks, with knowledge of the architecture. */
3982 if (buf_len > 2 * rsa->sizeof_g_packet)
3983 error (_("Remote 'g' packet reply is too long: %s"), rs->buf);
3985 /* Save the size of the packet sent to us by the target. It is used
3986 as a heuristic when determining the max size of packets that the
3987 target can safely receive. */
3988 if (rsa->actual_register_packet_size == 0)
3989 rsa->actual_register_packet_size = buf_len;
3991 /* If this is smaller than we guessed the 'g' packet would be,
3992 update our records. A 'g' reply that doesn't include a register's
3993 value implies either that the register is not available, or that
3994 the 'p' packet must be used. */
3995 if (buf_len < 2 * rsa->sizeof_g_packet)
3997 rsa->sizeof_g_packet = buf_len / 2;
3999 for (i = 0; i < gdbarch_num_regs (gdbarch); i++)
4001 if (rsa->regs[i].pnum == -1)
4004 if (rsa->regs[i].offset >= rsa->sizeof_g_packet)
4005 rsa->regs[i].in_g_packet = 0;
4007 rsa->regs[i].in_g_packet = 1;
4011 regs = alloca (rsa->sizeof_g_packet);
4013 /* Unimplemented registers read as all bits zero. */
4014 memset (regs, 0, rsa->sizeof_g_packet);
4016 /* Reply describes registers byte by byte, each byte encoded as two
4017 hex characters. Suck them all up, then supply them to the
4018 register cacheing/storage mechanism. */
4021 for (i = 0; i < rsa->sizeof_g_packet; i++)
4023 if (p[0] == 0 || p[1] == 0)
4024 /* This shouldn't happen - we adjusted sizeof_g_packet above. */
4025 internal_error (__FILE__, __LINE__,
4026 "unexpected end of 'g' packet reply");
4028 if (p[0] == 'x' && p[1] == 'x')
4029 regs[i] = 0; /* 'x' */
4031 regs[i] = fromhex (p[0]) * 16 + fromhex (p[1]);
4037 for (i = 0; i < gdbarch_num_regs (gdbarch); i++)
4039 struct packet_reg *r = &rsa->regs[i];
4042 if (r->offset * 2 >= strlen (rs->buf))
4043 /* This shouldn't happen - we adjusted in_g_packet above. */
4044 internal_error (__FILE__, __LINE__,
4045 "unexpected end of 'g' packet reply");
4046 else if (rs->buf[r->offset * 2] == 'x')
4048 gdb_assert (r->offset * 2 < strlen (rs->buf));
4049 /* The register isn't available, mark it as such (at
4050 the same time setting the value to zero). */
4051 regcache_raw_supply (regcache, r->regnum, NULL);
4054 regcache_raw_supply (regcache, r->regnum,
4062 fetch_registers_using_g (struct regcache *regcache)
4065 process_g_packet (regcache);
4069 remote_fetch_registers (struct regcache *regcache, int regnum)
4071 struct remote_state *rs = get_remote_state ();
4072 struct remote_arch_state *rsa = get_remote_arch_state ();
4075 set_general_thread (inferior_ptid);
4079 struct packet_reg *reg = packet_reg_from_regnum (rsa, regnum);
4080 gdb_assert (reg != NULL);
4082 /* If this register might be in the 'g' packet, try that first -
4083 we are likely to read more than one register. If this is the
4084 first 'g' packet, we might be overly optimistic about its
4085 contents, so fall back to 'p'. */
4086 if (reg->in_g_packet)
4088 fetch_registers_using_g (regcache);
4089 if (reg->in_g_packet)
4093 if (fetch_register_using_p (regcache, reg))
4096 /* This register is not available. */
4097 regcache_raw_supply (regcache, reg->regnum, NULL);
4102 fetch_registers_using_g (regcache);
4104 for (i = 0; i < gdbarch_num_regs (get_regcache_arch (regcache)); i++)
4105 if (!rsa->regs[i].in_g_packet)
4106 if (!fetch_register_using_p (regcache, &rsa->regs[i]))
4108 /* This register is not available. */
4109 regcache_raw_supply (regcache, i, NULL);
4113 /* Prepare to store registers. Since we may send them all (using a
4114 'G' request), we have to read out the ones we don't want to change
4118 remote_prepare_to_store (struct regcache *regcache)
4120 struct remote_arch_state *rsa = get_remote_arch_state ();
4122 gdb_byte buf[MAX_REGISTER_SIZE];
4124 /* Make sure the entire registers array is valid. */
4125 switch (remote_protocol_packets[PACKET_P].support)
4127 case PACKET_DISABLE:
4128 case PACKET_SUPPORT_UNKNOWN:
4129 /* Make sure all the necessary registers are cached. */
4130 for (i = 0; i < gdbarch_num_regs (get_regcache_arch (regcache)); i++)
4131 if (rsa->regs[i].in_g_packet)
4132 regcache_raw_read (regcache, rsa->regs[i].regnum, buf);
4139 /* Helper: Attempt to store REGNUM using the P packet. Return fail IFF
4140 packet was not recognized. */
4143 store_register_using_P (const struct regcache *regcache, struct packet_reg *reg)
4145 struct gdbarch *gdbarch = get_regcache_arch (regcache);
4146 struct remote_state *rs = get_remote_state ();
4147 struct remote_arch_state *rsa = get_remote_arch_state ();
4148 /* Try storing a single register. */
4149 char *buf = rs->buf;
4150 gdb_byte regp[MAX_REGISTER_SIZE];
4153 if (remote_protocol_packets[PACKET_P].support == PACKET_DISABLE)
4156 if (reg->pnum == -1)
4159 xsnprintf (buf, get_remote_packet_size (), "P%s=", phex_nz (reg->pnum, 0));
4160 p = buf + strlen (buf);
4161 regcache_raw_collect (regcache, reg->regnum, regp);
4162 bin2hex (regp, p, register_size (gdbarch, reg->regnum));
4163 remote_send (&rs->buf, &rs->buf_size);
4165 switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_P]))
4170 error (_("Could not write register \"%s\""),
4171 gdbarch_register_name (gdbarch, reg->regnum));
4172 case PACKET_UNKNOWN:
4175 internal_error (__FILE__, __LINE__, _("Bad result from packet_ok"));
4179 /* Store register REGNUM, or all registers if REGNUM == -1, from the
4180 contents of the register cache buffer. FIXME: ignores errors. */
4183 store_registers_using_G (const struct regcache *regcache)
4185 struct remote_state *rs = get_remote_state ();
4186 struct remote_arch_state *rsa = get_remote_arch_state ();
4190 /* Extract all the registers in the regcache copying them into a
4194 regs = alloca (rsa->sizeof_g_packet);
4195 memset (regs, 0, rsa->sizeof_g_packet);
4196 for (i = 0; i < gdbarch_num_regs (get_regcache_arch (regcache)); i++)
4198 struct packet_reg *r = &rsa->regs[i];
4200 regcache_raw_collect (regcache, r->regnum, regs + r->offset);
4204 /* Command describes registers byte by byte,
4205 each byte encoded as two hex characters. */
4208 /* remote_prepare_to_store insures that rsa->sizeof_g_packet gets
4210 bin2hex (regs, p, rsa->sizeof_g_packet);
4211 remote_send (&rs->buf, &rs->buf_size);
4214 /* Store register REGNUM, or all registers if REGNUM == -1, from the contents
4215 of the register cache buffer. FIXME: ignores errors. */
4218 remote_store_registers (struct regcache *regcache, int regnum)
4220 struct remote_state *rs = get_remote_state ();
4221 struct remote_arch_state *rsa = get_remote_arch_state ();
4224 set_general_thread (inferior_ptid);
4228 struct packet_reg *reg = packet_reg_from_regnum (rsa, regnum);
4229 gdb_assert (reg != NULL);
4231 /* Always prefer to store registers using the 'P' packet if
4232 possible; we often change only a small number of registers.
4233 Sometimes we change a larger number; we'd need help from a
4234 higher layer to know to use 'G'. */
4235 if (store_register_using_P (regcache, reg))
4238 /* For now, don't complain if we have no way to write the
4239 register. GDB loses track of unavailable registers too
4240 easily. Some day, this may be an error. We don't have
4241 any way to read the register, either... */
4242 if (!reg->in_g_packet)
4245 store_registers_using_G (regcache);
4249 store_registers_using_G (regcache);
4251 for (i = 0; i < gdbarch_num_regs (get_regcache_arch (regcache)); i++)
4252 if (!rsa->regs[i].in_g_packet)
4253 if (!store_register_using_P (regcache, &rsa->regs[i]))
4254 /* See above for why we do not issue an error here. */
4259 /* Return the number of hex digits in num. */
4262 hexnumlen (ULONGEST num)
4266 for (i = 0; num != 0; i++)
4272 /* Set BUF to the minimum number of hex digits representing NUM. */
4275 hexnumstr (char *buf, ULONGEST num)
4277 int len = hexnumlen (num);
4278 return hexnumnstr (buf, num, len);
4282 /* Set BUF to the hex digits representing NUM, padded to WIDTH characters. */
4285 hexnumnstr (char *buf, ULONGEST num, int width)
4291 for (i = width - 1; i >= 0; i--)
4293 buf[i] = "0123456789abcdef"[(num & 0xf)];
4300 /* Mask all but the least significant REMOTE_ADDRESS_SIZE bits. */
4303 remote_address_masked (CORE_ADDR addr)
4305 int address_size = remote_address_size;
4306 /* If "remoteaddresssize" was not set, default to target address size. */
4308 address_size = gdbarch_addr_bit (target_gdbarch);
4310 if (address_size > 0
4311 && address_size < (sizeof (ULONGEST) * 8))
4313 /* Only create a mask when that mask can safely be constructed
4314 in a ULONGEST variable. */
4316 mask = (mask << address_size) - 1;
4322 /* Convert BUFFER, binary data at least LEN bytes long, into escaped
4323 binary data in OUT_BUF. Set *OUT_LEN to the length of the data
4324 encoded in OUT_BUF, and return the number of bytes in OUT_BUF
4325 (which may be more than *OUT_LEN due to escape characters). The
4326 total number of bytes in the output buffer will be at most
4330 remote_escape_output (const gdb_byte *buffer, int len,
4331 gdb_byte *out_buf, int *out_len,
4334 int input_index, output_index;
4337 for (input_index = 0; input_index < len; input_index++)
4339 gdb_byte b = buffer[input_index];
4341 if (b == '$' || b == '#' || b == '}')
4343 /* These must be escaped. */
4344 if (output_index + 2 > out_maxlen)
4346 out_buf[output_index++] = '}';
4347 out_buf[output_index++] = b ^ 0x20;
4351 if (output_index + 1 > out_maxlen)
4353 out_buf[output_index++] = b;
4357 *out_len = input_index;
4358 return output_index;
4361 /* Convert BUFFER, escaped data LEN bytes long, into binary data
4362 in OUT_BUF. Return the number of bytes written to OUT_BUF.
4363 Raise an error if the total number of bytes exceeds OUT_MAXLEN.
4365 This function reverses remote_escape_output. It allows more
4366 escaped characters than that function does, in particular because
4367 '*' must be escaped to avoid the run-length encoding processing
4368 in reading packets. */
4371 remote_unescape_input (const gdb_byte *buffer, int len,
4372 gdb_byte *out_buf, int out_maxlen)
4374 int input_index, output_index;
4379 for (input_index = 0; input_index < len; input_index++)
4381 gdb_byte b = buffer[input_index];
4383 if (output_index + 1 > out_maxlen)
4385 warning (_("Received too much data from remote target;"
4386 " ignoring overflow."));
4387 return output_index;
4392 out_buf[output_index++] = b ^ 0x20;
4398 out_buf[output_index++] = b;
4402 error (_("Unmatched escape character in target response."));
4404 return output_index;
4407 /* Determine whether the remote target supports binary downloading.
4408 This is accomplished by sending a no-op memory write of zero length
4409 to the target at the specified address. It does not suffice to send
4410 the whole packet, since many stubs strip the eighth bit and
4411 subsequently compute a wrong checksum, which causes real havoc with
4414 NOTE: This can still lose if the serial line is not eight-bit
4415 clean. In cases like this, the user should clear "remote
4419 check_binary_download (CORE_ADDR addr)
4421 struct remote_state *rs = get_remote_state ();
4423 switch (remote_protocol_packets[PACKET_X].support)
4425 case PACKET_DISABLE:
4429 case PACKET_SUPPORT_UNKNOWN:
4435 p += hexnumstr (p, (ULONGEST) addr);
4437 p += hexnumstr (p, (ULONGEST) 0);
4441 putpkt_binary (rs->buf, (int) (p - rs->buf));
4442 getpkt (&rs->buf, &rs->buf_size, 0);
4444 if (rs->buf[0] == '\0')
4447 fprintf_unfiltered (gdb_stdlog,
4448 "binary downloading NOT suppported by target\n");
4449 remote_protocol_packets[PACKET_X].support = PACKET_DISABLE;
4454 fprintf_unfiltered (gdb_stdlog,
4455 "binary downloading suppported by target\n");
4456 remote_protocol_packets[PACKET_X].support = PACKET_ENABLE;
4463 /* Write memory data directly to the remote machine.
4464 This does not inform the data cache; the data cache uses this.
4465 HEADER is the starting part of the packet.
4466 MEMADDR is the address in the remote memory space.
4467 MYADDR is the address of the buffer in our space.
4468 LEN is the number of bytes.
4469 PACKET_FORMAT should be either 'X' or 'M', and indicates if we
4470 should send data as binary ('X'), or hex-encoded ('M').
4472 The function creates packet of the form
4473 <HEADER><ADDRESS>,<LENGTH>:<DATA>
4475 where encoding of <DATA> is termined by PACKET_FORMAT.
4477 If USE_LENGTH is 0, then the <LENGTH> field and the preceding comma
4480 Returns the number of bytes transferred, or 0 (setting errno) for
4481 error. Only transfer a single packet. */
4484 remote_write_bytes_aux (const char *header, CORE_ADDR memaddr,
4485 const gdb_byte *myaddr, int len,
4486 char packet_format, int use_length)
4488 struct remote_state *rs = get_remote_state ();
4498 if (packet_format != 'X' && packet_format != 'M')
4499 internal_error (__FILE__, __LINE__,
4500 "remote_write_bytes_aux: bad packet format");
4505 payload_size = get_memory_write_packet_size ();
4507 /* The packet buffer will be large enough for the payload;
4508 get_memory_packet_size ensures this. */
4511 /* Compute the size of the actual payload by subtracting out the
4512 packet header and footer overhead: "$M<memaddr>,<len>:...#nn".
4514 payload_size -= strlen ("$,:#NN");
4516 /* The comma won't be used. */
4518 header_length = strlen (header);
4519 payload_size -= header_length;
4520 payload_size -= hexnumlen (memaddr);
4522 /* Construct the packet excluding the data: "<header><memaddr>,<len>:". */
4524 strcat (rs->buf, header);
4525 p = rs->buf + strlen (header);
4527 /* Compute a best guess of the number of bytes actually transfered. */
4528 if (packet_format == 'X')
4530 /* Best guess at number of bytes that will fit. */
4531 todo = min (len, payload_size);
4533 payload_size -= hexnumlen (todo);
4534 todo = min (todo, payload_size);
4538 /* Num bytes that will fit. */
4539 todo = min (len, payload_size / 2);
4541 payload_size -= hexnumlen (todo);
4542 todo = min (todo, payload_size / 2);
4546 internal_error (__FILE__, __LINE__,
4547 _("minumum packet size too small to write data"));
4549 /* If we already need another packet, then try to align the end
4550 of this packet to a useful boundary. */
4551 if (todo > 2 * REMOTE_ALIGN_WRITES && todo < len)
4552 todo = ((memaddr + todo) & ~(REMOTE_ALIGN_WRITES - 1)) - memaddr;
4554 /* Append "<memaddr>". */
4555 memaddr = remote_address_masked (memaddr);
4556 p += hexnumstr (p, (ULONGEST) memaddr);
4563 /* Append <len>. Retain the location/size of <len>. It may need to
4564 be adjusted once the packet body has been created. */
4566 plenlen = hexnumstr (p, (ULONGEST) todo);
4574 /* Append the packet body. */
4575 if (packet_format == 'X')
4577 /* Binary mode. Send target system values byte by byte, in
4578 increasing byte addresses. Only escape certain critical
4580 payload_length = remote_escape_output (myaddr, todo, p, &nr_bytes,
4583 /* If not all TODO bytes fit, then we'll need another packet. Make
4584 a second try to keep the end of the packet aligned. Don't do
4585 this if the packet is tiny. */
4586 if (nr_bytes < todo && nr_bytes > 2 * REMOTE_ALIGN_WRITES)
4590 new_nr_bytes = (((memaddr + nr_bytes) & ~(REMOTE_ALIGN_WRITES - 1))
4592 if (new_nr_bytes != nr_bytes)
4593 payload_length = remote_escape_output (myaddr, new_nr_bytes,
4598 p += payload_length;
4599 if (use_length && nr_bytes < todo)
4601 /* Escape chars have filled up the buffer prematurely,
4602 and we have actually sent fewer bytes than planned.
4603 Fix-up the length field of the packet. Use the same
4604 number of characters as before. */
4605 plen += hexnumnstr (plen, (ULONGEST) nr_bytes, plenlen);
4606 *plen = ':'; /* overwrite \0 from hexnumnstr() */
4611 /* Normal mode: Send target system values byte by byte, in
4612 increasing byte addresses. Each byte is encoded as a two hex
4614 nr_bytes = bin2hex (myaddr, p, todo);
4618 putpkt_binary (rs->buf, (int) (p - rs->buf));
4619 getpkt (&rs->buf, &rs->buf_size, 0);
4621 if (rs->buf[0] == 'E')
4623 /* There is no correspondance between what the remote protocol
4624 uses for errors and errno codes. We would like a cleaner way
4625 of representing errors (big enough to include errno codes,
4626 bfd_error codes, and others). But for now just return EIO. */
4631 /* Return NR_BYTES, not TODO, in case escape chars caused us to send
4632 fewer bytes than we'd planned. */
4636 /* Write memory data directly to the remote machine.
4637 This does not inform the data cache; the data cache uses this.
4638 MEMADDR is the address in the remote memory space.
4639 MYADDR is the address of the buffer in our space.
4640 LEN is the number of bytes.
4642 Returns number of bytes transferred, or 0 (setting errno) for
4643 error. Only transfer a single packet. */
4646 remote_write_bytes (CORE_ADDR memaddr, const gdb_byte *myaddr, int len)
4648 char *packet_format = 0;
4650 /* Check whether the target supports binary download. */
4651 check_binary_download (memaddr);
4653 switch (remote_protocol_packets[PACKET_X].support)
4656 packet_format = "X";
4658 case PACKET_DISABLE:
4659 packet_format = "M";
4661 case PACKET_SUPPORT_UNKNOWN:
4662 internal_error (__FILE__, __LINE__,
4663 _("remote_write_bytes: bad internal state"));
4665 internal_error (__FILE__, __LINE__, _("bad switch"));
4668 return remote_write_bytes_aux (packet_format,
4669 memaddr, myaddr, len, packet_format[0], 1);
4672 /* Read memory data directly from the remote machine.
4673 This does not use the data cache; the data cache uses this.
4674 MEMADDR is the address in the remote memory space.
4675 MYADDR is the address of the buffer in our space.
4676 LEN is the number of bytes.
4678 Returns number of bytes transferred, or 0 for error. */
4680 /* NOTE: cagney/1999-10-18: This function (and its siblings in other
4681 remote targets) shouldn't attempt to read the entire buffer.
4682 Instead it should read a single packet worth of data and then
4683 return the byte size of that packet to the caller. The caller (its
4684 caller and its callers caller ;-) already contains code for
4685 handling partial reads. */
4688 remote_read_bytes (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
4690 struct remote_state *rs = get_remote_state ();
4691 int max_buf_size; /* Max size of packet output buffer. */
4697 max_buf_size = get_memory_read_packet_size ();
4698 /* The packet buffer will be large enough for the payload;
4699 get_memory_packet_size ensures this. */
4708 todo = min (len, max_buf_size / 2); /* num bytes that will fit */
4710 /* construct "m"<memaddr>","<len>" */
4711 /* sprintf (rs->buf, "m%lx,%x", (unsigned long) memaddr, todo); */
4712 memaddr = remote_address_masked (memaddr);
4715 p += hexnumstr (p, (ULONGEST) memaddr);
4717 p += hexnumstr (p, (ULONGEST) todo);
4721 getpkt (&rs->buf, &rs->buf_size, 0);
4723 if (rs->buf[0] == 'E'
4724 && isxdigit (rs->buf[1]) && isxdigit (rs->buf[2])
4725 && rs->buf[3] == '\0')
4727 /* There is no correspondance between what the remote
4728 protocol uses for errors and errno codes. We would like
4729 a cleaner way of representing errors (big enough to
4730 include errno codes, bfd_error codes, and others). But
4731 for now just return EIO. */
4736 /* Reply describes memory byte by byte,
4737 each byte encoded as two hex characters. */
4740 if ((i = hex2bin (p, myaddr, todo)) < todo)
4742 /* Reply is short. This means that we were able to read
4743 only part of what we wanted to. */
4744 return i + (origlen - len);
4753 /* Read or write LEN bytes from inferior memory at MEMADDR,
4754 transferring to or from debugger address BUFFER. Write to inferior
4755 if SHOULD_WRITE is nonzero. Returns length of data written or
4756 read; 0 for error. TARGET is unused. */
4759 remote_xfer_memory (CORE_ADDR mem_addr, gdb_byte *buffer, int mem_len,
4760 int should_write, struct mem_attrib *attrib,
4761 struct target_ops *target)
4765 set_general_thread (inferior_ptid);
4768 res = remote_write_bytes (mem_addr, buffer, mem_len);
4770 res = remote_read_bytes (mem_addr, buffer, mem_len);
4775 /* Sends a packet with content determined by the printf format string
4776 FORMAT and the remaining arguments, then gets the reply. Returns
4777 whether the packet was a success, a failure, or unknown. */
4780 remote_send_printf (const char *format, ...)
4782 struct remote_state *rs = get_remote_state ();
4783 int max_size = get_remote_packet_size ();
4786 va_start (ap, format);
4789 if (vsnprintf (rs->buf, max_size, format, ap) >= max_size)
4790 internal_error (__FILE__, __LINE__, "Too long remote packet.");
4792 if (putpkt (rs->buf) < 0)
4793 error (_("Communication problem with target."));
4796 getpkt (&rs->buf, &rs->buf_size, 0);
4798 return packet_check_result (rs->buf);
4802 restore_remote_timeout (void *p)
4804 int value = *(int *)p;
4805 remote_timeout = value;
4808 /* Flash writing can take quite some time. We'll set
4809 effectively infinite timeout for flash operations.
4810 In future, we'll need to decide on a better approach. */
4811 static const int remote_flash_timeout = 1000;
4814 remote_flash_erase (struct target_ops *ops,
4815 ULONGEST address, LONGEST length)
4817 int saved_remote_timeout = remote_timeout;
4818 enum packet_result ret;
4820 struct cleanup *back_to = make_cleanup (restore_remote_timeout,
4821 &saved_remote_timeout);
4822 remote_timeout = remote_flash_timeout;
4824 ret = remote_send_printf ("vFlashErase:%s,%s",
4829 case PACKET_UNKNOWN:
4830 error (_("Remote target does not support flash erase"));
4832 error (_("Error erasing flash with vFlashErase packet"));
4837 do_cleanups (back_to);
4841 remote_flash_write (struct target_ops *ops,
4842 ULONGEST address, LONGEST length,
4843 const gdb_byte *data)
4845 int saved_remote_timeout = remote_timeout;
4847 struct cleanup *back_to = make_cleanup (restore_remote_timeout,
4848 &saved_remote_timeout);
4850 remote_timeout = remote_flash_timeout;
4851 ret = remote_write_bytes_aux ("vFlashWrite:", address, data, length, 'X', 0);
4852 do_cleanups (back_to);
4858 remote_flash_done (struct target_ops *ops)
4860 int saved_remote_timeout = remote_timeout;
4862 struct cleanup *back_to = make_cleanup (restore_remote_timeout,
4863 &saved_remote_timeout);
4865 remote_timeout = remote_flash_timeout;
4866 ret = remote_send_printf ("vFlashDone");
4867 do_cleanups (back_to);
4871 case PACKET_UNKNOWN:
4872 error (_("Remote target does not support vFlashDone"));
4874 error (_("Error finishing flash operation"));
4881 remote_files_info (struct target_ops *ignore)
4883 puts_filtered ("Debugging a target over a serial line.\n");
4886 /* Stuff for dealing with the packets which are part of this protocol.
4887 See comment at top of file for details. */
4889 /* Read a single character from the remote end. */
4892 readchar (int timeout)
4896 ch = serial_readchar (remote_desc, timeout);
4901 switch ((enum serial_rc) ch)
4904 target_mourn_inferior ();
4905 error (_("Remote connection closed"));
4908 perror_with_name (_("Remote communication error"));
4910 case SERIAL_TIMEOUT:
4916 /* Send the command in *BUF to the remote machine, and read the reply
4917 into *BUF. Report an error if we get an error reply. Resize
4918 *BUF using xrealloc if necessary to hold the result, and update
4922 remote_send (char **buf,
4926 getpkt (buf, sizeof_buf, 0);
4928 if ((*buf)[0] == 'E')
4929 error (_("Remote failure reply: %s"), *buf);
4932 /* Display a null-terminated packet on stdout, for debugging, using C
4936 print_packet (char *buf)
4938 puts_filtered ("\"");
4939 fputstr_filtered (buf, '"', gdb_stdout);
4940 puts_filtered ("\"");
4946 return putpkt_binary (buf, strlen (buf));
4949 /* Send a packet to the remote machine, with error checking. The data
4950 of the packet is in BUF. The string in BUF can be at most
4951 get_remote_packet_size () - 5 to account for the $, # and checksum,
4952 and for a possible /0 if we are debugging (remote_debug) and want
4953 to print the sent packet as a string. */
4956 putpkt_binary (char *buf, int cnt)
4958 struct remote_state *rs = get_remote_state ();
4960 unsigned char csum = 0;
4961 char *buf2 = alloca (cnt + 6);
4967 /* We're sending out a new packet. Make sure we don't look at a
4968 stale cached response. */
4969 rs->cached_wait_status = 0;
4971 /* Copy the packet into buffer BUF2, encapsulating it
4972 and giving it a checksum. */
4977 for (i = 0; i < cnt; i++)
4983 *p++ = tohex ((csum >> 4) & 0xf);
4984 *p++ = tohex (csum & 0xf);
4986 /* Send it over and over until we get a positive ack. */
4990 int started_error_output = 0;
4995 fprintf_unfiltered (gdb_stdlog, "Sending packet: ");
4996 fputstrn_unfiltered (buf2, p - buf2, 0, gdb_stdlog);
4997 fprintf_unfiltered (gdb_stdlog, "...");
4998 gdb_flush (gdb_stdlog);
5000 if (serial_write (remote_desc, buf2, p - buf2))
5001 perror_with_name (_("putpkt: write failed"));
5003 /* If this is a no acks version of the remote protocol, send the
5004 packet and move on. */
5008 /* Read until either a timeout occurs (-2) or '+' is read. */
5011 ch = readchar (remote_timeout);
5019 case SERIAL_TIMEOUT:
5021 if (started_error_output)
5023 putchar_unfiltered ('\n');
5024 started_error_output = 0;
5033 fprintf_unfiltered (gdb_stdlog, "Ack\n");
5037 fprintf_unfiltered (gdb_stdlog, "Nak\n");
5038 case SERIAL_TIMEOUT:
5042 break; /* Retransmit buffer. */
5046 fprintf_unfiltered (gdb_stdlog,
5047 "Packet instead of Ack, ignoring it\n");
5048 /* It's probably an old response sent because an ACK
5049 was lost. Gobble up the packet and ack it so it
5050 doesn't get retransmitted when we resend this
5053 serial_write (remote_desc, "+", 1);
5054 continue; /* Now, go look for +. */
5059 if (!started_error_output)
5061 started_error_output = 1;
5062 fprintf_unfiltered (gdb_stdlog, "putpkt: Junk: ");
5064 fputc_unfiltered (ch & 0177, gdb_stdlog);
5068 break; /* Here to retransmit. */
5072 /* This is wrong. If doing a long backtrace, the user should be
5073 able to get out next time we call QUIT, without anything as
5074 violent as interrupt_query. If we want to provide a way out of
5075 here without getting to the next QUIT, it should be based on
5076 hitting ^C twice as in remote_wait. */
5087 /* Come here after finding the start of a frame when we expected an
5088 ack. Do our best to discard the rest of this packet. */
5097 c = readchar (remote_timeout);
5100 case SERIAL_TIMEOUT:
5101 /* Nothing we can do. */
5104 /* Discard the two bytes of checksum and stop. */
5105 c = readchar (remote_timeout);
5107 c = readchar (remote_timeout);
5110 case '*': /* Run length encoding. */
5111 /* Discard the repeat count. */
5112 c = readchar (remote_timeout);
5117 /* A regular character. */
5123 /* Come here after finding the start of the frame. Collect the rest
5124 into *BUF, verifying the checksum, length, and handling run-length
5125 compression. NUL terminate the buffer. If there is not enough room,
5126 expand *BUF using xrealloc.
5128 Returns -1 on error, number of characters in buffer (ignoring the
5129 trailing NULL) on success. (could be extended to return one of the
5130 SERIAL status indications). */
5133 read_frame (char **buf_p,
5140 struct remote_state *rs = get_remote_state ();
5147 c = readchar (remote_timeout);
5150 case SERIAL_TIMEOUT:
5152 fputs_filtered ("Timeout in mid-packet, retrying\n", gdb_stdlog);
5156 fputs_filtered ("Saw new packet start in middle of old one\n",
5158 return -1; /* Start a new packet, count retries. */
5161 unsigned char pktcsum;
5167 check_0 = readchar (remote_timeout);
5169 check_1 = readchar (remote_timeout);
5171 if (check_0 == SERIAL_TIMEOUT || check_1 == SERIAL_TIMEOUT)
5174 fputs_filtered ("Timeout in checksum, retrying\n",
5178 else if (check_0 < 0 || check_1 < 0)
5181 fputs_filtered ("Communication error in checksum\n",
5186 /* Don't recompute the checksum; with no ack packets we
5187 don't have any way to indicate a packet retransmission
5192 pktcsum = (fromhex (check_0) << 4) | fromhex (check_1);
5193 if (csum == pktcsum)
5198 fprintf_filtered (gdb_stdlog,
5199 "Bad checksum, sentsum=0x%x, csum=0x%x, buf=",
5201 fputstrn_filtered (buf, bc, 0, gdb_stdlog);
5202 fputs_filtered ("\n", gdb_stdlog);
5204 /* Number of characters in buffer ignoring trailing
5208 case '*': /* Run length encoding. */
5213 c = readchar (remote_timeout);
5215 repeat = c - ' ' + 3; /* Compute repeat count. */
5217 /* The character before ``*'' is repeated. */
5219 if (repeat > 0 && repeat <= 255 && bc > 0)
5221 if (bc + repeat - 1 >= *sizeof_buf - 1)
5223 /* Make some more room in the buffer. */
5224 *sizeof_buf += repeat;
5225 *buf_p = xrealloc (*buf_p, *sizeof_buf);
5229 memset (&buf[bc], buf[bc - 1], repeat);
5235 printf_filtered (_("Invalid run length encoding: %s\n"), buf);
5239 if (bc >= *sizeof_buf - 1)
5241 /* Make some more room in the buffer. */
5243 *buf_p = xrealloc (*buf_p, *sizeof_buf);
5254 /* Read a packet from the remote machine, with error checking, and
5255 store it in *BUF. Resize *BUF using xrealloc if necessary to hold
5256 the result, and update *SIZEOF_BUF. If FOREVER, wait forever
5257 rather than timing out; this is used (in synchronous mode) to wait
5258 for a target that is is executing user code to stop. */
5259 /* FIXME: ezannoni 2000-02-01 this wrapper is necessary so that we
5260 don't have to change all the calls to getpkt to deal with the
5261 return value, because at the moment I don't know what the right
5262 thing to do it for those. */
5270 timed_out = getpkt_sane (buf, sizeof_buf, forever);
5274 /* Read a packet from the remote machine, with error checking, and
5275 store it in *BUF. Resize *BUF using xrealloc if necessary to hold
5276 the result, and update *SIZEOF_BUF. If FOREVER, wait forever
5277 rather than timing out; this is used (in synchronous mode) to wait
5278 for a target that is is executing user code to stop. If FOREVER ==
5279 0, this function is allowed to time out gracefully and return an
5280 indication of this to the caller. Otherwise return the number
5283 getpkt_sane (char **buf, long *sizeof_buf, int forever)
5285 struct remote_state *rs = get_remote_state ();
5291 /* We're reading a new response. Make sure we don't look at a
5292 previously cached response. */
5293 rs->cached_wait_status = 0;
5295 strcpy (*buf, "timeout");
5299 timeout = watchdog > 0 ? watchdog : -1;
5303 timeout = remote_timeout;
5307 for (tries = 1; tries <= MAX_TRIES; tries++)
5309 /* This can loop forever if the remote side sends us characters
5310 continuously, but if it pauses, we'll get a zero from
5311 readchar because of timeout. Then we'll count that as a
5314 /* Note that we will only wait forever prior to the start of a
5315 packet. After that, we expect characters to arrive at a
5316 brisk pace. They should show up within remote_timeout
5321 c = readchar (timeout);
5323 if (c == SERIAL_TIMEOUT)
5325 if (forever) /* Watchdog went off? Kill the target. */
5328 target_mourn_inferior ();
5329 error (_("Watchdog timeout has expired. Target detached."));
5332 fputs_filtered ("Timed out.\n", gdb_stdlog);
5338 /* We've found the start of a packet, now collect the data. */
5340 val = read_frame (buf, sizeof_buf);
5346 fprintf_unfiltered (gdb_stdlog, "Packet received: ");
5347 fputstrn_unfiltered (*buf, val, 0, gdb_stdlog);
5348 fprintf_unfiltered (gdb_stdlog, "\n");
5351 /* Skip the ack char if we're in no-ack mode. */
5352 if (!rs->noack_mode)
5353 serial_write (remote_desc, "+", 1);
5357 /* Try the whole thing again. */
5359 /* Skip the nack char if we're in no-ack mode. */
5360 if (!rs->noack_mode)
5361 serial_write (remote_desc, "-", 1);
5364 /* We have tried hard enough, and just can't receive the packet.
5367 printf_unfiltered (_("Ignoring packet error, continuing...\n"));
5369 /* Skip the ack char if we're in no-ack mode. */
5370 if (!rs->noack_mode)
5371 serial_write (remote_desc, "+", 1);
5378 /* Unregister the file descriptor from the event loop. */
5379 if (target_is_async_p ())
5380 serial_async (remote_desc, NULL, 0);
5382 /* Use catch_errors so the user can quit from gdb even when we
5383 aren't on speaking terms with the remote system. */
5384 catch_errors ((catch_errors_ftype *) putpkt, "k", "", RETURN_MASK_ERROR);
5386 /* Don't wait for it to die. I'm not really sure it matters whether
5387 we do or not. For the existing stubs, kill is a noop. */
5388 target_mourn_inferior ();
5392 remote_vkill (int pid, struct remote_state *rs)
5394 if (remote_protocol_packets[PACKET_vKill].support == PACKET_DISABLE)
5397 /* Tell the remote target to detach. */
5398 sprintf (rs->buf, "vKill;%x", pid);
5400 getpkt (&rs->buf, &rs->buf_size, 0);
5402 if (packet_ok (rs->buf,
5403 &remote_protocol_packets[PACKET_vKill]) == PACKET_OK)
5405 else if (remote_protocol_packets[PACKET_vKill].support == PACKET_DISABLE)
5412 extended_remote_kill (void)
5415 int pid = ptid_get_pid (inferior_ptid);
5416 struct remote_state *rs = get_remote_state ();
5418 res = remote_vkill (pid, rs);
5419 if (res == -1 && !remote_multi_process_p (rs))
5421 /* Don't try 'k' on a multi-process aware stub -- it has no way
5422 to specify the pid. */
5426 getpkt (&rs->buf, &rs->buf_size, 0);
5427 if (rs->buf[0] != 'O' || rs->buf[0] != 'K')
5430 /* Don't wait for it to die. I'm not really sure it matters whether
5431 we do or not. For the existing stubs, kill is a noop. */
5437 error (_("Can't kill process"));
5439 delete_inferior (pid);
5440 target_mourn_inferior ();
5446 remote_mourn_1 (&remote_ops);
5449 /* Worker function for remote_mourn. */
5451 remote_mourn_1 (struct target_ops *target)
5453 /* Get rid of all the inferiors and their threads we were
5455 discard_all_inferiors ();
5457 unpush_target (target);
5458 generic_mourn_inferior ();
5462 select_new_thread_callback (struct thread_info *th, void* data)
5464 if (!ptid_equal (th->ptid, minus_one_ptid))
5466 switch_to_thread (th->ptid);
5467 printf_filtered (_("[Switching to %s]\n"),
5468 target_pid_to_str (inferior_ptid));
5475 extended_remote_mourn_1 (struct target_ops *target)
5477 struct remote_state *rs = get_remote_state ();
5479 /* Unlike "target remote", we do not want to unpush the target; then
5480 the next time the user says "run", we won't be connected. */
5482 if (have_inferiors ())
5484 extern void nullify_last_target_wait_ptid ();
5485 /* Multi-process case. The current process has exited, but
5486 there are other processes to debug. Switch to the first
5488 iterate_over_threads (select_new_thread_callback, NULL);
5489 nullify_last_target_wait_ptid ();
5493 struct remote_state *rs = get_remote_state ();
5495 /* Call common code to mark the inferior as not running. */
5496 generic_mourn_inferior ();
5497 if (!remote_multi_process_p (rs))
5499 /* Check whether the target is running now - some remote stubs
5500 automatically restart after kill. */
5502 getpkt (&rs->buf, &rs->buf_size, 0);
5504 if (rs->buf[0] == 'S' || rs->buf[0] == 'T')
5506 /* Assume that the target has been restarted. Set inferior_ptid
5507 so that bits of core GDB realizes there's something here, e.g.,
5508 so that the user can say "kill" again. */
5509 inferior_ptid = magic_null_ptid;
5513 /* Mark this (still pushed) target as not executable until we
5515 target_mark_exited (target);
5519 /* Always remove execution if this was the last process. */
5520 target_mark_exited (target);
5525 extended_remote_mourn (void)
5527 extended_remote_mourn_1 (&extended_remote_ops);
5531 extended_remote_run (char *args)
5533 struct remote_state *rs = get_remote_state ();
5537 /* If the user has disabled vRun support, or we have detected that
5538 support is not available, do not try it. */
5539 if (remote_protocol_packets[PACKET_vRun].support == PACKET_DISABLE)
5542 strcpy (rs->buf, "vRun;");
5543 len = strlen (rs->buf);
5545 if (strlen (remote_exec_file) * 2 + len >= get_remote_packet_size ())
5546 error (_("Remote file name too long for run packet"));
5547 len += 2 * bin2hex ((gdb_byte *) remote_exec_file, rs->buf + len, 0);
5549 gdb_assert (args != NULL);
5552 struct cleanup *back_to;
5556 argv = gdb_buildargv (args);
5557 back_to = make_cleanup ((void (*) (void *)) freeargv, argv);
5558 for (i = 0; argv[i] != NULL; i++)
5560 if (strlen (argv[i]) * 2 + 1 + len >= get_remote_packet_size ())
5561 error (_("Argument list too long for run packet"));
5562 rs->buf[len++] = ';';
5563 len += 2 * bin2hex ((gdb_byte *) argv[i], rs->buf + len, 0);
5565 do_cleanups (back_to);
5568 rs->buf[len++] = '\0';
5571 getpkt (&rs->buf, &rs->buf_size, 0);
5573 if (packet_ok (rs->buf, &remote_protocol_packets[PACKET_vRun]) == PACKET_OK)
5575 /* We have a wait response; we don't need it, though. All is well. */
5578 else if (remote_protocol_packets[PACKET_vRun].support == PACKET_DISABLE)
5579 /* It wasn't disabled before, but it is now. */
5583 if (remote_exec_file[0] == '\0')
5584 error (_("Running the default executable on the remote target failed; "
5585 "try \"set remote exec-file\"?"));
5587 error (_("Running \"%s\" on the remote target failed"),
5592 /* In the extended protocol we want to be able to do things like
5593 "run" and have them basically work as expected. So we need
5594 a special create_inferior function. We support changing the
5595 executable file and the command line arguments, but not the
5599 extended_remote_create_inferior_1 (char *exec_file, char *args,
5600 char **env, int from_tty)
5602 /* If running asynchronously, register the target file descriptor
5603 with the event loop. */
5604 if (target_can_async_p ())
5605 target_async (inferior_event_handler, 0);
5607 /* Now restart the remote server. */
5608 if (extended_remote_run (args) == -1)
5610 /* vRun was not supported. Fail if we need it to do what the
5612 if (remote_exec_file[0])
5613 error (_("Remote target does not support \"set remote exec-file\""));
5615 error (_("Remote target does not support \"set args\" or run <ARGS>"));
5617 /* Fall back to "R". */
5618 extended_remote_restart ();
5621 /* Clean up from the last time we ran, before we mark the target
5622 running again. This will mark breakpoints uninserted, and
5623 get_offsets may insert breakpoints. */
5624 init_thread_list ();
5625 init_wait_for_inferior ();
5627 /* Now mark the inferior as running before we do anything else. */
5628 inferior_ptid = magic_null_ptid;
5630 add_inferior (ptid_get_pid (inferior_ptid));
5631 add_thread_silent (inferior_ptid);
5633 target_mark_running (&extended_remote_ops);
5635 /* Get updated offsets, if the stub uses qOffsets. */
5640 extended_remote_create_inferior (char *exec_file, char *args,
5641 char **env, int from_tty)
5643 extended_remote_create_inferior_1 (exec_file, args, env, from_tty);
5647 /* Insert a breakpoint. On targets that have software breakpoint
5648 support, we ask the remote target to do the work; on targets
5649 which don't, we insert a traditional memory breakpoint. */
5652 remote_insert_breakpoint (struct bp_target_info *bp_tgt)
5654 /* Try the "Z" s/w breakpoint packet if it is not already disabled.
5655 If it succeeds, then set the support to PACKET_ENABLE. If it
5656 fails, and the user has explicitly requested the Z support then
5657 report an error, otherwise, mark it disabled and go on. */
5659 if (remote_protocol_packets[PACKET_Z0].support != PACKET_DISABLE)
5661 CORE_ADDR addr = bp_tgt->placed_address;
5662 struct remote_state *rs;
5666 gdbarch_breakpoint_from_pc (target_gdbarch, &addr, &bpsize);
5668 rs = get_remote_state ();
5674 addr = (ULONGEST) remote_address_masked (addr);
5675 p += hexnumstr (p, addr);
5676 sprintf (p, ",%d", bpsize);
5679 getpkt (&rs->buf, &rs->buf_size, 0);
5681 switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_Z0]))
5686 bp_tgt->placed_address = addr;
5687 bp_tgt->placed_size = bpsize;
5689 case PACKET_UNKNOWN:
5694 return memory_insert_breakpoint (bp_tgt);
5698 remote_remove_breakpoint (struct bp_target_info *bp_tgt)
5700 CORE_ADDR addr = bp_tgt->placed_address;
5701 struct remote_state *rs = get_remote_state ();
5704 if (remote_protocol_packets[PACKET_Z0].support != PACKET_DISABLE)
5712 addr = (ULONGEST) remote_address_masked (bp_tgt->placed_address);
5713 p += hexnumstr (p, addr);
5714 sprintf (p, ",%d", bp_tgt->placed_size);
5717 getpkt (&rs->buf, &rs->buf_size, 0);
5719 return (rs->buf[0] == 'E');
5722 return memory_remove_breakpoint (bp_tgt);
5726 watchpoint_to_Z_packet (int type)
5731 return Z_PACKET_WRITE_WP;
5734 return Z_PACKET_READ_WP;
5737 return Z_PACKET_ACCESS_WP;
5740 internal_error (__FILE__, __LINE__,
5741 _("hw_bp_to_z: bad watchpoint type %d"), type);
5746 remote_insert_watchpoint (CORE_ADDR addr, int len, int type)
5748 struct remote_state *rs = get_remote_state ();
5750 enum Z_packet_type packet = watchpoint_to_Z_packet (type);
5752 if (remote_protocol_packets[PACKET_Z0 + packet].support == PACKET_DISABLE)
5755 sprintf (rs->buf, "Z%x,", packet);
5756 p = strchr (rs->buf, '\0');
5757 addr = remote_address_masked (addr);
5758 p += hexnumstr (p, (ULONGEST) addr);
5759 sprintf (p, ",%x", len);
5762 getpkt (&rs->buf, &rs->buf_size, 0);
5764 switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_Z0 + packet]))
5767 case PACKET_UNKNOWN:
5772 internal_error (__FILE__, __LINE__,
5773 _("remote_insert_watchpoint: reached end of function"));
5778 remote_remove_watchpoint (CORE_ADDR addr, int len, int type)
5780 struct remote_state *rs = get_remote_state ();
5782 enum Z_packet_type packet = watchpoint_to_Z_packet (type);
5784 if (remote_protocol_packets[PACKET_Z0 + packet].support == PACKET_DISABLE)
5787 sprintf (rs->buf, "z%x,", packet);
5788 p = strchr (rs->buf, '\0');
5789 addr = remote_address_masked (addr);
5790 p += hexnumstr (p, (ULONGEST) addr);
5791 sprintf (p, ",%x", len);
5793 getpkt (&rs->buf, &rs->buf_size, 0);
5795 switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_Z0 + packet]))
5798 case PACKET_UNKNOWN:
5803 internal_error (__FILE__, __LINE__,
5804 _("remote_remove_watchpoint: reached end of function"));
5808 int remote_hw_watchpoint_limit = -1;
5809 int remote_hw_breakpoint_limit = -1;
5812 remote_check_watch_resources (int type, int cnt, int ot)
5814 if (type == bp_hardware_breakpoint)
5816 if (remote_hw_breakpoint_limit == 0)
5818 else if (remote_hw_breakpoint_limit < 0)
5820 else if (cnt <= remote_hw_breakpoint_limit)
5825 if (remote_hw_watchpoint_limit == 0)
5827 else if (remote_hw_watchpoint_limit < 0)
5831 else if (cnt <= remote_hw_watchpoint_limit)
5838 remote_stopped_by_watchpoint (void)
5840 return remote_stopped_by_watchpoint_p;
5844 remote_stopped_data_address (struct target_ops *target, CORE_ADDR *addr_p)
5847 if (remote_stopped_by_watchpoint ())
5849 *addr_p = remote_watch_data_address;
5858 remote_insert_hw_breakpoint (struct bp_target_info *bp_tgt)
5861 struct remote_state *rs;
5864 /* The length field should be set to the size of a breakpoint
5865 instruction, even though we aren't inserting one ourselves. */
5867 gdbarch_breakpoint_from_pc
5868 (target_gdbarch, &bp_tgt->placed_address, &bp_tgt->placed_size);
5870 if (remote_protocol_packets[PACKET_Z1].support == PACKET_DISABLE)
5873 rs = get_remote_state ();
5880 addr = remote_address_masked (bp_tgt->placed_address);
5881 p += hexnumstr (p, (ULONGEST) addr);
5882 sprintf (p, ",%x", bp_tgt->placed_size);
5885 getpkt (&rs->buf, &rs->buf_size, 0);
5887 switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_Z1]))
5890 case PACKET_UNKNOWN:
5895 internal_error (__FILE__, __LINE__,
5896 _("remote_insert_hw_breakpoint: reached end of function"));
5901 remote_remove_hw_breakpoint (struct bp_target_info *bp_tgt)
5904 struct remote_state *rs = get_remote_state ();
5907 if (remote_protocol_packets[PACKET_Z1].support == PACKET_DISABLE)
5914 addr = remote_address_masked (bp_tgt->placed_address);
5915 p += hexnumstr (p, (ULONGEST) addr);
5916 sprintf (p, ",%x", bp_tgt->placed_size);
5919 getpkt (&rs->buf, &rs->buf_size, 0);
5921 switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_Z1]))
5924 case PACKET_UNKNOWN:
5929 internal_error (__FILE__, __LINE__,
5930 _("remote_remove_hw_breakpoint: reached end of function"));
5933 /* Some targets are only capable of doing downloads, and afterwards
5934 they switch to the remote serial protocol. This function provides
5935 a clean way to get from the download target to the remote target.
5936 It's basically just a wrapper so that we don't have to expose any
5937 of the internal workings of remote.c.
5939 Prior to calling this routine, you should shutdown the current
5940 target code, else you will get the "A program is being debugged
5941 already..." message. Usually a call to pop_target() suffices. */
5944 push_remote_target (char *name, int from_tty)
5946 printf_filtered (_("Switching to remote protocol\n"));
5947 remote_open (name, from_tty);
5950 /* Table used by the crc32 function to calcuate the checksum. */
5952 static unsigned long crc32_table[256] =
5955 static unsigned long
5956 crc32 (unsigned char *buf, int len, unsigned int crc)
5958 if (!crc32_table[1])
5960 /* Initialize the CRC table and the decoding table. */
5964 for (i = 0; i < 256; i++)
5966 for (c = i << 24, j = 8; j > 0; --j)
5967 c = c & 0x80000000 ? (c << 1) ^ 0x04c11db7 : (c << 1);
5974 crc = (crc << 8) ^ crc32_table[((crc >> 24) ^ *buf) & 255];
5980 /* compare-sections command
5982 With no arguments, compares each loadable section in the exec bfd
5983 with the same memory range on the target, and reports mismatches.
5984 Useful for verifying the image on the target against the exec file.
5985 Depends on the target understanding the new "qCRC:" request. */
5987 /* FIXME: cagney/1999-10-26: This command should be broken down into a
5988 target method (target verify memory) and generic version of the
5989 actual command. This will allow other high-level code (especially
5990 generic_load()) to make use of this target functionality. */
5993 compare_sections_command (char *args, int from_tty)
5995 struct remote_state *rs = get_remote_state ();
5997 unsigned long host_crc, target_crc;
5998 extern bfd *exec_bfd;
5999 struct cleanup *old_chain;
6002 const char *sectname;
6009 error (_("command cannot be used without an exec file"));
6010 if (!current_target.to_shortname ||
6011 strcmp (current_target.to_shortname, "remote") != 0)
6012 error (_("command can only be used with remote target"));
6014 for (s = exec_bfd->sections; s; s = s->next)
6016 if (!(s->flags & SEC_LOAD))
6017 continue; /* skip non-loadable section */
6019 size = bfd_get_section_size (s);
6021 continue; /* skip zero-length section */
6023 sectname = bfd_get_section_name (exec_bfd, s);
6024 if (args && strcmp (args, sectname) != 0)
6025 continue; /* not the section selected by user */
6027 matched = 1; /* do this section */
6029 /* FIXME: assumes lma can fit into long. */
6030 xsnprintf (rs->buf, get_remote_packet_size (), "qCRC:%lx,%lx",
6031 (long) lma, (long) size);
6034 /* Be clever; compute the host_crc before waiting for target
6036 sectdata = xmalloc (size);
6037 old_chain = make_cleanup (xfree, sectdata);
6038 bfd_get_section_contents (exec_bfd, s, sectdata, 0, size);
6039 host_crc = crc32 ((unsigned char *) sectdata, size, 0xffffffff);
6041 getpkt (&rs->buf, &rs->buf_size, 0);
6042 if (rs->buf[0] == 'E')
6043 error (_("target memory fault, section %s, range 0x%s -- 0x%s"),
6044 sectname, paddr (lma), paddr (lma + size));
6045 if (rs->buf[0] != 'C')
6046 error (_("remote target does not support this operation"));
6048 for (target_crc = 0, tmp = &rs->buf[1]; *tmp; tmp++)
6049 target_crc = target_crc * 16 + fromhex (*tmp);
6051 printf_filtered ("Section %s, range 0x%s -- 0x%s: ",
6052 sectname, paddr (lma), paddr (lma + size));
6053 if (host_crc == target_crc)
6054 printf_filtered ("matched.\n");
6057 printf_filtered ("MIS-MATCHED!\n");
6061 do_cleanups (old_chain);
6064 warning (_("One or more sections of the remote executable does not match\n\
6065 the loaded file\n"));
6066 if (args && !matched)
6067 printf_filtered (_("No loaded section named '%s'.\n"), args);
6070 /* Write LEN bytes from WRITEBUF into OBJECT_NAME/ANNEX at OFFSET
6071 into remote target. The number of bytes written to the remote
6072 target is returned, or -1 for error. */
6075 remote_write_qxfer (struct target_ops *ops, const char *object_name,
6076 const char *annex, const gdb_byte *writebuf,
6077 ULONGEST offset, LONGEST len,
6078 struct packet_config *packet)
6083 struct remote_state *rs = get_remote_state ();
6084 int max_size = get_memory_write_packet_size ();
6086 if (packet->support == PACKET_DISABLE)
6089 /* Insert header. */
6090 i = snprintf (rs->buf, max_size,
6091 "qXfer:%s:write:%s:%s:",
6092 object_name, annex ? annex : "",
6093 phex_nz (offset, sizeof offset));
6094 max_size -= (i + 1);
6096 /* Escape as much data as fits into rs->buf. */
6097 buf_len = remote_escape_output
6098 (writebuf, len, (rs->buf + i), &max_size, max_size);
6100 if (putpkt_binary (rs->buf, i + buf_len) < 0
6101 || getpkt_sane (&rs->buf, &rs->buf_size, 0) < 0
6102 || packet_ok (rs->buf, packet) != PACKET_OK)
6105 unpack_varlen_hex (rs->buf, &n);
6109 /* Read OBJECT_NAME/ANNEX from the remote target using a qXfer packet.
6110 Data at OFFSET, of up to LEN bytes, is read into READBUF; the
6111 number of bytes read is returned, or 0 for EOF, or -1 for error.
6112 The number of bytes read may be less than LEN without indicating an
6113 EOF. PACKET is checked and updated to indicate whether the remote
6114 target supports this object. */
6117 remote_read_qxfer (struct target_ops *ops, const char *object_name,
6119 gdb_byte *readbuf, ULONGEST offset, LONGEST len,
6120 struct packet_config *packet)
6122 static char *finished_object;
6123 static char *finished_annex;
6124 static ULONGEST finished_offset;
6126 struct remote_state *rs = get_remote_state ();
6127 unsigned int total = 0;
6128 LONGEST i, n, packet_len;
6130 if (packet->support == PACKET_DISABLE)
6133 /* Check whether we've cached an end-of-object packet that matches
6135 if (finished_object)
6137 if (strcmp (object_name, finished_object) == 0
6138 && strcmp (annex ? annex : "", finished_annex) == 0
6139 && offset == finished_offset)
6142 /* Otherwise, we're now reading something different. Discard
6144 xfree (finished_object);
6145 xfree (finished_annex);
6146 finished_object = NULL;
6147 finished_annex = NULL;
6150 /* Request only enough to fit in a single packet. The actual data
6151 may not, since we don't know how much of it will need to be escaped;
6152 the target is free to respond with slightly less data. We subtract
6153 five to account for the response type and the protocol frame. */
6154 n = min (get_remote_packet_size () - 5, len);
6155 snprintf (rs->buf, get_remote_packet_size () - 4, "qXfer:%s:read:%s:%s,%s",
6156 object_name, annex ? annex : "",
6157 phex_nz (offset, sizeof offset),
6158 phex_nz (n, sizeof n));
6159 i = putpkt (rs->buf);
6164 packet_len = getpkt_sane (&rs->buf, &rs->buf_size, 0);
6165 if (packet_len < 0 || packet_ok (rs->buf, packet) != PACKET_OK)
6168 if (rs->buf[0] != 'l' && rs->buf[0] != 'm')
6169 error (_("Unknown remote qXfer reply: %s"), rs->buf);
6171 /* 'm' means there is (or at least might be) more data after this
6172 batch. That does not make sense unless there's at least one byte
6173 of data in this reply. */
6174 if (rs->buf[0] == 'm' && packet_len == 1)
6175 error (_("Remote qXfer reply contained no data."));
6177 /* Got some data. */
6178 i = remote_unescape_input (rs->buf + 1, packet_len - 1, readbuf, n);
6180 /* 'l' is an EOF marker, possibly including a final block of data,
6181 or possibly empty. If we have the final block of a non-empty
6182 object, record this fact to bypass a subsequent partial read. */
6183 if (rs->buf[0] == 'l' && offset + i > 0)
6185 finished_object = xstrdup (object_name);
6186 finished_annex = xstrdup (annex ? annex : "");
6187 finished_offset = offset + i;
6194 remote_xfer_partial (struct target_ops *ops, enum target_object object,
6195 const char *annex, gdb_byte *readbuf,
6196 const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
6198 struct remote_state *rs;
6203 set_general_thread (inferior_ptid);
6205 rs = get_remote_state ();
6207 /* Handle memory using the standard memory routines. */
6208 if (object == TARGET_OBJECT_MEMORY)
6213 /* If the remote target is connected but not running, we should
6214 pass this request down to a lower stratum (e.g. the executable
6216 if (!target_has_execution)
6219 if (writebuf != NULL)
6220 xfered = remote_write_bytes (offset, writebuf, len);
6222 xfered = remote_read_bytes (offset, readbuf, len);
6226 else if (xfered == 0 && errno == 0)
6232 /* Handle SPU memory using qxfer packets. */
6233 if (object == TARGET_OBJECT_SPU)
6236 return remote_read_qxfer (ops, "spu", annex, readbuf, offset, len,
6237 &remote_protocol_packets
6238 [PACKET_qXfer_spu_read]);
6240 return remote_write_qxfer (ops, "spu", annex, writebuf, offset, len,
6241 &remote_protocol_packets
6242 [PACKET_qXfer_spu_write]);
6245 /* Only handle flash writes. */
6246 if (writebuf != NULL)
6252 case TARGET_OBJECT_FLASH:
6253 xfered = remote_flash_write (ops, offset, len, writebuf);
6257 else if (xfered == 0 && errno == 0)
6267 /* Map pre-existing objects onto letters. DO NOT do this for new
6268 objects!!! Instead specify new query packets. */
6271 case TARGET_OBJECT_AVR:
6275 case TARGET_OBJECT_AUXV:
6276 gdb_assert (annex == NULL);
6277 return remote_read_qxfer (ops, "auxv", annex, readbuf, offset, len,
6278 &remote_protocol_packets[PACKET_qXfer_auxv]);
6280 case TARGET_OBJECT_AVAILABLE_FEATURES:
6281 return remote_read_qxfer
6282 (ops, "features", annex, readbuf, offset, len,
6283 &remote_protocol_packets[PACKET_qXfer_features]);
6285 case TARGET_OBJECT_LIBRARIES:
6286 return remote_read_qxfer
6287 (ops, "libraries", annex, readbuf, offset, len,
6288 &remote_protocol_packets[PACKET_qXfer_libraries]);
6290 case TARGET_OBJECT_MEMORY_MAP:
6291 gdb_assert (annex == NULL);
6292 return remote_read_qxfer (ops, "memory-map", annex, readbuf, offset, len,
6293 &remote_protocol_packets[PACKET_qXfer_memory_map]);
6299 /* Note: a zero OFFSET and LEN can be used to query the minimum
6301 if (offset == 0 && len == 0)
6302 return (get_remote_packet_size ());
6303 /* Minimum outbuf size is get_remote_packet_size (). If LEN is not
6304 large enough let the caller deal with it. */
6305 if (len < get_remote_packet_size ())
6307 len = get_remote_packet_size ();
6309 /* Except for querying the minimum buffer size, target must be open. */
6311 error (_("remote query is only available after target open"));
6313 gdb_assert (annex != NULL);
6314 gdb_assert (readbuf != NULL);
6320 /* We used one buffer char for the remote protocol q command and
6321 another for the query type. As the remote protocol encapsulation
6322 uses 4 chars plus one extra in case we are debugging
6323 (remote_debug), we have PBUFZIZ - 7 left to pack the query
6326 while (annex[i] && (i < (get_remote_packet_size () - 8)))
6328 /* Bad caller may have sent forbidden characters. */
6329 gdb_assert (isprint (annex[i]) && annex[i] != '$' && annex[i] != '#');
6334 gdb_assert (annex[i] == '\0');
6336 i = putpkt (rs->buf);
6340 getpkt (&rs->buf, &rs->buf_size, 0);
6341 strcpy ((char *) readbuf, rs->buf);
6343 return strlen ((char *) readbuf);
6347 remote_search_memory (struct target_ops* ops,
6348 CORE_ADDR start_addr, ULONGEST search_space_len,
6349 const gdb_byte *pattern, ULONGEST pattern_len,
6350 CORE_ADDR *found_addrp)
6352 struct remote_state *rs = get_remote_state ();
6353 int max_size = get_memory_write_packet_size ();
6354 struct packet_config *packet =
6355 &remote_protocol_packets[PACKET_qSearch_memory];
6356 /* number of packet bytes used to encode the pattern,
6357 this could be more than PATTERN_LEN due to escape characters */
6358 int escaped_pattern_len;
6359 /* amount of pattern that was encodable in the packet */
6360 int used_pattern_len;
6363 ULONGEST found_addr;
6365 /* Don't go to the target if we don't have to.
6366 This is done before checking packet->support to avoid the possibility that
6367 a success for this edge case means the facility works in general. */
6368 if (pattern_len > search_space_len)
6370 if (pattern_len == 0)
6372 *found_addrp = start_addr;
6376 /* If we already know the packet isn't supported, fall back to the simple
6377 way of searching memory. */
6379 if (packet->support == PACKET_DISABLE)
6381 /* Target doesn't provided special support, fall back and use the
6382 standard support (copy memory and do the search here). */
6383 return simple_search_memory (ops, start_addr, search_space_len,
6384 pattern, pattern_len, found_addrp);
6387 /* Insert header. */
6388 i = snprintf (rs->buf, max_size,
6389 "qSearch:memory:%s;%s;",
6390 paddr_nz (start_addr),
6391 phex_nz (search_space_len, sizeof (search_space_len)));
6392 max_size -= (i + 1);
6394 /* Escape as much data as fits into rs->buf. */
6395 escaped_pattern_len =
6396 remote_escape_output (pattern, pattern_len, (rs->buf + i),
6397 &used_pattern_len, max_size);
6399 /* Bail if the pattern is too large. */
6400 if (used_pattern_len != pattern_len)
6401 error ("Pattern is too large to transmit to remote target.");
6403 if (putpkt_binary (rs->buf, i + escaped_pattern_len) < 0
6404 || getpkt_sane (&rs->buf, &rs->buf_size, 0) < 0
6405 || packet_ok (rs->buf, packet) != PACKET_OK)
6407 /* The request may not have worked because the command is not
6408 supported. If so, fall back to the simple way. */
6409 if (packet->support == PACKET_DISABLE)
6411 return simple_search_memory (ops, start_addr, search_space_len,
6412 pattern, pattern_len, found_addrp);
6417 if (rs->buf[0] == '0')
6419 else if (rs->buf[0] == '1')
6422 if (rs->buf[1] != ',')
6423 error (_("Unknown qSearch:memory reply: %s"), rs->buf);
6424 unpack_varlen_hex (rs->buf + 2, &found_addr);
6425 *found_addrp = found_addr;
6428 error (_("Unknown qSearch:memory reply: %s"), rs->buf);
6434 remote_rcmd (char *command,
6435 struct ui_file *outbuf)
6437 struct remote_state *rs = get_remote_state ();
6441 error (_("remote rcmd is only available after target open"));
6443 /* Send a NULL command across as an empty command. */
6444 if (command == NULL)
6447 /* The query prefix. */
6448 strcpy (rs->buf, "qRcmd,");
6449 p = strchr (rs->buf, '\0');
6451 if ((strlen (rs->buf) + strlen (command) * 2 + 8/*misc*/) > get_remote_packet_size ())
6452 error (_("\"monitor\" command ``%s'' is too long."), command);
6454 /* Encode the actual command. */
6455 bin2hex ((gdb_byte *) command, p, 0);
6457 if (putpkt (rs->buf) < 0)
6458 error (_("Communication problem with target."));
6460 /* get/display the response */
6465 /* XXX - see also tracepoint.c:remote_get_noisy_reply(). */
6467 getpkt (&rs->buf, &rs->buf_size, 0);
6470 error (_("Target does not support this command."));
6471 if (buf[0] == 'O' && buf[1] != 'K')
6473 remote_console_output (buf + 1); /* 'O' message from stub. */
6476 if (strcmp (buf, "OK") == 0)
6478 if (strlen (buf) == 3 && buf[0] == 'E'
6479 && isdigit (buf[1]) && isdigit (buf[2]))
6481 error (_("Protocol error with Rcmd"));
6483 for (p = buf; p[0] != '\0' && p[1] != '\0'; p += 2)
6485 char c = (fromhex (p[0]) << 4) + fromhex (p[1]);
6486 fputc_unfiltered (c, outbuf);
6492 static VEC(mem_region_s) *
6493 remote_memory_map (struct target_ops *ops)
6495 VEC(mem_region_s) *result = NULL;
6496 char *text = target_read_stralloc (¤t_target,
6497 TARGET_OBJECT_MEMORY_MAP, NULL);
6501 struct cleanup *back_to = make_cleanup (xfree, text);
6502 result = parse_memory_map (text);
6503 do_cleanups (back_to);
6510 packet_command (char *args, int from_tty)
6512 struct remote_state *rs = get_remote_state ();
6515 error (_("command can only be used with remote target"));
6518 error (_("remote-packet command requires packet text as argument"));
6520 puts_filtered ("sending: ");
6521 print_packet (args);
6522 puts_filtered ("\n");
6525 getpkt (&rs->buf, &rs->buf_size, 0);
6526 puts_filtered ("received: ");
6527 print_packet (rs->buf);
6528 puts_filtered ("\n");
6532 /* --------- UNIT_TEST for THREAD oriented PACKETS ------------------- */
6534 static void display_thread_info (struct gdb_ext_thread_info *info);
6536 static void threadset_test_cmd (char *cmd, int tty);
6538 static void threadalive_test (char *cmd, int tty);
6540 static void threadlist_test_cmd (char *cmd, int tty);
6542 int get_and_display_threadinfo (threadref *ref);
6544 static void threadinfo_test_cmd (char *cmd, int tty);
6546 static int thread_display_step (threadref *ref, void *context);
6548 static void threadlist_update_test_cmd (char *cmd, int tty);
6550 static void init_remote_threadtests (void);
6552 #define SAMPLE_THREAD 0x05060708 /* Truncated 64 bit threadid. */
6555 threadset_test_cmd (char *cmd, int tty)
6557 int sample_thread = SAMPLE_THREAD;
6559 printf_filtered (_("Remote threadset test\n"));
6560 set_general_thread (sample_thread);
6565 threadalive_test (char *cmd, int tty)
6567 int sample_thread = SAMPLE_THREAD;
6568 int pid = ptid_get_pid (inferior_ptid);
6569 ptid_t ptid = ptid_build (pid, 0, sample_thread);
6571 if (remote_thread_alive (ptid))
6572 printf_filtered ("PASS: Thread alive test\n");
6574 printf_filtered ("FAIL: Thread alive test\n");
6577 void output_threadid (char *title, threadref *ref);
6580 output_threadid (char *title, threadref *ref)
6584 pack_threadid (&hexid[0], ref); /* Convert threead id into hex. */
6586 printf_filtered ("%s %s\n", title, (&hexid[0]));
6590 threadlist_test_cmd (char *cmd, int tty)
6593 threadref nextthread;
6594 int done, result_count;
6595 threadref threadlist[3];
6597 printf_filtered ("Remote Threadlist test\n");
6598 if (!remote_get_threadlist (startflag, &nextthread, 3, &done,
6599 &result_count, &threadlist[0]))
6600 printf_filtered ("FAIL: threadlist test\n");
6603 threadref *scan = threadlist;
6604 threadref *limit = scan + result_count;
6606 while (scan < limit)
6607 output_threadid (" thread ", scan++);
6612 display_thread_info (struct gdb_ext_thread_info *info)
6614 output_threadid ("Threadid: ", &info->threadid);
6615 printf_filtered ("Name: %s\n ", info->shortname);
6616 printf_filtered ("State: %s\n", info->display);
6617 printf_filtered ("other: %s\n\n", info->more_display);
6621 get_and_display_threadinfo (threadref *ref)
6625 struct gdb_ext_thread_info threadinfo;
6627 set = TAG_THREADID | TAG_EXISTS | TAG_THREADNAME
6628 | TAG_MOREDISPLAY | TAG_DISPLAY;
6629 if (0 != (result = remote_get_threadinfo (ref, set, &threadinfo)))
6630 display_thread_info (&threadinfo);
6635 threadinfo_test_cmd (char *cmd, int tty)
6637 int athread = SAMPLE_THREAD;
6641 int_to_threadref (&thread, athread);
6642 printf_filtered ("Remote Threadinfo test\n");
6643 if (!get_and_display_threadinfo (&thread))
6644 printf_filtered ("FAIL cannot get thread info\n");
6648 thread_display_step (threadref *ref, void *context)
6650 /* output_threadid(" threadstep ",ref); *//* simple test */
6651 return get_and_display_threadinfo (ref);
6655 threadlist_update_test_cmd (char *cmd, int tty)
6657 printf_filtered ("Remote Threadlist update test\n");
6658 remote_threadlist_iterator (thread_display_step, 0, CRAZY_MAX_THREADS);
6662 init_remote_threadtests (void)
6664 add_com ("tlist", class_obscure, threadlist_test_cmd, _("\
6665 Fetch and print the remote list of thread identifiers, one pkt only"));
6666 add_com ("tinfo", class_obscure, threadinfo_test_cmd,
6667 _("Fetch and display info about one thread"));
6668 add_com ("tset", class_obscure, threadset_test_cmd,
6669 _("Test setting to a different thread"));
6670 add_com ("tupd", class_obscure, threadlist_update_test_cmd,
6671 _("Iterate through updating all remote thread info"));
6672 add_com ("talive", class_obscure, threadalive_test,
6673 _(" Remote thread alive test "));
6678 /* Convert a thread ID to a string. Returns the string in a static
6682 remote_pid_to_str (ptid_t ptid)
6684 static char buf[64];
6685 struct remote_state *rs = get_remote_state ();
6687 if (ptid_equal (magic_null_ptid, ptid))
6689 xsnprintf (buf, sizeof buf, "Thread <main>");
6692 else if (remote_multi_process_p (rs)
6693 && ptid_get_tid (ptid) != 0 && ptid_get_pid (ptid) != 0)
6695 xsnprintf (buf, sizeof buf, "Thread %d.%ld",
6696 ptid_get_pid (ptid), ptid_get_tid (ptid));
6699 else if (ptid_get_tid (ptid) != 0)
6701 xsnprintf (buf, sizeof buf, "Thread %ld",
6702 ptid_get_tid (ptid));
6706 return normal_pid_to_str (ptid);
6709 /* Get the address of the thread local variable in OBJFILE which is
6710 stored at OFFSET within the thread local storage for thread PTID. */
6713 remote_get_thread_local_address (ptid_t ptid, CORE_ADDR lm, CORE_ADDR offset)
6715 if (remote_protocol_packets[PACKET_qGetTLSAddr].support != PACKET_DISABLE)
6717 struct remote_state *rs = get_remote_state ();
6719 char *endp = rs->buf + get_remote_packet_size ();
6720 enum packet_result result;
6722 strcpy (p, "qGetTLSAddr:");
6724 p = write_ptid (p, endp, ptid);
6726 p += hexnumstr (p, offset);
6728 p += hexnumstr (p, lm);
6732 getpkt (&rs->buf, &rs->buf_size, 0);
6733 result = packet_ok (rs->buf, &remote_protocol_packets[PACKET_qGetTLSAddr]);
6734 if (result == PACKET_OK)
6738 unpack_varlen_hex (rs->buf, &result);
6741 else if (result == PACKET_UNKNOWN)
6742 throw_error (TLS_GENERIC_ERROR,
6743 _("Remote target doesn't support qGetTLSAddr packet"));
6745 throw_error (TLS_GENERIC_ERROR,
6746 _("Remote target failed to process qGetTLSAddr request"));
6749 throw_error (TLS_GENERIC_ERROR,
6750 _("TLS not supported or disabled on this target"));
6755 /* Support for inferring a target description based on the current
6756 architecture and the size of a 'g' packet. While the 'g' packet
6757 can have any size (since optional registers can be left off the
6758 end), some sizes are easily recognizable given knowledge of the
6759 approximate architecture. */
6761 struct remote_g_packet_guess
6764 const struct target_desc *tdesc;
6766 typedef struct remote_g_packet_guess remote_g_packet_guess_s;
6767 DEF_VEC_O(remote_g_packet_guess_s);
6769 struct remote_g_packet_data
6771 VEC(remote_g_packet_guess_s) *guesses;
6774 static struct gdbarch_data *remote_g_packet_data_handle;
6777 remote_g_packet_data_init (struct obstack *obstack)
6779 return OBSTACK_ZALLOC (obstack, struct remote_g_packet_data);
6783 register_remote_g_packet_guess (struct gdbarch *gdbarch, int bytes,
6784 const struct target_desc *tdesc)
6786 struct remote_g_packet_data *data
6787 = gdbarch_data (gdbarch, remote_g_packet_data_handle);
6788 struct remote_g_packet_guess new_guess, *guess;
6791 gdb_assert (tdesc != NULL);
6794 VEC_iterate (remote_g_packet_guess_s, data->guesses, ix, guess);
6796 if (guess->bytes == bytes)
6797 internal_error (__FILE__, __LINE__,
6798 "Duplicate g packet description added for size %d",
6801 new_guess.bytes = bytes;
6802 new_guess.tdesc = tdesc;
6803 VEC_safe_push (remote_g_packet_guess_s, data->guesses, &new_guess);
6806 static const struct target_desc *
6807 remote_read_description (struct target_ops *target)
6809 struct remote_g_packet_data *data
6810 = gdbarch_data (target_gdbarch, remote_g_packet_data_handle);
6812 if (!VEC_empty (remote_g_packet_guess_s, data->guesses))
6814 struct remote_g_packet_guess *guess;
6816 int bytes = send_g_packet ();
6819 VEC_iterate (remote_g_packet_guess_s, data->guesses, ix, guess);
6821 if (guess->bytes == bytes)
6822 return guess->tdesc;
6824 /* We discard the g packet. A minor optimization would be to
6825 hold on to it, and fill the register cache once we have selected
6826 an architecture, but it's too tricky to do safely. */
6832 /* Remote file transfer support. This is host-initiated I/O, not
6833 target-initiated; for target-initiated, see remote-fileio.c. */
6835 /* If *LEFT is at least the length of STRING, copy STRING to
6836 *BUFFER, update *BUFFER to point to the new end of the buffer, and
6837 decrease *LEFT. Otherwise raise an error. */
6840 remote_buffer_add_string (char **buffer, int *left, char *string)
6842 int len = strlen (string);
6845 error (_("Packet too long for target."));
6847 memcpy (*buffer, string, len);
6851 /* NUL-terminate the buffer as a convenience, if there is
6857 /* If *LEFT is large enough, hex encode LEN bytes from BYTES into
6858 *BUFFER, update *BUFFER to point to the new end of the buffer, and
6859 decrease *LEFT. Otherwise raise an error. */
6862 remote_buffer_add_bytes (char **buffer, int *left, const gdb_byte *bytes,
6865 if (2 * len > *left)
6866 error (_("Packet too long for target."));
6868 bin2hex (bytes, *buffer, len);
6872 /* NUL-terminate the buffer as a convenience, if there is
6878 /* If *LEFT is large enough, convert VALUE to hex and add it to
6879 *BUFFER, update *BUFFER to point to the new end of the buffer, and
6880 decrease *LEFT. Otherwise raise an error. */
6883 remote_buffer_add_int (char **buffer, int *left, ULONGEST value)
6885 int len = hexnumlen (value);
6888 error (_("Packet too long for target."));
6890 hexnumstr (*buffer, value);
6894 /* NUL-terminate the buffer as a convenience, if there is
6900 /* Parse an I/O result packet from BUFFER. Set RETCODE to the return
6901 value, *REMOTE_ERRNO to the remote error number or zero if none
6902 was included, and *ATTACHMENT to point to the start of the annex
6903 if any. The length of the packet isn't needed here; there may
6904 be NUL bytes in BUFFER, but they will be after *ATTACHMENT.
6906 Return 0 if the packet could be parsed, -1 if it could not. If
6907 -1 is returned, the other variables may not be initialized. */
6910 remote_hostio_parse_result (char *buffer, int *retcode,
6911 int *remote_errno, char **attachment)
6918 if (buffer[0] != 'F')
6922 *retcode = strtol (&buffer[1], &p, 16);
6923 if (errno != 0 || p == &buffer[1])
6926 /* Check for ",errno". */
6930 *remote_errno = strtol (p + 1, &p2, 16);
6931 if (errno != 0 || p + 1 == p2)
6936 /* Check for ";attachment". If there is no attachment, the
6937 packet should end here. */
6940 *attachment = p + 1;
6943 else if (*p == '\0')
6949 /* Send a prepared I/O packet to the target and read its response.
6950 The prepared packet is in the global RS->BUF before this function
6951 is called, and the answer is there when we return.
6953 COMMAND_BYTES is the length of the request to send, which may include
6954 binary data. WHICH_PACKET is the packet configuration to check
6955 before attempting a packet. If an error occurs, *REMOTE_ERRNO
6956 is set to the error number and -1 is returned. Otherwise the value
6957 returned by the function is returned.
6959 ATTACHMENT and ATTACHMENT_LEN should be non-NULL if and only if an
6960 attachment is expected; an error will be reported if there's a
6961 mismatch. If one is found, *ATTACHMENT will be set to point into
6962 the packet buffer and *ATTACHMENT_LEN will be set to the
6963 attachment's length. */
6966 remote_hostio_send_command (int command_bytes, int which_packet,
6967 int *remote_errno, char **attachment,
6968 int *attachment_len)
6970 struct remote_state *rs = get_remote_state ();
6971 int ret, bytes_read;
6972 char *attachment_tmp;
6975 || remote_protocol_packets[which_packet].support == PACKET_DISABLE)
6977 *remote_errno = FILEIO_ENOSYS;
6981 putpkt_binary (rs->buf, command_bytes);
6982 bytes_read = getpkt_sane (&rs->buf, &rs->buf_size, 0);
6984 /* If it timed out, something is wrong. Don't try to parse the
6988 *remote_errno = FILEIO_EINVAL;
6992 switch (packet_ok (rs->buf, &remote_protocol_packets[which_packet]))
6995 *remote_errno = FILEIO_EINVAL;
6997 case PACKET_UNKNOWN:
6998 *remote_errno = FILEIO_ENOSYS;
7004 if (remote_hostio_parse_result (rs->buf, &ret, remote_errno,
7007 *remote_errno = FILEIO_EINVAL;
7011 /* Make sure we saw an attachment if and only if we expected one. */
7012 if ((attachment_tmp == NULL && attachment != NULL)
7013 || (attachment_tmp != NULL && attachment == NULL))
7015 *remote_errno = FILEIO_EINVAL;
7019 /* If an attachment was found, it must point into the packet buffer;
7020 work out how many bytes there were. */
7021 if (attachment_tmp != NULL)
7023 *attachment = attachment_tmp;
7024 *attachment_len = bytes_read - (*attachment - rs->buf);
7030 /* Open FILENAME on the remote target, using FLAGS and MODE. Return a
7031 remote file descriptor, or -1 if an error occurs (and set
7035 remote_hostio_open (const char *filename, int flags, int mode,
7038 struct remote_state *rs = get_remote_state ();
7040 int left = get_remote_packet_size () - 1;
7042 remote_buffer_add_string (&p, &left, "vFile:open:");
7044 remote_buffer_add_bytes (&p, &left, (const gdb_byte *) filename,
7046 remote_buffer_add_string (&p, &left, ",");
7048 remote_buffer_add_int (&p, &left, flags);
7049 remote_buffer_add_string (&p, &left, ",");
7051 remote_buffer_add_int (&p, &left, mode);
7053 return remote_hostio_send_command (p - rs->buf, PACKET_vFile_open,
7054 remote_errno, NULL, NULL);
7057 /* Write up to LEN bytes from WRITE_BUF to FD on the remote target.
7058 Return the number of bytes written, or -1 if an error occurs (and
7059 set *REMOTE_ERRNO). */
7062 remote_hostio_pwrite (int fd, const gdb_byte *write_buf, int len,
7063 ULONGEST offset, int *remote_errno)
7065 struct remote_state *rs = get_remote_state ();
7067 int left = get_remote_packet_size ();
7070 remote_buffer_add_string (&p, &left, "vFile:pwrite:");
7072 remote_buffer_add_int (&p, &left, fd);
7073 remote_buffer_add_string (&p, &left, ",");
7075 remote_buffer_add_int (&p, &left, offset);
7076 remote_buffer_add_string (&p, &left, ",");
7078 p += remote_escape_output (write_buf, len, p, &out_len,
7079 get_remote_packet_size () - (p - rs->buf));
7081 return remote_hostio_send_command (p - rs->buf, PACKET_vFile_pwrite,
7082 remote_errno, NULL, NULL);
7085 /* Read up to LEN bytes FD on the remote target into READ_BUF
7086 Return the number of bytes read, or -1 if an error occurs (and
7087 set *REMOTE_ERRNO). */
7090 remote_hostio_pread (int fd, gdb_byte *read_buf, int len,
7091 ULONGEST offset, int *remote_errno)
7093 struct remote_state *rs = get_remote_state ();
7096 int left = get_remote_packet_size ();
7097 int ret, attachment_len;
7100 remote_buffer_add_string (&p, &left, "vFile:pread:");
7102 remote_buffer_add_int (&p, &left, fd);
7103 remote_buffer_add_string (&p, &left, ",");
7105 remote_buffer_add_int (&p, &left, len);
7106 remote_buffer_add_string (&p, &left, ",");
7108 remote_buffer_add_int (&p, &left, offset);
7110 ret = remote_hostio_send_command (p - rs->buf, PACKET_vFile_pread,
7111 remote_errno, &attachment,
7117 read_len = remote_unescape_input (attachment, attachment_len,
7119 if (read_len != ret)
7120 error (_("Read returned %d, but %d bytes."), ret, (int) read_len);
7125 /* Close FD on the remote target. Return 0, or -1 if an error occurs
7126 (and set *REMOTE_ERRNO). */
7129 remote_hostio_close (int fd, int *remote_errno)
7131 struct remote_state *rs = get_remote_state ();
7133 int left = get_remote_packet_size () - 1;
7135 remote_buffer_add_string (&p, &left, "vFile:close:");
7137 remote_buffer_add_int (&p, &left, fd);
7139 return remote_hostio_send_command (p - rs->buf, PACKET_vFile_close,
7140 remote_errno, NULL, NULL);
7143 /* Unlink FILENAME on the remote target. Return 0, or -1 if an error
7144 occurs (and set *REMOTE_ERRNO). */
7147 remote_hostio_unlink (const char *filename, int *remote_errno)
7149 struct remote_state *rs = get_remote_state ();
7151 int left = get_remote_packet_size () - 1;
7153 remote_buffer_add_string (&p, &left, "vFile:unlink:");
7155 remote_buffer_add_bytes (&p, &left, (const gdb_byte *) filename,
7158 return remote_hostio_send_command (p - rs->buf, PACKET_vFile_unlink,
7159 remote_errno, NULL, NULL);
7163 remote_fileio_errno_to_host (int errnum)
7187 case FILEIO_ENOTDIR:
7207 case FILEIO_ENAMETOOLONG:
7208 return ENAMETOOLONG;
7214 remote_hostio_error (int errnum)
7216 int host_error = remote_fileio_errno_to_host (errnum);
7218 if (host_error == -1)
7219 error (_("Unknown remote I/O error %d"), errnum);
7221 error (_("Remote I/O error: %s"), safe_strerror (host_error));
7225 fclose_cleanup (void *file)
7231 remote_hostio_close_cleanup (void *opaque)
7233 int fd = *(int *) opaque;
7236 remote_hostio_close (fd, &remote_errno);
7241 remote_bfd_iovec_open (struct bfd *abfd, void *open_closure)
7243 const char *filename = bfd_get_filename (abfd);
7244 int fd, remote_errno;
7247 gdb_assert (remote_filename_p (filename));
7249 fd = remote_hostio_open (filename + 7, FILEIO_O_RDONLY, 0, &remote_errno);
7252 errno = remote_fileio_errno_to_host (remote_errno);
7253 bfd_set_error (bfd_error_system_call);
7257 stream = xmalloc (sizeof (int));
7263 remote_bfd_iovec_close (struct bfd *abfd, void *stream)
7265 int fd = *(int *)stream;
7270 /* Ignore errors on close; these may happen if the remote
7271 connection was already torn down. */
7272 remote_hostio_close (fd, &remote_errno);
7278 remote_bfd_iovec_pread (struct bfd *abfd, void *stream, void *buf,
7279 file_ptr nbytes, file_ptr offset)
7281 int fd = *(int *)stream;
7283 file_ptr pos, bytes;
7286 while (nbytes > pos)
7288 bytes = remote_hostio_pread (fd, (char *)buf + pos, nbytes - pos,
7289 offset + pos, &remote_errno);
7291 /* Success, but no bytes, means end-of-file. */
7295 errno = remote_fileio_errno_to_host (remote_errno);
7296 bfd_set_error (bfd_error_system_call);
7307 remote_bfd_iovec_stat (struct bfd *abfd, void *stream, struct stat *sb)
7309 /* FIXME: We should probably implement remote_hostio_stat. */
7310 sb->st_size = INT_MAX;
7315 remote_filename_p (const char *filename)
7317 return strncmp (filename, "remote:", 7) == 0;
7321 remote_bfd_open (const char *remote_file, const char *target)
7323 return bfd_openr_iovec (remote_file, target,
7324 remote_bfd_iovec_open, NULL,
7325 remote_bfd_iovec_pread,
7326 remote_bfd_iovec_close,
7327 remote_bfd_iovec_stat);
7331 remote_file_put (const char *local_file, const char *remote_file, int from_tty)
7333 struct cleanup *back_to, *close_cleanup;
7334 int retcode, fd, remote_errno, bytes, io_size;
7337 int bytes_in_buffer;
7342 error (_("command can only be used with remote target"));
7344 file = fopen (local_file, "rb");
7346 perror_with_name (local_file);
7347 back_to = make_cleanup (fclose_cleanup, file);
7349 fd = remote_hostio_open (remote_file, (FILEIO_O_WRONLY | FILEIO_O_CREAT
7351 0700, &remote_errno);
7353 remote_hostio_error (remote_errno);
7355 /* Send up to this many bytes at once. They won't all fit in the
7356 remote packet limit, so we'll transfer slightly fewer. */
7357 io_size = get_remote_packet_size ();
7358 buffer = xmalloc (io_size);
7359 make_cleanup (xfree, buffer);
7361 close_cleanup = make_cleanup (remote_hostio_close_cleanup, &fd);
7363 bytes_in_buffer = 0;
7366 while (bytes_in_buffer || !saw_eof)
7370 bytes = fread (buffer + bytes_in_buffer, 1, io_size - bytes_in_buffer,
7375 error (_("Error reading %s."), local_file);
7378 /* EOF. Unless there is something still in the
7379 buffer from the last iteration, we are done. */
7381 if (bytes_in_buffer == 0)
7389 bytes += bytes_in_buffer;
7390 bytes_in_buffer = 0;
7392 retcode = remote_hostio_pwrite (fd, buffer, bytes, offset, &remote_errno);
7395 remote_hostio_error (remote_errno);
7396 else if (retcode == 0)
7397 error (_("Remote write of %d bytes returned 0!"), bytes);
7398 else if (retcode < bytes)
7400 /* Short write. Save the rest of the read data for the next
7402 bytes_in_buffer = bytes - retcode;
7403 memmove (buffer, buffer + retcode, bytes_in_buffer);
7409 discard_cleanups (close_cleanup);
7410 if (remote_hostio_close (fd, &remote_errno))
7411 remote_hostio_error (remote_errno);
7414 printf_filtered (_("Successfully sent file \"%s\".\n"), local_file);
7415 do_cleanups (back_to);
7419 remote_file_get (const char *remote_file, const char *local_file, int from_tty)
7421 struct cleanup *back_to, *close_cleanup;
7422 int retcode, fd, remote_errno, bytes, io_size;
7428 error (_("command can only be used with remote target"));
7430 fd = remote_hostio_open (remote_file, FILEIO_O_RDONLY, 0, &remote_errno);
7432 remote_hostio_error (remote_errno);
7434 file = fopen (local_file, "wb");
7436 perror_with_name (local_file);
7437 back_to = make_cleanup (fclose_cleanup, file);
7439 /* Send up to this many bytes at once. They won't all fit in the
7440 remote packet limit, so we'll transfer slightly fewer. */
7441 io_size = get_remote_packet_size ();
7442 buffer = xmalloc (io_size);
7443 make_cleanup (xfree, buffer);
7445 close_cleanup = make_cleanup (remote_hostio_close_cleanup, &fd);
7450 bytes = remote_hostio_pread (fd, buffer, io_size, offset, &remote_errno);
7452 /* Success, but no bytes, means end-of-file. */
7455 remote_hostio_error (remote_errno);
7459 bytes = fwrite (buffer, 1, bytes, file);
7461 perror_with_name (local_file);
7464 discard_cleanups (close_cleanup);
7465 if (remote_hostio_close (fd, &remote_errno))
7466 remote_hostio_error (remote_errno);
7469 printf_filtered (_("Successfully fetched file \"%s\".\n"), remote_file);
7470 do_cleanups (back_to);
7474 remote_file_delete (const char *remote_file, int from_tty)
7476 int retcode, remote_errno;
7479 error (_("command can only be used with remote target"));
7481 retcode = remote_hostio_unlink (remote_file, &remote_errno);
7483 remote_hostio_error (remote_errno);
7486 printf_filtered (_("Successfully deleted file \"%s\".\n"), remote_file);
7490 remote_put_command (char *args, int from_tty)
7492 struct cleanup *back_to;
7496 error_no_arg (_("file to put"));
7498 argv = gdb_buildargv (args);
7499 back_to = make_cleanup_freeargv (argv);
7500 if (argv[0] == NULL || argv[1] == NULL || argv[2] != NULL)
7501 error (_("Invalid parameters to remote put"));
7503 remote_file_put (argv[0], argv[1], from_tty);
7505 do_cleanups (back_to);
7509 remote_get_command (char *args, int from_tty)
7511 struct cleanup *back_to;
7515 error_no_arg (_("file to get"));
7517 argv = gdb_buildargv (args);
7518 back_to = make_cleanup_freeargv (argv);
7519 if (argv[0] == NULL || argv[1] == NULL || argv[2] != NULL)
7520 error (_("Invalid parameters to remote get"));
7522 remote_file_get (argv[0], argv[1], from_tty);
7524 do_cleanups (back_to);
7528 remote_delete_command (char *args, int from_tty)
7530 struct cleanup *back_to;
7534 error_no_arg (_("file to delete"));
7536 argv = gdb_buildargv (args);
7537 back_to = make_cleanup_freeargv (argv);
7538 if (argv[0] == NULL || argv[1] != NULL)
7539 error (_("Invalid parameters to remote delete"));
7541 remote_file_delete (argv[0], from_tty);
7543 do_cleanups (back_to);
7547 remote_command (char *args, int from_tty)
7549 help_list (remote_cmdlist, "remote ", -1, gdb_stdout);
7553 init_remote_ops (void)
7555 remote_ops.to_shortname = "remote";
7556 remote_ops.to_longname = "Remote serial target in gdb-specific protocol";
7558 "Use a remote computer via a serial line, using a gdb-specific protocol.\n\
7559 Specify the serial device it is connected to\n\
7560 (e.g. /dev/ttyS0, /dev/ttya, COM1, etc.).";
7561 remote_ops.to_open = remote_open;
7562 remote_ops.to_close = remote_close;
7563 remote_ops.to_detach = remote_detach;
7564 remote_ops.to_disconnect = remote_disconnect;
7565 remote_ops.to_resume = remote_resume;
7566 remote_ops.to_wait = remote_wait;
7567 remote_ops.to_fetch_registers = remote_fetch_registers;
7568 remote_ops.to_store_registers = remote_store_registers;
7569 remote_ops.to_prepare_to_store = remote_prepare_to_store;
7570 remote_ops.deprecated_xfer_memory = remote_xfer_memory;
7571 remote_ops.to_files_info = remote_files_info;
7572 remote_ops.to_insert_breakpoint = remote_insert_breakpoint;
7573 remote_ops.to_remove_breakpoint = remote_remove_breakpoint;
7574 remote_ops.to_stopped_by_watchpoint = remote_stopped_by_watchpoint;
7575 remote_ops.to_stopped_data_address = remote_stopped_data_address;
7576 remote_ops.to_can_use_hw_breakpoint = remote_check_watch_resources;
7577 remote_ops.to_insert_hw_breakpoint = remote_insert_hw_breakpoint;
7578 remote_ops.to_remove_hw_breakpoint = remote_remove_hw_breakpoint;
7579 remote_ops.to_insert_watchpoint = remote_insert_watchpoint;
7580 remote_ops.to_remove_watchpoint = remote_remove_watchpoint;
7581 remote_ops.to_kill = remote_kill;
7582 remote_ops.to_load = generic_load;
7583 remote_ops.to_mourn_inferior = remote_mourn;
7584 remote_ops.to_thread_alive = remote_thread_alive;
7585 remote_ops.to_find_new_threads = remote_threads_info;
7586 remote_ops.to_pid_to_str = remote_pid_to_str;
7587 remote_ops.to_extra_thread_info = remote_threads_extra_info;
7588 remote_ops.to_stop = remote_stop;
7589 remote_ops.to_xfer_partial = remote_xfer_partial;
7590 remote_ops.to_rcmd = remote_rcmd;
7591 remote_ops.to_log_command = serial_log_command;
7592 remote_ops.to_get_thread_local_address = remote_get_thread_local_address;
7593 remote_ops.to_stratum = process_stratum;
7594 remote_ops.to_has_all_memory = 1;
7595 remote_ops.to_has_memory = 1;
7596 remote_ops.to_has_stack = 1;
7597 remote_ops.to_has_registers = 1;
7598 remote_ops.to_has_execution = 1;
7599 remote_ops.to_has_thread_control = tc_schedlock; /* can lock scheduler */
7600 remote_ops.to_magic = OPS_MAGIC;
7601 remote_ops.to_memory_map = remote_memory_map;
7602 remote_ops.to_flash_erase = remote_flash_erase;
7603 remote_ops.to_flash_done = remote_flash_done;
7604 remote_ops.to_read_description = remote_read_description;
7605 remote_ops.to_search_memory = remote_search_memory;
7606 remote_ops.to_can_async_p = remote_can_async_p;
7607 remote_ops.to_is_async_p = remote_is_async_p;
7608 remote_ops.to_async = remote_async;
7609 remote_ops.to_async_mask = remote_async_mask;
7610 remote_ops.to_terminal_inferior = remote_terminal_inferior;
7611 remote_ops.to_terminal_ours = remote_terminal_ours;
7614 /* Set up the extended remote vector by making a copy of the standard
7615 remote vector and adding to it. */
7618 init_extended_remote_ops (void)
7620 extended_remote_ops = remote_ops;
7622 extended_remote_ops.to_shortname = "extended-remote";
7623 extended_remote_ops.to_longname =
7624 "Extended remote serial target in gdb-specific protocol";
7625 extended_remote_ops.to_doc =
7626 "Use a remote computer via a serial line, using a gdb-specific protocol.\n\
7627 Specify the serial device it is connected to (e.g. /dev/ttya).";
7628 extended_remote_ops.to_open = extended_remote_open;
7629 extended_remote_ops.to_create_inferior = extended_remote_create_inferior;
7630 extended_remote_ops.to_mourn_inferior = extended_remote_mourn;
7631 extended_remote_ops.to_detach = extended_remote_detach;
7632 extended_remote_ops.to_attach = extended_remote_attach;
7633 extended_remote_ops.to_kill = extended_remote_kill;
7637 remote_can_async_p (void)
7639 if (!target_async_permitted)
7640 /* We only enable async when the user specifically asks for it. */
7643 /* We're async whenever the serial device is. */
7644 return remote_async_mask_value && serial_can_async_p (remote_desc);
7648 remote_is_async_p (void)
7650 if (!target_async_permitted)
7651 /* We only enable async when the user specifically asks for it. */
7654 /* We're async whenever the serial device is. */
7655 return remote_async_mask_value && serial_is_async_p (remote_desc);
7658 /* Pass the SERIAL event on and up to the client. One day this code
7659 will be able to delay notifying the client of an event until the
7660 point where an entire packet has been received. */
7662 static void (*async_client_callback) (enum inferior_event_type event_type,
7664 static void *async_client_context;
7665 static serial_event_ftype remote_async_serial_handler;
7668 remote_async_serial_handler (struct serial *scb, void *context)
7670 /* Don't propogate error information up to the client. Instead let
7671 the client find out about the error by querying the target. */
7672 async_client_callback (INF_REG_EVENT, async_client_context);
7676 remote_async (void (*callback) (enum inferior_event_type event_type,
7677 void *context), void *context)
7679 if (remote_async_mask_value == 0)
7680 internal_error (__FILE__, __LINE__,
7681 _("Calling remote_async when async is masked"));
7683 if (callback != NULL)
7685 serial_async (remote_desc, remote_async_serial_handler, NULL);
7686 async_client_callback = callback;
7687 async_client_context = context;
7690 serial_async (remote_desc, NULL, NULL);
7694 remote_async_mask (int new_mask)
7696 int curr_mask = remote_async_mask_value;
7697 remote_async_mask_value = new_mask;
7702 set_remote_cmd (char *args, int from_tty)
7704 help_list (remote_set_cmdlist, "set remote ", -1, gdb_stdout);
7708 show_remote_cmd (char *args, int from_tty)
7710 /* We can't just use cmd_show_list here, because we want to skip
7711 the redundant "show remote Z-packet" and the legacy aliases. */
7712 struct cleanup *showlist_chain;
7713 struct cmd_list_element *list = remote_show_cmdlist;
7715 showlist_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "showlist");
7716 for (; list != NULL; list = list->next)
7717 if (strcmp (list->name, "Z-packet") == 0)
7719 else if (list->type == not_set_cmd)
7720 /* Alias commands are exactly like the original, except they
7721 don't have the normal type. */
7725 struct cleanup *option_chain
7726 = make_cleanup_ui_out_tuple_begin_end (uiout, "option");
7727 ui_out_field_string (uiout, "name", list->name);
7728 ui_out_text (uiout, ": ");
7729 if (list->type == show_cmd)
7730 do_setshow_command ((char *) NULL, from_tty, list);
7732 cmd_func (list, NULL, from_tty);
7733 /* Close the tuple. */
7734 do_cleanups (option_chain);
7737 /* Close the tuple. */
7738 do_cleanups (showlist_chain);
7742 /* Function to be called whenever a new objfile (shlib) is detected. */
7744 remote_new_objfile (struct objfile *objfile)
7746 if (remote_desc != 0) /* Have a remote connection. */
7747 remote_check_symbols (objfile);
7751 _initialize_remote (void)
7753 struct remote_state *rs;
7755 /* architecture specific data */
7756 remote_gdbarch_data_handle =
7757 gdbarch_data_register_post_init (init_remote_state);
7758 remote_g_packet_data_handle =
7759 gdbarch_data_register_pre_init (remote_g_packet_data_init);
7761 /* Initialize the per-target state. At the moment there is only one
7762 of these, not one per target. Only one target is active at a
7763 time. The default buffer size is unimportant; it will be expanded
7764 whenever a larger buffer is needed. */
7765 rs = get_remote_state_raw ();
7767 rs->buf = xmalloc (rs->buf_size);
7770 add_target (&remote_ops);
7772 init_extended_remote_ops ();
7773 add_target (&extended_remote_ops);
7775 /* Hook into new objfile notification. */
7776 observer_attach_new_objfile (remote_new_objfile);
7778 /* Set up signal handlers. */
7779 sigint_remote_token =
7780 create_async_signal_handler (async_remote_interrupt, NULL);
7781 sigint_remote_twice_token =
7782 create_async_signal_handler (inferior_event_handler_wrapper, NULL);
7785 init_remote_threadtests ();
7788 /* set/show remote ... */
7790 add_prefix_cmd ("remote", class_maintenance, set_remote_cmd, _("\
7791 Remote protocol specific variables\n\
7792 Configure various remote-protocol specific variables such as\n\
7793 the packets being used"),
7794 &remote_set_cmdlist, "set remote ",
7795 0 /* allow-unknown */, &setlist);
7796 add_prefix_cmd ("remote", class_maintenance, show_remote_cmd, _("\
7797 Remote protocol specific variables\n\
7798 Configure various remote-protocol specific variables such as\n\
7799 the packets being used"),
7800 &remote_show_cmdlist, "show remote ",
7801 0 /* allow-unknown */, &showlist);
7803 add_cmd ("compare-sections", class_obscure, compare_sections_command, _("\
7804 Compare section data on target to the exec file.\n\
7805 Argument is a single section name (default: all loaded sections)."),
7808 add_cmd ("packet", class_maintenance, packet_command, _("\
7809 Send an arbitrary packet to a remote target.\n\
7810 maintenance packet TEXT\n\
7811 If GDB is talking to an inferior via the GDB serial protocol, then\n\
7812 this command sends the string TEXT to the inferior, and displays the\n\
7813 response packet. GDB supplies the initial `$' character, and the\n\
7814 terminating `#' character and checksum."),
7817 add_setshow_boolean_cmd ("remotebreak", no_class, &remote_break, _("\
7818 Set whether to send break if interrupted."), _("\
7819 Show whether to send break if interrupted."), _("\
7820 If set, a break, instead of a cntrl-c, is sent to the remote target."),
7821 NULL, NULL, /* FIXME: i18n: Whether to send break if interrupted is %s. */
7822 &setlist, &showlist);
7824 /* Install commands for configuring memory read/write packets. */
7826 add_cmd ("remotewritesize", no_class, set_memory_write_packet_size, _("\
7827 Set the maximum number of bytes per memory write packet (deprecated)."),
7829 add_cmd ("remotewritesize", no_class, show_memory_write_packet_size, _("\
7830 Show the maximum number of bytes per memory write packet (deprecated)."),
7832 add_cmd ("memory-write-packet-size", no_class,
7833 set_memory_write_packet_size, _("\
7834 Set the maximum number of bytes per memory-write packet.\n\
7835 Specify the number of bytes in a packet or 0 (zero) for the\n\
7836 default packet size. The actual limit is further reduced\n\
7837 dependent on the target. Specify ``fixed'' to disable the\n\
7838 further restriction and ``limit'' to enable that restriction."),
7839 &remote_set_cmdlist);
7840 add_cmd ("memory-read-packet-size", no_class,
7841 set_memory_read_packet_size, _("\
7842 Set the maximum number of bytes per memory-read packet.\n\
7843 Specify the number of bytes in a packet or 0 (zero) for the\n\
7844 default packet size. The actual limit is further reduced\n\
7845 dependent on the target. Specify ``fixed'' to disable the\n\
7846 further restriction and ``limit'' to enable that restriction."),
7847 &remote_set_cmdlist);
7848 add_cmd ("memory-write-packet-size", no_class,
7849 show_memory_write_packet_size,
7850 _("Show the maximum number of bytes per memory-write packet."),
7851 &remote_show_cmdlist);
7852 add_cmd ("memory-read-packet-size", no_class,
7853 show_memory_read_packet_size,
7854 _("Show the maximum number of bytes per memory-read packet."),
7855 &remote_show_cmdlist);
7857 add_setshow_zinteger_cmd ("hardware-watchpoint-limit", no_class,
7858 &remote_hw_watchpoint_limit, _("\
7859 Set the maximum number of target hardware watchpoints."), _("\
7860 Show the maximum number of target hardware watchpoints."), _("\
7861 Specify a negative limit for unlimited."),
7862 NULL, NULL, /* FIXME: i18n: The maximum number of target hardware watchpoints is %s. */
7863 &remote_set_cmdlist, &remote_show_cmdlist);
7864 add_setshow_zinteger_cmd ("hardware-breakpoint-limit", no_class,
7865 &remote_hw_breakpoint_limit, _("\
7866 Set the maximum number of target hardware breakpoints."), _("\
7867 Show the maximum number of target hardware breakpoints."), _("\
7868 Specify a negative limit for unlimited."),
7869 NULL, NULL, /* FIXME: i18n: The maximum number of target hardware breakpoints is %s. */
7870 &remote_set_cmdlist, &remote_show_cmdlist);
7872 add_setshow_integer_cmd ("remoteaddresssize", class_obscure,
7873 &remote_address_size, _("\
7874 Set the maximum size of the address (in bits) in a memory packet."), _("\
7875 Show the maximum size of the address (in bits) in a memory packet."), NULL,
7877 NULL, /* FIXME: i18n: */
7878 &setlist, &showlist);
7880 add_packet_config_cmd (&remote_protocol_packets[PACKET_X],
7881 "X", "binary-download", 1);
7883 add_packet_config_cmd (&remote_protocol_packets[PACKET_vCont],
7884 "vCont", "verbose-resume", 0);
7886 add_packet_config_cmd (&remote_protocol_packets[PACKET_QPassSignals],
7887 "QPassSignals", "pass-signals", 0);
7889 add_packet_config_cmd (&remote_protocol_packets[PACKET_qSymbol],
7890 "qSymbol", "symbol-lookup", 0);
7892 add_packet_config_cmd (&remote_protocol_packets[PACKET_P],
7893 "P", "set-register", 1);
7895 add_packet_config_cmd (&remote_protocol_packets[PACKET_p],
7896 "p", "fetch-register", 1);
7898 add_packet_config_cmd (&remote_protocol_packets[PACKET_Z0],
7899 "Z0", "software-breakpoint", 0);
7901 add_packet_config_cmd (&remote_protocol_packets[PACKET_Z1],
7902 "Z1", "hardware-breakpoint", 0);
7904 add_packet_config_cmd (&remote_protocol_packets[PACKET_Z2],
7905 "Z2", "write-watchpoint", 0);
7907 add_packet_config_cmd (&remote_protocol_packets[PACKET_Z3],
7908 "Z3", "read-watchpoint", 0);
7910 add_packet_config_cmd (&remote_protocol_packets[PACKET_Z4],
7911 "Z4", "access-watchpoint", 0);
7913 add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_auxv],
7914 "qXfer:auxv:read", "read-aux-vector", 0);
7916 add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_features],
7917 "qXfer:features:read", "target-features", 0);
7919 add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_libraries],
7920 "qXfer:libraries:read", "library-info", 0);
7922 add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_memory_map],
7923 "qXfer:memory-map:read", "memory-map", 0);
7925 add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_spu_read],
7926 "qXfer:spu:read", "read-spu-object", 0);
7928 add_packet_config_cmd (&remote_protocol_packets[PACKET_qXfer_spu_write],
7929 "qXfer:spu:write", "write-spu-object", 0);
7931 add_packet_config_cmd (&remote_protocol_packets[PACKET_qGetTLSAddr],
7932 "qGetTLSAddr", "get-thread-local-storage-address",
7935 add_packet_config_cmd (&remote_protocol_packets[PACKET_qSupported],
7936 "qSupported", "supported-packets", 0);
7938 add_packet_config_cmd (&remote_protocol_packets[PACKET_qSearch_memory],
7939 "qSearch:memory", "search-memory", 0);
7941 add_packet_config_cmd (&remote_protocol_packets[PACKET_vFile_open],
7942 "vFile:open", "hostio-open", 0);
7944 add_packet_config_cmd (&remote_protocol_packets[PACKET_vFile_pread],
7945 "vFile:pread", "hostio-pread", 0);
7947 add_packet_config_cmd (&remote_protocol_packets[PACKET_vFile_pwrite],
7948 "vFile:pwrite", "hostio-pwrite", 0);
7950 add_packet_config_cmd (&remote_protocol_packets[PACKET_vFile_close],
7951 "vFile:close", "hostio-close", 0);
7953 add_packet_config_cmd (&remote_protocol_packets[PACKET_vFile_unlink],
7954 "vFile:unlink", "hostio-unlink", 0);
7956 add_packet_config_cmd (&remote_protocol_packets[PACKET_vAttach],
7957 "vAttach", "attach", 0);
7959 add_packet_config_cmd (&remote_protocol_packets[PACKET_vRun],
7962 add_packet_config_cmd (&remote_protocol_packets[PACKET_QStartNoAckMode],
7963 "QStartNoAckMode", "noack", 0);
7965 add_packet_config_cmd (&remote_protocol_packets[PACKET_vKill],
7966 "vKill", "kill", 0);
7968 /* Keep the old ``set remote Z-packet ...'' working. Each individual
7969 Z sub-packet has its own set and show commands, but users may
7970 have sets to this variable in their .gdbinit files (or in their
7972 add_setshow_auto_boolean_cmd ("Z-packet", class_obscure,
7973 &remote_Z_packet_detect, _("\
7974 Set use of remote protocol `Z' packets"), _("\
7975 Show use of remote protocol `Z' packets "), _("\
7976 When set, GDB will attempt to use the remote breakpoint and watchpoint\n\
7978 set_remote_protocol_Z_packet_cmd,
7979 show_remote_protocol_Z_packet_cmd, /* FIXME: i18n: Use of remote protocol `Z' packets is %s. */
7980 &remote_set_cmdlist, &remote_show_cmdlist);
7982 add_prefix_cmd ("remote", class_files, remote_command, _("\
7983 Manipulate files on the remote system\n\
7984 Transfer files to and from the remote target system."),
7985 &remote_cmdlist, "remote ",
7986 0 /* allow-unknown */, &cmdlist);
7988 add_cmd ("put", class_files, remote_put_command,
7989 _("Copy a local file to the remote system."),
7992 add_cmd ("get", class_files, remote_get_command,
7993 _("Copy a remote file to the local system."),
7996 add_cmd ("delete", class_files, remote_delete_command,
7997 _("Delete a remote file."),
8000 remote_exec_file = xstrdup ("");
8001 add_setshow_string_noescape_cmd ("exec-file", class_files,
8002 &remote_exec_file, _("\
8003 Set the remote pathname for \"run\""), _("\
8004 Show the remote pathname for \"run\""), NULL, NULL, NULL,
8005 &remote_set_cmdlist, &remote_show_cmdlist);
8007 /* Eventually initialize fileio. See fileio.c */
8008 initialize_remote_fileio (remote_set_cmdlist, remote_show_cmdlist);
8010 /* Take advantage of the fact that the LWP field is not used, to tag
8011 special ptids with it set to != 0. */
8012 magic_null_ptid = ptid_build (42000, 1, -1);
8013 not_sent_ptid = ptid_build (42000, 1, -2);
8014 any_thread_ptid = ptid_build (42000, 1, 0);