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