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