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