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