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