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