* NEWS: Mention tracepoint additions.
[platform/upstream/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 (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   /* Zero length requests are ok and require no work.  */
1401   if (len == 0)
1402     return 0;
1403
1404   /* For accesses to unmapped overlay sections, read directly from
1405      files.  Must do this first, as MEMADDR may need adjustment.  */
1406   if (readbuf != NULL && overlay_debugging)
1407     {
1408       struct obj_section *section = find_pc_overlay (memaddr);
1409
1410       if (pc_in_unmapped_range (memaddr, section))
1411         {
1412           struct target_section_table *table
1413             = target_get_section_table (ops);
1414           const char *section_name = section->the_bfd_section->name;
1415
1416           memaddr = overlay_mapped_address (memaddr, section);
1417           return section_table_xfer_memory_partial (readbuf, writebuf,
1418                                                     memaddr, len,
1419                                                     table->sections,
1420                                                     table->sections_end,
1421                                                     section_name);
1422         }
1423     }
1424
1425   /* Try the executable files, if "trust-readonly-sections" is set.  */
1426   if (readbuf != NULL && trust_readonly)
1427     {
1428       struct target_section *secp;
1429       struct target_section_table *table;
1430
1431       secp = target_section_by_addr (ops, memaddr);
1432       if (secp != NULL
1433           && (bfd_get_section_flags (secp->bfd, secp->the_bfd_section)
1434               & SEC_READONLY))
1435         {
1436           table = target_get_section_table (ops);
1437           return section_table_xfer_memory_partial (readbuf, writebuf,
1438                                                     memaddr, len,
1439                                                     table->sections,
1440                                                     table->sections_end,
1441                                                     NULL);
1442         }
1443     }
1444
1445   /* If reading unavailable memory in the context of traceframes, and
1446      this address falls within a read-only section, fallback to
1447      reading from live memory.  */
1448   if (readbuf != NULL && get_traceframe_number () != -1)
1449     {
1450       VEC(mem_range_s) *available;
1451
1452       /* If we fail to get the set of available memory, then the
1453          target does not support querying traceframe info, and so we
1454          attempt reading from the traceframe anyway (assuming the
1455          target implements the old QTro packet then).  */
1456       if (traceframe_available_memory (&available, memaddr, len))
1457         {
1458           struct cleanup *old_chain;
1459
1460           old_chain = make_cleanup (VEC_cleanup(mem_range_s), &available);
1461
1462           if (VEC_empty (mem_range_s, available)
1463               || VEC_index (mem_range_s, available, 0)->start != memaddr)
1464             {
1465               /* Don't read into the traceframe's available
1466                  memory.  */
1467               if (!VEC_empty (mem_range_s, available))
1468                 {
1469                   LONGEST oldlen = len;
1470
1471                   len = VEC_index (mem_range_s, available, 0)->start - memaddr;
1472                   gdb_assert (len <= oldlen);
1473                 }
1474
1475               do_cleanups (old_chain);
1476
1477               /* This goes through the topmost target again.  */
1478               res = memory_xfer_live_readonly_partial (ops, object,
1479                                                        readbuf, memaddr, len);
1480               if (res > 0)
1481                 return res;
1482
1483               /* No use trying further, we know some memory starting
1484                  at MEMADDR isn't available.  */
1485               return -1;
1486             }
1487
1488           /* Don't try to read more than how much is available, in
1489              case the target implements the deprecated QTro packet to
1490              cater for older GDBs (the target's knowledge of read-only
1491              sections may be outdated by now).  */
1492           len = VEC_index (mem_range_s, available, 0)->length;
1493
1494           do_cleanups (old_chain);
1495         }
1496     }
1497
1498   /* Try GDB's internal data cache.  */
1499   region = lookup_mem_region (memaddr);
1500   /* region->hi == 0 means there's no upper bound.  */
1501   if (memaddr + len < region->hi || region->hi == 0)
1502     reg_len = len;
1503   else
1504     reg_len = region->hi - memaddr;
1505
1506   switch (region->attrib.mode)
1507     {
1508     case MEM_RO:
1509       if (writebuf != NULL)
1510         return -1;
1511       break;
1512
1513     case MEM_WO:
1514       if (readbuf != NULL)
1515         return -1;
1516       break;
1517
1518     case MEM_FLASH:
1519       /* We only support writing to flash during "load" for now.  */
1520       if (writebuf != NULL)
1521         error (_("Writing to flash memory forbidden in this context"));
1522       break;
1523
1524     case MEM_NONE:
1525       return -1;
1526     }
1527
1528   if (!ptid_equal (inferior_ptid, null_ptid))
1529     inf = find_inferior_pid (ptid_get_pid (inferior_ptid));
1530   else
1531     inf = NULL;
1532
1533   if (inf != NULL
1534       /* The dcache reads whole cache lines; that doesn't play well
1535          with reading from a trace buffer, because reading outside of
1536          the collected memory range fails.  */
1537       && get_traceframe_number () == -1
1538       && (region->attrib.cache
1539           || (stack_cache_enabled_p && object == TARGET_OBJECT_STACK_MEMORY)))
1540     {
1541       if (readbuf != NULL)
1542         res = dcache_xfer_memory (ops, target_dcache, memaddr, readbuf,
1543                                   reg_len, 0);
1544       else
1545         /* FIXME drow/2006-08-09: If we're going to preserve const
1546            correctness dcache_xfer_memory should take readbuf and
1547            writebuf.  */
1548         res = dcache_xfer_memory (ops, target_dcache, memaddr,
1549                                   (void *) writebuf,
1550                                   reg_len, 1);
1551       if (res <= 0)
1552         return -1;
1553       else
1554         {
1555           if (readbuf && !show_memory_breakpoints)
1556             breakpoint_restore_shadows (readbuf, memaddr, reg_len);
1557           return res;
1558         }
1559     }
1560
1561   /* If none of those methods found the memory we wanted, fall back
1562      to a target partial transfer.  Normally a single call to
1563      to_xfer_partial is enough; if it doesn't recognize an object
1564      it will call the to_xfer_partial of the next target down.
1565      But for memory this won't do.  Memory is the only target
1566      object which can be read from more than one valid target.
1567      A core file, for instance, could have some of memory but
1568      delegate other bits to the target below it.  So, we must
1569      manually try all targets.  */
1570
1571   do
1572     {
1573       res = ops->to_xfer_partial (ops, TARGET_OBJECT_MEMORY, NULL,
1574                                   readbuf, writebuf, memaddr, reg_len);
1575       if (res > 0)
1576         break;
1577
1578       /* We want to continue past core files to executables, but not
1579          past a running target's memory.  */
1580       if (ops->to_has_all_memory (ops))
1581         break;
1582
1583       ops = ops->beneath;
1584     }
1585   while (ops != NULL);
1586
1587   if (res > 0 && readbuf != NULL && !show_memory_breakpoints)
1588     breakpoint_restore_shadows (readbuf, memaddr, reg_len);
1589
1590   /* Make sure the cache gets updated no matter what - if we are writing
1591      to the stack.  Even if this write is not tagged as such, we still need
1592      to update the cache.  */
1593
1594   if (res > 0
1595       && inf != NULL
1596       && writebuf != NULL
1597       && !region->attrib.cache
1598       && stack_cache_enabled_p
1599       && object != TARGET_OBJECT_STACK_MEMORY)
1600     {
1601       dcache_update (target_dcache, memaddr, (void *) writebuf, res);
1602     }
1603
1604   /* If we still haven't got anything, return the last error.  We
1605      give up.  */
1606   return res;
1607 }
1608
1609 static void
1610 restore_show_memory_breakpoints (void *arg)
1611 {
1612   show_memory_breakpoints = (uintptr_t) arg;
1613 }
1614
1615 struct cleanup *
1616 make_show_memory_breakpoints_cleanup (int show)
1617 {
1618   int current = show_memory_breakpoints;
1619
1620   show_memory_breakpoints = show;
1621   return make_cleanup (restore_show_memory_breakpoints,
1622                        (void *) (uintptr_t) current);
1623 }
1624
1625 /* For docs see target.h, to_xfer_partial.  */
1626
1627 static LONGEST
1628 target_xfer_partial (struct target_ops *ops,
1629                      enum target_object object, const char *annex,
1630                      void *readbuf, const void *writebuf,
1631                      ULONGEST offset, LONGEST len)
1632 {
1633   LONGEST retval;
1634
1635   gdb_assert (ops->to_xfer_partial != NULL);
1636
1637   if (writebuf && !may_write_memory)
1638     error (_("Writing to memory is not allowed (addr %s, len %s)"),
1639            core_addr_to_string_nz (offset), plongest (len));
1640
1641   /* If this is a memory transfer, let the memory-specific code
1642      have a look at it instead.  Memory transfers are more
1643      complicated.  */
1644   if (object == TARGET_OBJECT_MEMORY || object == TARGET_OBJECT_STACK_MEMORY)
1645     retval = memory_xfer_partial (ops, object, readbuf,
1646                                   writebuf, offset, len);
1647   else
1648     {
1649       enum target_object raw_object = object;
1650
1651       /* If this is a raw memory transfer, request the normal
1652          memory object from other layers.  */
1653       if (raw_object == TARGET_OBJECT_RAW_MEMORY)
1654         raw_object = TARGET_OBJECT_MEMORY;
1655
1656       retval = ops->to_xfer_partial (ops, raw_object, annex, readbuf,
1657                                      writebuf, offset, len);
1658     }
1659
1660   if (targetdebug)
1661     {
1662       const unsigned char *myaddr = NULL;
1663
1664       fprintf_unfiltered (gdb_stdlog,
1665                           "%s:target_xfer_partial "
1666                           "(%d, %s, %s, %s, %s, %s) = %s",
1667                           ops->to_shortname,
1668                           (int) object,
1669                           (annex ? annex : "(null)"),
1670                           host_address_to_string (readbuf),
1671                           host_address_to_string (writebuf),
1672                           core_addr_to_string_nz (offset),
1673                           plongest (len), plongest (retval));
1674
1675       if (readbuf)
1676         myaddr = readbuf;
1677       if (writebuf)
1678         myaddr = writebuf;
1679       if (retval > 0 && myaddr != NULL)
1680         {
1681           int i;
1682
1683           fputs_unfiltered (", bytes =", gdb_stdlog);
1684           for (i = 0; i < retval; i++)
1685             {
1686               if ((((intptr_t) &(myaddr[i])) & 0xf) == 0)
1687                 {
1688                   if (targetdebug < 2 && i > 0)
1689                     {
1690                       fprintf_unfiltered (gdb_stdlog, " ...");
1691                       break;
1692                     }
1693                   fprintf_unfiltered (gdb_stdlog, "\n");
1694                 }
1695
1696               fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
1697             }
1698         }
1699
1700       fputc_unfiltered ('\n', gdb_stdlog);
1701     }
1702   return retval;
1703 }
1704
1705 /* Read LEN bytes of target memory at address MEMADDR, placing the results in
1706    GDB's memory at MYADDR.  Returns either 0 for success or an errno value
1707    if any error occurs.
1708
1709    If an error occurs, no guarantee is made about the contents of the data at
1710    MYADDR.  In particular, the caller should not depend upon partial reads
1711    filling the buffer with good data.  There is no way for the caller to know
1712    how much good data might have been transfered anyway.  Callers that can
1713    deal with partial reads should call target_read (which will retry until
1714    it makes no progress, and then return how much was transferred).  */
1715
1716 int
1717 target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
1718 {
1719   /* Dispatch to the topmost target, not the flattened current_target.
1720      Memory accesses check target->to_has_(all_)memory, and the
1721      flattened target doesn't inherit those.  */
1722   if (target_read (current_target.beneath, TARGET_OBJECT_MEMORY, NULL,
1723                    myaddr, memaddr, len) == len)
1724     return 0;
1725   else
1726     return EIO;
1727 }
1728
1729 /* Like target_read_memory, but specify explicitly that this is a read from
1730    the target's stack.  This may trigger different cache behavior.  */
1731
1732 int
1733 target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
1734 {
1735   /* Dispatch to the topmost target, not the flattened current_target.
1736      Memory accesses check target->to_has_(all_)memory, and the
1737      flattened target doesn't inherit those.  */
1738
1739   if (target_read (current_target.beneath, TARGET_OBJECT_STACK_MEMORY, NULL,
1740                    myaddr, memaddr, len) == len)
1741     return 0;
1742   else
1743     return EIO;
1744 }
1745
1746 /* Write LEN bytes from MYADDR to target memory at address MEMADDR.
1747    Returns either 0 for success or an errno value if any error occurs.
1748    If an error occurs, no guarantee is made about how much data got written.
1749    Callers that can deal with partial writes should call target_write.  */
1750
1751 int
1752 target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, int len)
1753 {
1754   /* Dispatch to the topmost target, not the flattened current_target.
1755      Memory accesses check target->to_has_(all_)memory, and the
1756      flattened target doesn't inherit those.  */
1757   if (target_write (current_target.beneath, TARGET_OBJECT_MEMORY, NULL,
1758                     myaddr, memaddr, len) == len)
1759     return 0;
1760   else
1761     return EIO;
1762 }
1763
1764 /* Fetch the target's memory map.  */
1765
1766 VEC(mem_region_s) *
1767 target_memory_map (void)
1768 {
1769   VEC(mem_region_s) *result;
1770   struct mem_region *last_one, *this_one;
1771   int ix;
1772   struct target_ops *t;
1773
1774   if (targetdebug)
1775     fprintf_unfiltered (gdb_stdlog, "target_memory_map ()\n");
1776
1777   for (t = current_target.beneath; t != NULL; t = t->beneath)
1778     if (t->to_memory_map != NULL)
1779       break;
1780
1781   if (t == NULL)
1782     return NULL;
1783
1784   result = t->to_memory_map (t);
1785   if (result == NULL)
1786     return NULL;
1787
1788   qsort (VEC_address (mem_region_s, result),
1789          VEC_length (mem_region_s, result),
1790          sizeof (struct mem_region), mem_region_cmp);
1791
1792   /* Check that regions do not overlap.  Simultaneously assign
1793      a numbering for the "mem" commands to use to refer to
1794      each region.  */
1795   last_one = NULL;
1796   for (ix = 0; VEC_iterate (mem_region_s, result, ix, this_one); ix++)
1797     {
1798       this_one->number = ix;
1799
1800       if (last_one && last_one->hi > this_one->lo)
1801         {
1802           warning (_("Overlapping regions in memory map: ignoring"));
1803           VEC_free (mem_region_s, result);
1804           return NULL;
1805         }
1806       last_one = this_one;
1807     }
1808
1809   return result;
1810 }
1811
1812 void
1813 target_flash_erase (ULONGEST address, LONGEST length)
1814 {
1815   struct target_ops *t;
1816
1817   for (t = current_target.beneath; t != NULL; t = t->beneath)
1818     if (t->to_flash_erase != NULL)
1819       {
1820         if (targetdebug)
1821           fprintf_unfiltered (gdb_stdlog, "target_flash_erase (%s, %s)\n",
1822                               hex_string (address), phex (length, 0));
1823         t->to_flash_erase (t, address, length);
1824         return;
1825       }
1826
1827   tcomplain ();
1828 }
1829
1830 void
1831 target_flash_done (void)
1832 {
1833   struct target_ops *t;
1834
1835   for (t = current_target.beneath; t != NULL; t = t->beneath)
1836     if (t->to_flash_done != NULL)
1837       {
1838         if (targetdebug)
1839           fprintf_unfiltered (gdb_stdlog, "target_flash_done\n");
1840         t->to_flash_done (t);
1841         return;
1842       }
1843
1844   tcomplain ();
1845 }
1846
1847 static void
1848 show_trust_readonly (struct ui_file *file, int from_tty,
1849                      struct cmd_list_element *c, const char *value)
1850 {
1851   fprintf_filtered (file,
1852                     _("Mode for reading from readonly sections is %s.\n"),
1853                     value);
1854 }
1855
1856 /* More generic transfers.  */
1857
1858 static LONGEST
1859 default_xfer_partial (struct target_ops *ops, enum target_object object,
1860                       const char *annex, gdb_byte *readbuf,
1861                       const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
1862 {
1863   if (object == TARGET_OBJECT_MEMORY
1864       && ops->deprecated_xfer_memory != NULL)
1865     /* If available, fall back to the target's
1866        "deprecated_xfer_memory" method.  */
1867     {
1868       int xfered = -1;
1869
1870       errno = 0;
1871       if (writebuf != NULL)
1872         {
1873           void *buffer = xmalloc (len);
1874           struct cleanup *cleanup = make_cleanup (xfree, buffer);
1875
1876           memcpy (buffer, writebuf, len);
1877           xfered = ops->deprecated_xfer_memory (offset, buffer, len,
1878                                                 1/*write*/, NULL, ops);
1879           do_cleanups (cleanup);
1880         }
1881       if (readbuf != NULL)
1882         xfered = ops->deprecated_xfer_memory (offset, readbuf, len, 
1883                                               0/*read*/, NULL, ops);
1884       if (xfered > 0)
1885         return xfered;
1886       else if (xfered == 0 && errno == 0)
1887         /* "deprecated_xfer_memory" uses 0, cross checked against
1888            ERRNO as one indication of an error.  */
1889         return 0;
1890       else
1891         return -1;
1892     }
1893   else if (ops->beneath != NULL)
1894     return ops->beneath->to_xfer_partial (ops->beneath, object, annex,
1895                                           readbuf, writebuf, offset, len);
1896   else
1897     return -1;
1898 }
1899
1900 /* The xfer_partial handler for the topmost target.  Unlike the default,
1901    it does not need to handle memory specially; it just passes all
1902    requests down the stack.  */
1903
1904 static LONGEST
1905 current_xfer_partial (struct target_ops *ops, enum target_object object,
1906                       const char *annex, gdb_byte *readbuf,
1907                       const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
1908 {
1909   if (ops->beneath != NULL)
1910     return ops->beneath->to_xfer_partial (ops->beneath, object, annex,
1911                                           readbuf, writebuf, offset, len);
1912   else
1913     return -1;
1914 }
1915
1916 /* Target vector read/write partial wrapper functions.  */
1917
1918 static LONGEST
1919 target_read_partial (struct target_ops *ops,
1920                      enum target_object object,
1921                      const char *annex, gdb_byte *buf,
1922                      ULONGEST offset, LONGEST len)
1923 {
1924   return target_xfer_partial (ops, object, annex, buf, NULL, offset, len);
1925 }
1926
1927 static LONGEST
1928 target_write_partial (struct target_ops *ops,
1929                       enum target_object object,
1930                       const char *annex, const gdb_byte *buf,
1931                       ULONGEST offset, LONGEST len)
1932 {
1933   return target_xfer_partial (ops, object, annex, NULL, buf, offset, len);
1934 }
1935
1936 /* Wrappers to perform the full transfer.  */
1937
1938 /* For docs on target_read see target.h.  */
1939
1940 LONGEST
1941 target_read (struct target_ops *ops,
1942              enum target_object object,
1943              const char *annex, gdb_byte *buf,
1944              ULONGEST offset, LONGEST len)
1945 {
1946   LONGEST xfered = 0;
1947
1948   while (xfered < len)
1949     {
1950       LONGEST xfer = target_read_partial (ops, object, annex,
1951                                           (gdb_byte *) buf + xfered,
1952                                           offset + xfered, len - xfered);
1953
1954       /* Call an observer, notifying them of the xfer progress?  */
1955       if (xfer == 0)
1956         return xfered;
1957       if (xfer < 0)
1958         return -1;
1959       xfered += xfer;
1960       QUIT;
1961     }
1962   return len;
1963 }
1964
1965 /* Assuming that the entire [begin, end) range of memory cannot be
1966    read, try to read whatever subrange is possible to read.
1967
1968    The function returns, in RESULT, either zero or one memory block.
1969    If there's a readable subrange at the beginning, it is completely
1970    read and returned.  Any further readable subrange will not be read.
1971    Otherwise, if there's a readable subrange at the end, it will be
1972    completely read and returned.  Any readable subranges before it
1973    (obviously, not starting at the beginning), will be ignored.  In
1974    other cases -- either no readable subrange, or readable subrange(s)
1975    that is neither at the beginning, or end, nothing is returned.
1976
1977    The purpose of this function is to handle a read across a boundary
1978    of accessible memory in a case when memory map is not available.
1979    The above restrictions are fine for this case, but will give
1980    incorrect results if the memory is 'patchy'.  However, supporting
1981    'patchy' memory would require trying to read every single byte,
1982    and it seems unacceptable solution.  Explicit memory map is
1983    recommended for this case -- and target_read_memory_robust will
1984    take care of reading multiple ranges then.  */
1985
1986 static void
1987 read_whatever_is_readable (struct target_ops *ops,
1988                            ULONGEST begin, ULONGEST end,
1989                            VEC(memory_read_result_s) **result)
1990 {
1991   gdb_byte *buf = xmalloc (end - begin);
1992   ULONGEST current_begin = begin;
1993   ULONGEST current_end = end;
1994   int forward;
1995   memory_read_result_s r;
1996
1997   /* If we previously failed to read 1 byte, nothing can be done here.  */
1998   if (end - begin <= 1)
1999     {
2000       xfree (buf);
2001       return;
2002     }
2003
2004   /* Check that either first or the last byte is readable, and give up
2005      if not.  This heuristic is meant to permit reading accessible memory
2006      at the boundary of accessible region.  */
2007   if (target_read_partial (ops, TARGET_OBJECT_MEMORY, NULL,
2008                            buf, begin, 1) == 1)
2009     {
2010       forward = 1;
2011       ++current_begin;
2012     }
2013   else if (target_read_partial (ops, TARGET_OBJECT_MEMORY, NULL,
2014                                 buf + (end-begin) - 1, end - 1, 1) == 1)
2015     {
2016       forward = 0;
2017       --current_end;
2018     }
2019   else
2020     {
2021       xfree (buf);
2022       return;
2023     }
2024
2025   /* Loop invariant is that the [current_begin, current_end) was previously
2026      found to be not readable as a whole.
2027
2028      Note loop condition -- if the range has 1 byte, we can't divide the range
2029      so there's no point trying further.  */
2030   while (current_end - current_begin > 1)
2031     {
2032       ULONGEST first_half_begin, first_half_end;
2033       ULONGEST second_half_begin, second_half_end;
2034       LONGEST xfer;
2035       ULONGEST middle = current_begin + (current_end - current_begin)/2;
2036
2037       if (forward)
2038         {
2039           first_half_begin = current_begin;
2040           first_half_end = middle;
2041           second_half_begin = middle;
2042           second_half_end = current_end;
2043         }
2044       else
2045         {
2046           first_half_begin = middle;
2047           first_half_end = current_end;
2048           second_half_begin = current_begin;
2049           second_half_end = middle;
2050         }
2051
2052       xfer = target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2053                           buf + (first_half_begin - begin),
2054                           first_half_begin,
2055                           first_half_end - first_half_begin);
2056
2057       if (xfer == first_half_end - first_half_begin)
2058         {
2059           /* This half reads up fine.  So, the error must be in the
2060              other half.  */
2061           current_begin = second_half_begin;
2062           current_end = second_half_end;
2063         }
2064       else
2065         {
2066           /* This half is not readable.  Because we've tried one byte, we
2067              know some part of this half if actually redable.  Go to the next
2068              iteration to divide again and try to read.
2069
2070              We don't handle the other half, because this function only tries
2071              to read a single readable subrange.  */
2072           current_begin = first_half_begin;
2073           current_end = first_half_end;
2074         }
2075     }
2076
2077   if (forward)
2078     {
2079       /* The [begin, current_begin) range has been read.  */
2080       r.begin = begin;
2081       r.end = current_begin;
2082       r.data = buf;
2083     }
2084   else
2085     {
2086       /* The [current_end, end) range has been read.  */
2087       LONGEST rlen = end - current_end;
2088
2089       r.data = xmalloc (rlen);
2090       memcpy (r.data, buf + current_end - begin, rlen);
2091       r.begin = current_end;
2092       r.end = end;
2093       xfree (buf);
2094     }
2095   VEC_safe_push(memory_read_result_s, (*result), &r);
2096 }
2097
2098 void
2099 free_memory_read_result_vector (void *x)
2100 {
2101   VEC(memory_read_result_s) *v = x;
2102   memory_read_result_s *current;
2103   int ix;
2104
2105   for (ix = 0; VEC_iterate (memory_read_result_s, v, ix, current); ++ix)
2106     {
2107       xfree (current->data);
2108     }
2109   VEC_free (memory_read_result_s, v);
2110 }
2111
2112 VEC(memory_read_result_s) *
2113 read_memory_robust (struct target_ops *ops, ULONGEST offset, LONGEST len)
2114 {
2115   VEC(memory_read_result_s) *result = 0;
2116
2117   LONGEST xfered = 0;
2118   while (xfered < len)
2119     {
2120       struct mem_region *region = lookup_mem_region (offset + xfered);
2121       LONGEST rlen;
2122
2123       /* If there is no explicit region, a fake one should be created.  */
2124       gdb_assert (region);
2125
2126       if (region->hi == 0)
2127         rlen = len - xfered;
2128       else
2129         rlen = region->hi - offset;
2130
2131       if (region->attrib.mode == MEM_NONE || region->attrib.mode == MEM_WO)
2132         {
2133           /* Cannot read this region.  Note that we can end up here only
2134              if the region is explicitly marked inaccessible, or
2135              'inaccessible-by-default' is in effect.  */
2136           xfered += rlen;
2137         }
2138       else
2139         {
2140           LONGEST to_read = min (len - xfered, rlen);
2141           gdb_byte *buffer = (gdb_byte *)xmalloc (to_read);
2142
2143           LONGEST xfer = target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2144                                       (gdb_byte *) buffer,
2145                                       offset + xfered, to_read);
2146           /* Call an observer, notifying them of the xfer progress?  */
2147           if (xfer <= 0)
2148             {
2149               /* Got an error reading full chunk.  See if maybe we can read
2150                  some subrange.  */
2151               xfree (buffer);
2152               read_whatever_is_readable (ops, offset + xfered,
2153                                          offset + xfered + to_read, &result);
2154               xfered += to_read;
2155             }
2156           else
2157             {
2158               struct memory_read_result r;
2159               r.data = buffer;
2160               r.begin = offset + xfered;
2161               r.end = r.begin + xfer;
2162               VEC_safe_push (memory_read_result_s, result, &r);
2163               xfered += xfer;
2164             }
2165           QUIT;
2166         }
2167     }
2168   return result;
2169 }
2170
2171
2172 /* An alternative to target_write with progress callbacks.  */
2173
2174 LONGEST
2175 target_write_with_progress (struct target_ops *ops,
2176                             enum target_object object,
2177                             const char *annex, const gdb_byte *buf,
2178                             ULONGEST offset, LONGEST len,
2179                             void (*progress) (ULONGEST, void *), void *baton)
2180 {
2181   LONGEST xfered = 0;
2182
2183   /* Give the progress callback a chance to set up.  */
2184   if (progress)
2185     (*progress) (0, baton);
2186
2187   while (xfered < len)
2188     {
2189       LONGEST xfer = target_write_partial (ops, object, annex,
2190                                            (gdb_byte *) buf + xfered,
2191                                            offset + xfered, len - xfered);
2192
2193       if (xfer == 0)
2194         return xfered;
2195       if (xfer < 0)
2196         return -1;
2197
2198       if (progress)
2199         (*progress) (xfer, baton);
2200
2201       xfered += xfer;
2202       QUIT;
2203     }
2204   return len;
2205 }
2206
2207 /* For docs on target_write see target.h.  */
2208
2209 LONGEST
2210 target_write (struct target_ops *ops,
2211               enum target_object object,
2212               const char *annex, const gdb_byte *buf,
2213               ULONGEST offset, LONGEST len)
2214 {
2215   return target_write_with_progress (ops, object, annex, buf, offset, len,
2216                                      NULL, NULL);
2217 }
2218
2219 /* Read OBJECT/ANNEX using OPS.  Store the result in *BUF_P and return
2220    the size of the transferred data.  PADDING additional bytes are
2221    available in *BUF_P.  This is a helper function for
2222    target_read_alloc; see the declaration of that function for more
2223    information.  */
2224
2225 static LONGEST
2226 target_read_alloc_1 (struct target_ops *ops, enum target_object object,
2227                      const char *annex, gdb_byte **buf_p, int padding)
2228 {
2229   size_t buf_alloc, buf_pos;
2230   gdb_byte *buf;
2231   LONGEST n;
2232
2233   /* This function does not have a length parameter; it reads the
2234      entire OBJECT).  Also, it doesn't support objects fetched partly
2235      from one target and partly from another (in a different stratum,
2236      e.g. a core file and an executable).  Both reasons make it
2237      unsuitable for reading memory.  */
2238   gdb_assert (object != TARGET_OBJECT_MEMORY);
2239
2240   /* Start by reading up to 4K at a time.  The target will throttle
2241      this number down if necessary.  */
2242   buf_alloc = 4096;
2243   buf = xmalloc (buf_alloc);
2244   buf_pos = 0;
2245   while (1)
2246     {
2247       n = target_read_partial (ops, object, annex, &buf[buf_pos],
2248                                buf_pos, buf_alloc - buf_pos - padding);
2249       if (n < 0)
2250         {
2251           /* An error occurred.  */
2252           xfree (buf);
2253           return -1;
2254         }
2255       else if (n == 0)
2256         {
2257           /* Read all there was.  */
2258           if (buf_pos == 0)
2259             xfree (buf);
2260           else
2261             *buf_p = buf;
2262           return buf_pos;
2263         }
2264
2265       buf_pos += n;
2266
2267       /* If the buffer is filling up, expand it.  */
2268       if (buf_alloc < buf_pos * 2)
2269         {
2270           buf_alloc *= 2;
2271           buf = xrealloc (buf, buf_alloc);
2272         }
2273
2274       QUIT;
2275     }
2276 }
2277
2278 /* Read OBJECT/ANNEX using OPS.  Store the result in *BUF_P and return
2279    the size of the transferred data.  See the declaration in "target.h"
2280    function for more information about the return value.  */
2281
2282 LONGEST
2283 target_read_alloc (struct target_ops *ops, enum target_object object,
2284                    const char *annex, gdb_byte **buf_p)
2285 {
2286   return target_read_alloc_1 (ops, object, annex, buf_p, 0);
2287 }
2288
2289 /* Read OBJECT/ANNEX using OPS.  The result is NUL-terminated and
2290    returned as a string, allocated using xmalloc.  If an error occurs
2291    or the transfer is unsupported, NULL is returned.  Empty objects
2292    are returned as allocated but empty strings.  A warning is issued
2293    if the result contains any embedded NUL bytes.  */
2294
2295 char *
2296 target_read_stralloc (struct target_ops *ops, enum target_object object,
2297                       const char *annex)
2298 {
2299   gdb_byte *buffer;
2300   LONGEST transferred;
2301
2302   transferred = target_read_alloc_1 (ops, object, annex, &buffer, 1);
2303
2304   if (transferred < 0)
2305     return NULL;
2306
2307   if (transferred == 0)
2308     return xstrdup ("");
2309
2310   buffer[transferred] = 0;
2311   if (strlen (buffer) < transferred)
2312     warning (_("target object %d, annex %s, "
2313                "contained unexpected null characters"),
2314              (int) object, annex ? annex : "(none)");
2315
2316   return (char *) buffer;
2317 }
2318
2319 /* Memory transfer methods.  */
2320
2321 void
2322 get_target_memory (struct target_ops *ops, CORE_ADDR addr, gdb_byte *buf,
2323                    LONGEST len)
2324 {
2325   /* This method is used to read from an alternate, non-current
2326      target.  This read must bypass the overlay support (as symbols
2327      don't match this target), and GDB's internal cache (wrong cache
2328      for this target).  */
2329   if (target_read (ops, TARGET_OBJECT_RAW_MEMORY, NULL, buf, addr, len)
2330       != len)
2331     memory_error (EIO, addr);
2332 }
2333
2334 ULONGEST
2335 get_target_memory_unsigned (struct target_ops *ops, CORE_ADDR addr,
2336                             int len, enum bfd_endian byte_order)
2337 {
2338   gdb_byte buf[sizeof (ULONGEST)];
2339
2340   gdb_assert (len <= sizeof (buf));
2341   get_target_memory (ops, addr, buf, len);
2342   return extract_unsigned_integer (buf, len, byte_order);
2343 }
2344
2345 int
2346 target_insert_breakpoint (struct gdbarch *gdbarch,
2347                           struct bp_target_info *bp_tgt)
2348 {
2349   if (!may_insert_breakpoints)
2350     {
2351       warning (_("May not insert breakpoints"));
2352       return 1;
2353     }
2354
2355   return (*current_target.to_insert_breakpoint) (gdbarch, bp_tgt);
2356 }
2357
2358 int
2359 target_remove_breakpoint (struct gdbarch *gdbarch,
2360                           struct bp_target_info *bp_tgt)
2361 {
2362   /* This is kind of a weird case to handle, but the permission might
2363      have been changed after breakpoints were inserted - in which case
2364      we should just take the user literally and assume that any
2365      breakpoints should be left in place.  */
2366   if (!may_insert_breakpoints)
2367     {
2368       warning (_("May not remove breakpoints"));
2369       return 1;
2370     }
2371
2372   return (*current_target.to_remove_breakpoint) (gdbarch, bp_tgt);
2373 }
2374
2375 static void
2376 target_info (char *args, int from_tty)
2377 {
2378   struct target_ops *t;
2379   int has_all_mem = 0;
2380
2381   if (symfile_objfile != NULL)
2382     printf_unfiltered (_("Symbols from \"%s\".\n"), symfile_objfile->name);
2383
2384   for (t = target_stack; t != NULL; t = t->beneath)
2385     {
2386       if (!(*t->to_has_memory) (t))
2387         continue;
2388
2389       if ((int) (t->to_stratum) <= (int) dummy_stratum)
2390         continue;
2391       if (has_all_mem)
2392         printf_unfiltered (_("\tWhile running this, "
2393                              "GDB does not access memory from...\n"));
2394       printf_unfiltered ("%s:\n", t->to_longname);
2395       (t->to_files_info) (t);
2396       has_all_mem = (*t->to_has_all_memory) (t);
2397     }
2398 }
2399
2400 /* This function is called before any new inferior is created, e.g.
2401    by running a program, attaching, or connecting to a target.
2402    It cleans up any state from previous invocations which might
2403    change between runs.  This is a subset of what target_preopen
2404    resets (things which might change between targets).  */
2405
2406 void
2407 target_pre_inferior (int from_tty)
2408 {
2409   /* Clear out solib state.  Otherwise the solib state of the previous
2410      inferior might have survived and is entirely wrong for the new
2411      target.  This has been observed on GNU/Linux using glibc 2.3.  How
2412      to reproduce:
2413
2414      bash$ ./foo&
2415      [1] 4711
2416      bash$ ./foo&
2417      [1] 4712
2418      bash$ gdb ./foo
2419      [...]
2420      (gdb) attach 4711
2421      (gdb) detach
2422      (gdb) attach 4712
2423      Cannot access memory at address 0xdeadbeef
2424   */
2425
2426   /* In some OSs, the shared library list is the same/global/shared
2427      across inferiors.  If code is shared between processes, so are
2428      memory regions and features.  */
2429   if (!gdbarch_has_global_solist (target_gdbarch))
2430     {
2431       no_shared_libraries (NULL, from_tty);
2432
2433       invalidate_target_mem_regions ();
2434
2435       target_clear_description ();
2436     }
2437 }
2438
2439 /* Callback for iterate_over_inferiors.  Gets rid of the given
2440    inferior.  */
2441
2442 static int
2443 dispose_inferior (struct inferior *inf, void *args)
2444 {
2445   struct thread_info *thread;
2446
2447   thread = any_thread_of_process (inf->pid);
2448   if (thread)
2449     {
2450       switch_to_thread (thread->ptid);
2451
2452       /* Core inferiors actually should be detached, not killed.  */
2453       if (target_has_execution)
2454         target_kill ();
2455       else
2456         target_detach (NULL, 0);
2457     }
2458
2459   return 0;
2460 }
2461
2462 /* This is to be called by the open routine before it does
2463    anything.  */
2464
2465 void
2466 target_preopen (int from_tty)
2467 {
2468   dont_repeat ();
2469
2470   if (have_inferiors ())
2471     {
2472       if (!from_tty
2473           || !have_live_inferiors ()
2474           || query (_("A program is being debugged already.  Kill it? ")))
2475         iterate_over_inferiors (dispose_inferior, NULL);
2476       else
2477         error (_("Program not killed."));
2478     }
2479
2480   /* Calling target_kill may remove the target from the stack.  But if
2481      it doesn't (which seems like a win for UDI), remove it now.  */
2482   /* Leave the exec target, though.  The user may be switching from a
2483      live process to a core of the same program.  */
2484   pop_all_targets_above (file_stratum, 0);
2485
2486   target_pre_inferior (from_tty);
2487 }
2488
2489 /* Detach a target after doing deferred register stores.  */
2490
2491 void
2492 target_detach (char *args, int from_tty)
2493 {
2494   struct target_ops* t;
2495   
2496   if (gdbarch_has_global_breakpoints (target_gdbarch))
2497     /* Don't remove global breakpoints here.  They're removed on
2498        disconnection from the target.  */
2499     ;
2500   else
2501     /* If we're in breakpoints-always-inserted mode, have to remove
2502        them before detaching.  */
2503     remove_breakpoints_pid (PIDGET (inferior_ptid));
2504
2505   prepare_for_detach ();
2506
2507   for (t = current_target.beneath; t != NULL; t = t->beneath)
2508     {
2509       if (t->to_detach != NULL)
2510         {
2511           t->to_detach (t, args, from_tty);
2512           if (targetdebug)
2513             fprintf_unfiltered (gdb_stdlog, "target_detach (%s, %d)\n",
2514                                 args, from_tty);
2515           return;
2516         }
2517     }
2518
2519   internal_error (__FILE__, __LINE__, _("could not find a target to detach"));
2520 }
2521
2522 void
2523 target_disconnect (char *args, int from_tty)
2524 {
2525   struct target_ops *t;
2526
2527   /* If we're in breakpoints-always-inserted mode or if breakpoints
2528      are global across processes, we have to remove them before
2529      disconnecting.  */
2530   remove_breakpoints ();
2531
2532   for (t = current_target.beneath; t != NULL; t = t->beneath)
2533     if (t->to_disconnect != NULL)
2534         {
2535           if (targetdebug)
2536             fprintf_unfiltered (gdb_stdlog, "target_disconnect (%s, %d)\n",
2537                                 args, from_tty);
2538           t->to_disconnect (t, args, from_tty);
2539           return;
2540         }
2541
2542   tcomplain ();
2543 }
2544
2545 ptid_t
2546 target_wait (ptid_t ptid, struct target_waitstatus *status, int options)
2547 {
2548   struct target_ops *t;
2549
2550   for (t = current_target.beneath; t != NULL; t = t->beneath)
2551     {
2552       if (t->to_wait != NULL)
2553         {
2554           ptid_t retval = (*t->to_wait) (t, ptid, status, options);
2555
2556           if (targetdebug)
2557             {
2558               char *status_string;
2559
2560               status_string = target_waitstatus_to_string (status);
2561               fprintf_unfiltered (gdb_stdlog,
2562                                   "target_wait (%d, status) = %d,   %s\n",
2563                                   PIDGET (ptid), PIDGET (retval),
2564                                   status_string);
2565               xfree (status_string);
2566             }
2567
2568           return retval;
2569         }
2570     }
2571
2572   noprocess ();
2573 }
2574
2575 char *
2576 target_pid_to_str (ptid_t ptid)
2577 {
2578   struct target_ops *t;
2579
2580   for (t = current_target.beneath; t != NULL; t = t->beneath)
2581     {
2582       if (t->to_pid_to_str != NULL)
2583         return (*t->to_pid_to_str) (t, ptid);
2584     }
2585
2586   return normal_pid_to_str (ptid);
2587 }
2588
2589 char *
2590 target_thread_name (struct thread_info *info)
2591 {
2592   struct target_ops *t;
2593
2594   for (t = current_target.beneath; t != NULL; t = t->beneath)
2595     {
2596       if (t->to_thread_name != NULL)
2597         return (*t->to_thread_name) (info);
2598     }
2599
2600   return NULL;
2601 }
2602
2603 void
2604 target_resume (ptid_t ptid, int step, enum target_signal signal)
2605 {
2606   struct target_ops *t;
2607
2608   target_dcache_invalidate ();
2609
2610   for (t = current_target.beneath; t != NULL; t = t->beneath)
2611     {
2612       if (t->to_resume != NULL)
2613         {
2614           t->to_resume (t, ptid, step, signal);
2615           if (targetdebug)
2616             fprintf_unfiltered (gdb_stdlog, "target_resume (%d, %s, %s)\n",
2617                                 PIDGET (ptid),
2618                                 step ? "step" : "continue",
2619                                 target_signal_to_name (signal));
2620
2621           registers_changed_ptid (ptid);
2622           set_executing (ptid, 1);
2623           set_running (ptid, 1);
2624           clear_inline_frame_state (ptid);
2625           return;
2626         }
2627     }
2628
2629   noprocess ();
2630 }
2631
2632 void
2633 target_pass_signals (int numsigs, unsigned char *pass_signals)
2634 {
2635   struct target_ops *t;
2636
2637   for (t = current_target.beneath; t != NULL; t = t->beneath)
2638     {
2639       if (t->to_pass_signals != NULL)
2640         {
2641           if (targetdebug)
2642             {
2643               int i;
2644
2645               fprintf_unfiltered (gdb_stdlog, "target_pass_signals (%d, {",
2646                                   numsigs);
2647
2648               for (i = 0; i < numsigs; i++)
2649                 if (pass_signals[i])
2650                   fprintf_unfiltered (gdb_stdlog, " %s",
2651                                       target_signal_to_name (i));
2652
2653               fprintf_unfiltered (gdb_stdlog, " })\n");
2654             }
2655
2656           (*t->to_pass_signals) (numsigs, pass_signals);
2657           return;
2658         }
2659     }
2660 }
2661
2662 /* Look through the list of possible targets for a target that can
2663    follow forks.  */
2664
2665 int
2666 target_follow_fork (int follow_child)
2667 {
2668   struct target_ops *t;
2669
2670   for (t = current_target.beneath; t != NULL; t = t->beneath)
2671     {
2672       if (t->to_follow_fork != NULL)
2673         {
2674           int retval = t->to_follow_fork (t, follow_child);
2675
2676           if (targetdebug)
2677             fprintf_unfiltered (gdb_stdlog, "target_follow_fork (%d) = %d\n",
2678                                 follow_child, retval);
2679           return retval;
2680         }
2681     }
2682
2683   /* Some target returned a fork event, but did not know how to follow it.  */
2684   internal_error (__FILE__, __LINE__,
2685                   _("could not find a target to follow fork"));
2686 }
2687
2688 void
2689 target_mourn_inferior (void)
2690 {
2691   struct target_ops *t;
2692
2693   for (t = current_target.beneath; t != NULL; t = t->beneath)
2694     {
2695       if (t->to_mourn_inferior != NULL) 
2696         {
2697           t->to_mourn_inferior (t);
2698           if (targetdebug)
2699             fprintf_unfiltered (gdb_stdlog, "target_mourn_inferior ()\n");
2700
2701           /* We no longer need to keep handles on any of the object files.
2702              Make sure to release them to avoid unnecessarily locking any
2703              of them while we're not actually debugging.  */
2704           bfd_cache_close_all ();
2705
2706           return;
2707         }
2708     }
2709
2710   internal_error (__FILE__, __LINE__,
2711                   _("could not find a target to follow mourn inferior"));
2712 }
2713
2714 /* Look for a target which can describe architectural features, starting
2715    from TARGET.  If we find one, return its description.  */
2716
2717 const struct target_desc *
2718 target_read_description (struct target_ops *target)
2719 {
2720   struct target_ops *t;
2721
2722   for (t = target; t != NULL; t = t->beneath)
2723     if (t->to_read_description != NULL)
2724       {
2725         const struct target_desc *tdesc;
2726
2727         tdesc = t->to_read_description (t);
2728         if (tdesc)
2729           return tdesc;
2730       }
2731
2732   return NULL;
2733 }
2734
2735 /* The default implementation of to_search_memory.
2736    This implements a basic search of memory, reading target memory and
2737    performing the search here (as opposed to performing the search in on the
2738    target side with, for example, gdbserver).  */
2739
2740 int
2741 simple_search_memory (struct target_ops *ops,
2742                       CORE_ADDR start_addr, ULONGEST search_space_len,
2743                       const gdb_byte *pattern, ULONGEST pattern_len,
2744                       CORE_ADDR *found_addrp)
2745 {
2746   /* NOTE: also defined in find.c testcase.  */
2747 #define SEARCH_CHUNK_SIZE 16000
2748   const unsigned chunk_size = SEARCH_CHUNK_SIZE;
2749   /* Buffer to hold memory contents for searching.  */
2750   gdb_byte *search_buf;
2751   unsigned search_buf_size;
2752   struct cleanup *old_cleanups;
2753
2754   search_buf_size = chunk_size + pattern_len - 1;
2755
2756   /* No point in trying to allocate a buffer larger than the search space.  */
2757   if (search_space_len < search_buf_size)
2758     search_buf_size = search_space_len;
2759
2760   search_buf = malloc (search_buf_size);
2761   if (search_buf == NULL)
2762     error (_("Unable to allocate memory to perform the search."));
2763   old_cleanups = make_cleanup (free_current_contents, &search_buf);
2764
2765   /* Prime the search buffer.  */
2766
2767   if (target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2768                    search_buf, start_addr, search_buf_size) != search_buf_size)
2769     {
2770       warning (_("Unable to access target memory at %s, halting search."),
2771                hex_string (start_addr));
2772       do_cleanups (old_cleanups);
2773       return -1;
2774     }
2775
2776   /* Perform the search.
2777
2778      The loop is kept simple by allocating [N + pattern-length - 1] bytes.
2779      When we've scanned N bytes we copy the trailing bytes to the start and
2780      read in another N bytes.  */
2781
2782   while (search_space_len >= pattern_len)
2783     {
2784       gdb_byte *found_ptr;
2785       unsigned nr_search_bytes = min (search_space_len, search_buf_size);
2786
2787       found_ptr = memmem (search_buf, nr_search_bytes,
2788                           pattern, pattern_len);
2789
2790       if (found_ptr != NULL)
2791         {
2792           CORE_ADDR found_addr = start_addr + (found_ptr - search_buf);
2793
2794           *found_addrp = found_addr;
2795           do_cleanups (old_cleanups);
2796           return 1;
2797         }
2798
2799       /* Not found in this chunk, skip to next chunk.  */
2800
2801       /* Don't let search_space_len wrap here, it's unsigned.  */
2802       if (search_space_len >= chunk_size)
2803         search_space_len -= chunk_size;
2804       else
2805         search_space_len = 0;
2806
2807       if (search_space_len >= pattern_len)
2808         {
2809           unsigned keep_len = search_buf_size - chunk_size;
2810           CORE_ADDR read_addr = start_addr + chunk_size + keep_len;
2811           int nr_to_read;
2812
2813           /* Copy the trailing part of the previous iteration to the front
2814              of the buffer for the next iteration.  */
2815           gdb_assert (keep_len == pattern_len - 1);
2816           memcpy (search_buf, search_buf + chunk_size, keep_len);
2817
2818           nr_to_read = min (search_space_len - keep_len, chunk_size);
2819
2820           if (target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2821                            search_buf + keep_len, read_addr,
2822                            nr_to_read) != nr_to_read)
2823             {
2824               warning (_("Unable to access target "
2825                          "memory at %s, halting search."),
2826                        hex_string (read_addr));
2827               do_cleanups (old_cleanups);
2828               return -1;
2829             }
2830
2831           start_addr += chunk_size;
2832         }
2833     }
2834
2835   /* Not found.  */
2836
2837   do_cleanups (old_cleanups);
2838   return 0;
2839 }
2840
2841 /* Search SEARCH_SPACE_LEN bytes beginning at START_ADDR for the
2842    sequence of bytes in PATTERN with length PATTERN_LEN.
2843
2844    The result is 1 if found, 0 if not found, and -1 if there was an error
2845    requiring halting of the search (e.g. memory read error).
2846    If the pattern is found the address is recorded in FOUND_ADDRP.  */
2847
2848 int
2849 target_search_memory (CORE_ADDR start_addr, ULONGEST search_space_len,
2850                       const gdb_byte *pattern, ULONGEST pattern_len,
2851                       CORE_ADDR *found_addrp)
2852 {
2853   struct target_ops *t;
2854   int found;
2855
2856   /* We don't use INHERIT to set current_target.to_search_memory,
2857      so we have to scan the target stack and handle targetdebug
2858      ourselves.  */
2859
2860   if (targetdebug)
2861     fprintf_unfiltered (gdb_stdlog, "target_search_memory (%s, ...)\n",
2862                         hex_string (start_addr));
2863
2864   for (t = current_target.beneath; t != NULL; t = t->beneath)
2865     if (t->to_search_memory != NULL)
2866       break;
2867
2868   if (t != NULL)
2869     {
2870       found = t->to_search_memory (t, start_addr, search_space_len,
2871                                    pattern, pattern_len, found_addrp);
2872     }
2873   else
2874     {
2875       /* If a special version of to_search_memory isn't available, use the
2876          simple version.  */
2877       found = simple_search_memory (current_target.beneath,
2878                                     start_addr, search_space_len,
2879                                     pattern, pattern_len, found_addrp);
2880     }
2881
2882   if (targetdebug)
2883     fprintf_unfiltered (gdb_stdlog, "  = %d\n", found);
2884
2885   return found;
2886 }
2887
2888 /* Look through the currently pushed targets.  If none of them will
2889    be able to restart the currently running process, issue an error
2890    message.  */
2891
2892 void
2893 target_require_runnable (void)
2894 {
2895   struct target_ops *t;
2896
2897   for (t = target_stack; t != NULL; t = t->beneath)
2898     {
2899       /* If this target knows how to create a new program, then
2900          assume we will still be able to after killing the current
2901          one.  Either killing and mourning will not pop T, or else
2902          find_default_run_target will find it again.  */
2903       if (t->to_create_inferior != NULL)
2904         return;
2905
2906       /* Do not worry about thread_stratum targets that can not
2907          create inferiors.  Assume they will be pushed again if
2908          necessary, and continue to the process_stratum.  */
2909       if (t->to_stratum == thread_stratum
2910           || t->to_stratum == arch_stratum)
2911         continue;
2912
2913       error (_("The \"%s\" target does not support \"run\".  "
2914                "Try \"help target\" or \"continue\"."),
2915              t->to_shortname);
2916     }
2917
2918   /* This function is only called if the target is running.  In that
2919      case there should have been a process_stratum target and it
2920      should either know how to create inferiors, or not...  */
2921   internal_error (__FILE__, __LINE__, _("No targets found"));
2922 }
2923
2924 /* Look through the list of possible targets for a target that can
2925    execute a run or attach command without any other data.  This is
2926    used to locate the default process stratum.
2927
2928    If DO_MESG is not NULL, the result is always valid (error() is
2929    called for errors); else, return NULL on error.  */
2930
2931 static struct target_ops *
2932 find_default_run_target (char *do_mesg)
2933 {
2934   struct target_ops **t;
2935   struct target_ops *runable = NULL;
2936   int count;
2937
2938   count = 0;
2939
2940   for (t = target_structs; t < target_structs + target_struct_size;
2941        ++t)
2942     {
2943       if ((*t)->to_can_run && target_can_run (*t))
2944         {
2945           runable = *t;
2946           ++count;
2947         }
2948     }
2949
2950   if (count != 1)
2951     {
2952       if (do_mesg)
2953         error (_("Don't know how to %s.  Try \"help target\"."), do_mesg);
2954       else
2955         return NULL;
2956     }
2957
2958   return runable;
2959 }
2960
2961 void
2962 find_default_attach (struct target_ops *ops, char *args, int from_tty)
2963 {
2964   struct target_ops *t;
2965
2966   t = find_default_run_target ("attach");
2967   (t->to_attach) (t, args, from_tty);
2968   return;
2969 }
2970
2971 void
2972 find_default_create_inferior (struct target_ops *ops,
2973                               char *exec_file, char *allargs, char **env,
2974                               int from_tty)
2975 {
2976   struct target_ops *t;
2977
2978   t = find_default_run_target ("run");
2979   (t->to_create_inferior) (t, exec_file, allargs, env, from_tty);
2980   return;
2981 }
2982
2983 static int
2984 find_default_can_async_p (void)
2985 {
2986   struct target_ops *t;
2987
2988   /* This may be called before the target is pushed on the stack;
2989      look for the default process stratum.  If there's none, gdb isn't
2990      configured with a native debugger, and target remote isn't
2991      connected yet.  */
2992   t = find_default_run_target (NULL);
2993   if (t && t->to_can_async_p)
2994     return (t->to_can_async_p) ();
2995   return 0;
2996 }
2997
2998 static int
2999 find_default_is_async_p (void)
3000 {
3001   struct target_ops *t;
3002
3003   /* This may be called before the target is pushed on the stack;
3004      look for the default process stratum.  If there's none, gdb isn't
3005      configured with a native debugger, and target remote isn't
3006      connected yet.  */
3007   t = find_default_run_target (NULL);
3008   if (t && t->to_is_async_p)
3009     return (t->to_is_async_p) ();
3010   return 0;
3011 }
3012
3013 static int
3014 find_default_supports_non_stop (void)
3015 {
3016   struct target_ops *t;
3017
3018   t = find_default_run_target (NULL);
3019   if (t && t->to_supports_non_stop)
3020     return (t->to_supports_non_stop) ();
3021   return 0;
3022 }
3023
3024 int
3025 target_supports_non_stop (void)
3026 {
3027   struct target_ops *t;
3028
3029   for (t = &current_target; t != NULL; t = t->beneath)
3030     if (t->to_supports_non_stop)
3031       return t->to_supports_non_stop ();
3032
3033   return 0;
3034 }
3035
3036 static int
3037 find_default_supports_disable_randomization (void)
3038 {
3039   struct target_ops *t;
3040
3041   t = find_default_run_target (NULL);
3042   if (t && t->to_supports_disable_randomization)
3043     return (t->to_supports_disable_randomization) ();
3044   return 0;
3045 }
3046
3047 int
3048 target_supports_disable_randomization (void)
3049 {
3050   struct target_ops *t;
3051
3052   for (t = &current_target; t != NULL; t = t->beneath)
3053     if (t->to_supports_disable_randomization)
3054       return t->to_supports_disable_randomization ();
3055
3056   return 0;
3057 }
3058
3059 char *
3060 target_get_osdata (const char *type)
3061 {
3062   struct target_ops *t;
3063
3064   /* If we're already connected to something that can get us OS
3065      related data, use it.  Otherwise, try using the native
3066      target.  */
3067   if (current_target.to_stratum >= process_stratum)
3068     t = current_target.beneath;
3069   else
3070     t = find_default_run_target ("get OS data");
3071
3072   if (!t)
3073     return NULL;
3074
3075   return target_read_stralloc (t, TARGET_OBJECT_OSDATA, type);
3076 }
3077
3078 /* Determine the current address space of thread PTID.  */
3079
3080 struct address_space *
3081 target_thread_address_space (ptid_t ptid)
3082 {
3083   struct address_space *aspace;
3084   struct inferior *inf;
3085   struct target_ops *t;
3086
3087   for (t = current_target.beneath; t != NULL; t = t->beneath)
3088     {
3089       if (t->to_thread_address_space != NULL)
3090         {
3091           aspace = t->to_thread_address_space (t, ptid);
3092           gdb_assert (aspace);
3093
3094           if (targetdebug)
3095             fprintf_unfiltered (gdb_stdlog,
3096                                 "target_thread_address_space (%s) = %d\n",
3097                                 target_pid_to_str (ptid),
3098                                 address_space_num (aspace));
3099           return aspace;
3100         }
3101     }
3102
3103   /* Fall-back to the "main" address space of the inferior.  */
3104   inf = find_inferior_pid (ptid_get_pid (ptid));
3105
3106   if (inf == NULL || inf->aspace == NULL)
3107     internal_error (__FILE__, __LINE__,
3108                     _("Can't determine the current "
3109                       "address space of thread %s\n"),
3110                     target_pid_to_str (ptid));
3111
3112   return inf->aspace;
3113 }
3114
3115 static int
3116 default_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
3117 {
3118   return (len <= gdbarch_ptr_bit (target_gdbarch) / TARGET_CHAR_BIT);
3119 }
3120
3121 static int
3122 default_watchpoint_addr_within_range (struct target_ops *target,
3123                                       CORE_ADDR addr,
3124                                       CORE_ADDR start, int length)
3125 {
3126   return addr >= start && addr < start + length;
3127 }
3128
3129 static struct gdbarch *
3130 default_thread_architecture (struct target_ops *ops, ptid_t ptid)
3131 {
3132   return target_gdbarch;
3133 }
3134
3135 static int
3136 return_zero (void)
3137 {
3138   return 0;
3139 }
3140
3141 static int
3142 return_one (void)
3143 {
3144   return 1;
3145 }
3146
3147 static int
3148 return_minus_one (void)
3149 {
3150   return -1;
3151 }
3152
3153 /* Find a single runnable target in the stack and return it.  If for
3154    some reason there is more than one, return NULL.  */
3155
3156 struct target_ops *
3157 find_run_target (void)
3158 {
3159   struct target_ops **t;
3160   struct target_ops *runable = NULL;
3161   int count;
3162
3163   count = 0;
3164
3165   for (t = target_structs; t < target_structs + target_struct_size; ++t)
3166     {
3167       if ((*t)->to_can_run && target_can_run (*t))
3168         {
3169           runable = *t;
3170           ++count;
3171         }
3172     }
3173
3174   return (count == 1 ? runable : NULL);
3175 }
3176
3177 /*
3178  * Find the next target down the stack from the specified target.
3179  */
3180
3181 struct target_ops *
3182 find_target_beneath (struct target_ops *t)
3183 {
3184   return t->beneath;
3185 }
3186
3187 \f
3188 /* The inferior process has died.  Long live the inferior!  */
3189
3190 void
3191 generic_mourn_inferior (void)
3192 {
3193   ptid_t ptid;
3194
3195   ptid = inferior_ptid;
3196   inferior_ptid = null_ptid;
3197
3198   if (!ptid_equal (ptid, null_ptid))
3199     {
3200       int pid = ptid_get_pid (ptid);
3201       exit_inferior (pid);
3202     }
3203
3204   breakpoint_init_inferior (inf_exited);
3205   registers_changed ();
3206
3207   reopen_exec_file ();
3208   reinit_frame_cache ();
3209
3210   if (deprecated_detach_hook)
3211     deprecated_detach_hook ();
3212 }
3213 \f
3214 /* Helper function for child_wait and the derivatives of child_wait.
3215    HOSTSTATUS is the waitstatus from wait() or the equivalent; store our
3216    translation of that in OURSTATUS.  */
3217 void
3218 store_waitstatus (struct target_waitstatus *ourstatus, int hoststatus)
3219 {
3220   if (WIFEXITED (hoststatus))
3221     {
3222       ourstatus->kind = TARGET_WAITKIND_EXITED;
3223       ourstatus->value.integer = WEXITSTATUS (hoststatus);
3224     }
3225   else if (!WIFSTOPPED (hoststatus))
3226     {
3227       ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
3228       ourstatus->value.sig = target_signal_from_host (WTERMSIG (hoststatus));
3229     }
3230   else
3231     {
3232       ourstatus->kind = TARGET_WAITKIND_STOPPED;
3233       ourstatus->value.sig = target_signal_from_host (WSTOPSIG (hoststatus));
3234     }
3235 }
3236 \f
3237 /* Convert a normal process ID to a string.  Returns the string in a
3238    static buffer.  */
3239
3240 char *
3241 normal_pid_to_str (ptid_t ptid)
3242 {
3243   static char buf[32];
3244
3245   xsnprintf (buf, sizeof buf, "process %d", ptid_get_pid (ptid));
3246   return buf;
3247 }
3248
3249 static char *
3250 dummy_pid_to_str (struct target_ops *ops, ptid_t ptid)
3251 {
3252   return normal_pid_to_str (ptid);
3253 }
3254
3255 /* Error-catcher for target_find_memory_regions.  */
3256 static int
3257 dummy_find_memory_regions (find_memory_region_ftype ignore1, void *ignore2)
3258 {
3259   error (_("Command not implemented for this target."));
3260   return 0;
3261 }
3262
3263 /* Error-catcher for target_make_corefile_notes.  */
3264 static char *
3265 dummy_make_corefile_notes (bfd *ignore1, int *ignore2)
3266 {
3267   error (_("Command not implemented for this target."));
3268   return NULL;
3269 }
3270
3271 /* Error-catcher for target_get_bookmark.  */
3272 static gdb_byte *
3273 dummy_get_bookmark (char *ignore1, int ignore2)
3274 {
3275   tcomplain ();
3276   return NULL;
3277 }
3278
3279 /* Error-catcher for target_goto_bookmark.  */
3280 static void
3281 dummy_goto_bookmark (gdb_byte *ignore, int from_tty)
3282 {
3283   tcomplain ();
3284 }
3285
3286 /* Set up the handful of non-empty slots needed by the dummy target
3287    vector.  */
3288
3289 static void
3290 init_dummy_target (void)
3291 {
3292   dummy_target.to_shortname = "None";
3293   dummy_target.to_longname = "None";
3294   dummy_target.to_doc = "";
3295   dummy_target.to_attach = find_default_attach;
3296   dummy_target.to_detach = 
3297     (void (*)(struct target_ops *, char *, int))target_ignore;
3298   dummy_target.to_create_inferior = find_default_create_inferior;
3299   dummy_target.to_can_async_p = find_default_can_async_p;
3300   dummy_target.to_is_async_p = find_default_is_async_p;
3301   dummy_target.to_supports_non_stop = find_default_supports_non_stop;
3302   dummy_target.to_supports_disable_randomization
3303     = find_default_supports_disable_randomization;
3304   dummy_target.to_pid_to_str = dummy_pid_to_str;
3305   dummy_target.to_stratum = dummy_stratum;
3306   dummy_target.to_find_memory_regions = dummy_find_memory_regions;
3307   dummy_target.to_make_corefile_notes = dummy_make_corefile_notes;
3308   dummy_target.to_get_bookmark = dummy_get_bookmark;
3309   dummy_target.to_goto_bookmark = dummy_goto_bookmark;
3310   dummy_target.to_xfer_partial = default_xfer_partial;
3311   dummy_target.to_has_all_memory = (int (*) (struct target_ops *)) return_zero;
3312   dummy_target.to_has_memory = (int (*) (struct target_ops *)) return_zero;
3313   dummy_target.to_has_stack = (int (*) (struct target_ops *)) return_zero;
3314   dummy_target.to_has_registers = (int (*) (struct target_ops *)) return_zero;
3315   dummy_target.to_has_execution
3316     = (int (*) (struct target_ops *, ptid_t)) return_zero;
3317   dummy_target.to_stopped_by_watchpoint = return_zero;
3318   dummy_target.to_stopped_data_address =
3319     (int (*) (struct target_ops *, CORE_ADDR *)) return_zero;
3320   dummy_target.to_magic = OPS_MAGIC;
3321 }
3322 \f
3323 static void
3324 debug_to_open (char *args, int from_tty)
3325 {
3326   debug_target.to_open (args, from_tty);
3327
3328   fprintf_unfiltered (gdb_stdlog, "target_open (%s, %d)\n", args, from_tty);
3329 }
3330
3331 void
3332 target_close (struct target_ops *targ, int quitting)
3333 {
3334   if (targ->to_xclose != NULL)
3335     targ->to_xclose (targ, quitting);
3336   else if (targ->to_close != NULL)
3337     targ->to_close (quitting);
3338
3339   if (targetdebug)
3340     fprintf_unfiltered (gdb_stdlog, "target_close (%d)\n", quitting);
3341 }
3342
3343 void
3344 target_attach (char *args, int from_tty)
3345 {
3346   struct target_ops *t;
3347
3348   for (t = current_target.beneath; t != NULL; t = t->beneath)
3349     {
3350       if (t->to_attach != NULL) 
3351         {
3352           t->to_attach (t, args, from_tty);
3353           if (targetdebug)
3354             fprintf_unfiltered (gdb_stdlog, "target_attach (%s, %d)\n",
3355                                 args, from_tty);
3356           return;
3357         }
3358     }
3359
3360   internal_error (__FILE__, __LINE__,
3361                   _("could not find a target to attach"));
3362 }
3363
3364 int
3365 target_thread_alive (ptid_t ptid)
3366 {
3367   struct target_ops *t;
3368
3369   for (t = current_target.beneath; t != NULL; t = t->beneath)
3370     {
3371       if (t->to_thread_alive != NULL)
3372         {
3373           int retval;
3374
3375           retval = t->to_thread_alive (t, ptid);
3376           if (targetdebug)
3377             fprintf_unfiltered (gdb_stdlog, "target_thread_alive (%d) = %d\n",
3378                                 PIDGET (ptid), retval);
3379
3380           return retval;
3381         }
3382     }
3383
3384   return 0;
3385 }
3386
3387 void
3388 target_find_new_threads (void)
3389 {
3390   struct target_ops *t;
3391
3392   for (t = current_target.beneath; t != NULL; t = t->beneath)
3393     {
3394       if (t->to_find_new_threads != NULL)
3395         {
3396           t->to_find_new_threads (t);
3397           if (targetdebug)
3398             fprintf_unfiltered (gdb_stdlog, "target_find_new_threads ()\n");
3399
3400           return;
3401         }
3402     }
3403 }
3404
3405 void
3406 target_stop (ptid_t ptid)
3407 {
3408   if (!may_stop)
3409     {
3410       warning (_("May not interrupt or stop the target, ignoring attempt"));
3411       return;
3412     }
3413
3414   (*current_target.to_stop) (ptid);
3415 }
3416
3417 static void
3418 debug_to_post_attach (int pid)
3419 {
3420   debug_target.to_post_attach (pid);
3421
3422   fprintf_unfiltered (gdb_stdlog, "target_post_attach (%d)\n", pid);
3423 }
3424
3425 /* Return a pretty printed form of target_waitstatus.
3426    Space for the result is malloc'd, caller must free.  */
3427
3428 char *
3429 target_waitstatus_to_string (const struct target_waitstatus *ws)
3430 {
3431   const char *kind_str = "status->kind = ";
3432
3433   switch (ws->kind)
3434     {
3435     case TARGET_WAITKIND_EXITED:
3436       return xstrprintf ("%sexited, status = %d",
3437                          kind_str, ws->value.integer);
3438     case TARGET_WAITKIND_STOPPED:
3439       return xstrprintf ("%sstopped, signal = %s",
3440                          kind_str, target_signal_to_name (ws->value.sig));
3441     case TARGET_WAITKIND_SIGNALLED:
3442       return xstrprintf ("%ssignalled, signal = %s",
3443                          kind_str, target_signal_to_name (ws->value.sig));
3444     case TARGET_WAITKIND_LOADED:
3445       return xstrprintf ("%sloaded", kind_str);
3446     case TARGET_WAITKIND_FORKED:
3447       return xstrprintf ("%sforked", kind_str);
3448     case TARGET_WAITKIND_VFORKED:
3449       return xstrprintf ("%svforked", kind_str);
3450     case TARGET_WAITKIND_EXECD:
3451       return xstrprintf ("%sexecd", kind_str);
3452     case TARGET_WAITKIND_SYSCALL_ENTRY:
3453       return xstrprintf ("%sentered syscall", kind_str);
3454     case TARGET_WAITKIND_SYSCALL_RETURN:
3455       return xstrprintf ("%sexited syscall", kind_str);
3456     case TARGET_WAITKIND_SPURIOUS:
3457       return xstrprintf ("%sspurious", kind_str);
3458     case TARGET_WAITKIND_IGNORE:
3459       return xstrprintf ("%signore", kind_str);
3460     case TARGET_WAITKIND_NO_HISTORY:
3461       return xstrprintf ("%sno-history", kind_str);
3462     case TARGET_WAITKIND_NO_RESUMED:
3463       return xstrprintf ("%sno-resumed", kind_str);
3464     default:
3465       return xstrprintf ("%sunknown???", kind_str);
3466     }
3467 }
3468
3469 static void
3470 debug_print_register (const char * func,
3471                       struct regcache *regcache, int regno)
3472 {
3473   struct gdbarch *gdbarch = get_regcache_arch (regcache);
3474
3475   fprintf_unfiltered (gdb_stdlog, "%s ", func);
3476   if (regno >= 0 && regno < gdbarch_num_regs (gdbarch)
3477       && gdbarch_register_name (gdbarch, regno) != NULL
3478       && gdbarch_register_name (gdbarch, regno)[0] != '\0')
3479     fprintf_unfiltered (gdb_stdlog, "(%s)",
3480                         gdbarch_register_name (gdbarch, regno));
3481   else
3482     fprintf_unfiltered (gdb_stdlog, "(%d)", regno);
3483   if (regno >= 0 && regno < gdbarch_num_regs (gdbarch))
3484     {
3485       enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
3486       int i, size = register_size (gdbarch, regno);
3487       unsigned char buf[MAX_REGISTER_SIZE];
3488
3489       regcache_raw_collect (regcache, regno, buf);
3490       fprintf_unfiltered (gdb_stdlog, " = ");
3491       for (i = 0; i < size; i++)
3492         {
3493           fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
3494         }
3495       if (size <= sizeof (LONGEST))
3496         {
3497           ULONGEST val = extract_unsigned_integer (buf, size, byte_order);
3498
3499           fprintf_unfiltered (gdb_stdlog, " %s %s",
3500                               core_addr_to_string_nz (val), plongest (val));
3501         }
3502     }
3503   fprintf_unfiltered (gdb_stdlog, "\n");
3504 }
3505
3506 void
3507 target_fetch_registers (struct regcache *regcache, int regno)
3508 {
3509   struct target_ops *t;
3510
3511   for (t = current_target.beneath; t != NULL; t = t->beneath)
3512     {
3513       if (t->to_fetch_registers != NULL)
3514         {
3515           t->to_fetch_registers (t, regcache, regno);
3516           if (targetdebug)
3517             debug_print_register ("target_fetch_registers", regcache, regno);
3518           return;
3519         }
3520     }
3521 }
3522
3523 void
3524 target_store_registers (struct regcache *regcache, int regno)
3525 {
3526   struct target_ops *t;
3527
3528   if (!may_write_registers)
3529     error (_("Writing to registers is not allowed (regno %d)"), regno);
3530
3531   for (t = current_target.beneath; t != NULL; t = t->beneath)
3532     {
3533       if (t->to_store_registers != NULL)
3534         {
3535           t->to_store_registers (t, regcache, regno);
3536           if (targetdebug)
3537             {
3538               debug_print_register ("target_store_registers", regcache, regno);
3539             }
3540           return;
3541         }
3542     }
3543
3544   noprocess ();
3545 }
3546
3547 int
3548 target_core_of_thread (ptid_t ptid)
3549 {
3550   struct target_ops *t;
3551
3552   for (t = current_target.beneath; t != NULL; t = t->beneath)
3553     {
3554       if (t->to_core_of_thread != NULL)
3555         {
3556           int retval = t->to_core_of_thread (t, ptid);
3557
3558           if (targetdebug)
3559             fprintf_unfiltered (gdb_stdlog,
3560                                 "target_core_of_thread (%d) = %d\n",
3561                                 PIDGET (ptid), retval);
3562           return retval;
3563         }
3564     }
3565
3566   return -1;
3567 }
3568
3569 int
3570 target_verify_memory (const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size)
3571 {
3572   struct target_ops *t;
3573
3574   for (t = current_target.beneath; t != NULL; t = t->beneath)
3575     {
3576       if (t->to_verify_memory != NULL)
3577         {
3578           int retval = t->to_verify_memory (t, data, memaddr, size);
3579
3580           if (targetdebug)
3581             fprintf_unfiltered (gdb_stdlog,
3582                                 "target_verify_memory (%s, %s) = %d\n",
3583                                 paddress (target_gdbarch, memaddr),
3584                                 pulongest (size),
3585                                 retval);
3586           return retval;
3587         }
3588     }
3589
3590   tcomplain ();
3591 }
3592
3593 /* The documentation for this function is in its prototype declaration in
3594    target.h.  */
3595
3596 int
3597 target_insert_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask, int rw)
3598 {
3599   struct target_ops *t;
3600
3601   for (t = current_target.beneath; t != NULL; t = t->beneath)
3602     if (t->to_insert_mask_watchpoint != NULL)
3603       {
3604         int ret;
3605
3606         ret = t->to_insert_mask_watchpoint (t, addr, mask, rw);
3607
3608         if (targetdebug)
3609           fprintf_unfiltered (gdb_stdlog, "\
3610 target_insert_mask_watchpoint (%s, %s, %d) = %d\n",
3611                               core_addr_to_string (addr),
3612                               core_addr_to_string (mask), rw, ret);
3613
3614         return ret;
3615       }
3616
3617   return 1;
3618 }
3619
3620 /* The documentation for this function is in its prototype declaration in
3621    target.h.  */
3622
3623 int
3624 target_remove_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask, int rw)
3625 {
3626   struct target_ops *t;
3627
3628   for (t = current_target.beneath; t != NULL; t = t->beneath)
3629     if (t->to_remove_mask_watchpoint != NULL)
3630       {
3631         int ret;
3632
3633         ret = t->to_remove_mask_watchpoint (t, addr, mask, rw);
3634
3635         if (targetdebug)
3636           fprintf_unfiltered (gdb_stdlog, "\
3637 target_remove_mask_watchpoint (%s, %s, %d) = %d\n",
3638                               core_addr_to_string (addr),
3639                               core_addr_to_string (mask), rw, ret);
3640
3641         return ret;
3642       }
3643
3644   return 1;
3645 }
3646
3647 /* The documentation for this function is in its prototype declaration
3648    in target.h.  */
3649
3650 int
3651 target_masked_watch_num_registers (CORE_ADDR addr, CORE_ADDR mask)
3652 {
3653   struct target_ops *t;
3654
3655   for (t = current_target.beneath; t != NULL; t = t->beneath)
3656     if (t->to_masked_watch_num_registers != NULL)
3657       return t->to_masked_watch_num_registers (t, addr, mask);
3658
3659   return -1;
3660 }
3661
3662 /* The documentation for this function is in its prototype declaration
3663    in target.h.  */
3664
3665 int
3666 target_ranged_break_num_registers (void)
3667 {
3668   struct target_ops *t;
3669
3670   for (t = current_target.beneath; t != NULL; t = t->beneath)
3671     if (t->to_ranged_break_num_registers != NULL)
3672       return t->to_ranged_break_num_registers (t);
3673
3674   return -1;
3675 }
3676
3677 static void
3678 debug_to_prepare_to_store (struct regcache *regcache)
3679 {
3680   debug_target.to_prepare_to_store (regcache);
3681
3682   fprintf_unfiltered (gdb_stdlog, "target_prepare_to_store ()\n");
3683 }
3684
3685 static int
3686 deprecated_debug_xfer_memory (CORE_ADDR memaddr, bfd_byte *myaddr, int len,
3687                               int write, struct mem_attrib *attrib,
3688                               struct target_ops *target)
3689 {
3690   int retval;
3691
3692   retval = debug_target.deprecated_xfer_memory (memaddr, myaddr, len, write,
3693                                                 attrib, target);
3694
3695   fprintf_unfiltered (gdb_stdlog,
3696                       "target_xfer_memory (%s, xxx, %d, %s, xxx) = %d",
3697                       paddress (target_gdbarch, memaddr), len,
3698                       write ? "write" : "read", retval);
3699
3700   if (retval > 0)
3701     {
3702       int i;
3703
3704       fputs_unfiltered (", bytes =", gdb_stdlog);
3705       for (i = 0; i < retval; i++)
3706         {
3707           if ((((intptr_t) &(myaddr[i])) & 0xf) == 0)
3708             {
3709               if (targetdebug < 2 && i > 0)
3710                 {
3711                   fprintf_unfiltered (gdb_stdlog, " ...");
3712                   break;
3713                 }
3714               fprintf_unfiltered (gdb_stdlog, "\n");
3715             }
3716
3717           fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
3718         }
3719     }
3720
3721   fputc_unfiltered ('\n', gdb_stdlog);
3722
3723   return retval;
3724 }
3725
3726 static void
3727 debug_to_files_info (struct target_ops *target)
3728 {
3729   debug_target.to_files_info (target);
3730
3731   fprintf_unfiltered (gdb_stdlog, "target_files_info (xxx)\n");
3732 }
3733
3734 static int
3735 debug_to_insert_breakpoint (struct gdbarch *gdbarch,
3736                             struct bp_target_info *bp_tgt)
3737 {
3738   int retval;
3739
3740   retval = debug_target.to_insert_breakpoint (gdbarch, bp_tgt);
3741
3742   fprintf_unfiltered (gdb_stdlog,
3743                       "target_insert_breakpoint (%s, xxx) = %ld\n",
3744                       core_addr_to_string (bp_tgt->placed_address),
3745                       (unsigned long) retval);
3746   return retval;
3747 }
3748
3749 static int
3750 debug_to_remove_breakpoint (struct gdbarch *gdbarch,
3751                             struct bp_target_info *bp_tgt)
3752 {
3753   int retval;
3754
3755   retval = debug_target.to_remove_breakpoint (gdbarch, bp_tgt);
3756
3757   fprintf_unfiltered (gdb_stdlog,
3758                       "target_remove_breakpoint (%s, xxx) = %ld\n",
3759                       core_addr_to_string (bp_tgt->placed_address),
3760                       (unsigned long) retval);
3761   return retval;
3762 }
3763
3764 static int
3765 debug_to_can_use_hw_breakpoint (int type, int cnt, int from_tty)
3766 {
3767   int retval;
3768
3769   retval = debug_target.to_can_use_hw_breakpoint (type, cnt, from_tty);
3770
3771   fprintf_unfiltered (gdb_stdlog,
3772                       "target_can_use_hw_breakpoint (%ld, %ld, %ld) = %ld\n",
3773                       (unsigned long) type,
3774                       (unsigned long) cnt,
3775                       (unsigned long) from_tty,
3776                       (unsigned long) retval);
3777   return retval;
3778 }
3779
3780 static int
3781 debug_to_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
3782 {
3783   CORE_ADDR retval;
3784
3785   retval = debug_target.to_region_ok_for_hw_watchpoint (addr, len);
3786
3787   fprintf_unfiltered (gdb_stdlog,
3788                       "target_region_ok_for_hw_watchpoint (%s, %ld) = %s\n",
3789                       core_addr_to_string (addr), (unsigned long) len,
3790                       core_addr_to_string (retval));
3791   return retval;
3792 }
3793
3794 static int
3795 debug_to_can_accel_watchpoint_condition (CORE_ADDR addr, int len, int rw,
3796                                          struct expression *cond)
3797 {
3798   int retval;
3799
3800   retval = debug_target.to_can_accel_watchpoint_condition (addr, len,
3801                                                            rw, cond);
3802
3803   fprintf_unfiltered (gdb_stdlog,
3804                       "target_can_accel_watchpoint_condition "
3805                       "(%s, %d, %d, %s) = %ld\n",
3806                       core_addr_to_string (addr), len, rw,
3807                       host_address_to_string (cond), (unsigned long) retval);
3808   return retval;
3809 }
3810
3811 static int
3812 debug_to_stopped_by_watchpoint (void)
3813 {
3814   int retval;
3815
3816   retval = debug_target.to_stopped_by_watchpoint ();
3817
3818   fprintf_unfiltered (gdb_stdlog,
3819                       "target_stopped_by_watchpoint () = %ld\n",
3820                       (unsigned long) retval);
3821   return retval;
3822 }
3823
3824 static int
3825 debug_to_stopped_data_address (struct target_ops *target, CORE_ADDR *addr)
3826 {
3827   int retval;
3828
3829   retval = debug_target.to_stopped_data_address (target, addr);
3830
3831   fprintf_unfiltered (gdb_stdlog,
3832                       "target_stopped_data_address ([%s]) = %ld\n",
3833                       core_addr_to_string (*addr),
3834                       (unsigned long)retval);
3835   return retval;
3836 }
3837
3838 static int
3839 debug_to_watchpoint_addr_within_range (struct target_ops *target,
3840                                        CORE_ADDR addr,
3841                                        CORE_ADDR start, int length)
3842 {
3843   int retval;
3844
3845   retval = debug_target.to_watchpoint_addr_within_range (target, addr,
3846                                                          start, length);
3847
3848   fprintf_filtered (gdb_stdlog,
3849                     "target_watchpoint_addr_within_range (%s, %s, %d) = %d\n",
3850                     core_addr_to_string (addr), core_addr_to_string (start),
3851                     length, retval);
3852   return retval;
3853 }
3854
3855 static int
3856 debug_to_insert_hw_breakpoint (struct gdbarch *gdbarch,
3857                                struct bp_target_info *bp_tgt)
3858 {
3859   int retval;
3860
3861   retval = debug_target.to_insert_hw_breakpoint (gdbarch, bp_tgt);
3862
3863   fprintf_unfiltered (gdb_stdlog,
3864                       "target_insert_hw_breakpoint (%s, xxx) = %ld\n",
3865                       core_addr_to_string (bp_tgt->placed_address),
3866                       (unsigned long) retval);
3867   return retval;
3868 }
3869
3870 static int
3871 debug_to_remove_hw_breakpoint (struct gdbarch *gdbarch,
3872                                struct bp_target_info *bp_tgt)
3873 {
3874   int retval;
3875
3876   retval = debug_target.to_remove_hw_breakpoint (gdbarch, bp_tgt);
3877
3878   fprintf_unfiltered (gdb_stdlog,
3879                       "target_remove_hw_breakpoint (%s, xxx) = %ld\n",
3880                       core_addr_to_string (bp_tgt->placed_address),
3881                       (unsigned long) retval);
3882   return retval;
3883 }
3884
3885 static int
3886 debug_to_insert_watchpoint (CORE_ADDR addr, int len, int type,
3887                             struct expression *cond)
3888 {
3889   int retval;
3890
3891   retval = debug_target.to_insert_watchpoint (addr, len, type, cond);
3892
3893   fprintf_unfiltered (gdb_stdlog,
3894                       "target_insert_watchpoint (%s, %d, %d, %s) = %ld\n",
3895                       core_addr_to_string (addr), len, type,
3896                       host_address_to_string (cond), (unsigned long) retval);
3897   return retval;
3898 }
3899
3900 static int
3901 debug_to_remove_watchpoint (CORE_ADDR addr, int len, int type,
3902                             struct expression *cond)
3903 {
3904   int retval;
3905
3906   retval = debug_target.to_remove_watchpoint (addr, len, type, cond);
3907
3908   fprintf_unfiltered (gdb_stdlog,
3909                       "target_remove_watchpoint (%s, %d, %d, %s) = %ld\n",
3910                       core_addr_to_string (addr), len, type,
3911                       host_address_to_string (cond), (unsigned long) retval);
3912   return retval;
3913 }
3914
3915 static void
3916 debug_to_terminal_init (void)
3917 {
3918   debug_target.to_terminal_init ();
3919
3920   fprintf_unfiltered (gdb_stdlog, "target_terminal_init ()\n");
3921 }
3922
3923 static void
3924 debug_to_terminal_inferior (void)
3925 {
3926   debug_target.to_terminal_inferior ();
3927
3928   fprintf_unfiltered (gdb_stdlog, "target_terminal_inferior ()\n");
3929 }
3930
3931 static void
3932 debug_to_terminal_ours_for_output (void)
3933 {
3934   debug_target.to_terminal_ours_for_output ();
3935
3936   fprintf_unfiltered (gdb_stdlog, "target_terminal_ours_for_output ()\n");
3937 }
3938
3939 static void
3940 debug_to_terminal_ours (void)
3941 {
3942   debug_target.to_terminal_ours ();
3943
3944   fprintf_unfiltered (gdb_stdlog, "target_terminal_ours ()\n");
3945 }
3946
3947 static void
3948 debug_to_terminal_save_ours (void)
3949 {
3950   debug_target.to_terminal_save_ours ();
3951
3952   fprintf_unfiltered (gdb_stdlog, "target_terminal_save_ours ()\n");
3953 }
3954
3955 static void
3956 debug_to_terminal_info (char *arg, int from_tty)
3957 {
3958   debug_target.to_terminal_info (arg, from_tty);
3959
3960   fprintf_unfiltered (gdb_stdlog, "target_terminal_info (%s, %d)\n", arg,
3961                       from_tty);
3962 }
3963
3964 static void
3965 debug_to_load (char *args, int from_tty)
3966 {
3967   debug_target.to_load (args, from_tty);
3968
3969   fprintf_unfiltered (gdb_stdlog, "target_load (%s, %d)\n", args, from_tty);
3970 }
3971
3972 static void
3973 debug_to_post_startup_inferior (ptid_t ptid)
3974 {
3975   debug_target.to_post_startup_inferior (ptid);
3976
3977   fprintf_unfiltered (gdb_stdlog, "target_post_startup_inferior (%d)\n",
3978                       PIDGET (ptid));
3979 }
3980
3981 static int
3982 debug_to_insert_fork_catchpoint (int pid)
3983 {
3984   int retval;
3985
3986   retval = debug_target.to_insert_fork_catchpoint (pid);
3987
3988   fprintf_unfiltered (gdb_stdlog, "target_insert_fork_catchpoint (%d) = %d\n",
3989                       pid, retval);
3990
3991   return retval;
3992 }
3993
3994 static int
3995 debug_to_remove_fork_catchpoint (int pid)
3996 {
3997   int retval;
3998
3999   retval = debug_target.to_remove_fork_catchpoint (pid);
4000
4001   fprintf_unfiltered (gdb_stdlog, "target_remove_fork_catchpoint (%d) = %d\n",
4002                       pid, retval);
4003
4004   return retval;
4005 }
4006
4007 static int
4008 debug_to_insert_vfork_catchpoint (int pid)
4009 {
4010   int retval;
4011
4012   retval = debug_target.to_insert_vfork_catchpoint (pid);
4013
4014   fprintf_unfiltered (gdb_stdlog, "target_insert_vfork_catchpoint (%d) = %d\n",
4015                       pid, retval);
4016
4017   return retval;
4018 }
4019
4020 static int
4021 debug_to_remove_vfork_catchpoint (int pid)
4022 {
4023   int retval;
4024
4025   retval = debug_target.to_remove_vfork_catchpoint (pid);
4026
4027   fprintf_unfiltered (gdb_stdlog, "target_remove_vfork_catchpoint (%d) = %d\n",
4028                       pid, retval);
4029
4030   return retval;
4031 }
4032
4033 static int
4034 debug_to_insert_exec_catchpoint (int pid)
4035 {
4036   int retval;
4037
4038   retval = debug_target.to_insert_exec_catchpoint (pid);
4039
4040   fprintf_unfiltered (gdb_stdlog, "target_insert_exec_catchpoint (%d) = %d\n",
4041                       pid, retval);
4042
4043   return retval;
4044 }
4045
4046 static int
4047 debug_to_remove_exec_catchpoint (int pid)
4048 {
4049   int retval;
4050
4051   retval = debug_target.to_remove_exec_catchpoint (pid);
4052
4053   fprintf_unfiltered (gdb_stdlog, "target_remove_exec_catchpoint (%d) = %d\n",
4054                       pid, retval);
4055
4056   return retval;
4057 }
4058
4059 static int
4060 debug_to_has_exited (int pid, int wait_status, int *exit_status)
4061 {
4062   int has_exited;
4063
4064   has_exited = debug_target.to_has_exited (pid, wait_status, exit_status);
4065
4066   fprintf_unfiltered (gdb_stdlog, "target_has_exited (%d, %d, %d) = %d\n",
4067                       pid, wait_status, *exit_status, has_exited);
4068
4069   return has_exited;
4070 }
4071
4072 static int
4073 debug_to_can_run (void)
4074 {
4075   int retval;
4076
4077   retval = debug_target.to_can_run ();
4078
4079   fprintf_unfiltered (gdb_stdlog, "target_can_run () = %d\n", retval);
4080
4081   return retval;
4082 }
4083
4084 static struct gdbarch *
4085 debug_to_thread_architecture (struct target_ops *ops, ptid_t ptid)
4086 {
4087   struct gdbarch *retval;
4088
4089   retval = debug_target.to_thread_architecture (ops, ptid);
4090
4091   fprintf_unfiltered (gdb_stdlog, 
4092                       "target_thread_architecture (%s) = %s [%s]\n",
4093                       target_pid_to_str (ptid),
4094                       host_address_to_string (retval),
4095                       gdbarch_bfd_arch_info (retval)->printable_name);
4096   return retval;
4097 }
4098
4099 static void
4100 debug_to_stop (ptid_t ptid)
4101 {
4102   debug_target.to_stop (ptid);
4103
4104   fprintf_unfiltered (gdb_stdlog, "target_stop (%s)\n",
4105                       target_pid_to_str (ptid));
4106 }
4107
4108 static void
4109 debug_to_rcmd (char *command,
4110                struct ui_file *outbuf)
4111 {
4112   debug_target.to_rcmd (command, outbuf);
4113   fprintf_unfiltered (gdb_stdlog, "target_rcmd (%s, ...)\n", command);
4114 }
4115
4116 static char *
4117 debug_to_pid_to_exec_file (int pid)
4118 {
4119   char *exec_file;
4120
4121   exec_file = debug_target.to_pid_to_exec_file (pid);
4122
4123   fprintf_unfiltered (gdb_stdlog, "target_pid_to_exec_file (%d) = %s\n",
4124                       pid, exec_file);
4125
4126   return exec_file;
4127 }
4128
4129 static void
4130 setup_target_debug (void)
4131 {
4132   memcpy (&debug_target, &current_target, sizeof debug_target);
4133
4134   current_target.to_open = debug_to_open;
4135   current_target.to_post_attach = debug_to_post_attach;
4136   current_target.to_prepare_to_store = debug_to_prepare_to_store;
4137   current_target.deprecated_xfer_memory = deprecated_debug_xfer_memory;
4138   current_target.to_files_info = debug_to_files_info;
4139   current_target.to_insert_breakpoint = debug_to_insert_breakpoint;
4140   current_target.to_remove_breakpoint = debug_to_remove_breakpoint;
4141   current_target.to_can_use_hw_breakpoint = debug_to_can_use_hw_breakpoint;
4142   current_target.to_insert_hw_breakpoint = debug_to_insert_hw_breakpoint;
4143   current_target.to_remove_hw_breakpoint = debug_to_remove_hw_breakpoint;
4144   current_target.to_insert_watchpoint = debug_to_insert_watchpoint;
4145   current_target.to_remove_watchpoint = debug_to_remove_watchpoint;
4146   current_target.to_stopped_by_watchpoint = debug_to_stopped_by_watchpoint;
4147   current_target.to_stopped_data_address = debug_to_stopped_data_address;
4148   current_target.to_watchpoint_addr_within_range
4149     = debug_to_watchpoint_addr_within_range;
4150   current_target.to_region_ok_for_hw_watchpoint
4151     = debug_to_region_ok_for_hw_watchpoint;
4152   current_target.to_can_accel_watchpoint_condition
4153     = debug_to_can_accel_watchpoint_condition;
4154   current_target.to_terminal_init = debug_to_terminal_init;
4155   current_target.to_terminal_inferior = debug_to_terminal_inferior;
4156   current_target.to_terminal_ours_for_output
4157     = debug_to_terminal_ours_for_output;
4158   current_target.to_terminal_ours = debug_to_terminal_ours;
4159   current_target.to_terminal_save_ours = debug_to_terminal_save_ours;
4160   current_target.to_terminal_info = debug_to_terminal_info;
4161   current_target.to_load = debug_to_load;
4162   current_target.to_post_startup_inferior = debug_to_post_startup_inferior;
4163   current_target.to_insert_fork_catchpoint = debug_to_insert_fork_catchpoint;
4164   current_target.to_remove_fork_catchpoint = debug_to_remove_fork_catchpoint;
4165   current_target.to_insert_vfork_catchpoint = debug_to_insert_vfork_catchpoint;
4166   current_target.to_remove_vfork_catchpoint = debug_to_remove_vfork_catchpoint;
4167   current_target.to_insert_exec_catchpoint = debug_to_insert_exec_catchpoint;
4168   current_target.to_remove_exec_catchpoint = debug_to_remove_exec_catchpoint;
4169   current_target.to_has_exited = debug_to_has_exited;
4170   current_target.to_can_run = debug_to_can_run;
4171   current_target.to_stop = debug_to_stop;
4172   current_target.to_rcmd = debug_to_rcmd;
4173   current_target.to_pid_to_exec_file = debug_to_pid_to_exec_file;
4174   current_target.to_thread_architecture = debug_to_thread_architecture;
4175 }
4176 \f
4177
4178 static char targ_desc[] =
4179 "Names of targets and files being debugged.\nShows the entire \
4180 stack of targets currently in use (including the exec-file,\n\
4181 core-file, and process, if any), as well as the symbol file name.";
4182
4183 static void
4184 do_monitor_command (char *cmd,
4185                  int from_tty)
4186 {
4187   if ((current_target.to_rcmd
4188        == (void (*) (char *, struct ui_file *)) tcomplain)
4189       || (current_target.to_rcmd == debug_to_rcmd
4190           && (debug_target.to_rcmd
4191               == (void (*) (char *, struct ui_file *)) tcomplain)))
4192     error (_("\"monitor\" command not supported by this target."));
4193   target_rcmd (cmd, gdb_stdtarg);
4194 }
4195
4196 /* Print the name of each layers of our target stack.  */
4197
4198 static void
4199 maintenance_print_target_stack (char *cmd, int from_tty)
4200 {
4201   struct target_ops *t;
4202
4203   printf_filtered (_("The current target stack is:\n"));
4204
4205   for (t = target_stack; t != NULL; t = t->beneath)
4206     {
4207       printf_filtered ("  - %s (%s)\n", t->to_shortname, t->to_longname);
4208     }
4209 }
4210
4211 /* Controls if async mode is permitted.  */
4212 int target_async_permitted = 0;
4213
4214 /* The set command writes to this variable.  If the inferior is
4215    executing, linux_nat_async_permitted is *not* updated.  */
4216 static int target_async_permitted_1 = 0;
4217
4218 static void
4219 set_maintenance_target_async_permitted (char *args, int from_tty,
4220                                         struct cmd_list_element *c)
4221 {
4222   if (have_live_inferiors ())
4223     {
4224       target_async_permitted_1 = target_async_permitted;
4225       error (_("Cannot change this setting while the inferior is running."));
4226     }
4227
4228   target_async_permitted = target_async_permitted_1;
4229 }
4230
4231 static void
4232 show_maintenance_target_async_permitted (struct ui_file *file, int from_tty,
4233                                          struct cmd_list_element *c,
4234                                          const char *value)
4235 {
4236   fprintf_filtered (file,
4237                     _("Controlling the inferior in "
4238                       "asynchronous mode is %s.\n"), value);
4239 }
4240
4241 /* Temporary copies of permission settings.  */
4242
4243 static int may_write_registers_1 = 1;
4244 static int may_write_memory_1 = 1;
4245 static int may_insert_breakpoints_1 = 1;
4246 static int may_insert_tracepoints_1 = 1;
4247 static int may_insert_fast_tracepoints_1 = 1;
4248 static int may_stop_1 = 1;
4249
4250 /* Make the user-set values match the real values again.  */
4251
4252 void
4253 update_target_permissions (void)
4254 {
4255   may_write_registers_1 = may_write_registers;
4256   may_write_memory_1 = may_write_memory;
4257   may_insert_breakpoints_1 = may_insert_breakpoints;
4258   may_insert_tracepoints_1 = may_insert_tracepoints;
4259   may_insert_fast_tracepoints_1 = may_insert_fast_tracepoints;
4260   may_stop_1 = may_stop;
4261 }
4262
4263 /* The one function handles (most of) the permission flags in the same
4264    way.  */
4265
4266 static void
4267 set_target_permissions (char *args, int from_tty,
4268                         struct cmd_list_element *c)
4269 {
4270   if (target_has_execution)
4271     {
4272       update_target_permissions ();
4273       error (_("Cannot change this setting while the inferior is running."));
4274     }
4275
4276   /* Make the real values match the user-changed values.  */
4277   may_write_registers = may_write_registers_1;
4278   may_insert_breakpoints = may_insert_breakpoints_1;
4279   may_insert_tracepoints = may_insert_tracepoints_1;
4280   may_insert_fast_tracepoints = may_insert_fast_tracepoints_1;
4281   may_stop = may_stop_1;
4282   update_observer_mode ();
4283 }
4284
4285 /* Set memory write permission independently of observer mode.  */
4286
4287 static void
4288 set_write_memory_permission (char *args, int from_tty,
4289                         struct cmd_list_element *c)
4290 {
4291   /* Make the real values match the user-changed values.  */
4292   may_write_memory = may_write_memory_1;
4293   update_observer_mode ();
4294 }
4295
4296
4297 void
4298 initialize_targets (void)
4299 {
4300   init_dummy_target ();
4301   push_target (&dummy_target);
4302
4303   add_info ("target", target_info, targ_desc);
4304   add_info ("files", target_info, targ_desc);
4305
4306   add_setshow_zinteger_cmd ("target", class_maintenance, &targetdebug, _("\
4307 Set target debugging."), _("\
4308 Show target debugging."), _("\
4309 When non-zero, target debugging is enabled.  Higher numbers are more\n\
4310 verbose.  Changes do not take effect until the next \"run\" or \"target\"\n\
4311 command."),
4312                             NULL,
4313                             show_targetdebug,
4314                             &setdebuglist, &showdebuglist);
4315
4316   add_setshow_boolean_cmd ("trust-readonly-sections", class_support,
4317                            &trust_readonly, _("\
4318 Set mode for reading from readonly sections."), _("\
4319 Show mode for reading from readonly sections."), _("\
4320 When this mode is on, memory reads from readonly sections (such as .text)\n\
4321 will be read from the object file instead of from the target.  This will\n\
4322 result in significant performance improvement for remote targets."),
4323                            NULL,
4324                            show_trust_readonly,
4325                            &setlist, &showlist);
4326
4327   add_com ("monitor", class_obscure, do_monitor_command,
4328            _("Send a command to the remote monitor (remote targets only)."));
4329
4330   add_cmd ("target-stack", class_maintenance, maintenance_print_target_stack,
4331            _("Print the name of each layer of the internal target stack."),
4332            &maintenanceprintlist);
4333
4334   add_setshow_boolean_cmd ("target-async", no_class,
4335                            &target_async_permitted_1, _("\
4336 Set whether gdb controls the inferior in asynchronous mode."), _("\
4337 Show whether gdb controls the inferior in asynchronous mode."), _("\
4338 Tells gdb whether to control the inferior in asynchronous mode."),
4339                            set_maintenance_target_async_permitted,
4340                            show_maintenance_target_async_permitted,
4341                            &setlist,
4342                            &showlist);
4343
4344   add_setshow_boolean_cmd ("stack-cache", class_support,
4345                            &stack_cache_enabled_p_1, _("\
4346 Set cache use for stack access."), _("\
4347 Show cache use for stack access."), _("\
4348 When on, use the data cache for all stack access, regardless of any\n\
4349 configured memory regions.  This improves remote performance significantly.\n\
4350 By default, caching for stack access is on."),
4351                            set_stack_cache_enabled_p,
4352                            show_stack_cache_enabled_p,
4353                            &setlist, &showlist);
4354
4355   add_setshow_boolean_cmd ("may-write-registers", class_support,
4356                            &may_write_registers_1, _("\
4357 Set permission to write into registers."), _("\
4358 Show permission to write into registers."), _("\
4359 When this permission is on, GDB may write into the target's registers.\n\
4360 Otherwise, any sort of write attempt will result in an error."),
4361                            set_target_permissions, NULL,
4362                            &setlist, &showlist);
4363
4364   add_setshow_boolean_cmd ("may-write-memory", class_support,
4365                            &may_write_memory_1, _("\
4366 Set permission to write into target memory."), _("\
4367 Show permission to write into target memory."), _("\
4368 When this permission is on, GDB may write into the target's memory.\n\
4369 Otherwise, any sort of write attempt will result in an error."),
4370                            set_write_memory_permission, NULL,
4371                            &setlist, &showlist);
4372
4373   add_setshow_boolean_cmd ("may-insert-breakpoints", class_support,
4374                            &may_insert_breakpoints_1, _("\
4375 Set permission to insert breakpoints in the target."), _("\
4376 Show permission to insert breakpoints in the target."), _("\
4377 When this permission is on, GDB may insert breakpoints in the program.\n\
4378 Otherwise, any sort of insertion attempt will result in an error."),
4379                            set_target_permissions, NULL,
4380                            &setlist, &showlist);
4381
4382   add_setshow_boolean_cmd ("may-insert-tracepoints", class_support,
4383                            &may_insert_tracepoints_1, _("\
4384 Set permission to insert tracepoints in the target."), _("\
4385 Show permission to insert tracepoints in the target."), _("\
4386 When this permission is on, GDB may insert tracepoints in the program.\n\
4387 Otherwise, any sort of insertion attempt will result in an error."),
4388                            set_target_permissions, NULL,
4389                            &setlist, &showlist);
4390
4391   add_setshow_boolean_cmd ("may-insert-fast-tracepoints", class_support,
4392                            &may_insert_fast_tracepoints_1, _("\
4393 Set permission to insert fast tracepoints in the target."), _("\
4394 Show permission to insert fast tracepoints in the target."), _("\
4395 When this permission is on, GDB may insert fast tracepoints.\n\
4396 Otherwise, any sort of insertion attempt will result in an error."),
4397                            set_target_permissions, NULL,
4398                            &setlist, &showlist);
4399
4400   add_setshow_boolean_cmd ("may-interrupt", class_support,
4401                            &may_stop_1, _("\
4402 Set permission to interrupt or signal the target."), _("\
4403 Show permission to interrupt or signal the target."), _("\
4404 When this permission is on, GDB may interrupt/stop the target's execution.\n\
4405 Otherwise, any attempt to interrupt or stop will be ignored."),
4406                            set_target_permissions, NULL,
4407                            &setlist, &showlist);
4408
4409
4410   target_dcache = dcache_init ();
4411 }