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