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