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