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