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