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