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