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