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