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