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