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