convert to_insert_exec_catchpoint
[external/binutils.git] / gdb / target.c
1 /* Select target systems and architectures at runtime for GDB.
2
3    Copyright (C) 1990-2014 Free Software Foundation, Inc.
4
5    Contributed by Cygnus Support.
6
7    This file is part of GDB.
8
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.
13
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.
18
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/>.  */
21
22 #include "defs.h"
23 #include <errno.h>
24 #include <string.h>
25 #include "target.h"
26 #include "target-dcache.h"
27 #include "gdbcmd.h"
28 #include "symtab.h"
29 #include "inferior.h"
30 #include "bfd.h"
31 #include "symfile.h"
32 #include "objfiles.h"
33 #include "dcache.h"
34 #include <signal.h>
35 #include "regcache.h"
36 #include "gdb_assert.h"
37 #include "gdbcore.h"
38 #include "exceptions.h"
39 #include "target-descriptions.h"
40 #include "gdbthread.h"
41 #include "solib.h"
42 #include "exec.h"
43 #include "inline-frame.h"
44 #include "tracepoint.h"
45 #include "gdb/fileio.h"
46 #include "agent.h"
47
48 static void target_info (char *, int);
49
50 static void default_terminal_info (struct target_ops *, const char *, int);
51
52 static int default_watchpoint_addr_within_range (struct target_ops *,
53                                                  CORE_ADDR, CORE_ADDR, int);
54
55 static int default_region_ok_for_hw_watchpoint (struct target_ops *,
56                                                 CORE_ADDR, int);
57
58 static void default_rcmd (struct target_ops *, char *, struct ui_file *);
59
60 static void tcomplain (void) ATTRIBUTE_NORETURN;
61
62 static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *);
63
64 static int return_zero (void);
65
66 static int return_one (void);
67
68 static int return_minus_one (void);
69
70 static void *return_null (void);
71
72 void target_ignore (void);
73
74 static void target_command (char *, int);
75
76 static struct target_ops *find_default_run_target (char *);
77
78 static target_xfer_partial_ftype default_xfer_partial;
79
80 static struct gdbarch *default_thread_architecture (struct target_ops *ops,
81                                                     ptid_t ptid);
82
83 static int find_default_can_async_p (struct target_ops *ignore);
84
85 static int find_default_is_async_p (struct target_ops *ignore);
86
87 #include "target-delegates.c"
88
89 static void init_dummy_target (void);
90
91 static struct target_ops debug_target;
92
93 static void debug_to_open (char *, int);
94
95 static void debug_to_prepare_to_store (struct target_ops *self,
96                                        struct regcache *);
97
98 static void debug_to_files_info (struct target_ops *);
99
100 static int debug_to_insert_breakpoint (struct target_ops *, struct gdbarch *,
101                                        struct bp_target_info *);
102
103 static int debug_to_remove_breakpoint (struct target_ops *, struct gdbarch *,
104                                        struct bp_target_info *);
105
106 static int debug_to_can_use_hw_breakpoint (struct target_ops *self,
107                                            int, int, int);
108
109 static int debug_to_insert_hw_breakpoint (struct target_ops *self,
110                                           struct gdbarch *,
111                                           struct bp_target_info *);
112
113 static int debug_to_remove_hw_breakpoint (struct target_ops *self,
114                                           struct gdbarch *,
115                                           struct bp_target_info *);
116
117 static int debug_to_insert_watchpoint (struct target_ops *self,
118                                        CORE_ADDR, int, int,
119                                        struct expression *);
120
121 static int debug_to_remove_watchpoint (struct target_ops *self,
122                                        CORE_ADDR, int, int,
123                                        struct expression *);
124
125 static int debug_to_stopped_data_address (struct target_ops *, CORE_ADDR *);
126
127 static int debug_to_watchpoint_addr_within_range (struct target_ops *,
128                                                   CORE_ADDR, CORE_ADDR, int);
129
130 static int debug_to_region_ok_for_hw_watchpoint (struct target_ops *self,
131                                                  CORE_ADDR, int);
132
133 static int debug_to_can_accel_watchpoint_condition (struct target_ops *self,
134                                                     CORE_ADDR, int, int,
135                                                     struct expression *);
136
137 static void debug_to_terminal_init (struct target_ops *self);
138
139 static void debug_to_terminal_inferior (struct target_ops *self);
140
141 static void debug_to_terminal_ours_for_output (struct target_ops *self);
142
143 static void debug_to_terminal_save_ours (struct target_ops *self);
144
145 static void debug_to_terminal_ours (struct target_ops *self);
146
147 static void debug_to_load (struct target_ops *self, char *, int);
148
149 static int debug_to_can_run (struct target_ops *self);
150
151 static void debug_to_stop (struct target_ops *self, ptid_t);
152
153 /* Pointer to array of target architecture structures; the size of the
154    array; the current index into the array; the allocated size of the
155    array.  */
156 struct target_ops **target_structs;
157 unsigned target_struct_size;
158 unsigned target_struct_allocsize;
159 #define DEFAULT_ALLOCSIZE       10
160
161 /* The initial current target, so that there is always a semi-valid
162    current target.  */
163
164 static struct target_ops dummy_target;
165
166 /* Top of target stack.  */
167
168 static struct target_ops *target_stack;
169
170 /* The target structure we are currently using to talk to a process
171    or file or whatever "inferior" we have.  */
172
173 struct target_ops current_target;
174
175 /* Command list for target.  */
176
177 static struct cmd_list_element *targetlist = NULL;
178
179 /* Nonzero if we should trust readonly sections from the
180    executable when reading memory.  */
181
182 static int trust_readonly = 0;
183
184 /* Nonzero if we should show true memory content including
185    memory breakpoint inserted by gdb.  */
186
187 static int show_memory_breakpoints = 0;
188
189 /* These globals control whether GDB attempts to perform these
190    operations; they are useful for targets that need to prevent
191    inadvertant disruption, such as in non-stop mode.  */
192
193 int may_write_registers = 1;
194
195 int may_write_memory = 1;
196
197 int may_insert_breakpoints = 1;
198
199 int may_insert_tracepoints = 1;
200
201 int may_insert_fast_tracepoints = 1;
202
203 int may_stop = 1;
204
205 /* Non-zero if we want to see trace of target level stuff.  */
206
207 static unsigned int targetdebug = 0;
208 static void
209 show_targetdebug (struct ui_file *file, int from_tty,
210                   struct cmd_list_element *c, const char *value)
211 {
212   fprintf_filtered (file, _("Target debugging is %s.\n"), value);
213 }
214
215 static void setup_target_debug (void);
216
217 /* The user just typed 'target' without the name of a target.  */
218
219 static void
220 target_command (char *arg, int from_tty)
221 {
222   fputs_filtered ("Argument required (target name).  Try `help target'\n",
223                   gdb_stdout);
224 }
225
226 /* Default target_has_* methods for process_stratum targets.  */
227
228 int
229 default_child_has_all_memory (struct target_ops *ops)
230 {
231   /* If no inferior selected, then we can't read memory here.  */
232   if (ptid_equal (inferior_ptid, null_ptid))
233     return 0;
234
235   return 1;
236 }
237
238 int
239 default_child_has_memory (struct target_ops *ops)
240 {
241   /* If no inferior selected, then we can't read memory here.  */
242   if (ptid_equal (inferior_ptid, null_ptid))
243     return 0;
244
245   return 1;
246 }
247
248 int
249 default_child_has_stack (struct target_ops *ops)
250 {
251   /* If no inferior selected, there's no stack.  */
252   if (ptid_equal (inferior_ptid, null_ptid))
253     return 0;
254
255   return 1;
256 }
257
258 int
259 default_child_has_registers (struct target_ops *ops)
260 {
261   /* Can't read registers from no inferior.  */
262   if (ptid_equal (inferior_ptid, null_ptid))
263     return 0;
264
265   return 1;
266 }
267
268 int
269 default_child_has_execution (struct target_ops *ops, ptid_t the_ptid)
270 {
271   /* If there's no thread selected, then we can't make it run through
272      hoops.  */
273   if (ptid_equal (the_ptid, null_ptid))
274     return 0;
275
276   return 1;
277 }
278
279
280 int
281 target_has_all_memory_1 (void)
282 {
283   struct target_ops *t;
284
285   for (t = current_target.beneath; t != NULL; t = t->beneath)
286     if (t->to_has_all_memory (t))
287       return 1;
288
289   return 0;
290 }
291
292 int
293 target_has_memory_1 (void)
294 {
295   struct target_ops *t;
296
297   for (t = current_target.beneath; t != NULL; t = t->beneath)
298     if (t->to_has_memory (t))
299       return 1;
300
301   return 0;
302 }
303
304 int
305 target_has_stack_1 (void)
306 {
307   struct target_ops *t;
308
309   for (t = current_target.beneath; t != NULL; t = t->beneath)
310     if (t->to_has_stack (t))
311       return 1;
312
313   return 0;
314 }
315
316 int
317 target_has_registers_1 (void)
318 {
319   struct target_ops *t;
320
321   for (t = current_target.beneath; t != NULL; t = t->beneath)
322     if (t->to_has_registers (t))
323       return 1;
324
325   return 0;
326 }
327
328 int
329 target_has_execution_1 (ptid_t the_ptid)
330 {
331   struct target_ops *t;
332
333   for (t = current_target.beneath; t != NULL; t = t->beneath)
334     if (t->to_has_execution (t, the_ptid))
335       return 1;
336
337   return 0;
338 }
339
340 int
341 target_has_execution_current (void)
342 {
343   return target_has_execution_1 (inferior_ptid);
344 }
345
346 /* Complete initialization of T.  This ensures that various fields in
347    T are set, if needed by the target implementation.  */
348
349 void
350 complete_target_initialization (struct target_ops *t)
351 {
352   /* Provide default values for all "must have" methods.  */
353   if (t->to_xfer_partial == NULL)
354     t->to_xfer_partial = default_xfer_partial;
355
356   if (t->to_has_all_memory == NULL)
357     t->to_has_all_memory = (int (*) (struct target_ops *)) return_zero;
358
359   if (t->to_has_memory == NULL)
360     t->to_has_memory = (int (*) (struct target_ops *)) return_zero;
361
362   if (t->to_has_stack == NULL)
363     t->to_has_stack = (int (*) (struct target_ops *)) return_zero;
364
365   if (t->to_has_registers == NULL)
366     t->to_has_registers = (int (*) (struct target_ops *)) return_zero;
367
368   if (t->to_has_execution == NULL)
369     t->to_has_execution = (int (*) (struct target_ops *, ptid_t)) return_zero;
370
371   install_delegators (t);
372 }
373
374 /* Add possible target architecture T to the list and add a new
375    command 'target T->to_shortname'.  Set COMPLETER as the command's
376    completer if not NULL.  */
377
378 void
379 add_target_with_completer (struct target_ops *t,
380                            completer_ftype *completer)
381 {
382   struct cmd_list_element *c;
383
384   complete_target_initialization (t);
385
386   if (!target_structs)
387     {
388       target_struct_allocsize = DEFAULT_ALLOCSIZE;
389       target_structs = (struct target_ops **) xmalloc
390         (target_struct_allocsize * sizeof (*target_structs));
391     }
392   if (target_struct_size >= target_struct_allocsize)
393     {
394       target_struct_allocsize *= 2;
395       target_structs = (struct target_ops **)
396         xrealloc ((char *) target_structs,
397                   target_struct_allocsize * sizeof (*target_structs));
398     }
399   target_structs[target_struct_size++] = t;
400
401   if (targetlist == NULL)
402     add_prefix_cmd ("target", class_run, target_command, _("\
403 Connect to a target machine or process.\n\
404 The first argument is the type or protocol of the target machine.\n\
405 Remaining arguments are interpreted by the target protocol.  For more\n\
406 information on the arguments for a particular protocol, type\n\
407 `help target ' followed by the protocol name."),
408                     &targetlist, "target ", 0, &cmdlist);
409   c = add_cmd (t->to_shortname, no_class, t->to_open, t->to_doc,
410                &targetlist);
411   if (completer != NULL)
412     set_cmd_completer (c, completer);
413 }
414
415 /* Add a possible target architecture to the list.  */
416
417 void
418 add_target (struct target_ops *t)
419 {
420   add_target_with_completer (t, NULL);
421 }
422
423 /* See target.h.  */
424
425 void
426 add_deprecated_target_alias (struct target_ops *t, char *alias)
427 {
428   struct cmd_list_element *c;
429   char *alt;
430
431   /* If we use add_alias_cmd, here, we do not get the deprecated warning,
432      see PR cli/15104.  */
433   c = add_cmd (alias, no_class, t->to_open, t->to_doc, &targetlist);
434   alt = xstrprintf ("target %s", t->to_shortname);
435   deprecate_cmd (c, alt);
436 }
437
438 /* Stub functions */
439
440 void
441 target_ignore (void)
442 {
443 }
444
445 void
446 target_kill (void)
447 {
448   struct target_ops *t;
449
450   for (t = current_target.beneath; t != NULL; t = t->beneath)
451     if (t->to_kill != NULL)
452       {
453         if (targetdebug)
454           fprintf_unfiltered (gdb_stdlog, "target_kill ()\n");
455
456         t->to_kill (t);
457         return;
458       }
459
460   noprocess ();
461 }
462
463 void
464 target_load (char *arg, int from_tty)
465 {
466   target_dcache_invalidate ();
467   (*current_target.to_load) (&current_target, arg, from_tty);
468 }
469
470 void
471 target_create_inferior (char *exec_file, char *args,
472                         char **env, int from_tty)
473 {
474   struct target_ops *t;
475
476   for (t = current_target.beneath; t != NULL; t = t->beneath)
477     {
478       if (t->to_create_inferior != NULL)        
479         {
480           t->to_create_inferior (t, exec_file, args, env, from_tty);
481           if (targetdebug)
482             fprintf_unfiltered (gdb_stdlog,
483                                 "target_create_inferior (%s, %s, xxx, %d)\n",
484                                 exec_file, args, from_tty);
485           return;
486         }
487     }
488
489   internal_error (__FILE__, __LINE__,
490                   _("could not find a target to create inferior"));
491 }
492
493 void
494 target_terminal_inferior (void)
495 {
496   /* A background resume (``run&'') should leave GDB in control of the
497      terminal.  Use target_can_async_p, not target_is_async_p, since at
498      this point the target is not async yet.  However, if sync_execution
499      is not set, we know it will become async prior to resume.  */
500   if (target_can_async_p () && !sync_execution)
501     return;
502
503   /* If GDB is resuming the inferior in the foreground, install
504      inferior's terminal modes.  */
505   (*current_target.to_terminal_inferior) (&current_target);
506 }
507
508 static int
509 nomemory (CORE_ADDR memaddr, char *myaddr, int len, int write,
510           struct target_ops *t)
511 {
512   errno = EIO;                  /* Can't read/write this location.  */
513   return 0;                     /* No bytes handled.  */
514 }
515
516 static void
517 tcomplain (void)
518 {
519   error (_("You can't do that when your target is `%s'"),
520          current_target.to_shortname);
521 }
522
523 void
524 noprocess (void)
525 {
526   error (_("You can't do that without a process to debug."));
527 }
528
529 static void
530 default_terminal_info (struct target_ops *self, const char *args, int from_tty)
531 {
532   printf_unfiltered (_("No saved terminal information.\n"));
533 }
534
535 /* A default implementation for the to_get_ada_task_ptid target method.
536
537    This function builds the PTID by using both LWP and TID as part of
538    the PTID lwp and tid elements.  The pid used is the pid of the
539    inferior_ptid.  */
540
541 static ptid_t
542 default_get_ada_task_ptid (struct target_ops *self, long lwp, long tid)
543 {
544   return ptid_build (ptid_get_pid (inferior_ptid), lwp, tid);
545 }
546
547 static enum exec_direction_kind
548 default_execution_direction (struct target_ops *self)
549 {
550   if (!target_can_execute_reverse)
551     return EXEC_FORWARD;
552   else if (!target_can_async_p ())
553     return EXEC_FORWARD;
554   else
555     gdb_assert_not_reached ("\
556 to_execution_direction must be implemented for reverse async");
557 }
558
559 /* Go through the target stack from top to bottom, copying over zero
560    entries in current_target, then filling in still empty entries.  In
561    effect, we are doing class inheritance through the pushed target
562    vectors.
563
564    NOTE: cagney/2003-10-17: The problem with this inheritance, as it
565    is currently implemented, is that it discards any knowledge of
566    which target an inherited method originally belonged to.
567    Consequently, new new target methods should instead explicitly and
568    locally search the target stack for the target that can handle the
569    request.  */
570
571 static void
572 update_current_target (void)
573 {
574   struct target_ops *t;
575
576   /* First, reset current's contents.  */
577   memset (&current_target, 0, sizeof (current_target));
578
579   /* Install the delegators.  */
580   install_delegators (&current_target);
581
582 #define INHERIT(FIELD, TARGET) \
583       if (!current_target.FIELD) \
584         current_target.FIELD = (TARGET)->FIELD
585
586   for (t = target_stack; t; t = t->beneath)
587     {
588       INHERIT (to_shortname, t);
589       INHERIT (to_longname, t);
590       INHERIT (to_doc, t);
591       /* Do not inherit to_open.  */
592       /* Do not inherit to_close.  */
593       /* Do not inherit to_attach.  */
594       /* Do not inherit to_post_attach.  */
595       INHERIT (to_attach_no_wait, t);
596       /* Do not inherit to_detach.  */
597       /* Do not inherit to_disconnect.  */
598       /* Do not inherit to_resume.  */
599       /* Do not inherit to_wait.  */
600       /* Do not inherit to_fetch_registers.  */
601       /* Do not inherit to_store_registers.  */
602       /* Do not inherit to_prepare_to_store.  */
603       INHERIT (deprecated_xfer_memory, t);
604       /* Do not inherit to_files_info.  */
605       /* Do not inherit to_insert_breakpoint.  */
606       /* Do not inherit to_remove_breakpoint.  */
607       /* Do not inherit to_can_use_hw_breakpoint.  */
608       /* Do not inherit to_insert_hw_breakpoint.  */
609       /* Do not inherit to_remove_hw_breakpoint.  */
610       /* Do not inherit to_ranged_break_num_registers.  */
611       /* Do not inherit to_insert_watchpoint.  */
612       /* Do not inherit to_remove_watchpoint.  */
613       /* Do not inherit to_insert_mask_watchpoint.  */
614       /* Do not inherit to_remove_mask_watchpoint.  */
615       /* Do not inherit to_stopped_data_address.  */
616       INHERIT (to_have_steppable_watchpoint, t);
617       INHERIT (to_have_continuable_watchpoint, t);
618       /* Do not inherit to_stopped_by_watchpoint.  */
619       /* Do not inherit to_watchpoint_addr_within_range.  */
620       /* Do not inherit to_region_ok_for_hw_watchpoint.  */
621       /* Do not inherit to_can_accel_watchpoint_condition.  */
622       /* Do not inherit to_masked_watch_num_registers.  */
623       /* Do not inherit to_terminal_init.  */
624       /* Do not inherit to_terminal_inferior.  */
625       /* Do not inherit to_terminal_ours_for_output.  */
626       /* Do not inherit to_terminal_ours.  */
627       /* Do not inherit to_terminal_save_ours.  */
628       /* Do not inherit to_terminal_info.  */
629       /* Do not inherit to_kill.  */
630       /* Do not inherit to_load.  */
631       /* Do no inherit to_create_inferior.  */
632       /* Do not inherit to_post_startup_inferior.  */
633       /* Do not inherit to_insert_fork_catchpoint.  */
634       /* Do not inherit to_remove_fork_catchpoint.  */
635       /* Do not inherit to_insert_vfork_catchpoint.  */
636       /* Do not inherit to_remove_vfork_catchpoint.  */
637       /* Do not inherit to_follow_fork.  */
638       /* Do not inherit to_insert_exec_catchpoint.  */
639       INHERIT (to_remove_exec_catchpoint, t);
640       INHERIT (to_set_syscall_catchpoint, t);
641       INHERIT (to_has_exited, t);
642       /* Do not inherit to_mourn_inferior.  */
643       INHERIT (to_can_run, t);
644       /* Do not inherit to_pass_signals.  */
645       /* Do not inherit to_program_signals.  */
646       /* Do not inherit to_thread_alive.  */
647       /* Do not inherit to_find_new_threads.  */
648       /* Do not inherit to_pid_to_str.  */
649       INHERIT (to_extra_thread_info, t);
650       INHERIT (to_thread_name, t);
651       INHERIT (to_stop, t);
652       /* Do not inherit to_xfer_partial.  */
653       /* Do not inherit to_rcmd.  */
654       INHERIT (to_pid_to_exec_file, t);
655       INHERIT (to_log_command, t);
656       INHERIT (to_stratum, t);
657       /* Do not inherit to_has_all_memory.  */
658       /* Do not inherit to_has_memory.  */
659       /* Do not inherit to_has_stack.  */
660       /* Do not inherit to_has_registers.  */
661       /* Do not inherit to_has_execution.  */
662       INHERIT (to_has_thread_control, t);
663       /* Do not inherit to_can_async_p.  */
664       /* Do not inherit to_is_async_p.  */
665       /* Do not inherit to_async.  */
666       INHERIT (to_find_memory_regions, t);
667       INHERIT (to_make_corefile_notes, t);
668       INHERIT (to_get_bookmark, t);
669       INHERIT (to_goto_bookmark, t);
670       /* Do not inherit to_get_thread_local_address.  */
671       INHERIT (to_can_execute_reverse, t);
672       INHERIT (to_execution_direction, t);
673       INHERIT (to_thread_architecture, t);
674       /* Do not inherit to_read_description.  */
675       INHERIT (to_get_ada_task_ptid, t);
676       /* Do not inherit to_search_memory.  */
677       INHERIT (to_supports_multi_process, t);
678       INHERIT (to_supports_enable_disable_tracepoint, t);
679       INHERIT (to_supports_string_tracing, t);
680       INHERIT (to_trace_init, t);
681       INHERIT (to_download_tracepoint, t);
682       INHERIT (to_can_download_tracepoint, t);
683       INHERIT (to_download_trace_state_variable, t);
684       INHERIT (to_enable_tracepoint, t);
685       INHERIT (to_disable_tracepoint, t);
686       INHERIT (to_trace_set_readonly_regions, t);
687       INHERIT (to_trace_start, t);
688       INHERIT (to_get_trace_status, t);
689       INHERIT (to_get_tracepoint_status, t);
690       INHERIT (to_trace_stop, t);
691       INHERIT (to_trace_find, t);
692       INHERIT (to_get_trace_state_variable_value, t);
693       INHERIT (to_save_trace_data, t);
694       INHERIT (to_upload_tracepoints, t);
695       INHERIT (to_upload_trace_state_variables, t);
696       INHERIT (to_get_raw_trace_data, t);
697       INHERIT (to_get_min_fast_tracepoint_insn_len, t);
698       INHERIT (to_set_disconnected_tracing, t);
699       INHERIT (to_set_circular_trace_buffer, t);
700       INHERIT (to_set_trace_buffer_size, t);
701       INHERIT (to_set_trace_notes, t);
702       INHERIT (to_get_tib_address, t);
703       INHERIT (to_set_permissions, t);
704       INHERIT (to_static_tracepoint_marker_at, t);
705       INHERIT (to_static_tracepoint_markers_by_strid, t);
706       INHERIT (to_traceframe_info, t);
707       INHERIT (to_use_agent, t);
708       INHERIT (to_can_use_agent, t);
709       INHERIT (to_augmented_libraries_svr4_read, t);
710       INHERIT (to_magic, t);
711       INHERIT (to_supports_evaluation_of_breakpoint_conditions, t);
712       INHERIT (to_can_run_breakpoint_commands, t);
713       /* Do not inherit to_memory_map.  */
714       /* Do not inherit to_flash_erase.  */
715       /* Do not inherit to_flash_done.  */
716     }
717 #undef INHERIT
718
719   /* Clean up a target struct so it no longer has any zero pointers in
720      it.  Some entries are defaulted to a method that print an error,
721      others are hard-wired to a standard recursive default.  */
722
723 #define de_fault(field, value) \
724   if (!current_target.field)               \
725     current_target.field = value
726
727   de_fault (to_open,
728             (void (*) (char *, int))
729             tcomplain);
730   de_fault (to_close,
731             (void (*) (struct target_ops *))
732             target_ignore);
733   de_fault (deprecated_xfer_memory,
734             (int (*) (CORE_ADDR, gdb_byte *, int, int,
735                       struct mem_attrib *, struct target_ops *))
736             nomemory);
737   de_fault (to_remove_exec_catchpoint,
738             (int (*) (struct target_ops *, int))
739             return_one);
740   de_fault (to_set_syscall_catchpoint,
741             (int (*) (struct target_ops *, int, int, int, int, int *))
742             return_one);
743   de_fault (to_has_exited,
744             (int (*) (struct target_ops *, int, int, int *))
745             return_zero);
746   de_fault (to_can_run,
747             (int (*) (struct target_ops *))
748             return_zero);
749   de_fault (to_extra_thread_info,
750             (char *(*) (struct target_ops *, struct thread_info *))
751             return_null);
752   de_fault (to_thread_name,
753             (char *(*) (struct target_ops *, struct thread_info *))
754             return_null);
755   de_fault (to_stop,
756             (void (*) (struct target_ops *, ptid_t))
757             target_ignore);
758   de_fault (to_pid_to_exec_file,
759             (char *(*) (struct target_ops *, int))
760             return_null);
761   de_fault (to_thread_architecture,
762             default_thread_architecture);
763   current_target.to_read_description = NULL;
764   de_fault (to_get_ada_task_ptid,
765             (ptid_t (*) (struct target_ops *, long, long))
766             default_get_ada_task_ptid);
767   de_fault (to_supports_multi_process,
768             (int (*) (struct target_ops *))
769             return_zero);
770   de_fault (to_supports_enable_disable_tracepoint,
771             (int (*) (struct target_ops *))
772             return_zero);
773   de_fault (to_supports_string_tracing,
774             (int (*) (struct target_ops *))
775             return_zero);
776   de_fault (to_trace_init,
777             (void (*) (struct target_ops *))
778             tcomplain);
779   de_fault (to_download_tracepoint,
780             (void (*) (struct target_ops *, struct bp_location *))
781             tcomplain);
782   de_fault (to_can_download_tracepoint,
783             (int (*) (struct target_ops *))
784             return_zero);
785   de_fault (to_download_trace_state_variable,
786             (void (*) (struct target_ops *, struct trace_state_variable *))
787             tcomplain);
788   de_fault (to_enable_tracepoint,
789             (void (*) (struct target_ops *, struct bp_location *))
790             tcomplain);
791   de_fault (to_disable_tracepoint,
792             (void (*) (struct target_ops *, struct bp_location *))
793             tcomplain);
794   de_fault (to_trace_set_readonly_regions,
795             (void (*) (struct target_ops *))
796             tcomplain);
797   de_fault (to_trace_start,
798             (void (*) (struct target_ops *))
799             tcomplain);
800   de_fault (to_get_trace_status,
801             (int (*) (struct target_ops *, struct trace_status *))
802             return_minus_one);
803   de_fault (to_get_tracepoint_status,
804             (void (*) (struct target_ops *, struct breakpoint *,
805                        struct uploaded_tp *))
806             tcomplain);
807   de_fault (to_trace_stop,
808             (void (*) (struct target_ops *))
809             tcomplain);
810   de_fault (to_trace_find,
811             (int (*) (struct target_ops *,
812                       enum trace_find_type, int, CORE_ADDR, CORE_ADDR, int *))
813             return_minus_one);
814   de_fault (to_get_trace_state_variable_value,
815             (int (*) (struct target_ops *, int, LONGEST *))
816             return_zero);
817   de_fault (to_save_trace_data,
818             (int (*) (struct target_ops *, const char *))
819             tcomplain);
820   de_fault (to_upload_tracepoints,
821             (int (*) (struct target_ops *, struct uploaded_tp **))
822             return_zero);
823   de_fault (to_upload_trace_state_variables,
824             (int (*) (struct target_ops *, struct uploaded_tsv **))
825             return_zero);
826   de_fault (to_get_raw_trace_data,
827             (LONGEST (*) (struct target_ops *, gdb_byte *, ULONGEST, LONGEST))
828             tcomplain);
829   de_fault (to_get_min_fast_tracepoint_insn_len,
830             (int (*) (struct target_ops *))
831             return_minus_one);
832   de_fault (to_set_disconnected_tracing,
833             (void (*) (struct target_ops *, int))
834             target_ignore);
835   de_fault (to_set_circular_trace_buffer,
836             (void (*) (struct target_ops *, int))
837             target_ignore);
838   de_fault (to_set_trace_buffer_size,
839             (void (*) (struct target_ops *, LONGEST))
840             target_ignore);
841   de_fault (to_set_trace_notes,
842             (int (*) (struct target_ops *,
843                       const char *, const char *, const char *))
844             return_zero);
845   de_fault (to_get_tib_address,
846             (int (*) (struct target_ops *, ptid_t, CORE_ADDR *))
847             tcomplain);
848   de_fault (to_set_permissions,
849             (void (*) (struct target_ops *))
850             target_ignore);
851   de_fault (to_static_tracepoint_marker_at,
852             (int (*) (struct target_ops *,
853                       CORE_ADDR, struct static_tracepoint_marker *))
854             return_zero);
855   de_fault (to_static_tracepoint_markers_by_strid,
856             (VEC(static_tracepoint_marker_p) * (*) (struct target_ops *,
857                                                     const char *))
858             tcomplain);
859   de_fault (to_traceframe_info,
860             (struct traceframe_info * (*) (struct target_ops *))
861             return_null);
862   de_fault (to_supports_evaluation_of_breakpoint_conditions,
863             (int (*) (struct target_ops *))
864             return_zero);
865   de_fault (to_can_run_breakpoint_commands,
866             (int (*) (struct target_ops *))
867             return_zero);
868   de_fault (to_use_agent,
869             (int (*) (struct target_ops *, int))
870             tcomplain);
871   de_fault (to_can_use_agent,
872             (int (*) (struct target_ops *))
873             return_zero);
874   de_fault (to_augmented_libraries_svr4_read,
875             (int (*) (struct target_ops *))
876             return_zero);
877   de_fault (to_execution_direction, default_execution_direction);
878
879 #undef de_fault
880
881   /* Finally, position the target-stack beneath the squashed
882      "current_target".  That way code looking for a non-inherited
883      target method can quickly and simply find it.  */
884   current_target.beneath = target_stack;
885
886   if (targetdebug)
887     setup_target_debug ();
888 }
889
890 /* Push a new target type into the stack of the existing target accessors,
891    possibly superseding some of the existing accessors.
892
893    Rather than allow an empty stack, we always have the dummy target at
894    the bottom stratum, so we can call the function vectors without
895    checking them.  */
896
897 void
898 push_target (struct target_ops *t)
899 {
900   struct target_ops **cur;
901
902   /* Check magic number.  If wrong, it probably means someone changed
903      the struct definition, but not all the places that initialize one.  */
904   if (t->to_magic != OPS_MAGIC)
905     {
906       fprintf_unfiltered (gdb_stderr,
907                           "Magic number of %s target struct wrong\n",
908                           t->to_shortname);
909       internal_error (__FILE__, __LINE__,
910                       _("failed internal consistency check"));
911     }
912
913   /* Find the proper stratum to install this target in.  */
914   for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
915     {
916       if ((int) (t->to_stratum) >= (int) (*cur)->to_stratum)
917         break;
918     }
919
920   /* If there's already targets at this stratum, remove them.  */
921   /* FIXME: cagney/2003-10-15: I think this should be popping all
922      targets to CUR, and not just those at this stratum level.  */
923   while ((*cur) != NULL && t->to_stratum == (*cur)->to_stratum)
924     {
925       /* There's already something at this stratum level.  Close it,
926          and un-hook it from the stack.  */
927       struct target_ops *tmp = (*cur);
928
929       (*cur) = (*cur)->beneath;
930       tmp->beneath = NULL;
931       target_close (tmp);
932     }
933
934   /* We have removed all targets in our stratum, now add the new one.  */
935   t->beneath = (*cur);
936   (*cur) = t;
937
938   update_current_target ();
939 }
940
941 /* Remove a target_ops vector from the stack, wherever it may be.
942    Return how many times it was removed (0 or 1).  */
943
944 int
945 unpush_target (struct target_ops *t)
946 {
947   struct target_ops **cur;
948   struct target_ops *tmp;
949
950   if (t->to_stratum == dummy_stratum)
951     internal_error (__FILE__, __LINE__,
952                     _("Attempt to unpush the dummy target"));
953
954   /* Look for the specified target.  Note that we assume that a target
955      can only occur once in the target stack.  */
956
957   for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
958     {
959       if ((*cur) == t)
960         break;
961     }
962
963   /* If we don't find target_ops, quit.  Only open targets should be
964      closed.  */
965   if ((*cur) == NULL)
966     return 0;                   
967
968   /* Unchain the target.  */
969   tmp = (*cur);
970   (*cur) = (*cur)->beneath;
971   tmp->beneath = NULL;
972
973   update_current_target ();
974
975   /* Finally close the target.  Note we do this after unchaining, so
976      any target method calls from within the target_close
977      implementation don't end up in T anymore.  */
978   target_close (t);
979
980   return 1;
981 }
982
983 void
984 pop_all_targets_above (enum strata above_stratum)
985 {
986   while ((int) (current_target.to_stratum) > (int) above_stratum)
987     {
988       if (!unpush_target (target_stack))
989         {
990           fprintf_unfiltered (gdb_stderr,
991                               "pop_all_targets couldn't find target %s\n",
992                               target_stack->to_shortname);
993           internal_error (__FILE__, __LINE__,
994                           _("failed internal consistency check"));
995           break;
996         }
997     }
998 }
999
1000 void
1001 pop_all_targets (void)
1002 {
1003   pop_all_targets_above (dummy_stratum);
1004 }
1005
1006 /* Return 1 if T is now pushed in the target stack.  Return 0 otherwise.  */
1007
1008 int
1009 target_is_pushed (struct target_ops *t)
1010 {
1011   struct target_ops **cur;
1012
1013   /* Check magic number.  If wrong, it probably means someone changed
1014      the struct definition, but not all the places that initialize one.  */
1015   if (t->to_magic != OPS_MAGIC)
1016     {
1017       fprintf_unfiltered (gdb_stderr,
1018                           "Magic number of %s target struct wrong\n",
1019                           t->to_shortname);
1020       internal_error (__FILE__, __LINE__,
1021                       _("failed internal consistency check"));
1022     }
1023
1024   for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
1025     if (*cur == t)
1026       return 1;
1027
1028   return 0;
1029 }
1030
1031 /* Using the objfile specified in OBJFILE, find the address for the
1032    current thread's thread-local storage with offset OFFSET.  */
1033 CORE_ADDR
1034 target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset)
1035 {
1036   volatile CORE_ADDR addr = 0;
1037   struct target_ops *target;
1038
1039   for (target = current_target.beneath;
1040        target != NULL;
1041        target = target->beneath)
1042     {
1043       if (target->to_get_thread_local_address != NULL)
1044         break;
1045     }
1046
1047   if (target != NULL
1048       && gdbarch_fetch_tls_load_module_address_p (target_gdbarch ()))
1049     {
1050       ptid_t ptid = inferior_ptid;
1051       volatile struct gdb_exception ex;
1052
1053       TRY_CATCH (ex, RETURN_MASK_ALL)
1054         {
1055           CORE_ADDR lm_addr;
1056           
1057           /* Fetch the load module address for this objfile.  */
1058           lm_addr = gdbarch_fetch_tls_load_module_address (target_gdbarch (),
1059                                                            objfile);
1060           /* If it's 0, throw the appropriate exception.  */
1061           if (lm_addr == 0)
1062             throw_error (TLS_LOAD_MODULE_NOT_FOUND_ERROR,
1063                          _("TLS load module not found"));
1064
1065           addr = target->to_get_thread_local_address (target, ptid,
1066                                                       lm_addr, offset);
1067         }
1068       /* If an error occurred, print TLS related messages here.  Otherwise,
1069          throw the error to some higher catcher.  */
1070       if (ex.reason < 0)
1071         {
1072           int objfile_is_library = (objfile->flags & OBJF_SHARED);
1073
1074           switch (ex.error)
1075             {
1076             case TLS_NO_LIBRARY_SUPPORT_ERROR:
1077               error (_("Cannot find thread-local variables "
1078                        "in this thread library."));
1079               break;
1080             case TLS_LOAD_MODULE_NOT_FOUND_ERROR:
1081               if (objfile_is_library)
1082                 error (_("Cannot find shared library `%s' in dynamic"
1083                          " linker's load module list"), objfile_name (objfile));
1084               else
1085                 error (_("Cannot find executable file `%s' in dynamic"
1086                          " linker's load module list"), objfile_name (objfile));
1087               break;
1088             case TLS_NOT_ALLOCATED_YET_ERROR:
1089               if (objfile_is_library)
1090                 error (_("The inferior has not yet allocated storage for"
1091                          " thread-local variables in\n"
1092                          "the shared library `%s'\n"
1093                          "for %s"),
1094                        objfile_name (objfile), target_pid_to_str (ptid));
1095               else
1096                 error (_("The inferior has not yet allocated storage for"
1097                          " thread-local variables in\n"
1098                          "the executable `%s'\n"
1099                          "for %s"),
1100                        objfile_name (objfile), target_pid_to_str (ptid));
1101               break;
1102             case TLS_GENERIC_ERROR:
1103               if (objfile_is_library)
1104                 error (_("Cannot find thread-local storage for %s, "
1105                          "shared library %s:\n%s"),
1106                        target_pid_to_str (ptid),
1107                        objfile_name (objfile), ex.message);
1108               else
1109                 error (_("Cannot find thread-local storage for %s, "
1110                          "executable file %s:\n%s"),
1111                        target_pid_to_str (ptid),
1112                        objfile_name (objfile), ex.message);
1113               break;
1114             default:
1115               throw_exception (ex);
1116               break;
1117             }
1118         }
1119     }
1120   /* It wouldn't be wrong here to try a gdbarch method, too; finding
1121      TLS is an ABI-specific thing.  But we don't do that yet.  */
1122   else
1123     error (_("Cannot find thread-local variables on this target"));
1124
1125   return addr;
1126 }
1127
1128 const char *
1129 target_xfer_status_to_string (enum target_xfer_status err)
1130 {
1131 #define CASE(X) case X: return #X
1132   switch (err)
1133     {
1134       CASE(TARGET_XFER_E_IO);
1135       CASE(TARGET_XFER_E_UNAVAILABLE);
1136     default:
1137       return "<unknown>";
1138     }
1139 #undef CASE
1140 };
1141
1142
1143 #undef  MIN
1144 #define MIN(A, B) (((A) <= (B)) ? (A) : (B))
1145
1146 /* target_read_string -- read a null terminated string, up to LEN bytes,
1147    from MEMADDR in target.  Set *ERRNOP to the errno code, or 0 if successful.
1148    Set *STRING to a pointer to malloc'd memory containing the data; the caller
1149    is responsible for freeing it.  Return the number of bytes successfully
1150    read.  */
1151
1152 int
1153 target_read_string (CORE_ADDR memaddr, char **string, int len, int *errnop)
1154 {
1155   int tlen, offset, i;
1156   gdb_byte buf[4];
1157   int errcode = 0;
1158   char *buffer;
1159   int buffer_allocated;
1160   char *bufptr;
1161   unsigned int nbytes_read = 0;
1162
1163   gdb_assert (string);
1164
1165   /* Small for testing.  */
1166   buffer_allocated = 4;
1167   buffer = xmalloc (buffer_allocated);
1168   bufptr = buffer;
1169
1170   while (len > 0)
1171     {
1172       tlen = MIN (len, 4 - (memaddr & 3));
1173       offset = memaddr & 3;
1174
1175       errcode = target_read_memory (memaddr & ~3, buf, sizeof buf);
1176       if (errcode != 0)
1177         {
1178           /* The transfer request might have crossed the boundary to an
1179              unallocated region of memory.  Retry the transfer, requesting
1180              a single byte.  */
1181           tlen = 1;
1182           offset = 0;
1183           errcode = target_read_memory (memaddr, buf, 1);
1184           if (errcode != 0)
1185             goto done;
1186         }
1187
1188       if (bufptr - buffer + tlen > buffer_allocated)
1189         {
1190           unsigned int bytes;
1191
1192           bytes = bufptr - buffer;
1193           buffer_allocated *= 2;
1194           buffer = xrealloc (buffer, buffer_allocated);
1195           bufptr = buffer + bytes;
1196         }
1197
1198       for (i = 0; i < tlen; i++)
1199         {
1200           *bufptr++ = buf[i + offset];
1201           if (buf[i + offset] == '\000')
1202             {
1203               nbytes_read += i + 1;
1204               goto done;
1205             }
1206         }
1207
1208       memaddr += tlen;
1209       len -= tlen;
1210       nbytes_read += tlen;
1211     }
1212 done:
1213   *string = buffer;
1214   if (errnop != NULL)
1215     *errnop = errcode;
1216   return nbytes_read;
1217 }
1218
1219 struct target_section_table *
1220 target_get_section_table (struct target_ops *target)
1221 {
1222   struct target_ops *t;
1223
1224   if (targetdebug)
1225     fprintf_unfiltered (gdb_stdlog, "target_get_section_table ()\n");
1226
1227   for (t = target; t != NULL; t = t->beneath)
1228     if (t->to_get_section_table != NULL)
1229       return (*t->to_get_section_table) (t);
1230
1231   return NULL;
1232 }
1233
1234 /* Find a section containing ADDR.  */
1235
1236 struct target_section *
1237 target_section_by_addr (struct target_ops *target, CORE_ADDR addr)
1238 {
1239   struct target_section_table *table = target_get_section_table (target);
1240   struct target_section *secp;
1241
1242   if (table == NULL)
1243     return NULL;
1244
1245   for (secp = table->sections; secp < table->sections_end; secp++)
1246     {
1247       if (addr >= secp->addr && addr < secp->endaddr)
1248         return secp;
1249     }
1250   return NULL;
1251 }
1252
1253 /* Read memory from the live target, even if currently inspecting a
1254    traceframe.  The return is the same as that of target_read.  */
1255
1256 static enum target_xfer_status
1257 target_read_live_memory (enum target_object object,
1258                          ULONGEST memaddr, gdb_byte *myaddr, ULONGEST len,
1259                          ULONGEST *xfered_len)
1260 {
1261   enum target_xfer_status ret;
1262   struct cleanup *cleanup;
1263
1264   /* Switch momentarily out of tfind mode so to access live memory.
1265      Note that this must not clear global state, such as the frame
1266      cache, which must still remain valid for the previous traceframe.
1267      We may be _building_ the frame cache at this point.  */
1268   cleanup = make_cleanup_restore_traceframe_number ();
1269   set_traceframe_number (-1);
1270
1271   ret = target_xfer_partial (current_target.beneath, object, NULL,
1272                              myaddr, NULL, memaddr, len, xfered_len);
1273
1274   do_cleanups (cleanup);
1275   return ret;
1276 }
1277
1278 /* Using the set of read-only target sections of OPS, read live
1279    read-only memory.  Note that the actual reads start from the
1280    top-most target again.
1281
1282    For interface/parameters/return description see target.h,
1283    to_xfer_partial.  */
1284
1285 static enum target_xfer_status
1286 memory_xfer_live_readonly_partial (struct target_ops *ops,
1287                                    enum target_object object,
1288                                    gdb_byte *readbuf, ULONGEST memaddr,
1289                                    ULONGEST len, ULONGEST *xfered_len)
1290 {
1291   struct target_section *secp;
1292   struct target_section_table *table;
1293
1294   secp = target_section_by_addr (ops, memaddr);
1295   if (secp != NULL
1296       && (bfd_get_section_flags (secp->the_bfd_section->owner,
1297                                  secp->the_bfd_section)
1298           & SEC_READONLY))
1299     {
1300       struct target_section *p;
1301       ULONGEST memend = memaddr + len;
1302
1303       table = target_get_section_table (ops);
1304
1305       for (p = table->sections; p < table->sections_end; p++)
1306         {
1307           if (memaddr >= p->addr)
1308             {
1309               if (memend <= p->endaddr)
1310                 {
1311                   /* Entire transfer is within this section.  */
1312                   return target_read_live_memory (object, memaddr,
1313                                                   readbuf, len, xfered_len);
1314                 }
1315               else if (memaddr >= p->endaddr)
1316                 {
1317                   /* This section ends before the transfer starts.  */
1318                   continue;
1319                 }
1320               else
1321                 {
1322                   /* This section overlaps the transfer.  Just do half.  */
1323                   len = p->endaddr - memaddr;
1324                   return target_read_live_memory (object, memaddr,
1325                                                   readbuf, len, xfered_len);
1326                 }
1327             }
1328         }
1329     }
1330
1331   return TARGET_XFER_EOF;
1332 }
1333
1334 /* Read memory from more than one valid target.  A core file, for
1335    instance, could have some of memory but delegate other bits to
1336    the target below it.  So, we must manually try all targets.  */
1337
1338 static enum target_xfer_status
1339 raw_memory_xfer_partial (struct target_ops *ops, gdb_byte *readbuf,
1340                          const gdb_byte *writebuf, ULONGEST memaddr, LONGEST len,
1341                          ULONGEST *xfered_len)
1342 {
1343   enum target_xfer_status res;
1344
1345   do
1346     {
1347       res = ops->to_xfer_partial (ops, TARGET_OBJECT_MEMORY, NULL,
1348                                   readbuf, writebuf, memaddr, len,
1349                                   xfered_len);
1350       if (res == TARGET_XFER_OK)
1351         break;
1352
1353       /* Stop if the target reports that the memory is not available.  */
1354       if (res == TARGET_XFER_E_UNAVAILABLE)
1355         break;
1356
1357       /* We want to continue past core files to executables, but not
1358          past a running target's memory.  */
1359       if (ops->to_has_all_memory (ops))
1360         break;
1361
1362       ops = ops->beneath;
1363     }
1364   while (ops != NULL);
1365
1366   return res;
1367 }
1368
1369 /* Perform a partial memory transfer.
1370    For docs see target.h, to_xfer_partial.  */
1371
1372 static enum target_xfer_status
1373 memory_xfer_partial_1 (struct target_ops *ops, enum target_object object,
1374                        gdb_byte *readbuf, const gdb_byte *writebuf, ULONGEST memaddr,
1375                        ULONGEST len, ULONGEST *xfered_len)
1376 {
1377   enum target_xfer_status res;
1378   int reg_len;
1379   struct mem_region *region;
1380   struct inferior *inf;
1381
1382   /* For accesses to unmapped overlay sections, read directly from
1383      files.  Must do this first, as MEMADDR may need adjustment.  */
1384   if (readbuf != NULL && overlay_debugging)
1385     {
1386       struct obj_section *section = find_pc_overlay (memaddr);
1387
1388       if (pc_in_unmapped_range (memaddr, section))
1389         {
1390           struct target_section_table *table
1391             = target_get_section_table (ops);
1392           const char *section_name = section->the_bfd_section->name;
1393
1394           memaddr = overlay_mapped_address (memaddr, section);
1395           return section_table_xfer_memory_partial (readbuf, writebuf,
1396                                                     memaddr, len, xfered_len,
1397                                                     table->sections,
1398                                                     table->sections_end,
1399                                                     section_name);
1400         }
1401     }
1402
1403   /* Try the executable files, if "trust-readonly-sections" is set.  */
1404   if (readbuf != NULL && trust_readonly)
1405     {
1406       struct target_section *secp;
1407       struct target_section_table *table;
1408
1409       secp = target_section_by_addr (ops, memaddr);
1410       if (secp != NULL
1411           && (bfd_get_section_flags (secp->the_bfd_section->owner,
1412                                      secp->the_bfd_section)
1413               & SEC_READONLY))
1414         {
1415           table = target_get_section_table (ops);
1416           return section_table_xfer_memory_partial (readbuf, writebuf,
1417                                                     memaddr, len, xfered_len,
1418                                                     table->sections,
1419                                                     table->sections_end,
1420                                                     NULL);
1421         }
1422     }
1423
1424   /* If reading unavailable memory in the context of traceframes, and
1425      this address falls within a read-only section, fallback to
1426      reading from live memory.  */
1427   if (readbuf != NULL && get_traceframe_number () != -1)
1428     {
1429       VEC(mem_range_s) *available;
1430
1431       /* If we fail to get the set of available memory, then the
1432          target does not support querying traceframe info, and so we
1433          attempt reading from the traceframe anyway (assuming the
1434          target implements the old QTro packet then).  */
1435       if (traceframe_available_memory (&available, memaddr, len))
1436         {
1437           struct cleanup *old_chain;
1438
1439           old_chain = make_cleanup (VEC_cleanup(mem_range_s), &available);
1440
1441           if (VEC_empty (mem_range_s, available)
1442               || VEC_index (mem_range_s, available, 0)->start != memaddr)
1443             {
1444               /* Don't read into the traceframe's available
1445                  memory.  */
1446               if (!VEC_empty (mem_range_s, available))
1447                 {
1448                   LONGEST oldlen = len;
1449
1450                   len = VEC_index (mem_range_s, available, 0)->start - memaddr;
1451                   gdb_assert (len <= oldlen);
1452                 }
1453
1454               do_cleanups (old_chain);
1455
1456               /* This goes through the topmost target again.  */
1457               res = memory_xfer_live_readonly_partial (ops, object,
1458                                                        readbuf, memaddr,
1459                                                        len, xfered_len);
1460               if (res == TARGET_XFER_OK)
1461                 return TARGET_XFER_OK;
1462               else
1463                 {
1464                   /* No use trying further, we know some memory starting
1465                      at MEMADDR isn't available.  */
1466                   *xfered_len = len;
1467                   return TARGET_XFER_E_UNAVAILABLE;
1468                 }
1469             }
1470
1471           /* Don't try to read more than how much is available, in
1472              case the target implements the deprecated QTro packet to
1473              cater for older GDBs (the target's knowledge of read-only
1474              sections may be outdated by now).  */
1475           len = VEC_index (mem_range_s, available, 0)->length;
1476
1477           do_cleanups (old_chain);
1478         }
1479     }
1480
1481   /* Try GDB's internal data cache.  */
1482   region = lookup_mem_region (memaddr);
1483   /* region->hi == 0 means there's no upper bound.  */
1484   if (memaddr + len < region->hi || region->hi == 0)
1485     reg_len = len;
1486   else
1487     reg_len = region->hi - memaddr;
1488
1489   switch (region->attrib.mode)
1490     {
1491     case MEM_RO:
1492       if (writebuf != NULL)
1493         return TARGET_XFER_E_IO;
1494       break;
1495
1496     case MEM_WO:
1497       if (readbuf != NULL)
1498         return TARGET_XFER_E_IO;
1499       break;
1500
1501     case MEM_FLASH:
1502       /* We only support writing to flash during "load" for now.  */
1503       if (writebuf != NULL)
1504         error (_("Writing to flash memory forbidden in this context"));
1505       break;
1506
1507     case MEM_NONE:
1508       return TARGET_XFER_E_IO;
1509     }
1510
1511   if (!ptid_equal (inferior_ptid, null_ptid))
1512     inf = find_inferior_pid (ptid_get_pid (inferior_ptid));
1513   else
1514     inf = NULL;
1515
1516   if (inf != NULL
1517       /* The dcache reads whole cache lines; that doesn't play well
1518          with reading from a trace buffer, because reading outside of
1519          the collected memory range fails.  */
1520       && get_traceframe_number () == -1
1521       && (region->attrib.cache
1522           || (stack_cache_enabled_p () && object == TARGET_OBJECT_STACK_MEMORY)
1523           || (code_cache_enabled_p () && object == TARGET_OBJECT_CODE_MEMORY)))
1524     {
1525       DCACHE *dcache = target_dcache_get_or_init ();
1526       int l;
1527
1528       if (readbuf != NULL)
1529         l = dcache_xfer_memory (ops, dcache, memaddr, readbuf, reg_len, 0);
1530       else
1531         /* FIXME drow/2006-08-09: If we're going to preserve const
1532            correctness dcache_xfer_memory should take readbuf and
1533            writebuf.  */
1534         l = dcache_xfer_memory (ops, dcache, memaddr, (void *) writebuf,
1535                                   reg_len, 1);
1536       if (l <= 0)
1537         return TARGET_XFER_E_IO;
1538       else
1539         {
1540           *xfered_len = (ULONGEST) l;
1541           return TARGET_XFER_OK;
1542         }
1543     }
1544
1545   /* If none of those methods found the memory we wanted, fall back
1546      to a target partial transfer.  Normally a single call to
1547      to_xfer_partial is enough; if it doesn't recognize an object
1548      it will call the to_xfer_partial of the next target down.
1549      But for memory this won't do.  Memory is the only target
1550      object which can be read from more than one valid target.
1551      A core file, for instance, could have some of memory but
1552      delegate other bits to the target below it.  So, we must
1553      manually try all targets.  */
1554
1555   res = raw_memory_xfer_partial (ops, readbuf, writebuf, memaddr, reg_len,
1556                                  xfered_len);
1557
1558   /* Make sure the cache gets updated no matter what - if we are writing
1559      to the stack.  Even if this write is not tagged as such, we still need
1560      to update the cache.  */
1561
1562   if (res == TARGET_XFER_OK
1563       && inf != NULL
1564       && writebuf != NULL
1565       && target_dcache_init_p ()
1566       && !region->attrib.cache
1567       && ((stack_cache_enabled_p () && object != TARGET_OBJECT_STACK_MEMORY)
1568           || (code_cache_enabled_p () && object != TARGET_OBJECT_CODE_MEMORY)))
1569     {
1570       DCACHE *dcache = target_dcache_get ();
1571
1572       dcache_update (dcache, memaddr, (void *) writebuf, reg_len);
1573     }
1574
1575   /* If we still haven't got anything, return the last error.  We
1576      give up.  */
1577   return res;
1578 }
1579
1580 /* Perform a partial memory transfer.  For docs see target.h,
1581    to_xfer_partial.  */
1582
1583 static enum target_xfer_status
1584 memory_xfer_partial (struct target_ops *ops, enum target_object object,
1585                      gdb_byte *readbuf, const gdb_byte *writebuf,
1586                      ULONGEST memaddr, ULONGEST len, ULONGEST *xfered_len)
1587 {
1588   enum target_xfer_status res;
1589
1590   /* Zero length requests are ok and require no work.  */
1591   if (len == 0)
1592     return TARGET_XFER_EOF;
1593
1594   /* Fill in READBUF with breakpoint shadows, or WRITEBUF with
1595      breakpoint insns, thus hiding out from higher layers whether
1596      there are software breakpoints inserted in the code stream.  */
1597   if (readbuf != NULL)
1598     {
1599       res = memory_xfer_partial_1 (ops, object, readbuf, NULL, memaddr, len,
1600                                    xfered_len);
1601
1602       if (res == TARGET_XFER_OK && !show_memory_breakpoints)
1603         breakpoint_xfer_memory (readbuf, NULL, NULL, memaddr, res);
1604     }
1605   else
1606     {
1607       void *buf;
1608       struct cleanup *old_chain;
1609
1610       /* A large write request is likely to be partially satisfied
1611          by memory_xfer_partial_1.  We will continually malloc
1612          and free a copy of the entire write request for breakpoint
1613          shadow handling even though we only end up writing a small
1614          subset of it.  Cap writes to 4KB to mitigate this.  */
1615       len = min (4096, len);
1616
1617       buf = xmalloc (len);
1618       old_chain = make_cleanup (xfree, buf);
1619       memcpy (buf, writebuf, len);
1620
1621       breakpoint_xfer_memory (NULL, buf, writebuf, memaddr, len);
1622       res = memory_xfer_partial_1 (ops, object, NULL, buf, memaddr, len,
1623                                    xfered_len);
1624
1625       do_cleanups (old_chain);
1626     }
1627
1628   return res;
1629 }
1630
1631 static void
1632 restore_show_memory_breakpoints (void *arg)
1633 {
1634   show_memory_breakpoints = (uintptr_t) arg;
1635 }
1636
1637 struct cleanup *
1638 make_show_memory_breakpoints_cleanup (int show)
1639 {
1640   int current = show_memory_breakpoints;
1641
1642   show_memory_breakpoints = show;
1643   return make_cleanup (restore_show_memory_breakpoints,
1644                        (void *) (uintptr_t) current);
1645 }
1646
1647 /* For docs see target.h, to_xfer_partial.  */
1648
1649 enum target_xfer_status
1650 target_xfer_partial (struct target_ops *ops,
1651                      enum target_object object, const char *annex,
1652                      gdb_byte *readbuf, const gdb_byte *writebuf,
1653                      ULONGEST offset, ULONGEST len,
1654                      ULONGEST *xfered_len)
1655 {
1656   enum target_xfer_status retval;
1657
1658   gdb_assert (ops->to_xfer_partial != NULL);
1659
1660   /* Transfer is done when LEN is zero.  */
1661   if (len == 0)
1662     return TARGET_XFER_EOF;
1663
1664   if (writebuf && !may_write_memory)
1665     error (_("Writing to memory is not allowed (addr %s, len %s)"),
1666            core_addr_to_string_nz (offset), plongest (len));
1667
1668   *xfered_len = 0;
1669
1670   /* If this is a memory transfer, let the memory-specific code
1671      have a look at it instead.  Memory transfers are more
1672      complicated.  */
1673   if (object == TARGET_OBJECT_MEMORY || object == TARGET_OBJECT_STACK_MEMORY
1674       || object == TARGET_OBJECT_CODE_MEMORY)
1675     retval = memory_xfer_partial (ops, object, readbuf,
1676                                   writebuf, offset, len, xfered_len);
1677   else if (object == TARGET_OBJECT_RAW_MEMORY)
1678     {
1679       /* Request the normal memory object from other layers.  */
1680       retval = raw_memory_xfer_partial (ops, readbuf, writebuf, offset, len,
1681                                         xfered_len);
1682     }
1683   else
1684     retval = ops->to_xfer_partial (ops, object, annex, readbuf,
1685                                    writebuf, offset, len, xfered_len);
1686
1687   if (targetdebug)
1688     {
1689       const unsigned char *myaddr = NULL;
1690
1691       fprintf_unfiltered (gdb_stdlog,
1692                           "%s:target_xfer_partial "
1693                           "(%d, %s, %s, %s, %s, %s) = %d, %s",
1694                           ops->to_shortname,
1695                           (int) object,
1696                           (annex ? annex : "(null)"),
1697                           host_address_to_string (readbuf),
1698                           host_address_to_string (writebuf),
1699                           core_addr_to_string_nz (offset),
1700                           pulongest (len), retval,
1701                           pulongest (*xfered_len));
1702
1703       if (readbuf)
1704         myaddr = readbuf;
1705       if (writebuf)
1706         myaddr = writebuf;
1707       if (retval == TARGET_XFER_OK && myaddr != NULL)
1708         {
1709           int i;
1710
1711           fputs_unfiltered (", bytes =", gdb_stdlog);
1712           for (i = 0; i < *xfered_len; i++)
1713             {
1714               if ((((intptr_t) &(myaddr[i])) & 0xf) == 0)
1715                 {
1716                   if (targetdebug < 2 && i > 0)
1717                     {
1718                       fprintf_unfiltered (gdb_stdlog, " ...");
1719                       break;
1720                     }
1721                   fprintf_unfiltered (gdb_stdlog, "\n");
1722                 }
1723
1724               fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
1725             }
1726         }
1727
1728       fputc_unfiltered ('\n', gdb_stdlog);
1729     }
1730
1731   /* Check implementations of to_xfer_partial update *XFERED_LEN
1732      properly.  Do assertion after printing debug messages, so that we
1733      can find more clues on assertion failure from debugging messages.  */
1734   if (retval == TARGET_XFER_OK || retval == TARGET_XFER_E_UNAVAILABLE)
1735     gdb_assert (*xfered_len > 0);
1736
1737   return retval;
1738 }
1739
1740 /* Read LEN bytes of target memory at address MEMADDR, placing the
1741    results in GDB's memory at MYADDR.  Returns either 0 for success or
1742    TARGET_XFER_E_IO if any error occurs.
1743
1744    If an error occurs, no guarantee is made about the contents of the data at
1745    MYADDR.  In particular, the caller should not depend upon partial reads
1746    filling the buffer with good data.  There is no way for the caller to know
1747    how much good data might have been transfered anyway.  Callers that can
1748    deal with partial reads should call target_read (which will retry until
1749    it makes no progress, and then return how much was transferred).  */
1750
1751 int
1752 target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
1753 {
1754   /* Dispatch to the topmost target, not the flattened current_target.
1755      Memory accesses check target->to_has_(all_)memory, and the
1756      flattened target doesn't inherit those.  */
1757   if (target_read (current_target.beneath, TARGET_OBJECT_MEMORY, NULL,
1758                    myaddr, memaddr, len) == len)
1759     return 0;
1760   else
1761     return TARGET_XFER_E_IO;
1762 }
1763
1764 /* Like target_read_memory, but specify explicitly that this is a read
1765    from the target's raw memory.  That is, this read bypasses the
1766    dcache, breakpoint shadowing, etc.  */
1767
1768 int
1769 target_read_raw_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
1770 {
1771   /* See comment in target_read_memory about why the request starts at
1772      current_target.beneath.  */
1773   if (target_read (current_target.beneath, TARGET_OBJECT_RAW_MEMORY, NULL,
1774                    myaddr, memaddr, len) == len)
1775     return 0;
1776   else
1777     return TARGET_XFER_E_IO;
1778 }
1779
1780 /* Like target_read_memory, but specify explicitly that this is a read from
1781    the target's stack.  This may trigger different cache behavior.  */
1782
1783 int
1784 target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
1785 {
1786   /* See comment in target_read_memory about why the request starts at
1787      current_target.beneath.  */
1788   if (target_read (current_target.beneath, TARGET_OBJECT_STACK_MEMORY, NULL,
1789                    myaddr, memaddr, len) == len)
1790     return 0;
1791   else
1792     return TARGET_XFER_E_IO;
1793 }
1794
1795 /* Like target_read_memory, but specify explicitly that this is a read from
1796    the target's code.  This may trigger different cache behavior.  */
1797
1798 int
1799 target_read_code (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
1800 {
1801   /* See comment in target_read_memory about why the request starts at
1802      current_target.beneath.  */
1803   if (target_read (current_target.beneath, TARGET_OBJECT_CODE_MEMORY, NULL,
1804                    myaddr, memaddr, len) == len)
1805     return 0;
1806   else
1807     return TARGET_XFER_E_IO;
1808 }
1809
1810 /* Write LEN bytes from MYADDR to target memory at address MEMADDR.
1811    Returns either 0 for success or TARGET_XFER_E_IO if any
1812    error occurs.  If an error occurs, no guarantee is made about how
1813    much data got written.  Callers that can deal with partial writes
1814    should call target_write.  */
1815
1816 int
1817 target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len)
1818 {
1819   /* See comment in target_read_memory about why the request starts at
1820      current_target.beneath.  */
1821   if (target_write (current_target.beneath, TARGET_OBJECT_MEMORY, NULL,
1822                     myaddr, memaddr, len) == len)
1823     return 0;
1824   else
1825     return TARGET_XFER_E_IO;
1826 }
1827
1828 /* Write LEN bytes from MYADDR to target raw memory at address
1829    MEMADDR.  Returns either 0 for success or TARGET_XFER_E_IO
1830    if any error occurs.  If an error occurs, no guarantee is made
1831    about how much data got written.  Callers that can deal with
1832    partial writes should call target_write.  */
1833
1834 int
1835 target_write_raw_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len)
1836 {
1837   /* See comment in target_read_memory about why the request starts at
1838      current_target.beneath.  */
1839   if (target_write (current_target.beneath, TARGET_OBJECT_RAW_MEMORY, NULL,
1840                     myaddr, memaddr, len) == len)
1841     return 0;
1842   else
1843     return TARGET_XFER_E_IO;
1844 }
1845
1846 /* Fetch the target's memory map.  */
1847
1848 VEC(mem_region_s) *
1849 target_memory_map (void)
1850 {
1851   VEC(mem_region_s) *result;
1852   struct mem_region *last_one, *this_one;
1853   int ix;
1854   struct target_ops *t;
1855
1856   if (targetdebug)
1857     fprintf_unfiltered (gdb_stdlog, "target_memory_map ()\n");
1858
1859   for (t = current_target.beneath; t != NULL; t = t->beneath)
1860     if (t->to_memory_map != NULL)
1861       break;
1862
1863   if (t == NULL)
1864     return NULL;
1865
1866   result = t->to_memory_map (t);
1867   if (result == NULL)
1868     return NULL;
1869
1870   qsort (VEC_address (mem_region_s, result),
1871          VEC_length (mem_region_s, result),
1872          sizeof (struct mem_region), mem_region_cmp);
1873
1874   /* Check that regions do not overlap.  Simultaneously assign
1875      a numbering for the "mem" commands to use to refer to
1876      each region.  */
1877   last_one = NULL;
1878   for (ix = 0; VEC_iterate (mem_region_s, result, ix, this_one); ix++)
1879     {
1880       this_one->number = ix;
1881
1882       if (last_one && last_one->hi > this_one->lo)
1883         {
1884           warning (_("Overlapping regions in memory map: ignoring"));
1885           VEC_free (mem_region_s, result);
1886           return NULL;
1887         }
1888       last_one = this_one;
1889     }
1890
1891   return result;
1892 }
1893
1894 void
1895 target_flash_erase (ULONGEST address, LONGEST length)
1896 {
1897   struct target_ops *t;
1898
1899   for (t = current_target.beneath; t != NULL; t = t->beneath)
1900     if (t->to_flash_erase != NULL)
1901       {
1902         if (targetdebug)
1903           fprintf_unfiltered (gdb_stdlog, "target_flash_erase (%s, %s)\n",
1904                               hex_string (address), phex (length, 0));
1905         t->to_flash_erase (t, address, length);
1906         return;
1907       }
1908
1909   tcomplain ();
1910 }
1911
1912 void
1913 target_flash_done (void)
1914 {
1915   struct target_ops *t;
1916
1917   for (t = current_target.beneath; t != NULL; t = t->beneath)
1918     if (t->to_flash_done != NULL)
1919       {
1920         if (targetdebug)
1921           fprintf_unfiltered (gdb_stdlog, "target_flash_done\n");
1922         t->to_flash_done (t);
1923         return;
1924       }
1925
1926   tcomplain ();
1927 }
1928
1929 static void
1930 show_trust_readonly (struct ui_file *file, int from_tty,
1931                      struct cmd_list_element *c, const char *value)
1932 {
1933   fprintf_filtered (file,
1934                     _("Mode for reading from readonly sections is %s.\n"),
1935                     value);
1936 }
1937
1938 /* More generic transfers.  */
1939
1940 static enum target_xfer_status
1941 default_xfer_partial (struct target_ops *ops, enum target_object object,
1942                       const char *annex, gdb_byte *readbuf,
1943                       const gdb_byte *writebuf, ULONGEST offset, ULONGEST len,
1944                       ULONGEST *xfered_len)
1945 {
1946   if (object == TARGET_OBJECT_MEMORY
1947       && ops->deprecated_xfer_memory != NULL)
1948     /* If available, fall back to the target's
1949        "deprecated_xfer_memory" method.  */
1950     {
1951       int xfered = -1;
1952
1953       errno = 0;
1954       if (writebuf != NULL)
1955         {
1956           void *buffer = xmalloc (len);
1957           struct cleanup *cleanup = make_cleanup (xfree, buffer);
1958
1959           memcpy (buffer, writebuf, len);
1960           xfered = ops->deprecated_xfer_memory (offset, buffer, len,
1961                                                 1/*write*/, NULL, ops);
1962           do_cleanups (cleanup);
1963         }
1964       if (readbuf != NULL)
1965         xfered = ops->deprecated_xfer_memory (offset, readbuf, len, 
1966                                               0/*read*/, NULL, ops);
1967       if (xfered > 0)
1968         {
1969           *xfered_len = (ULONGEST) xfered;
1970           return TARGET_XFER_E_IO;
1971         }
1972       else if (xfered == 0 && errno == 0)
1973         /* "deprecated_xfer_memory" uses 0, cross checked against
1974            ERRNO as one indication of an error.  */
1975         return TARGET_XFER_EOF;
1976       else
1977         return TARGET_XFER_E_IO;
1978     }
1979   else
1980     {
1981       gdb_assert (ops->beneath != NULL);
1982       return ops->beneath->to_xfer_partial (ops->beneath, object, annex,
1983                                             readbuf, writebuf, offset, len,
1984                                             xfered_len);
1985     }
1986 }
1987
1988 /* Target vector read/write partial wrapper functions.  */
1989
1990 static enum target_xfer_status
1991 target_read_partial (struct target_ops *ops,
1992                      enum target_object object,
1993                      const char *annex, gdb_byte *buf,
1994                      ULONGEST offset, ULONGEST len,
1995                      ULONGEST *xfered_len)
1996 {
1997   return target_xfer_partial (ops, object, annex, buf, NULL, offset, len,
1998                               xfered_len);
1999 }
2000
2001 static enum target_xfer_status
2002 target_write_partial (struct target_ops *ops,
2003                       enum target_object object,
2004                       const char *annex, const gdb_byte *buf,
2005                       ULONGEST offset, LONGEST len, ULONGEST *xfered_len)
2006 {
2007   return target_xfer_partial (ops, object, annex, NULL, buf, offset, len,
2008                               xfered_len);
2009 }
2010
2011 /* Wrappers to perform the full transfer.  */
2012
2013 /* For docs on target_read see target.h.  */
2014
2015 LONGEST
2016 target_read (struct target_ops *ops,
2017              enum target_object object,
2018              const char *annex, gdb_byte *buf,
2019              ULONGEST offset, LONGEST len)
2020 {
2021   LONGEST xfered = 0;
2022
2023   while (xfered < len)
2024     {
2025       ULONGEST xfered_len;
2026       enum target_xfer_status status;
2027
2028       status = target_read_partial (ops, object, annex,
2029                                     (gdb_byte *) buf + xfered,
2030                                     offset + xfered, len - xfered,
2031                                     &xfered_len);
2032
2033       /* Call an observer, notifying them of the xfer progress?  */
2034       if (status == TARGET_XFER_EOF)
2035         return xfered;
2036       else if (status == TARGET_XFER_OK)
2037         {
2038           xfered += xfered_len;
2039           QUIT;
2040         }
2041       else
2042         return -1;
2043
2044     }
2045   return len;
2046 }
2047
2048 /* Assuming that the entire [begin, end) range of memory cannot be
2049    read, try to read whatever subrange is possible to read.
2050
2051    The function returns, in RESULT, either zero or one memory block.
2052    If there's a readable subrange at the beginning, it is completely
2053    read and returned.  Any further readable subrange will not be read.
2054    Otherwise, if there's a readable subrange at the end, it will be
2055    completely read and returned.  Any readable subranges before it
2056    (obviously, not starting at the beginning), will be ignored.  In
2057    other cases -- either no readable subrange, or readable subrange(s)
2058    that is neither at the beginning, or end, nothing is returned.
2059
2060    The purpose of this function is to handle a read across a boundary
2061    of accessible memory in a case when memory map is not available.
2062    The above restrictions are fine for this case, but will give
2063    incorrect results if the memory is 'patchy'.  However, supporting
2064    'patchy' memory would require trying to read every single byte,
2065    and it seems unacceptable solution.  Explicit memory map is
2066    recommended for this case -- and target_read_memory_robust will
2067    take care of reading multiple ranges then.  */
2068
2069 static void
2070 read_whatever_is_readable (struct target_ops *ops,
2071                            ULONGEST begin, ULONGEST end,
2072                            VEC(memory_read_result_s) **result)
2073 {
2074   gdb_byte *buf = xmalloc (end - begin);
2075   ULONGEST current_begin = begin;
2076   ULONGEST current_end = end;
2077   int forward;
2078   memory_read_result_s r;
2079   ULONGEST xfered_len;
2080
2081   /* If we previously failed to read 1 byte, nothing can be done here.  */
2082   if (end - begin <= 1)
2083     {
2084       xfree (buf);
2085       return;
2086     }
2087
2088   /* Check that either first or the last byte is readable, and give up
2089      if not.  This heuristic is meant to permit reading accessible memory
2090      at the boundary of accessible region.  */
2091   if (target_read_partial (ops, TARGET_OBJECT_MEMORY, NULL,
2092                            buf, begin, 1, &xfered_len) == TARGET_XFER_OK)
2093     {
2094       forward = 1;
2095       ++current_begin;
2096     }
2097   else if (target_read_partial (ops, TARGET_OBJECT_MEMORY, NULL,
2098                                 buf + (end-begin) - 1, end - 1, 1,
2099                                 &xfered_len) == TARGET_XFER_OK)
2100     {
2101       forward = 0;
2102       --current_end;
2103     }
2104   else
2105     {
2106       xfree (buf);
2107       return;
2108     }
2109
2110   /* Loop invariant is that the [current_begin, current_end) was previously
2111      found to be not readable as a whole.
2112
2113      Note loop condition -- if the range has 1 byte, we can't divide the range
2114      so there's no point trying further.  */
2115   while (current_end - current_begin > 1)
2116     {
2117       ULONGEST first_half_begin, first_half_end;
2118       ULONGEST second_half_begin, second_half_end;
2119       LONGEST xfer;
2120       ULONGEST middle = current_begin + (current_end - current_begin)/2;
2121
2122       if (forward)
2123         {
2124           first_half_begin = current_begin;
2125           first_half_end = middle;
2126           second_half_begin = middle;
2127           second_half_end = current_end;
2128         }
2129       else
2130         {
2131           first_half_begin = middle;
2132           first_half_end = current_end;
2133           second_half_begin = current_begin;
2134           second_half_end = middle;
2135         }
2136
2137       xfer = target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2138                           buf + (first_half_begin - begin),
2139                           first_half_begin,
2140                           first_half_end - first_half_begin);
2141
2142       if (xfer == first_half_end - first_half_begin)
2143         {
2144           /* This half reads up fine.  So, the error must be in the
2145              other half.  */
2146           current_begin = second_half_begin;
2147           current_end = second_half_end;
2148         }
2149       else
2150         {
2151           /* This half is not readable.  Because we've tried one byte, we
2152              know some part of this half if actually redable.  Go to the next
2153              iteration to divide again and try to read.
2154
2155              We don't handle the other half, because this function only tries
2156              to read a single readable subrange.  */
2157           current_begin = first_half_begin;
2158           current_end = first_half_end;
2159         }
2160     }
2161
2162   if (forward)
2163     {
2164       /* The [begin, current_begin) range has been read.  */
2165       r.begin = begin;
2166       r.end = current_begin;
2167       r.data = buf;
2168     }
2169   else
2170     {
2171       /* The [current_end, end) range has been read.  */
2172       LONGEST rlen = end - current_end;
2173
2174       r.data = xmalloc (rlen);
2175       memcpy (r.data, buf + current_end - begin, rlen);
2176       r.begin = current_end;
2177       r.end = end;
2178       xfree (buf);
2179     }
2180   VEC_safe_push(memory_read_result_s, (*result), &r);
2181 }
2182
2183 void
2184 free_memory_read_result_vector (void *x)
2185 {
2186   VEC(memory_read_result_s) *v = x;
2187   memory_read_result_s *current;
2188   int ix;
2189
2190   for (ix = 0; VEC_iterate (memory_read_result_s, v, ix, current); ++ix)
2191     {
2192       xfree (current->data);
2193     }
2194   VEC_free (memory_read_result_s, v);
2195 }
2196
2197 VEC(memory_read_result_s) *
2198 read_memory_robust (struct target_ops *ops, ULONGEST offset, LONGEST len)
2199 {
2200   VEC(memory_read_result_s) *result = 0;
2201
2202   LONGEST xfered = 0;
2203   while (xfered < len)
2204     {
2205       struct mem_region *region = lookup_mem_region (offset + xfered);
2206       LONGEST rlen;
2207
2208       /* If there is no explicit region, a fake one should be created.  */
2209       gdb_assert (region);
2210
2211       if (region->hi == 0)
2212         rlen = len - xfered;
2213       else
2214         rlen = region->hi - offset;
2215
2216       if (region->attrib.mode == MEM_NONE || region->attrib.mode == MEM_WO)
2217         {
2218           /* Cannot read this region.  Note that we can end up here only
2219              if the region is explicitly marked inaccessible, or
2220              'inaccessible-by-default' is in effect.  */
2221           xfered += rlen;
2222         }
2223       else
2224         {
2225           LONGEST to_read = min (len - xfered, rlen);
2226           gdb_byte *buffer = (gdb_byte *)xmalloc (to_read);
2227
2228           LONGEST xfer = target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2229                                       (gdb_byte *) buffer,
2230                                       offset + xfered, to_read);
2231           /* Call an observer, notifying them of the xfer progress?  */
2232           if (xfer <= 0)
2233             {
2234               /* Got an error reading full chunk.  See if maybe we can read
2235                  some subrange.  */
2236               xfree (buffer);
2237               read_whatever_is_readable (ops, offset + xfered,
2238                                          offset + xfered + to_read, &result);
2239               xfered += to_read;
2240             }
2241           else
2242             {
2243               struct memory_read_result r;
2244               r.data = buffer;
2245               r.begin = offset + xfered;
2246               r.end = r.begin + xfer;
2247               VEC_safe_push (memory_read_result_s, result, &r);
2248               xfered += xfer;
2249             }
2250           QUIT;
2251         }
2252     }
2253   return result;
2254 }
2255
2256
2257 /* An alternative to target_write with progress callbacks.  */
2258
2259 LONGEST
2260 target_write_with_progress (struct target_ops *ops,
2261                             enum target_object object,
2262                             const char *annex, const gdb_byte *buf,
2263                             ULONGEST offset, LONGEST len,
2264                             void (*progress) (ULONGEST, void *), void *baton)
2265 {
2266   LONGEST xfered = 0;
2267
2268   /* Give the progress callback a chance to set up.  */
2269   if (progress)
2270     (*progress) (0, baton);
2271
2272   while (xfered < len)
2273     {
2274       ULONGEST xfered_len;
2275       enum target_xfer_status status;
2276
2277       status = target_write_partial (ops, object, annex,
2278                                      (gdb_byte *) buf + xfered,
2279                                      offset + xfered, len - xfered,
2280                                      &xfered_len);
2281
2282       if (status == TARGET_XFER_EOF)
2283         return xfered;
2284       if (TARGET_XFER_STATUS_ERROR_P (status))
2285         return -1;
2286
2287       gdb_assert (status == TARGET_XFER_OK);
2288       if (progress)
2289         (*progress) (xfered_len, baton);
2290
2291       xfered += xfered_len;
2292       QUIT;
2293     }
2294   return len;
2295 }
2296
2297 /* For docs on target_write see target.h.  */
2298
2299 LONGEST
2300 target_write (struct target_ops *ops,
2301               enum target_object object,
2302               const char *annex, const gdb_byte *buf,
2303               ULONGEST offset, LONGEST len)
2304 {
2305   return target_write_with_progress (ops, object, annex, buf, offset, len,
2306                                      NULL, NULL);
2307 }
2308
2309 /* Read OBJECT/ANNEX using OPS.  Store the result in *BUF_P and return
2310    the size of the transferred data.  PADDING additional bytes are
2311    available in *BUF_P.  This is a helper function for
2312    target_read_alloc; see the declaration of that function for more
2313    information.  */
2314
2315 static LONGEST
2316 target_read_alloc_1 (struct target_ops *ops, enum target_object object,
2317                      const char *annex, gdb_byte **buf_p, int padding)
2318 {
2319   size_t buf_alloc, buf_pos;
2320   gdb_byte *buf;
2321
2322   /* This function does not have a length parameter; it reads the
2323      entire OBJECT).  Also, it doesn't support objects fetched partly
2324      from one target and partly from another (in a different stratum,
2325      e.g. a core file and an executable).  Both reasons make it
2326      unsuitable for reading memory.  */
2327   gdb_assert (object != TARGET_OBJECT_MEMORY);
2328
2329   /* Start by reading up to 4K at a time.  The target will throttle
2330      this number down if necessary.  */
2331   buf_alloc = 4096;
2332   buf = xmalloc (buf_alloc);
2333   buf_pos = 0;
2334   while (1)
2335     {
2336       ULONGEST xfered_len;
2337       enum target_xfer_status status;
2338
2339       status = target_read_partial (ops, object, annex, &buf[buf_pos],
2340                                     buf_pos, buf_alloc - buf_pos - padding,
2341                                     &xfered_len);
2342
2343       if (status == TARGET_XFER_EOF)
2344         {
2345           /* Read all there was.  */
2346           if (buf_pos == 0)
2347             xfree (buf);
2348           else
2349             *buf_p = buf;
2350           return buf_pos;
2351         }
2352       else if (status != TARGET_XFER_OK)
2353         {
2354           /* An error occurred.  */
2355           xfree (buf);
2356           return TARGET_XFER_E_IO;
2357         }
2358
2359       buf_pos += xfered_len;
2360
2361       /* If the buffer is filling up, expand it.  */
2362       if (buf_alloc < buf_pos * 2)
2363         {
2364           buf_alloc *= 2;
2365           buf = xrealloc (buf, buf_alloc);
2366         }
2367
2368       QUIT;
2369     }
2370 }
2371
2372 /* Read OBJECT/ANNEX using OPS.  Store the result in *BUF_P and return
2373    the size of the transferred data.  See the declaration in "target.h"
2374    function for more information about the return value.  */
2375
2376 LONGEST
2377 target_read_alloc (struct target_ops *ops, enum target_object object,
2378                    const char *annex, gdb_byte **buf_p)
2379 {
2380   return target_read_alloc_1 (ops, object, annex, buf_p, 0);
2381 }
2382
2383 /* Read OBJECT/ANNEX using OPS.  The result is NUL-terminated and
2384    returned as a string, allocated using xmalloc.  If an error occurs
2385    or the transfer is unsupported, NULL is returned.  Empty objects
2386    are returned as allocated but empty strings.  A warning is issued
2387    if the result contains any embedded NUL bytes.  */
2388
2389 char *
2390 target_read_stralloc (struct target_ops *ops, enum target_object object,
2391                       const char *annex)
2392 {
2393   gdb_byte *buffer;
2394   char *bufstr;
2395   LONGEST i, transferred;
2396
2397   transferred = target_read_alloc_1 (ops, object, annex, &buffer, 1);
2398   bufstr = (char *) buffer;
2399
2400   if (transferred < 0)
2401     return NULL;
2402
2403   if (transferred == 0)
2404     return xstrdup ("");
2405
2406   bufstr[transferred] = 0;
2407
2408   /* Check for embedded NUL bytes; but allow trailing NULs.  */
2409   for (i = strlen (bufstr); i < transferred; i++)
2410     if (bufstr[i] != 0)
2411       {
2412         warning (_("target object %d, annex %s, "
2413                    "contained unexpected null characters"),
2414                  (int) object, annex ? annex : "(none)");
2415         break;
2416       }
2417
2418   return bufstr;
2419 }
2420
2421 /* Memory transfer methods.  */
2422
2423 void
2424 get_target_memory (struct target_ops *ops, CORE_ADDR addr, gdb_byte *buf,
2425                    LONGEST len)
2426 {
2427   /* This method is used to read from an alternate, non-current
2428      target.  This read must bypass the overlay support (as symbols
2429      don't match this target), and GDB's internal cache (wrong cache
2430      for this target).  */
2431   if (target_read (ops, TARGET_OBJECT_RAW_MEMORY, NULL, buf, addr, len)
2432       != len)
2433     memory_error (TARGET_XFER_E_IO, addr);
2434 }
2435
2436 ULONGEST
2437 get_target_memory_unsigned (struct target_ops *ops, CORE_ADDR addr,
2438                             int len, enum bfd_endian byte_order)
2439 {
2440   gdb_byte buf[sizeof (ULONGEST)];
2441
2442   gdb_assert (len <= sizeof (buf));
2443   get_target_memory (ops, addr, buf, len);
2444   return extract_unsigned_integer (buf, len, byte_order);
2445 }
2446
2447 /* See target.h.  */
2448
2449 int
2450 target_insert_breakpoint (struct gdbarch *gdbarch,
2451                           struct bp_target_info *bp_tgt)
2452 {
2453   if (!may_insert_breakpoints)
2454     {
2455       warning (_("May not insert breakpoints"));
2456       return 1;
2457     }
2458
2459   return current_target.to_insert_breakpoint (&current_target,
2460                                               gdbarch, bp_tgt);
2461 }
2462
2463 /* See target.h.  */
2464
2465 int
2466 target_remove_breakpoint (struct gdbarch *gdbarch,
2467                           struct bp_target_info *bp_tgt)
2468 {
2469   /* This is kind of a weird case to handle, but the permission might
2470      have been changed after breakpoints were inserted - in which case
2471      we should just take the user literally and assume that any
2472      breakpoints should be left in place.  */
2473   if (!may_insert_breakpoints)
2474     {
2475       warning (_("May not remove breakpoints"));
2476       return 1;
2477     }
2478
2479   return current_target.to_remove_breakpoint (&current_target,
2480                                               gdbarch, bp_tgt);
2481 }
2482
2483 static void
2484 target_info (char *args, int from_tty)
2485 {
2486   struct target_ops *t;
2487   int has_all_mem = 0;
2488
2489   if (symfile_objfile != NULL)
2490     printf_unfiltered (_("Symbols from \"%s\".\n"),
2491                        objfile_name (symfile_objfile));
2492
2493   for (t = target_stack; t != NULL; t = t->beneath)
2494     {
2495       if (!(*t->to_has_memory) (t))
2496         continue;
2497
2498       if ((int) (t->to_stratum) <= (int) dummy_stratum)
2499         continue;
2500       if (has_all_mem)
2501         printf_unfiltered (_("\tWhile running this, "
2502                              "GDB does not access memory from...\n"));
2503       printf_unfiltered ("%s:\n", t->to_longname);
2504       (t->to_files_info) (t);
2505       has_all_mem = (*t->to_has_all_memory) (t);
2506     }
2507 }
2508
2509 /* This function is called before any new inferior is created, e.g.
2510    by running a program, attaching, or connecting to a target.
2511    It cleans up any state from previous invocations which might
2512    change between runs.  This is a subset of what target_preopen
2513    resets (things which might change between targets).  */
2514
2515 void
2516 target_pre_inferior (int from_tty)
2517 {
2518   /* Clear out solib state.  Otherwise the solib state of the previous
2519      inferior might have survived and is entirely wrong for the new
2520      target.  This has been observed on GNU/Linux using glibc 2.3.  How
2521      to reproduce:
2522
2523      bash$ ./foo&
2524      [1] 4711
2525      bash$ ./foo&
2526      [1] 4712
2527      bash$ gdb ./foo
2528      [...]
2529      (gdb) attach 4711
2530      (gdb) detach
2531      (gdb) attach 4712
2532      Cannot access memory at address 0xdeadbeef
2533   */
2534
2535   /* In some OSs, the shared library list is the same/global/shared
2536      across inferiors.  If code is shared between processes, so are
2537      memory regions and features.  */
2538   if (!gdbarch_has_global_solist (target_gdbarch ()))
2539     {
2540       no_shared_libraries (NULL, from_tty);
2541
2542       invalidate_target_mem_regions ();
2543
2544       target_clear_description ();
2545     }
2546
2547   agent_capability_invalidate ();
2548 }
2549
2550 /* Callback for iterate_over_inferiors.  Gets rid of the given
2551    inferior.  */
2552
2553 static int
2554 dispose_inferior (struct inferior *inf, void *args)
2555 {
2556   struct thread_info *thread;
2557
2558   thread = any_thread_of_process (inf->pid);
2559   if (thread)
2560     {
2561       switch_to_thread (thread->ptid);
2562
2563       /* Core inferiors actually should be detached, not killed.  */
2564       if (target_has_execution)
2565         target_kill ();
2566       else
2567         target_detach (NULL, 0);
2568     }
2569
2570   return 0;
2571 }
2572
2573 /* This is to be called by the open routine before it does
2574    anything.  */
2575
2576 void
2577 target_preopen (int from_tty)
2578 {
2579   dont_repeat ();
2580
2581   if (have_inferiors ())
2582     {
2583       if (!from_tty
2584           || !have_live_inferiors ()
2585           || query (_("A program is being debugged already.  Kill it? ")))
2586         iterate_over_inferiors (dispose_inferior, NULL);
2587       else
2588         error (_("Program not killed."));
2589     }
2590
2591   /* Calling target_kill may remove the target from the stack.  But if
2592      it doesn't (which seems like a win for UDI), remove it now.  */
2593   /* Leave the exec target, though.  The user may be switching from a
2594      live process to a core of the same program.  */
2595   pop_all_targets_above (file_stratum);
2596
2597   target_pre_inferior (from_tty);
2598 }
2599
2600 /* Detach a target after doing deferred register stores.  */
2601
2602 void
2603 target_detach (const char *args, int from_tty)
2604 {
2605   struct target_ops* t;
2606   
2607   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
2608     /* Don't remove global breakpoints here.  They're removed on
2609        disconnection from the target.  */
2610     ;
2611   else
2612     /* If we're in breakpoints-always-inserted mode, have to remove
2613        them before detaching.  */
2614     remove_breakpoints_pid (ptid_get_pid (inferior_ptid));
2615
2616   prepare_for_detach ();
2617
2618   current_target.to_detach (&current_target, args, from_tty);
2619   if (targetdebug)
2620     fprintf_unfiltered (gdb_stdlog, "target_detach (%s, %d)\n",
2621                         args, from_tty);
2622 }
2623
2624 void
2625 target_disconnect (char *args, int from_tty)
2626 {
2627   struct target_ops *t;
2628
2629   /* If we're in breakpoints-always-inserted mode or if breakpoints
2630      are global across processes, we have to remove them before
2631      disconnecting.  */
2632   remove_breakpoints ();
2633
2634   for (t = current_target.beneath; t != NULL; t = t->beneath)
2635     if (t->to_disconnect != NULL)
2636         {
2637           if (targetdebug)
2638             fprintf_unfiltered (gdb_stdlog, "target_disconnect (%s, %d)\n",
2639                                 args, from_tty);
2640           t->to_disconnect (t, args, from_tty);
2641           return;
2642         }
2643
2644   tcomplain ();
2645 }
2646
2647 ptid_t
2648 target_wait (ptid_t ptid, struct target_waitstatus *status, int options)
2649 {
2650   struct target_ops *t;
2651   ptid_t retval = (current_target.to_wait) (&current_target, ptid,
2652                                             status, options);
2653
2654   if (targetdebug)
2655     {
2656       char *status_string;
2657       char *options_string;
2658
2659       status_string = target_waitstatus_to_string (status);
2660       options_string = target_options_to_string (options);
2661       fprintf_unfiltered (gdb_stdlog,
2662                           "target_wait (%d, status, options={%s})"
2663                           " = %d,   %s\n",
2664                           ptid_get_pid (ptid), options_string,
2665                           ptid_get_pid (retval), status_string);
2666       xfree (status_string);
2667       xfree (options_string);
2668     }
2669
2670   return retval;
2671 }
2672
2673 char *
2674 target_pid_to_str (ptid_t ptid)
2675 {
2676   struct target_ops *t;
2677
2678   for (t = current_target.beneath; t != NULL; t = t->beneath)
2679     {
2680       if (t->to_pid_to_str != NULL)
2681         return (*t->to_pid_to_str) (t, ptid);
2682     }
2683
2684   return normal_pid_to_str (ptid);
2685 }
2686
2687 char *
2688 target_thread_name (struct thread_info *info)
2689 {
2690   struct target_ops *t;
2691
2692   for (t = current_target.beneath; t != NULL; t = t->beneath)
2693     {
2694       if (t->to_thread_name != NULL)
2695         return (*t->to_thread_name) (t, info);
2696     }
2697
2698   return NULL;
2699 }
2700
2701 void
2702 target_resume (ptid_t ptid, int step, enum gdb_signal signal)
2703 {
2704   struct target_ops *t;
2705
2706   target_dcache_invalidate ();
2707
2708   current_target.to_resume (&current_target, ptid, step, signal);
2709   if (targetdebug)
2710     fprintf_unfiltered (gdb_stdlog, "target_resume (%d, %s, %s)\n",
2711                         ptid_get_pid (ptid),
2712                         step ? "step" : "continue",
2713                         gdb_signal_to_name (signal));
2714
2715   registers_changed_ptid (ptid);
2716   set_executing (ptid, 1);
2717   set_running (ptid, 1);
2718   clear_inline_frame_state (ptid);
2719 }
2720
2721 void
2722 target_pass_signals (int numsigs, unsigned char *pass_signals)
2723 {
2724   struct target_ops *t;
2725
2726   for (t = current_target.beneath; t != NULL; t = t->beneath)
2727     {
2728       if (t->to_pass_signals != NULL)
2729         {
2730           if (targetdebug)
2731             {
2732               int i;
2733
2734               fprintf_unfiltered (gdb_stdlog, "target_pass_signals (%d, {",
2735                                   numsigs);
2736
2737               for (i = 0; i < numsigs; i++)
2738                 if (pass_signals[i])
2739                   fprintf_unfiltered (gdb_stdlog, " %s",
2740                                       gdb_signal_to_name (i));
2741
2742               fprintf_unfiltered (gdb_stdlog, " })\n");
2743             }
2744
2745           (*t->to_pass_signals) (t, numsigs, pass_signals);
2746           return;
2747         }
2748     }
2749 }
2750
2751 void
2752 target_program_signals (int numsigs, unsigned char *program_signals)
2753 {
2754   struct target_ops *t;
2755
2756   for (t = current_target.beneath; t != NULL; t = t->beneath)
2757     {
2758       if (t->to_program_signals != NULL)
2759         {
2760           if (targetdebug)
2761             {
2762               int i;
2763
2764               fprintf_unfiltered (gdb_stdlog, "target_program_signals (%d, {",
2765                                   numsigs);
2766
2767               for (i = 0; i < numsigs; i++)
2768                 if (program_signals[i])
2769                   fprintf_unfiltered (gdb_stdlog, " %s",
2770                                       gdb_signal_to_name (i));
2771
2772               fprintf_unfiltered (gdb_stdlog, " })\n");
2773             }
2774
2775           (*t->to_program_signals) (t, numsigs, program_signals);
2776           return;
2777         }
2778     }
2779 }
2780
2781 /* Look through the list of possible targets for a target that can
2782    follow forks.  */
2783
2784 int
2785 target_follow_fork (int follow_child, int detach_fork)
2786 {
2787   struct target_ops *t;
2788
2789   for (t = current_target.beneath; t != NULL; t = t->beneath)
2790     {
2791       if (t->to_follow_fork != NULL)
2792         {
2793           int retval = t->to_follow_fork (t, follow_child, detach_fork);
2794
2795           if (targetdebug)
2796             fprintf_unfiltered (gdb_stdlog,
2797                                 "target_follow_fork (%d, %d) = %d\n",
2798                                 follow_child, detach_fork, retval);
2799           return retval;
2800         }
2801     }
2802
2803   /* Some target returned a fork event, but did not know how to follow it.  */
2804   internal_error (__FILE__, __LINE__,
2805                   _("could not find a target to follow fork"));
2806 }
2807
2808 void
2809 target_mourn_inferior (void)
2810 {
2811   struct target_ops *t;
2812
2813   for (t = current_target.beneath; t != NULL; t = t->beneath)
2814     {
2815       if (t->to_mourn_inferior != NULL) 
2816         {
2817           t->to_mourn_inferior (t);
2818           if (targetdebug)
2819             fprintf_unfiltered (gdb_stdlog, "target_mourn_inferior ()\n");
2820
2821           /* We no longer need to keep handles on any of the object files.
2822              Make sure to release them to avoid unnecessarily locking any
2823              of them while we're not actually debugging.  */
2824           bfd_cache_close_all ();
2825
2826           return;
2827         }
2828     }
2829
2830   internal_error (__FILE__, __LINE__,
2831                   _("could not find a target to follow mourn inferior"));
2832 }
2833
2834 /* Look for a target which can describe architectural features, starting
2835    from TARGET.  If we find one, return its description.  */
2836
2837 const struct target_desc *
2838 target_read_description (struct target_ops *target)
2839 {
2840   struct target_ops *t;
2841
2842   for (t = target; t != NULL; t = t->beneath)
2843     if (t->to_read_description != NULL)
2844       {
2845         const struct target_desc *tdesc;
2846
2847         tdesc = t->to_read_description (t);
2848         if (tdesc)
2849           return tdesc;
2850       }
2851
2852   return NULL;
2853 }
2854
2855 /* The default implementation of to_search_memory.
2856    This implements a basic search of memory, reading target memory and
2857    performing the search here (as opposed to performing the search in on the
2858    target side with, for example, gdbserver).  */
2859
2860 int
2861 simple_search_memory (struct target_ops *ops,
2862                       CORE_ADDR start_addr, ULONGEST search_space_len,
2863                       const gdb_byte *pattern, ULONGEST pattern_len,
2864                       CORE_ADDR *found_addrp)
2865 {
2866   /* NOTE: also defined in find.c testcase.  */
2867 #define SEARCH_CHUNK_SIZE 16000
2868   const unsigned chunk_size = SEARCH_CHUNK_SIZE;
2869   /* Buffer to hold memory contents for searching.  */
2870   gdb_byte *search_buf;
2871   unsigned search_buf_size;
2872   struct cleanup *old_cleanups;
2873
2874   search_buf_size = chunk_size + pattern_len - 1;
2875
2876   /* No point in trying to allocate a buffer larger than the search space.  */
2877   if (search_space_len < search_buf_size)
2878     search_buf_size = search_space_len;
2879
2880   search_buf = malloc (search_buf_size);
2881   if (search_buf == NULL)
2882     error (_("Unable to allocate memory to perform the search."));
2883   old_cleanups = make_cleanup (free_current_contents, &search_buf);
2884
2885   /* Prime the search buffer.  */
2886
2887   if (target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2888                    search_buf, start_addr, search_buf_size) != search_buf_size)
2889     {
2890       warning (_("Unable to access %s bytes of target "
2891                  "memory at %s, halting search."),
2892                pulongest (search_buf_size), hex_string (start_addr));
2893       do_cleanups (old_cleanups);
2894       return -1;
2895     }
2896
2897   /* Perform the search.
2898
2899      The loop is kept simple by allocating [N + pattern-length - 1] bytes.
2900      When we've scanned N bytes we copy the trailing bytes to the start and
2901      read in another N bytes.  */
2902
2903   while (search_space_len >= pattern_len)
2904     {
2905       gdb_byte *found_ptr;
2906       unsigned nr_search_bytes = min (search_space_len, search_buf_size);
2907
2908       found_ptr = memmem (search_buf, nr_search_bytes,
2909                           pattern, pattern_len);
2910
2911       if (found_ptr != NULL)
2912         {
2913           CORE_ADDR found_addr = start_addr + (found_ptr - search_buf);
2914
2915           *found_addrp = found_addr;
2916           do_cleanups (old_cleanups);
2917           return 1;
2918         }
2919
2920       /* Not found in this chunk, skip to next chunk.  */
2921
2922       /* Don't let search_space_len wrap here, it's unsigned.  */
2923       if (search_space_len >= chunk_size)
2924         search_space_len -= chunk_size;
2925       else
2926         search_space_len = 0;
2927
2928       if (search_space_len >= pattern_len)
2929         {
2930           unsigned keep_len = search_buf_size - chunk_size;
2931           CORE_ADDR read_addr = start_addr + chunk_size + keep_len;
2932           int nr_to_read;
2933
2934           /* Copy the trailing part of the previous iteration to the front
2935              of the buffer for the next iteration.  */
2936           gdb_assert (keep_len == pattern_len - 1);
2937           memcpy (search_buf, search_buf + chunk_size, keep_len);
2938
2939           nr_to_read = min (search_space_len - keep_len, chunk_size);
2940
2941           if (target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2942                            search_buf + keep_len, read_addr,
2943                            nr_to_read) != nr_to_read)
2944             {
2945               warning (_("Unable to access %s bytes of target "
2946                          "memory at %s, halting search."),
2947                        plongest (nr_to_read),
2948                        hex_string (read_addr));
2949               do_cleanups (old_cleanups);
2950               return -1;
2951             }
2952
2953           start_addr += chunk_size;
2954         }
2955     }
2956
2957   /* Not found.  */
2958
2959   do_cleanups (old_cleanups);
2960   return 0;
2961 }
2962
2963 /* Search SEARCH_SPACE_LEN bytes beginning at START_ADDR for the
2964    sequence of bytes in PATTERN with length PATTERN_LEN.
2965
2966    The result is 1 if found, 0 if not found, and -1 if there was an error
2967    requiring halting of the search (e.g. memory read error).
2968    If the pattern is found the address is recorded in FOUND_ADDRP.  */
2969
2970 int
2971 target_search_memory (CORE_ADDR start_addr, ULONGEST search_space_len,
2972                       const gdb_byte *pattern, ULONGEST pattern_len,
2973                       CORE_ADDR *found_addrp)
2974 {
2975   struct target_ops *t;
2976   int found;
2977
2978   /* We don't use INHERIT to set current_target.to_search_memory,
2979      so we have to scan the target stack and handle targetdebug
2980      ourselves.  */
2981
2982   if (targetdebug)
2983     fprintf_unfiltered (gdb_stdlog, "target_search_memory (%s, ...)\n",
2984                         hex_string (start_addr));
2985
2986   for (t = current_target.beneath; t != NULL; t = t->beneath)
2987     if (t->to_search_memory != NULL)
2988       break;
2989
2990   if (t != NULL)
2991     {
2992       found = t->to_search_memory (t, start_addr, search_space_len,
2993                                    pattern, pattern_len, found_addrp);
2994     }
2995   else
2996     {
2997       /* If a special version of to_search_memory isn't available, use the
2998          simple version.  */
2999       found = simple_search_memory (current_target.beneath,
3000                                     start_addr, search_space_len,
3001                                     pattern, pattern_len, found_addrp);
3002     }
3003
3004   if (targetdebug)
3005     fprintf_unfiltered (gdb_stdlog, "  = %d\n", found);
3006
3007   return found;
3008 }
3009
3010 /* Look through the currently pushed targets.  If none of them will
3011    be able to restart the currently running process, issue an error
3012    message.  */
3013
3014 void
3015 target_require_runnable (void)
3016 {
3017   struct target_ops *t;
3018
3019   for (t = target_stack; t != NULL; t = t->beneath)
3020     {
3021       /* If this target knows how to create a new program, then
3022          assume we will still be able to after killing the current
3023          one.  Either killing and mourning will not pop T, or else
3024          find_default_run_target will find it again.  */
3025       if (t->to_create_inferior != NULL)
3026         return;
3027
3028       /* Do not worry about thread_stratum targets that can not
3029          create inferiors.  Assume they will be pushed again if
3030          necessary, and continue to the process_stratum.  */
3031       if (t->to_stratum == thread_stratum
3032           || t->to_stratum == arch_stratum)
3033         continue;
3034
3035       error (_("The \"%s\" target does not support \"run\".  "
3036                "Try \"help target\" or \"continue\"."),
3037              t->to_shortname);
3038     }
3039
3040   /* This function is only called if the target is running.  In that
3041      case there should have been a process_stratum target and it
3042      should either know how to create inferiors, or not...  */
3043   internal_error (__FILE__, __LINE__, _("No targets found"));
3044 }
3045
3046 /* Look through the list of possible targets for a target that can
3047    execute a run or attach command without any other data.  This is
3048    used to locate the default process stratum.
3049
3050    If DO_MESG is not NULL, the result is always valid (error() is
3051    called for errors); else, return NULL on error.  */
3052
3053 static struct target_ops *
3054 find_default_run_target (char *do_mesg)
3055 {
3056   struct target_ops **t;
3057   struct target_ops *runable = NULL;
3058   int count;
3059
3060   count = 0;
3061
3062   for (t = target_structs; t < target_structs + target_struct_size;
3063        ++t)
3064     {
3065       if ((*t)->to_can_run && target_can_run (*t))
3066         {
3067           runable = *t;
3068           ++count;
3069         }
3070     }
3071
3072   if (count != 1)
3073     {
3074       if (do_mesg)
3075         error (_("Don't know how to %s.  Try \"help target\"."), do_mesg);
3076       else
3077         return NULL;
3078     }
3079
3080   return runable;
3081 }
3082
3083 void
3084 find_default_attach (struct target_ops *ops, char *args, int from_tty)
3085 {
3086   struct target_ops *t;
3087
3088   t = find_default_run_target ("attach");
3089   (t->to_attach) (t, args, from_tty);
3090   return;
3091 }
3092
3093 void
3094 find_default_create_inferior (struct target_ops *ops,
3095                               char *exec_file, char *allargs, char **env,
3096                               int from_tty)
3097 {
3098   struct target_ops *t;
3099
3100   t = find_default_run_target ("run");
3101   (t->to_create_inferior) (t, exec_file, allargs, env, from_tty);
3102   return;
3103 }
3104
3105 static int
3106 find_default_can_async_p (struct target_ops *ignore)
3107 {
3108   struct target_ops *t;
3109
3110   /* This may be called before the target is pushed on the stack;
3111      look for the default process stratum.  If there's none, gdb isn't
3112      configured with a native debugger, and target remote isn't
3113      connected yet.  */
3114   t = find_default_run_target (NULL);
3115   if (t && t->to_can_async_p != delegate_can_async_p)
3116     return (t->to_can_async_p) (t);
3117   return 0;
3118 }
3119
3120 static int
3121 find_default_is_async_p (struct target_ops *ignore)
3122 {
3123   struct target_ops *t;
3124
3125   /* This may be called before the target is pushed on the stack;
3126      look for the default process stratum.  If there's none, gdb isn't
3127      configured with a native debugger, and target remote isn't
3128      connected yet.  */
3129   t = find_default_run_target (NULL);
3130   if (t && t->to_is_async_p != delegate_is_async_p)
3131     return (t->to_is_async_p) (t);
3132   return 0;
3133 }
3134
3135 static int
3136 find_default_supports_non_stop (struct target_ops *self)
3137 {
3138   struct target_ops *t;
3139
3140   t = find_default_run_target (NULL);
3141   if (t && t->to_supports_non_stop)
3142     return (t->to_supports_non_stop) (t);
3143   return 0;
3144 }
3145
3146 int
3147 target_supports_non_stop (void)
3148 {
3149   struct target_ops *t;
3150
3151   for (t = &current_target; t != NULL; t = t->beneath)
3152     if (t->to_supports_non_stop)
3153       return t->to_supports_non_stop (t);
3154
3155   return 0;
3156 }
3157
3158 /* Implement the "info proc" command.  */
3159
3160 int
3161 target_info_proc (char *args, enum info_proc_what what)
3162 {
3163   struct target_ops *t;
3164
3165   /* If we're already connected to something that can get us OS
3166      related data, use it.  Otherwise, try using the native
3167      target.  */
3168   if (current_target.to_stratum >= process_stratum)
3169     t = current_target.beneath;
3170   else
3171     t = find_default_run_target (NULL);
3172
3173   for (; t != NULL; t = t->beneath)
3174     {
3175       if (t->to_info_proc != NULL)
3176         {
3177           t->to_info_proc (t, args, what);
3178
3179           if (targetdebug)
3180             fprintf_unfiltered (gdb_stdlog,
3181                                 "target_info_proc (\"%s\", %d)\n", args, what);
3182
3183           return 1;
3184         }
3185     }
3186
3187   return 0;
3188 }
3189
3190 static int
3191 find_default_supports_disable_randomization (struct target_ops *self)
3192 {
3193   struct target_ops *t;
3194
3195   t = find_default_run_target (NULL);
3196   if (t && t->to_supports_disable_randomization)
3197     return (t->to_supports_disable_randomization) (t);
3198   return 0;
3199 }
3200
3201 int
3202 target_supports_disable_randomization (void)
3203 {
3204   struct target_ops *t;
3205
3206   for (t = &current_target; t != NULL; t = t->beneath)
3207     if (t->to_supports_disable_randomization)
3208       return t->to_supports_disable_randomization (t);
3209
3210   return 0;
3211 }
3212
3213 char *
3214 target_get_osdata (const char *type)
3215 {
3216   struct target_ops *t;
3217
3218   /* If we're already connected to something that can get us OS
3219      related data, use it.  Otherwise, try using the native
3220      target.  */
3221   if (current_target.to_stratum >= process_stratum)
3222     t = current_target.beneath;
3223   else
3224     t = find_default_run_target ("get OS data");
3225
3226   if (!t)
3227     return NULL;
3228
3229   return target_read_stralloc (t, TARGET_OBJECT_OSDATA, type);
3230 }
3231
3232 /* Determine the current address space of thread PTID.  */
3233
3234 struct address_space *
3235 target_thread_address_space (ptid_t ptid)
3236 {
3237   struct address_space *aspace;
3238   struct inferior *inf;
3239   struct target_ops *t;
3240
3241   for (t = current_target.beneath; t != NULL; t = t->beneath)
3242     {
3243       if (t->to_thread_address_space != NULL)
3244         {
3245           aspace = t->to_thread_address_space (t, ptid);
3246           gdb_assert (aspace);
3247
3248           if (targetdebug)
3249             fprintf_unfiltered (gdb_stdlog,
3250                                 "target_thread_address_space (%s) = %d\n",
3251                                 target_pid_to_str (ptid),
3252                                 address_space_num (aspace));
3253           return aspace;
3254         }
3255     }
3256
3257   /* Fall-back to the "main" address space of the inferior.  */
3258   inf = find_inferior_pid (ptid_get_pid (ptid));
3259
3260   if (inf == NULL || inf->aspace == NULL)
3261     internal_error (__FILE__, __LINE__,
3262                     _("Can't determine the current "
3263                       "address space of thread %s\n"),
3264                     target_pid_to_str (ptid));
3265
3266   return inf->aspace;
3267 }
3268
3269
3270 /* Target file operations.  */
3271
3272 static struct target_ops *
3273 default_fileio_target (void)
3274 {
3275   /* If we're already connected to something that can perform
3276      file I/O, use it. Otherwise, try using the native target.  */
3277   if (current_target.to_stratum >= process_stratum)
3278     return current_target.beneath;
3279   else
3280     return find_default_run_target ("file I/O");
3281 }
3282
3283 /* Open FILENAME on the target, using FLAGS and MODE.  Return a
3284    target file descriptor, or -1 if an error occurs (and set
3285    *TARGET_ERRNO).  */
3286 int
3287 target_fileio_open (const char *filename, int flags, int mode,
3288                     int *target_errno)
3289 {
3290   struct target_ops *t;
3291
3292   for (t = default_fileio_target (); t != NULL; t = t->beneath)
3293     {
3294       if (t->to_fileio_open != NULL)
3295         {
3296           int fd = t->to_fileio_open (t, filename, flags, mode, target_errno);
3297
3298           if (targetdebug)
3299             fprintf_unfiltered (gdb_stdlog,
3300                                 "target_fileio_open (%s,0x%x,0%o) = %d (%d)\n",
3301                                 filename, flags, mode,
3302                                 fd, fd != -1 ? 0 : *target_errno);
3303           return fd;
3304         }
3305     }
3306
3307   *target_errno = FILEIO_ENOSYS;
3308   return -1;
3309 }
3310
3311 /* Write up to LEN bytes from WRITE_BUF to FD on the target.
3312    Return the number of bytes written, or -1 if an error occurs
3313    (and set *TARGET_ERRNO).  */
3314 int
3315 target_fileio_pwrite (int fd, const gdb_byte *write_buf, int len,
3316                       ULONGEST offset, int *target_errno)
3317 {
3318   struct target_ops *t;
3319
3320   for (t = default_fileio_target (); t != NULL; t = t->beneath)
3321     {
3322       if (t->to_fileio_pwrite != NULL)
3323         {
3324           int ret = t->to_fileio_pwrite (t, fd, write_buf, len, offset,
3325                                          target_errno);
3326
3327           if (targetdebug)
3328             fprintf_unfiltered (gdb_stdlog,
3329                                 "target_fileio_pwrite (%d,...,%d,%s) "
3330                                 "= %d (%d)\n",
3331                                 fd, len, pulongest (offset),
3332                                 ret, ret != -1 ? 0 : *target_errno);
3333           return ret;
3334         }
3335     }
3336
3337   *target_errno = FILEIO_ENOSYS;
3338   return -1;
3339 }
3340
3341 /* Read up to LEN bytes FD on the target into READ_BUF.
3342    Return the number of bytes read, or -1 if an error occurs
3343    (and set *TARGET_ERRNO).  */
3344 int
3345 target_fileio_pread (int fd, gdb_byte *read_buf, int len,
3346                      ULONGEST offset, int *target_errno)
3347 {
3348   struct target_ops *t;
3349
3350   for (t = default_fileio_target (); t != NULL; t = t->beneath)
3351     {
3352       if (t->to_fileio_pread != NULL)
3353         {
3354           int ret = t->to_fileio_pread (t, fd, read_buf, len, offset,
3355                                         target_errno);
3356
3357           if (targetdebug)
3358             fprintf_unfiltered (gdb_stdlog,
3359                                 "target_fileio_pread (%d,...,%d,%s) "
3360                                 "= %d (%d)\n",
3361                                 fd, len, pulongest (offset),
3362                                 ret, ret != -1 ? 0 : *target_errno);
3363           return ret;
3364         }
3365     }
3366
3367   *target_errno = FILEIO_ENOSYS;
3368   return -1;
3369 }
3370
3371 /* Close FD on the target.  Return 0, or -1 if an error occurs
3372    (and set *TARGET_ERRNO).  */
3373 int
3374 target_fileio_close (int fd, int *target_errno)
3375 {
3376   struct target_ops *t;
3377
3378   for (t = default_fileio_target (); t != NULL; t = t->beneath)
3379     {
3380       if (t->to_fileio_close != NULL)
3381         {
3382           int ret = t->to_fileio_close (t, fd, target_errno);
3383
3384           if (targetdebug)
3385             fprintf_unfiltered (gdb_stdlog,
3386                                 "target_fileio_close (%d) = %d (%d)\n",
3387                                 fd, ret, ret != -1 ? 0 : *target_errno);
3388           return ret;
3389         }
3390     }
3391
3392   *target_errno = FILEIO_ENOSYS;
3393   return -1;
3394 }
3395
3396 /* Unlink FILENAME on the target.  Return 0, or -1 if an error
3397    occurs (and set *TARGET_ERRNO).  */
3398 int
3399 target_fileio_unlink (const char *filename, int *target_errno)
3400 {
3401   struct target_ops *t;
3402
3403   for (t = default_fileio_target (); t != NULL; t = t->beneath)
3404     {
3405       if (t->to_fileio_unlink != NULL)
3406         {
3407           int ret = t->to_fileio_unlink (t, filename, target_errno);
3408
3409           if (targetdebug)
3410             fprintf_unfiltered (gdb_stdlog,
3411                                 "target_fileio_unlink (%s) = %d (%d)\n",
3412                                 filename, ret, ret != -1 ? 0 : *target_errno);
3413           return ret;
3414         }
3415     }
3416
3417   *target_errno = FILEIO_ENOSYS;
3418   return -1;
3419 }
3420
3421 /* Read value of symbolic link FILENAME on the target.  Return a
3422    null-terminated string allocated via xmalloc, or NULL if an error
3423    occurs (and set *TARGET_ERRNO).  */
3424 char *
3425 target_fileio_readlink (const char *filename, int *target_errno)
3426 {
3427   struct target_ops *t;
3428
3429   for (t = default_fileio_target (); t != NULL; t = t->beneath)
3430     {
3431       if (t->to_fileio_readlink != NULL)
3432         {
3433           char *ret = t->to_fileio_readlink (t, filename, target_errno);
3434
3435           if (targetdebug)
3436             fprintf_unfiltered (gdb_stdlog,
3437                                 "target_fileio_readlink (%s) = %s (%d)\n",
3438                                 filename, ret? ret : "(nil)",
3439                                 ret? 0 : *target_errno);
3440           return ret;
3441         }
3442     }
3443
3444   *target_errno = FILEIO_ENOSYS;
3445   return NULL;
3446 }
3447
3448 static void
3449 target_fileio_close_cleanup (void *opaque)
3450 {
3451   int fd = *(int *) opaque;
3452   int target_errno;
3453
3454   target_fileio_close (fd, &target_errno);
3455 }
3456
3457 /* Read target file FILENAME.  Store the result in *BUF_P and
3458    return the size of the transferred data.  PADDING additional bytes are
3459    available in *BUF_P.  This is a helper function for
3460    target_fileio_read_alloc; see the declaration of that function for more
3461    information.  */
3462
3463 static LONGEST
3464 target_fileio_read_alloc_1 (const char *filename,
3465                             gdb_byte **buf_p, int padding)
3466 {
3467   struct cleanup *close_cleanup;
3468   size_t buf_alloc, buf_pos;
3469   gdb_byte *buf;
3470   LONGEST n;
3471   int fd;
3472   int target_errno;
3473
3474   fd = target_fileio_open (filename, FILEIO_O_RDONLY, 0700, &target_errno);
3475   if (fd == -1)
3476     return -1;
3477
3478   close_cleanup = make_cleanup (target_fileio_close_cleanup, &fd);
3479
3480   /* Start by reading up to 4K at a time.  The target will throttle
3481      this number down if necessary.  */
3482   buf_alloc = 4096;
3483   buf = xmalloc (buf_alloc);
3484   buf_pos = 0;
3485   while (1)
3486     {
3487       n = target_fileio_pread (fd, &buf[buf_pos],
3488                                buf_alloc - buf_pos - padding, buf_pos,
3489                                &target_errno);
3490       if (n < 0)
3491         {
3492           /* An error occurred.  */
3493           do_cleanups (close_cleanup);
3494           xfree (buf);
3495           return -1;
3496         }
3497       else if (n == 0)
3498         {
3499           /* Read all there was.  */
3500           do_cleanups (close_cleanup);
3501           if (buf_pos == 0)
3502             xfree (buf);
3503           else
3504             *buf_p = buf;
3505           return buf_pos;
3506         }
3507
3508       buf_pos += n;
3509
3510       /* If the buffer is filling up, expand it.  */
3511       if (buf_alloc < buf_pos * 2)
3512         {
3513           buf_alloc *= 2;
3514           buf = xrealloc (buf, buf_alloc);
3515         }
3516
3517       QUIT;
3518     }
3519 }
3520
3521 /* Read target file FILENAME.  Store the result in *BUF_P and return
3522    the size of the transferred data.  See the declaration in "target.h"
3523    function for more information about the return value.  */
3524
3525 LONGEST
3526 target_fileio_read_alloc (const char *filename, gdb_byte **buf_p)
3527 {
3528   return target_fileio_read_alloc_1 (filename, buf_p, 0);
3529 }
3530
3531 /* Read target file FILENAME.  The result is NUL-terminated and
3532    returned as a string, allocated using xmalloc.  If an error occurs
3533    or the transfer is unsupported, NULL is returned.  Empty objects
3534    are returned as allocated but empty strings.  A warning is issued
3535    if the result contains any embedded NUL bytes.  */
3536
3537 char *
3538 target_fileio_read_stralloc (const char *filename)
3539 {
3540   gdb_byte *buffer;
3541   char *bufstr;
3542   LONGEST i, transferred;
3543
3544   transferred = target_fileio_read_alloc_1 (filename, &buffer, 1);
3545   bufstr = (char *) buffer;
3546
3547   if (transferred < 0)
3548     return NULL;
3549
3550   if (transferred == 0)
3551     return xstrdup ("");
3552
3553   bufstr[transferred] = 0;
3554
3555   /* Check for embedded NUL bytes; but allow trailing NULs.  */
3556   for (i = strlen (bufstr); i < transferred; i++)
3557     if (bufstr[i] != 0)
3558       {
3559         warning (_("target file %s "
3560                    "contained unexpected null characters"),
3561                  filename);
3562         break;
3563       }
3564
3565   return bufstr;
3566 }
3567
3568
3569 static int
3570 default_region_ok_for_hw_watchpoint (struct target_ops *self,
3571                                      CORE_ADDR addr, int len)
3572 {
3573   return (len <= gdbarch_ptr_bit (target_gdbarch ()) / TARGET_CHAR_BIT);
3574 }
3575
3576 static int
3577 default_watchpoint_addr_within_range (struct target_ops *target,
3578                                       CORE_ADDR addr,
3579                                       CORE_ADDR start, int length)
3580 {
3581   return addr >= start && addr < start + length;
3582 }
3583
3584 static struct gdbarch *
3585 default_thread_architecture (struct target_ops *ops, ptid_t ptid)
3586 {
3587   return target_gdbarch ();
3588 }
3589
3590 static int
3591 return_zero (void)
3592 {
3593   return 0;
3594 }
3595
3596 static int
3597 return_one (void)
3598 {
3599   return 1;
3600 }
3601
3602 static int
3603 return_minus_one (void)
3604 {
3605   return -1;
3606 }
3607
3608 static void *
3609 return_null (void)
3610 {
3611   return 0;
3612 }
3613
3614 /*
3615  * Find the next target down the stack from the specified target.
3616  */
3617
3618 struct target_ops *
3619 find_target_beneath (struct target_ops *t)
3620 {
3621   return t->beneath;
3622 }
3623
3624 /* See target.h.  */
3625
3626 struct target_ops *
3627 find_target_at (enum strata stratum)
3628 {
3629   struct target_ops *t;
3630
3631   for (t = current_target.beneath; t != NULL; t = t->beneath)
3632     if (t->to_stratum == stratum)
3633       return t;
3634
3635   return NULL;
3636 }
3637
3638 \f
3639 /* The inferior process has died.  Long live the inferior!  */
3640
3641 void
3642 generic_mourn_inferior (void)
3643 {
3644   ptid_t ptid;
3645
3646   ptid = inferior_ptid;
3647   inferior_ptid = null_ptid;
3648
3649   /* Mark breakpoints uninserted in case something tries to delete a
3650      breakpoint while we delete the inferior's threads (which would
3651      fail, since the inferior is long gone).  */
3652   mark_breakpoints_out ();
3653
3654   if (!ptid_equal (ptid, null_ptid))
3655     {
3656       int pid = ptid_get_pid (ptid);
3657       exit_inferior (pid);
3658     }
3659
3660   /* Note this wipes step-resume breakpoints, so needs to be done
3661      after exit_inferior, which ends up referencing the step-resume
3662      breakpoints through clear_thread_inferior_resources.  */
3663   breakpoint_init_inferior (inf_exited);
3664
3665   registers_changed ();
3666
3667   reopen_exec_file ();
3668   reinit_frame_cache ();
3669
3670   if (deprecated_detach_hook)
3671     deprecated_detach_hook ();
3672 }
3673 \f
3674 /* Convert a normal process ID to a string.  Returns the string in a
3675    static buffer.  */
3676
3677 char *
3678 normal_pid_to_str (ptid_t ptid)
3679 {
3680   static char buf[32];
3681
3682   xsnprintf (buf, sizeof buf, "process %d", ptid_get_pid (ptid));
3683   return buf;
3684 }
3685
3686 static char *
3687 dummy_pid_to_str (struct target_ops *ops, ptid_t ptid)
3688 {
3689   return normal_pid_to_str (ptid);
3690 }
3691
3692 /* Error-catcher for target_find_memory_regions.  */
3693 static int
3694 dummy_find_memory_regions (struct target_ops *self,
3695                            find_memory_region_ftype ignore1, void *ignore2)
3696 {
3697   error (_("Command not implemented for this target."));
3698   return 0;
3699 }
3700
3701 /* Error-catcher for target_make_corefile_notes.  */
3702 static char *
3703 dummy_make_corefile_notes (struct target_ops *self,
3704                            bfd *ignore1, int *ignore2)
3705 {
3706   error (_("Command not implemented for this target."));
3707   return NULL;
3708 }
3709
3710 /* Error-catcher for target_get_bookmark.  */
3711 static gdb_byte *
3712 dummy_get_bookmark (struct target_ops *self, char *ignore1, int ignore2)
3713 {
3714   tcomplain ();
3715   return NULL;
3716 }
3717
3718 /* Error-catcher for target_goto_bookmark.  */
3719 static void
3720 dummy_goto_bookmark (struct target_ops *self, gdb_byte *ignore, int from_tty)
3721 {
3722   tcomplain ();
3723 }
3724
3725 /* Set up the handful of non-empty slots needed by the dummy target
3726    vector.  */
3727
3728 static void
3729 init_dummy_target (void)
3730 {
3731   dummy_target.to_shortname = "None";
3732   dummy_target.to_longname = "None";
3733   dummy_target.to_doc = "";
3734   dummy_target.to_create_inferior = find_default_create_inferior;
3735   dummy_target.to_supports_non_stop = find_default_supports_non_stop;
3736   dummy_target.to_supports_disable_randomization
3737     = find_default_supports_disable_randomization;
3738   dummy_target.to_pid_to_str = dummy_pid_to_str;
3739   dummy_target.to_stratum = dummy_stratum;
3740   dummy_target.to_find_memory_regions = dummy_find_memory_regions;
3741   dummy_target.to_make_corefile_notes = dummy_make_corefile_notes;
3742   dummy_target.to_get_bookmark = dummy_get_bookmark;
3743   dummy_target.to_goto_bookmark = dummy_goto_bookmark;
3744   dummy_target.to_has_all_memory = (int (*) (struct target_ops *)) return_zero;
3745   dummy_target.to_has_memory = (int (*) (struct target_ops *)) return_zero;
3746   dummy_target.to_has_stack = (int (*) (struct target_ops *)) return_zero;
3747   dummy_target.to_has_registers = (int (*) (struct target_ops *)) return_zero;
3748   dummy_target.to_has_execution
3749     = (int (*) (struct target_ops *, ptid_t)) return_zero;
3750   dummy_target.to_magic = OPS_MAGIC;
3751
3752   install_dummy_methods (&dummy_target);
3753 }
3754 \f
3755 static void
3756 debug_to_open (char *args, int from_tty)
3757 {
3758   debug_target.to_open (args, from_tty);
3759
3760   fprintf_unfiltered (gdb_stdlog, "target_open (%s, %d)\n", args, from_tty);
3761 }
3762
3763 void
3764 target_close (struct target_ops *targ)
3765 {
3766   gdb_assert (!target_is_pushed (targ));
3767
3768   if (targ->to_xclose != NULL)
3769     targ->to_xclose (targ);
3770   else if (targ->to_close != NULL)
3771     targ->to_close (targ);
3772
3773   if (targetdebug)
3774     fprintf_unfiltered (gdb_stdlog, "target_close ()\n");
3775 }
3776
3777 void
3778 target_attach (char *args, int from_tty)
3779 {
3780   current_target.to_attach (&current_target, args, from_tty);
3781   if (targetdebug)
3782     fprintf_unfiltered (gdb_stdlog, "target_attach (%s, %d)\n",
3783                         args, from_tty);
3784 }
3785
3786 int
3787 target_thread_alive (ptid_t ptid)
3788 {
3789   struct target_ops *t;
3790
3791   for (t = current_target.beneath; t != NULL; t = t->beneath)
3792     {
3793       if (t->to_thread_alive != NULL)
3794         {
3795           int retval;
3796
3797           retval = t->to_thread_alive (t, ptid);
3798           if (targetdebug)
3799             fprintf_unfiltered (gdb_stdlog, "target_thread_alive (%d) = %d\n",
3800                                 ptid_get_pid (ptid), retval);
3801
3802           return retval;
3803         }
3804     }
3805
3806   return 0;
3807 }
3808
3809 void
3810 target_find_new_threads (void)
3811 {
3812   struct target_ops *t;
3813
3814   for (t = current_target.beneath; t != NULL; t = t->beneath)
3815     {
3816       if (t->to_find_new_threads != NULL)
3817         {
3818           t->to_find_new_threads (t);
3819           if (targetdebug)
3820             fprintf_unfiltered (gdb_stdlog, "target_find_new_threads ()\n");
3821
3822           return;
3823         }
3824     }
3825 }
3826
3827 void
3828 target_stop (ptid_t ptid)
3829 {
3830   if (!may_stop)
3831     {
3832       warning (_("May not interrupt or stop the target, ignoring attempt"));
3833       return;
3834     }
3835
3836   (*current_target.to_stop) (&current_target, ptid);
3837 }
3838
3839 static void
3840 debug_to_post_attach (struct target_ops *self, int pid)
3841 {
3842   debug_target.to_post_attach (&debug_target, pid);
3843
3844   fprintf_unfiltered (gdb_stdlog, "target_post_attach (%d)\n", pid);
3845 }
3846
3847 /* Concatenate ELEM to LIST, a comma separate list, and return the
3848    result.  The LIST incoming argument is released.  */
3849
3850 static char *
3851 str_comma_list_concat_elem (char *list, const char *elem)
3852 {
3853   if (list == NULL)
3854     return xstrdup (elem);
3855   else
3856     return reconcat (list, list, ", ", elem, (char *) NULL);
3857 }
3858
3859 /* Helper for target_options_to_string.  If OPT is present in
3860    TARGET_OPTIONS, append the OPT_STR (string version of OPT) in RET.
3861    Returns the new resulting string.  OPT is removed from
3862    TARGET_OPTIONS.  */
3863
3864 static char *
3865 do_option (int *target_options, char *ret,
3866            int opt, char *opt_str)
3867 {
3868   if ((*target_options & opt) != 0)
3869     {
3870       ret = str_comma_list_concat_elem (ret, opt_str);
3871       *target_options &= ~opt;
3872     }
3873
3874   return ret;
3875 }
3876
3877 char *
3878 target_options_to_string (int target_options)
3879 {
3880   char *ret = NULL;
3881
3882 #define DO_TARG_OPTION(OPT) \
3883   ret = do_option (&target_options, ret, OPT, #OPT)
3884
3885   DO_TARG_OPTION (TARGET_WNOHANG);
3886
3887   if (target_options != 0)
3888     ret = str_comma_list_concat_elem (ret, "unknown???");
3889
3890   if (ret == NULL)
3891     ret = xstrdup ("");
3892   return ret;
3893 }
3894
3895 static void
3896 debug_print_register (const char * func,
3897                       struct regcache *regcache, int regno)
3898 {
3899   struct gdbarch *gdbarch = get_regcache_arch (regcache);
3900
3901   fprintf_unfiltered (gdb_stdlog, "%s ", func);
3902   if (regno >= 0 && regno < gdbarch_num_regs (gdbarch)
3903       && gdbarch_register_name (gdbarch, regno) != NULL
3904       && gdbarch_register_name (gdbarch, regno)[0] != '\0')
3905     fprintf_unfiltered (gdb_stdlog, "(%s)",
3906                         gdbarch_register_name (gdbarch, regno));
3907   else
3908     fprintf_unfiltered (gdb_stdlog, "(%d)", regno);
3909   if (regno >= 0 && regno < gdbarch_num_regs (gdbarch))
3910     {
3911       enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
3912       int i, size = register_size (gdbarch, regno);
3913       gdb_byte buf[MAX_REGISTER_SIZE];
3914
3915       regcache_raw_collect (regcache, regno, buf);
3916       fprintf_unfiltered (gdb_stdlog, " = ");
3917       for (i = 0; i < size; i++)
3918         {
3919           fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
3920         }
3921       if (size <= sizeof (LONGEST))
3922         {
3923           ULONGEST val = extract_unsigned_integer (buf, size, byte_order);
3924
3925           fprintf_unfiltered (gdb_stdlog, " %s %s",
3926                               core_addr_to_string_nz (val), plongest (val));
3927         }
3928     }
3929   fprintf_unfiltered (gdb_stdlog, "\n");
3930 }
3931
3932 void
3933 target_fetch_registers (struct regcache *regcache, int regno)
3934 {
3935   struct target_ops *t;
3936
3937   for (t = current_target.beneath; t != NULL; t = t->beneath)
3938     {
3939       if (t->to_fetch_registers != NULL)
3940         {
3941           t->to_fetch_registers (t, regcache, regno);
3942           if (targetdebug)
3943             debug_print_register ("target_fetch_registers", regcache, regno);
3944           return;
3945         }
3946     }
3947 }
3948
3949 void
3950 target_store_registers (struct regcache *regcache, int regno)
3951 {
3952   struct target_ops *t;
3953
3954   if (!may_write_registers)
3955     error (_("Writing to registers is not allowed (regno %d)"), regno);
3956
3957   current_target.to_store_registers (&current_target, regcache, regno);
3958   if (targetdebug)
3959     {
3960       debug_print_register ("target_store_registers", regcache, regno);
3961     }
3962 }
3963
3964 int
3965 target_core_of_thread (ptid_t ptid)
3966 {
3967   struct target_ops *t;
3968
3969   for (t = current_target.beneath; t != NULL; t = t->beneath)
3970     {
3971       if (t->to_core_of_thread != NULL)
3972         {
3973           int retval = t->to_core_of_thread (t, ptid);
3974
3975           if (targetdebug)
3976             fprintf_unfiltered (gdb_stdlog,
3977                                 "target_core_of_thread (%d) = %d\n",
3978                                 ptid_get_pid (ptid), retval);
3979           return retval;
3980         }
3981     }
3982
3983   return -1;
3984 }
3985
3986 int
3987 target_verify_memory (const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size)
3988 {
3989   struct target_ops *t;
3990
3991   for (t = current_target.beneath; t != NULL; t = t->beneath)
3992     {
3993       if (t->to_verify_memory != NULL)
3994         {
3995           int retval = t->to_verify_memory (t, data, memaddr, size);
3996
3997           if (targetdebug)
3998             fprintf_unfiltered (gdb_stdlog,
3999                                 "target_verify_memory (%s, %s) = %d\n",
4000                                 paddress (target_gdbarch (), memaddr),
4001                                 pulongest (size),
4002                                 retval);
4003           return retval;
4004         }
4005     }
4006
4007   tcomplain ();
4008 }
4009
4010 /* The documentation for this function is in its prototype declaration in
4011    target.h.  */
4012
4013 int
4014 target_insert_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask, int rw)
4015 {
4016   struct target_ops *t;
4017
4018   for (t = current_target.beneath; t != NULL; t = t->beneath)
4019     if (t->to_insert_mask_watchpoint != NULL)
4020       {
4021         int ret;
4022
4023         ret = t->to_insert_mask_watchpoint (t, addr, mask, rw);
4024
4025         if (targetdebug)
4026           fprintf_unfiltered (gdb_stdlog, "\
4027 target_insert_mask_watchpoint (%s, %s, %d) = %d\n",
4028                               core_addr_to_string (addr),
4029                               core_addr_to_string (mask), rw, ret);
4030
4031         return ret;
4032       }
4033
4034   return 1;
4035 }
4036
4037 /* The documentation for this function is in its prototype declaration in
4038    target.h.  */
4039
4040 int
4041 target_remove_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask, int rw)
4042 {
4043   struct target_ops *t;
4044
4045   for (t = current_target.beneath; t != NULL; t = t->beneath)
4046     if (t->to_remove_mask_watchpoint != NULL)
4047       {
4048         int ret;
4049
4050         ret = t->to_remove_mask_watchpoint (t, addr, mask, rw);
4051
4052         if (targetdebug)
4053           fprintf_unfiltered (gdb_stdlog, "\
4054 target_remove_mask_watchpoint (%s, %s, %d) = %d\n",
4055                               core_addr_to_string (addr),
4056                               core_addr_to_string (mask), rw, ret);
4057
4058         return ret;
4059       }
4060
4061   return 1;
4062 }
4063
4064 /* The documentation for this function is in its prototype declaration
4065    in target.h.  */
4066
4067 int
4068 target_masked_watch_num_registers (CORE_ADDR addr, CORE_ADDR mask)
4069 {
4070   struct target_ops *t;
4071
4072   for (t = current_target.beneath; t != NULL; t = t->beneath)
4073     if (t->to_masked_watch_num_registers != NULL)
4074       return t->to_masked_watch_num_registers (t, addr, mask);
4075
4076   return -1;
4077 }
4078
4079 /* The documentation for this function is in its prototype declaration
4080    in target.h.  */
4081
4082 int
4083 target_ranged_break_num_registers (void)
4084 {
4085   struct target_ops *t;
4086
4087   for (t = current_target.beneath; t != NULL; t = t->beneath)
4088     if (t->to_ranged_break_num_registers != NULL)
4089       return t->to_ranged_break_num_registers (t);
4090
4091   return -1;
4092 }
4093
4094 /* See target.h.  */
4095
4096 struct btrace_target_info *
4097 target_enable_btrace (ptid_t ptid)
4098 {
4099   struct target_ops *t;
4100
4101   for (t = current_target.beneath; t != NULL; t = t->beneath)
4102     if (t->to_enable_btrace != NULL)
4103       return t->to_enable_btrace (t, ptid);
4104
4105   tcomplain ();
4106   return NULL;
4107 }
4108
4109 /* See target.h.  */
4110
4111 void
4112 target_disable_btrace (struct btrace_target_info *btinfo)
4113 {
4114   struct target_ops *t;
4115
4116   for (t = current_target.beneath; t != NULL; t = t->beneath)
4117     if (t->to_disable_btrace != NULL)
4118       {
4119         t->to_disable_btrace (t, btinfo);
4120         return;
4121       }
4122
4123   tcomplain ();
4124 }
4125
4126 /* See target.h.  */
4127
4128 void
4129 target_teardown_btrace (struct btrace_target_info *btinfo)
4130 {
4131   struct target_ops *t;
4132
4133   for (t = current_target.beneath; t != NULL; t = t->beneath)
4134     if (t->to_teardown_btrace != NULL)
4135       {
4136         t->to_teardown_btrace (t, btinfo);
4137         return;
4138       }
4139
4140   tcomplain ();
4141 }
4142
4143 /* See target.h.  */
4144
4145 enum btrace_error
4146 target_read_btrace (VEC (btrace_block_s) **btrace,
4147                     struct btrace_target_info *btinfo,
4148                     enum btrace_read_type type)
4149 {
4150   struct target_ops *t;
4151
4152   for (t = current_target.beneath; t != NULL; t = t->beneath)
4153     if (t->to_read_btrace != NULL)
4154       return t->to_read_btrace (t, btrace, btinfo, type);
4155
4156   tcomplain ();
4157   return BTRACE_ERR_NOT_SUPPORTED;
4158 }
4159
4160 /* See target.h.  */
4161
4162 void
4163 target_stop_recording (void)
4164 {
4165   struct target_ops *t;
4166
4167   for (t = current_target.beneath; t != NULL; t = t->beneath)
4168     if (t->to_stop_recording != NULL)
4169       {
4170         t->to_stop_recording (t);
4171         return;
4172       }
4173
4174   /* This is optional.  */
4175 }
4176
4177 /* See target.h.  */
4178
4179 void
4180 target_info_record (void)
4181 {
4182   struct target_ops *t;
4183
4184   for (t = current_target.beneath; t != NULL; t = t->beneath)
4185     if (t->to_info_record != NULL)
4186       {
4187         t->to_info_record (t);
4188         return;
4189       }
4190
4191   tcomplain ();
4192 }
4193
4194 /* See target.h.  */
4195
4196 void
4197 target_save_record (const char *filename)
4198 {
4199   struct target_ops *t;
4200
4201   for (t = current_target.beneath; t != NULL; t = t->beneath)
4202     if (t->to_save_record != NULL)
4203       {
4204         t->to_save_record (t, filename);
4205         return;
4206       }
4207
4208   tcomplain ();
4209 }
4210
4211 /* See target.h.  */
4212
4213 int
4214 target_supports_delete_record (void)
4215 {
4216   struct target_ops *t;
4217
4218   for (t = current_target.beneath; t != NULL; t = t->beneath)
4219     if (t->to_delete_record != NULL)
4220       return 1;
4221
4222   return 0;
4223 }
4224
4225 /* See target.h.  */
4226
4227 void
4228 target_delete_record (void)
4229 {
4230   struct target_ops *t;
4231
4232   for (t = current_target.beneath; t != NULL; t = t->beneath)
4233     if (t->to_delete_record != NULL)
4234       {
4235         t->to_delete_record (t);
4236         return;
4237       }
4238
4239   tcomplain ();
4240 }
4241
4242 /* See target.h.  */
4243
4244 int
4245 target_record_is_replaying (void)
4246 {
4247   struct target_ops *t;
4248
4249   for (t = current_target.beneath; t != NULL; t = t->beneath)
4250     if (t->to_record_is_replaying != NULL)
4251         return t->to_record_is_replaying (t);
4252
4253   return 0;
4254 }
4255
4256 /* See target.h.  */
4257
4258 void
4259 target_goto_record_begin (void)
4260 {
4261   struct target_ops *t;
4262
4263   for (t = current_target.beneath; t != NULL; t = t->beneath)
4264     if (t->to_goto_record_begin != NULL)
4265       {
4266         t->to_goto_record_begin (t);
4267         return;
4268       }
4269
4270   tcomplain ();
4271 }
4272
4273 /* See target.h.  */
4274
4275 void
4276 target_goto_record_end (void)
4277 {
4278   struct target_ops *t;
4279
4280   for (t = current_target.beneath; t != NULL; t = t->beneath)
4281     if (t->to_goto_record_end != NULL)
4282       {
4283         t->to_goto_record_end (t);
4284         return;
4285       }
4286
4287   tcomplain ();
4288 }
4289
4290 /* See target.h.  */
4291
4292 void
4293 target_goto_record (ULONGEST insn)
4294 {
4295   struct target_ops *t;
4296
4297   for (t = current_target.beneath; t != NULL; t = t->beneath)
4298     if (t->to_goto_record != NULL)
4299       {
4300         t->to_goto_record (t, insn);
4301         return;
4302       }
4303
4304   tcomplain ();
4305 }
4306
4307 /* See target.h.  */
4308
4309 void
4310 target_insn_history (int size, int flags)
4311 {
4312   struct target_ops *t;
4313
4314   for (t = current_target.beneath; t != NULL; t = t->beneath)
4315     if (t->to_insn_history != NULL)
4316       {
4317         t->to_insn_history (t, size, flags);
4318         return;
4319       }
4320
4321   tcomplain ();
4322 }
4323
4324 /* See target.h.  */
4325
4326 void
4327 target_insn_history_from (ULONGEST from, int size, int flags)
4328 {
4329   struct target_ops *t;
4330
4331   for (t = current_target.beneath; t != NULL; t = t->beneath)
4332     if (t->to_insn_history_from != NULL)
4333       {
4334         t->to_insn_history_from (t, from, size, flags);
4335         return;
4336       }
4337
4338   tcomplain ();
4339 }
4340
4341 /* See target.h.  */
4342
4343 void
4344 target_insn_history_range (ULONGEST begin, ULONGEST end, int flags)
4345 {
4346   struct target_ops *t;
4347
4348   for (t = current_target.beneath; t != NULL; t = t->beneath)
4349     if (t->to_insn_history_range != NULL)
4350       {
4351         t->to_insn_history_range (t, begin, end, flags);
4352         return;
4353       }
4354
4355   tcomplain ();
4356 }
4357
4358 /* See target.h.  */
4359
4360 void
4361 target_call_history (int size, int flags)
4362 {
4363   struct target_ops *t;
4364
4365   for (t = current_target.beneath; t != NULL; t = t->beneath)
4366     if (t->to_call_history != NULL)
4367       {
4368         t->to_call_history (t, size, flags);
4369         return;
4370       }
4371
4372   tcomplain ();
4373 }
4374
4375 /* See target.h.  */
4376
4377 void
4378 target_call_history_from (ULONGEST begin, int size, int flags)
4379 {
4380   struct target_ops *t;
4381
4382   for (t = current_target.beneath; t != NULL; t = t->beneath)
4383     if (t->to_call_history_from != NULL)
4384       {
4385         t->to_call_history_from (t, begin, size, flags);
4386         return;
4387       }
4388
4389   tcomplain ();
4390 }
4391
4392 /* See target.h.  */
4393
4394 void
4395 target_call_history_range (ULONGEST begin, ULONGEST end, int flags)
4396 {
4397   struct target_ops *t;
4398
4399   for (t = current_target.beneath; t != NULL; t = t->beneath)
4400     if (t->to_call_history_range != NULL)
4401       {
4402         t->to_call_history_range (t, begin, end, flags);
4403         return;
4404       }
4405
4406   tcomplain ();
4407 }
4408
4409 static void
4410 debug_to_prepare_to_store (struct target_ops *self, struct regcache *regcache)
4411 {
4412   debug_target.to_prepare_to_store (&debug_target, regcache);
4413
4414   fprintf_unfiltered (gdb_stdlog, "target_prepare_to_store ()\n");
4415 }
4416
4417 /* See target.h.  */
4418
4419 const struct frame_unwind *
4420 target_get_unwinder (void)
4421 {
4422   struct target_ops *t;
4423
4424   for (t = current_target.beneath; t != NULL; t = t->beneath)
4425     if (t->to_get_unwinder != NULL)
4426       return t->to_get_unwinder;
4427
4428   return NULL;
4429 }
4430
4431 /* See target.h.  */
4432
4433 const struct frame_unwind *
4434 target_get_tailcall_unwinder (void)
4435 {
4436   struct target_ops *t;
4437
4438   for (t = current_target.beneath; t != NULL; t = t->beneath)
4439     if (t->to_get_tailcall_unwinder != NULL)
4440       return t->to_get_tailcall_unwinder;
4441
4442   return NULL;
4443 }
4444
4445 /* See target.h.  */
4446
4447 CORE_ADDR
4448 forward_target_decr_pc_after_break (struct target_ops *ops,
4449                                     struct gdbarch *gdbarch)
4450 {
4451   for (; ops != NULL; ops = ops->beneath)
4452     if (ops->to_decr_pc_after_break != NULL)
4453       return ops->to_decr_pc_after_break (ops, gdbarch);
4454
4455   return gdbarch_decr_pc_after_break (gdbarch);
4456 }
4457
4458 /* See target.h.  */
4459
4460 CORE_ADDR
4461 target_decr_pc_after_break (struct gdbarch *gdbarch)
4462 {
4463   return forward_target_decr_pc_after_break (current_target.beneath, gdbarch);
4464 }
4465
4466 static int
4467 deprecated_debug_xfer_memory (CORE_ADDR memaddr, bfd_byte *myaddr, int len,
4468                               int write, struct mem_attrib *attrib,
4469                               struct target_ops *target)
4470 {
4471   int retval;
4472
4473   retval = debug_target.deprecated_xfer_memory (memaddr, myaddr, len, write,
4474                                                 attrib, target);
4475
4476   fprintf_unfiltered (gdb_stdlog,
4477                       "target_xfer_memory (%s, xxx, %d, %s, xxx) = %d",
4478                       paddress (target_gdbarch (), memaddr), len,
4479                       write ? "write" : "read", retval);
4480
4481   if (retval > 0)
4482     {
4483       int i;
4484
4485       fputs_unfiltered (", bytes =", gdb_stdlog);
4486       for (i = 0; i < retval; i++)
4487         {
4488           if ((((intptr_t) &(myaddr[i])) & 0xf) == 0)
4489             {
4490               if (targetdebug < 2 && i > 0)
4491                 {
4492                   fprintf_unfiltered (gdb_stdlog, " ...");
4493                   break;
4494                 }
4495               fprintf_unfiltered (gdb_stdlog, "\n");
4496             }
4497
4498           fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
4499         }
4500     }
4501
4502   fputc_unfiltered ('\n', gdb_stdlog);
4503
4504   return retval;
4505 }
4506
4507 static void
4508 debug_to_files_info (struct target_ops *target)
4509 {
4510   debug_target.to_files_info (target);
4511
4512   fprintf_unfiltered (gdb_stdlog, "target_files_info (xxx)\n");
4513 }
4514
4515 static int
4516 debug_to_insert_breakpoint (struct target_ops *ops, struct gdbarch *gdbarch,
4517                             struct bp_target_info *bp_tgt)
4518 {
4519   int retval;
4520
4521   retval = debug_target.to_insert_breakpoint (&debug_target, gdbarch, bp_tgt);
4522
4523   fprintf_unfiltered (gdb_stdlog,
4524                       "target_insert_breakpoint (%s, xxx) = %ld\n",
4525                       core_addr_to_string (bp_tgt->placed_address),
4526                       (unsigned long) retval);
4527   return retval;
4528 }
4529
4530 static int
4531 debug_to_remove_breakpoint (struct target_ops *ops, struct gdbarch *gdbarch,
4532                             struct bp_target_info *bp_tgt)
4533 {
4534   int retval;
4535
4536   retval = debug_target.to_remove_breakpoint (&debug_target, gdbarch, bp_tgt);
4537
4538   fprintf_unfiltered (gdb_stdlog,
4539                       "target_remove_breakpoint (%s, xxx) = %ld\n",
4540                       core_addr_to_string (bp_tgt->placed_address),
4541                       (unsigned long) retval);
4542   return retval;
4543 }
4544
4545 static int
4546 debug_to_can_use_hw_breakpoint (struct target_ops *self,
4547                                 int type, int cnt, int from_tty)
4548 {
4549   int retval;
4550
4551   retval = debug_target.to_can_use_hw_breakpoint (&debug_target,
4552                                                   type, cnt, from_tty);
4553
4554   fprintf_unfiltered (gdb_stdlog,
4555                       "target_can_use_hw_breakpoint (%ld, %ld, %ld) = %ld\n",
4556                       (unsigned long) type,
4557                       (unsigned long) cnt,
4558                       (unsigned long) from_tty,
4559                       (unsigned long) retval);
4560   return retval;
4561 }
4562
4563 static int
4564 debug_to_region_ok_for_hw_watchpoint (struct target_ops *self,
4565                                       CORE_ADDR addr, int len)
4566 {
4567   CORE_ADDR retval;
4568
4569   retval = debug_target.to_region_ok_for_hw_watchpoint (&debug_target,
4570                                                         addr, len);
4571
4572   fprintf_unfiltered (gdb_stdlog,
4573                       "target_region_ok_for_hw_watchpoint (%s, %ld) = %s\n",
4574                       core_addr_to_string (addr), (unsigned long) len,
4575                       core_addr_to_string (retval));
4576   return retval;
4577 }
4578
4579 static int
4580 debug_to_can_accel_watchpoint_condition (struct target_ops *self,
4581                                          CORE_ADDR addr, int len, int rw,
4582                                          struct expression *cond)
4583 {
4584   int retval;
4585
4586   retval = debug_target.to_can_accel_watchpoint_condition (&debug_target,
4587                                                            addr, len,
4588                                                            rw, cond);
4589
4590   fprintf_unfiltered (gdb_stdlog,
4591                       "target_can_accel_watchpoint_condition "
4592                       "(%s, %d, %d, %s) = %ld\n",
4593                       core_addr_to_string (addr), len, rw,
4594                       host_address_to_string (cond), (unsigned long) retval);
4595   return retval;
4596 }
4597
4598 static int
4599 debug_to_stopped_by_watchpoint (struct target_ops *ops)
4600 {
4601   int retval;
4602
4603   retval = debug_target.to_stopped_by_watchpoint (&debug_target);
4604
4605   fprintf_unfiltered (gdb_stdlog,
4606                       "target_stopped_by_watchpoint () = %ld\n",
4607                       (unsigned long) retval);
4608   return retval;
4609 }
4610
4611 static int
4612 debug_to_stopped_data_address (struct target_ops *target, CORE_ADDR *addr)
4613 {
4614   int retval;
4615
4616   retval = debug_target.to_stopped_data_address (target, addr);
4617
4618   fprintf_unfiltered (gdb_stdlog,
4619                       "target_stopped_data_address ([%s]) = %ld\n",
4620                       core_addr_to_string (*addr),
4621                       (unsigned long)retval);
4622   return retval;
4623 }
4624
4625 static int
4626 debug_to_watchpoint_addr_within_range (struct target_ops *target,
4627                                        CORE_ADDR addr,
4628                                        CORE_ADDR start, int length)
4629 {
4630   int retval;
4631
4632   retval = debug_target.to_watchpoint_addr_within_range (target, addr,
4633                                                          start, length);
4634
4635   fprintf_filtered (gdb_stdlog,
4636                     "target_watchpoint_addr_within_range (%s, %s, %d) = %d\n",
4637                     core_addr_to_string (addr), core_addr_to_string (start),
4638                     length, retval);
4639   return retval;
4640 }
4641
4642 static int
4643 debug_to_insert_hw_breakpoint (struct target_ops *self,
4644                                struct gdbarch *gdbarch,
4645                                struct bp_target_info *bp_tgt)
4646 {
4647   int retval;
4648
4649   retval = debug_target.to_insert_hw_breakpoint (&debug_target,
4650                                                  gdbarch, bp_tgt);
4651
4652   fprintf_unfiltered (gdb_stdlog,
4653                       "target_insert_hw_breakpoint (%s, xxx) = %ld\n",
4654                       core_addr_to_string (bp_tgt->placed_address),
4655                       (unsigned long) retval);
4656   return retval;
4657 }
4658
4659 static int
4660 debug_to_remove_hw_breakpoint (struct target_ops *self,
4661                                struct gdbarch *gdbarch,
4662                                struct bp_target_info *bp_tgt)
4663 {
4664   int retval;
4665
4666   retval = debug_target.to_remove_hw_breakpoint (&debug_target,
4667                                                  gdbarch, bp_tgt);
4668
4669   fprintf_unfiltered (gdb_stdlog,
4670                       "target_remove_hw_breakpoint (%s, xxx) = %ld\n",
4671                       core_addr_to_string (bp_tgt->placed_address),
4672                       (unsigned long) retval);
4673   return retval;
4674 }
4675
4676 static int
4677 debug_to_insert_watchpoint (struct target_ops *self,
4678                             CORE_ADDR addr, int len, int type,
4679                             struct expression *cond)
4680 {
4681   int retval;
4682
4683   retval = debug_target.to_insert_watchpoint (&debug_target,
4684                                               addr, len, type, cond);
4685
4686   fprintf_unfiltered (gdb_stdlog,
4687                       "target_insert_watchpoint (%s, %d, %d, %s) = %ld\n",
4688                       core_addr_to_string (addr), len, type,
4689                       host_address_to_string (cond), (unsigned long) retval);
4690   return retval;
4691 }
4692
4693 static int
4694 debug_to_remove_watchpoint (struct target_ops *self,
4695                             CORE_ADDR addr, int len, int type,
4696                             struct expression *cond)
4697 {
4698   int retval;
4699
4700   retval = debug_target.to_remove_watchpoint (&debug_target,
4701                                               addr, len, type, cond);
4702
4703   fprintf_unfiltered (gdb_stdlog,
4704                       "target_remove_watchpoint (%s, %d, %d, %s) = %ld\n",
4705                       core_addr_to_string (addr), len, type,
4706                       host_address_to_string (cond), (unsigned long) retval);
4707   return retval;
4708 }
4709
4710 static void
4711 debug_to_terminal_init (struct target_ops *self)
4712 {
4713   debug_target.to_terminal_init (&debug_target);
4714
4715   fprintf_unfiltered (gdb_stdlog, "target_terminal_init ()\n");
4716 }
4717
4718 static void
4719 debug_to_terminal_inferior (struct target_ops *self)
4720 {
4721   debug_target.to_terminal_inferior (&debug_target);
4722
4723   fprintf_unfiltered (gdb_stdlog, "target_terminal_inferior ()\n");
4724 }
4725
4726 static void
4727 debug_to_terminal_ours_for_output (struct target_ops *self)
4728 {
4729   debug_target.to_terminal_ours_for_output (&debug_target);
4730
4731   fprintf_unfiltered (gdb_stdlog, "target_terminal_ours_for_output ()\n");
4732 }
4733
4734 static void
4735 debug_to_terminal_ours (struct target_ops *self)
4736 {
4737   debug_target.to_terminal_ours (&debug_target);
4738
4739   fprintf_unfiltered (gdb_stdlog, "target_terminal_ours ()\n");
4740 }
4741
4742 static void
4743 debug_to_terminal_save_ours (struct target_ops *self)
4744 {
4745   debug_target.to_terminal_save_ours (&debug_target);
4746
4747   fprintf_unfiltered (gdb_stdlog, "target_terminal_save_ours ()\n");
4748 }
4749
4750 static void
4751 debug_to_terminal_info (struct target_ops *self,
4752                         const char *arg, int from_tty)
4753 {
4754   debug_target.to_terminal_info (&debug_target, arg, from_tty);
4755
4756   fprintf_unfiltered (gdb_stdlog, "target_terminal_info (%s, %d)\n", arg,
4757                       from_tty);
4758 }
4759
4760 static void
4761 debug_to_load (struct target_ops *self, char *args, int from_tty)
4762 {
4763   debug_target.to_load (&debug_target, args, from_tty);
4764
4765   fprintf_unfiltered (gdb_stdlog, "target_load (%s, %d)\n", args, from_tty);
4766 }
4767
4768 static void
4769 debug_to_post_startup_inferior (struct target_ops *self, ptid_t ptid)
4770 {
4771   debug_target.to_post_startup_inferior (&debug_target, ptid);
4772
4773   fprintf_unfiltered (gdb_stdlog, "target_post_startup_inferior (%d)\n",
4774                       ptid_get_pid (ptid));
4775 }
4776
4777 static int
4778 debug_to_insert_fork_catchpoint (struct target_ops *self, int pid)
4779 {
4780   int retval;
4781
4782   retval = debug_target.to_insert_fork_catchpoint (&debug_target, pid);
4783
4784   fprintf_unfiltered (gdb_stdlog, "target_insert_fork_catchpoint (%d) = %d\n",
4785                       pid, retval);
4786
4787   return retval;
4788 }
4789
4790 static int
4791 debug_to_remove_fork_catchpoint (struct target_ops *self, int pid)
4792 {
4793   int retval;
4794
4795   retval = debug_target.to_remove_fork_catchpoint (&debug_target, pid);
4796
4797   fprintf_unfiltered (gdb_stdlog, "target_remove_fork_catchpoint (%d) = %d\n",
4798                       pid, retval);
4799
4800   return retval;
4801 }
4802
4803 static int
4804 debug_to_insert_vfork_catchpoint (struct target_ops *self, int pid)
4805 {
4806   int retval;
4807
4808   retval = debug_target.to_insert_vfork_catchpoint (&debug_target, pid);
4809
4810   fprintf_unfiltered (gdb_stdlog, "target_insert_vfork_catchpoint (%d) = %d\n",
4811                       pid, retval);
4812
4813   return retval;
4814 }
4815
4816 static int
4817 debug_to_remove_vfork_catchpoint (struct target_ops *self, int pid)
4818 {
4819   int retval;
4820
4821   retval = debug_target.to_remove_vfork_catchpoint (&debug_target, pid);
4822
4823   fprintf_unfiltered (gdb_stdlog, "target_remove_vfork_catchpoint (%d) = %d\n",
4824                       pid, retval);
4825
4826   return retval;
4827 }
4828
4829 static int
4830 debug_to_insert_exec_catchpoint (struct target_ops *self, int pid)
4831 {
4832   int retval;
4833
4834   retval = debug_target.to_insert_exec_catchpoint (&debug_target, pid);
4835
4836   fprintf_unfiltered (gdb_stdlog, "target_insert_exec_catchpoint (%d) = %d\n",
4837                       pid, retval);
4838
4839   return retval;
4840 }
4841
4842 static int
4843 debug_to_remove_exec_catchpoint (struct target_ops *self, int pid)
4844 {
4845   int retval;
4846
4847   retval = debug_target.to_remove_exec_catchpoint (&debug_target, pid);
4848
4849   fprintf_unfiltered (gdb_stdlog, "target_remove_exec_catchpoint (%d) = %d\n",
4850                       pid, retval);
4851
4852   return retval;
4853 }
4854
4855 static int
4856 debug_to_has_exited (struct target_ops *self,
4857                      int pid, int wait_status, int *exit_status)
4858 {
4859   int has_exited;
4860
4861   has_exited = debug_target.to_has_exited (&debug_target,
4862                                            pid, wait_status, exit_status);
4863
4864   fprintf_unfiltered (gdb_stdlog, "target_has_exited (%d, %d, %d) = %d\n",
4865                       pid, wait_status, *exit_status, has_exited);
4866
4867   return has_exited;
4868 }
4869
4870 static int
4871 debug_to_can_run (struct target_ops *self)
4872 {
4873   int retval;
4874
4875   retval = debug_target.to_can_run (&debug_target);
4876
4877   fprintf_unfiltered (gdb_stdlog, "target_can_run () = %d\n", retval);
4878
4879   return retval;
4880 }
4881
4882 static struct gdbarch *
4883 debug_to_thread_architecture (struct target_ops *ops, ptid_t ptid)
4884 {
4885   struct gdbarch *retval;
4886
4887   retval = debug_target.to_thread_architecture (ops, ptid);
4888
4889   fprintf_unfiltered (gdb_stdlog, 
4890                       "target_thread_architecture (%s) = %s [%s]\n",
4891                       target_pid_to_str (ptid),
4892                       host_address_to_string (retval),
4893                       gdbarch_bfd_arch_info (retval)->printable_name);
4894   return retval;
4895 }
4896
4897 static void
4898 debug_to_stop (struct target_ops *self, ptid_t ptid)
4899 {
4900   debug_target.to_stop (&debug_target, ptid);
4901
4902   fprintf_unfiltered (gdb_stdlog, "target_stop (%s)\n",
4903                       target_pid_to_str (ptid));
4904 }
4905
4906 static void
4907 debug_to_rcmd (struct target_ops *self, char *command,
4908                struct ui_file *outbuf)
4909 {
4910   debug_target.to_rcmd (&debug_target, command, outbuf);
4911   fprintf_unfiltered (gdb_stdlog, "target_rcmd (%s, ...)\n", command);
4912 }
4913
4914 static char *
4915 debug_to_pid_to_exec_file (struct target_ops *self, int pid)
4916 {
4917   char *exec_file;
4918
4919   exec_file = debug_target.to_pid_to_exec_file (&debug_target, pid);
4920
4921   fprintf_unfiltered (gdb_stdlog, "target_pid_to_exec_file (%d) = %s\n",
4922                       pid, exec_file);
4923
4924   return exec_file;
4925 }
4926
4927 static void
4928 setup_target_debug (void)
4929 {
4930   memcpy (&debug_target, &current_target, sizeof debug_target);
4931
4932   current_target.to_open = debug_to_open;
4933   current_target.to_post_attach = debug_to_post_attach;
4934   current_target.to_prepare_to_store = debug_to_prepare_to_store;
4935   current_target.deprecated_xfer_memory = deprecated_debug_xfer_memory;
4936   current_target.to_files_info = debug_to_files_info;
4937   current_target.to_insert_breakpoint = debug_to_insert_breakpoint;
4938   current_target.to_remove_breakpoint = debug_to_remove_breakpoint;
4939   current_target.to_can_use_hw_breakpoint = debug_to_can_use_hw_breakpoint;
4940   current_target.to_insert_hw_breakpoint = debug_to_insert_hw_breakpoint;
4941   current_target.to_remove_hw_breakpoint = debug_to_remove_hw_breakpoint;
4942   current_target.to_insert_watchpoint = debug_to_insert_watchpoint;
4943   current_target.to_remove_watchpoint = debug_to_remove_watchpoint;
4944   current_target.to_stopped_by_watchpoint = debug_to_stopped_by_watchpoint;
4945   current_target.to_stopped_data_address = debug_to_stopped_data_address;
4946   current_target.to_watchpoint_addr_within_range
4947     = debug_to_watchpoint_addr_within_range;
4948   current_target.to_region_ok_for_hw_watchpoint
4949     = debug_to_region_ok_for_hw_watchpoint;
4950   current_target.to_can_accel_watchpoint_condition
4951     = debug_to_can_accel_watchpoint_condition;
4952   current_target.to_terminal_init = debug_to_terminal_init;
4953   current_target.to_terminal_inferior = debug_to_terminal_inferior;
4954   current_target.to_terminal_ours_for_output
4955     = debug_to_terminal_ours_for_output;
4956   current_target.to_terminal_ours = debug_to_terminal_ours;
4957   current_target.to_terminal_save_ours = debug_to_terminal_save_ours;
4958   current_target.to_terminal_info = debug_to_terminal_info;
4959   current_target.to_load = debug_to_load;
4960   current_target.to_post_startup_inferior = debug_to_post_startup_inferior;
4961   current_target.to_insert_fork_catchpoint = debug_to_insert_fork_catchpoint;
4962   current_target.to_remove_fork_catchpoint = debug_to_remove_fork_catchpoint;
4963   current_target.to_insert_vfork_catchpoint = debug_to_insert_vfork_catchpoint;
4964   current_target.to_remove_vfork_catchpoint = debug_to_remove_vfork_catchpoint;
4965   current_target.to_insert_exec_catchpoint = debug_to_insert_exec_catchpoint;
4966   current_target.to_remove_exec_catchpoint = debug_to_remove_exec_catchpoint;
4967   current_target.to_has_exited = debug_to_has_exited;
4968   current_target.to_can_run = debug_to_can_run;
4969   current_target.to_stop = debug_to_stop;
4970   current_target.to_rcmd = debug_to_rcmd;
4971   current_target.to_pid_to_exec_file = debug_to_pid_to_exec_file;
4972   current_target.to_thread_architecture = debug_to_thread_architecture;
4973 }
4974 \f
4975
4976 static char targ_desc[] =
4977 "Names of targets and files being debugged.\nShows the entire \
4978 stack of targets currently in use (including the exec-file,\n\
4979 core-file, and process, if any), as well as the symbol file name.";
4980
4981 static void
4982 default_rcmd (struct target_ops *self, char *command, struct ui_file *output)
4983 {
4984   error (_("\"monitor\" command not supported by this target."));
4985 }
4986
4987 static void
4988 do_monitor_command (char *cmd,
4989                  int from_tty)
4990 {
4991   target_rcmd (cmd, gdb_stdtarg);
4992 }
4993
4994 /* Print the name of each layers of our target stack.  */
4995
4996 static void
4997 maintenance_print_target_stack (char *cmd, int from_tty)
4998 {
4999   struct target_ops *t;
5000
5001   printf_filtered (_("The current target stack is:\n"));
5002
5003   for (t = target_stack; t != NULL; t = t->beneath)
5004     {
5005       printf_filtered ("  - %s (%s)\n", t->to_shortname, t->to_longname);
5006     }
5007 }
5008
5009 /* Controls if async mode is permitted.  */
5010 int target_async_permitted = 0;
5011
5012 /* The set command writes to this variable.  If the inferior is
5013    executing, target_async_permitted is *not* updated.  */
5014 static int target_async_permitted_1 = 0;
5015
5016 static void
5017 set_target_async_command (char *args, int from_tty,
5018                           struct cmd_list_element *c)
5019 {
5020   if (have_live_inferiors ())
5021     {
5022       target_async_permitted_1 = target_async_permitted;
5023       error (_("Cannot change this setting while the inferior is running."));
5024     }
5025
5026   target_async_permitted = target_async_permitted_1;
5027 }
5028
5029 static void
5030 show_target_async_command (struct ui_file *file, int from_tty,
5031                            struct cmd_list_element *c,
5032                            const char *value)
5033 {
5034   fprintf_filtered (file,
5035                     _("Controlling the inferior in "
5036                       "asynchronous mode is %s.\n"), value);
5037 }
5038
5039 /* Temporary copies of permission settings.  */
5040
5041 static int may_write_registers_1 = 1;
5042 static int may_write_memory_1 = 1;
5043 static int may_insert_breakpoints_1 = 1;
5044 static int may_insert_tracepoints_1 = 1;
5045 static int may_insert_fast_tracepoints_1 = 1;
5046 static int may_stop_1 = 1;
5047
5048 /* Make the user-set values match the real values again.  */
5049
5050 void
5051 update_target_permissions (void)
5052 {
5053   may_write_registers_1 = may_write_registers;
5054   may_write_memory_1 = may_write_memory;
5055   may_insert_breakpoints_1 = may_insert_breakpoints;
5056   may_insert_tracepoints_1 = may_insert_tracepoints;
5057   may_insert_fast_tracepoints_1 = may_insert_fast_tracepoints;
5058   may_stop_1 = may_stop;
5059 }
5060
5061 /* The one function handles (most of) the permission flags in the same
5062    way.  */
5063
5064 static void
5065 set_target_permissions (char *args, int from_tty,
5066                         struct cmd_list_element *c)
5067 {
5068   if (target_has_execution)
5069     {
5070       update_target_permissions ();
5071       error (_("Cannot change this setting while the inferior is running."));
5072     }
5073
5074   /* Make the real values match the user-changed values.  */
5075   may_write_registers = may_write_registers_1;
5076   may_insert_breakpoints = may_insert_breakpoints_1;
5077   may_insert_tracepoints = may_insert_tracepoints_1;
5078   may_insert_fast_tracepoints = may_insert_fast_tracepoints_1;
5079   may_stop = may_stop_1;
5080   update_observer_mode ();
5081 }
5082
5083 /* Set memory write permission independently of observer mode.  */
5084
5085 static void
5086 set_write_memory_permission (char *args, int from_tty,
5087                         struct cmd_list_element *c)
5088 {
5089   /* Make the real values match the user-changed values.  */
5090   may_write_memory = may_write_memory_1;
5091   update_observer_mode ();
5092 }
5093
5094
5095 void
5096 initialize_targets (void)
5097 {
5098   init_dummy_target ();
5099   push_target (&dummy_target);
5100
5101   add_info ("target", target_info, targ_desc);
5102   add_info ("files", target_info, targ_desc);
5103
5104   add_setshow_zuinteger_cmd ("target", class_maintenance, &targetdebug, _("\
5105 Set target debugging."), _("\
5106 Show target debugging."), _("\
5107 When non-zero, target debugging is enabled.  Higher numbers are more\n\
5108 verbose.  Changes do not take effect until the next \"run\" or \"target\"\n\
5109 command."),
5110                              NULL,
5111                              show_targetdebug,
5112                              &setdebuglist, &showdebuglist);
5113
5114   add_setshow_boolean_cmd ("trust-readonly-sections", class_support,
5115                            &trust_readonly, _("\
5116 Set mode for reading from readonly sections."), _("\
5117 Show mode for reading from readonly sections."), _("\
5118 When this mode is on, memory reads from readonly sections (such as .text)\n\
5119 will be read from the object file instead of from the target.  This will\n\
5120 result in significant performance improvement for remote targets."),
5121                            NULL,
5122                            show_trust_readonly,
5123                            &setlist, &showlist);
5124
5125   add_com ("monitor", class_obscure, do_monitor_command,
5126            _("Send a command to the remote monitor (remote targets only)."));
5127
5128   add_cmd ("target-stack", class_maintenance, maintenance_print_target_stack,
5129            _("Print the name of each layer of the internal target stack."),
5130            &maintenanceprintlist);
5131
5132   add_setshow_boolean_cmd ("target-async", no_class,
5133                            &target_async_permitted_1, _("\
5134 Set whether gdb controls the inferior in asynchronous mode."), _("\
5135 Show whether gdb controls the inferior in asynchronous mode."), _("\
5136 Tells gdb whether to control the inferior in asynchronous mode."),
5137                            set_target_async_command,
5138                            show_target_async_command,
5139                            &setlist,
5140                            &showlist);
5141
5142   add_setshow_boolean_cmd ("may-write-registers", class_support,
5143                            &may_write_registers_1, _("\
5144 Set permission to write into registers."), _("\
5145 Show permission to write into registers."), _("\
5146 When this permission is on, GDB may write into the target's registers.\n\
5147 Otherwise, any sort of write attempt will result in an error."),
5148                            set_target_permissions, NULL,
5149                            &setlist, &showlist);
5150
5151   add_setshow_boolean_cmd ("may-write-memory", class_support,
5152                            &may_write_memory_1, _("\
5153 Set permission to write into target memory."), _("\
5154 Show permission to write into target memory."), _("\
5155 When this permission is on, GDB may write into the target's memory.\n\
5156 Otherwise, any sort of write attempt will result in an error."),
5157                            set_write_memory_permission, NULL,
5158                            &setlist, &showlist);
5159
5160   add_setshow_boolean_cmd ("may-insert-breakpoints", class_support,
5161                            &may_insert_breakpoints_1, _("\
5162 Set permission to insert breakpoints in the target."), _("\
5163 Show permission to insert breakpoints in the target."), _("\
5164 When this permission is on, GDB may insert breakpoints in the program.\n\
5165 Otherwise, any sort of insertion attempt will result in an error."),
5166                            set_target_permissions, NULL,
5167                            &setlist, &showlist);
5168
5169   add_setshow_boolean_cmd ("may-insert-tracepoints", class_support,
5170                            &may_insert_tracepoints_1, _("\
5171 Set permission to insert tracepoints in the target."), _("\
5172 Show permission to insert tracepoints in the target."), _("\
5173 When this permission is on, GDB may insert tracepoints in the program.\n\
5174 Otherwise, any sort of insertion attempt will result in an error."),
5175                            set_target_permissions, NULL,
5176                            &setlist, &showlist);
5177
5178   add_setshow_boolean_cmd ("may-insert-fast-tracepoints", class_support,
5179                            &may_insert_fast_tracepoints_1, _("\
5180 Set permission to insert fast tracepoints in the target."), _("\
5181 Show permission to insert fast tracepoints in the target."), _("\
5182 When this permission is on, GDB may insert fast tracepoints.\n\
5183 Otherwise, any sort of insertion attempt will result in an error."),
5184                            set_target_permissions, NULL,
5185                            &setlist, &showlist);
5186
5187   add_setshow_boolean_cmd ("may-interrupt", class_support,
5188                            &may_stop_1, _("\
5189 Set permission to interrupt or signal the target."), _("\
5190 Show permission to interrupt or signal the target."), _("\
5191 When this permission is on, GDB may interrupt/stop the target's execution.\n\
5192 Otherwise, any attempt to interrupt or stop will be ignored."),
5193                            set_target_permissions, NULL,
5194                            &setlist, &showlist);
5195 }