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