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