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