* configure.ac (mips*-*-*linux*, mips*-*-gnu*): Use mt-mips-gnu.
[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
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
45 static void target_info (char *, int);
46
47 static void maybe_kill_then_attach (char *, int);
48
49 static void kill_or_be_killed (int);
50
51 static void default_terminal_info (char *, int);
52
53 static int default_watchpoint_addr_within_range (struct target_ops *,
54 CORE_ADDR, CORE_ADDR, int);
55
56 static int default_region_ok_for_hw_watchpoint (CORE_ADDR, int);
57
58 static int nosymbol (char *, CORE_ADDR *);
59
60 static void tcomplain (void) ATTR_NORETURN;
61
62 static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *);
63
64 static int return_zero (void);
65
66 static int return_one (void);
67
68 static int return_minus_one (void);
69
70 void target_ignore (void);
71
72 static void target_command (char *, int);
73
74 static struct target_ops *find_default_run_target (char *);
75
76 static void nosupport_runtime (void);
77
78 static LONGEST default_xfer_partial (struct target_ops *ops,
79 enum target_object object,
80 const char *annex, gdb_byte *readbuf,
81 const gdb_byte *writebuf,
82 ULONGEST offset, LONGEST len);
83
84 static LONGEST current_xfer_partial (struct target_ops *ops,
85 enum target_object object,
86 const char *annex, gdb_byte *readbuf,
87 const gdb_byte *writebuf,
88 ULONGEST offset, LONGEST len);
89
90 static LONGEST target_xfer_partial (struct target_ops *ops,
91 enum target_object object,
92 const char *annex,
93 void *readbuf, const void *writebuf,
94 ULONGEST offset, LONGEST len);
95
96 static void init_dummy_target (void);
97
98 static struct target_ops debug_target;
99
100 static void debug_to_open (char *, int);
101
102 static void debug_to_close (int);
103
104 static void debug_to_attach (char *, int);
105
106 static void debug_to_detach (char *, int);
107
108 static void debug_to_resume (ptid_t, int, enum target_signal);
109
110 static ptid_t debug_to_wait (ptid_t, struct target_waitstatus *);
111
112 static void debug_to_fetch_registers (struct regcache *, int);
113
114 static void debug_to_store_registers (struct regcache *, int);
115
116 static void debug_to_prepare_to_store (struct regcache *);
117
118 static void debug_to_files_info (struct target_ops *);
119
120 static int debug_to_insert_breakpoint (struct bp_target_info *);
121
122 static int debug_to_remove_breakpoint (struct bp_target_info *);
123
124 static int debug_to_can_use_hw_breakpoint (int, int, int);
125
126 static int debug_to_insert_hw_breakpoint (struct bp_target_info *);
127
128 static int debug_to_remove_hw_breakpoint (struct bp_target_info *);
129
130 static int debug_to_insert_watchpoint (CORE_ADDR, int, int);
131
132 static int debug_to_remove_watchpoint (CORE_ADDR, int, int);
133
134 static int debug_to_stopped_by_watchpoint (void);
135
136 static int debug_to_stopped_data_address (struct target_ops *, CORE_ADDR *);
137
138 static int debug_to_watchpoint_addr_within_range (struct target_ops *,
139 CORE_ADDR, CORE_ADDR, int);
140
141 static int debug_to_region_ok_for_hw_watchpoint (CORE_ADDR, int);
142
143 static void debug_to_terminal_init (void);
144
145 static void debug_to_terminal_inferior (void);
146
147 static void debug_to_terminal_ours_for_output (void);
148
149 static void debug_to_terminal_save_ours (void);
150
151 static void debug_to_terminal_ours (void);
152
153 static void debug_to_terminal_info (char *, int);
154
155 static void debug_to_kill (void);
156
157 static void debug_to_load (char *, int);
158
159 static int debug_to_lookup_symbol (char *, CORE_ADDR *);
160
161 static void debug_to_mourn_inferior (void);
162
163 static int debug_to_can_run (void);
164
165 static void debug_to_notice_signals (ptid_t);
166
167 static int debug_to_thread_alive (ptid_t);
168
169 static void debug_to_stop (ptid_t);
170
171 /* NOTE: cagney/2004-09-29: Many targets reference this variable in
172 wierd and mysterious ways. Putting the variable here lets those
173 wierd and mysterious ways keep building while they are being
174 converted to the inferior inheritance structure. */
175 struct target_ops deprecated_child_ops;
176
177 /* Pointer to array of target architecture structures; the size of the
178 array; the current index into the array; the allocated size of the
179 array. */
180 struct target_ops **target_structs;
181 unsigned target_struct_size;
182 unsigned target_struct_index;
183 unsigned target_struct_allocsize;
184 #define DEFAULT_ALLOCSIZE 10
185
186 /* The initial current target, so that there is always a semi-valid
187 current target. */
188
189 static struct target_ops dummy_target;
190
191 /* Top of target stack. */
192
193 static struct target_ops *target_stack;
194
195 /* The target structure we are currently using to talk to a process
196 or file or whatever "inferior" we have. */
197
198 struct target_ops current_target;
199
200 /* Command list for target. */
201
202 static struct cmd_list_element *targetlist = NULL;
203
204 /* Nonzero if we are debugging an attached outside process
205 rather than an inferior. */
206
207 int attach_flag;
208
209 /* Nonzero if we should trust readonly sections from the
210 executable when reading memory. */
211
212 static int trust_readonly = 0;
213
214 /* Nonzero if we should show true memory content including
215 memory breakpoint inserted by gdb. */
216
217 static int show_memory_breakpoints = 0;
218
219 /* Non-zero if we want to see trace of target level stuff. */
220
221 static int targetdebug = 0;
222 static void
223 show_targetdebug (struct ui_file *file, int from_tty,
224 struct cmd_list_element *c, const char *value)
225 {
226 fprintf_filtered (file, _("Target debugging is %s.\n"), value);
227 }
228
229 static void setup_target_debug (void);
230
231 DCACHE *target_dcache;
232
233 /* The user just typed 'target' without the name of a target. */
234
235 static void
236 target_command (char *arg, int from_tty)
237 {
238 fputs_filtered ("Argument required (target name). Try `help target'\n",
239 gdb_stdout);
240 }
241
242 /* Add a possible target architecture to the list. */
243
244 void
245 add_target (struct target_ops *t)
246 {
247 /* Provide default values for all "must have" methods. */
248 if (t->to_xfer_partial == NULL)
249 t->to_xfer_partial = default_xfer_partial;
250
251 if (!target_structs)
252 {
253 target_struct_allocsize = DEFAULT_ALLOCSIZE;
254 target_structs = (struct target_ops **) xmalloc
255 (target_struct_allocsize * sizeof (*target_structs));
256 }
257 if (target_struct_size >= target_struct_allocsize)
258 {
259 target_struct_allocsize *= 2;
260 target_structs = (struct target_ops **)
261 xrealloc ((char *) target_structs,
262 target_struct_allocsize * sizeof (*target_structs));
263 }
264 target_structs[target_struct_size++] = t;
265
266 if (targetlist == NULL)
267 add_prefix_cmd ("target", class_run, target_command, _("\
268 Connect to a target machine or process.\n\
269 The first argument is the type or protocol of the target machine.\n\
270 Remaining arguments are interpreted by the target protocol. For more\n\
271 information on the arguments for a particular protocol, type\n\
272 `help target ' followed by the protocol name."),
273 &targetlist, "target ", 0, &cmdlist);
274 add_cmd (t->to_shortname, no_class, t->to_open, t->to_doc, &targetlist);
275 }
276
277 /* Stub functions */
278
279 void
280 target_ignore (void)
281 {
282 }
283
284 void
285 target_load (char *arg, int from_tty)
286 {
287 dcache_invalidate (target_dcache);
288 (*current_target.to_load) (arg, from_tty);
289 }
290
291 static int
292 nomemory (CORE_ADDR memaddr, char *myaddr, int len, int write,
293 struct target_ops *t)
294 {
295 errno = EIO; /* Can't read/write this location */
296 return 0; /* No bytes handled */
297 }
298
299 static void
300 tcomplain (void)
301 {
302 error (_("You can't do that when your target is `%s'"),
303 current_target.to_shortname);
304 }
305
306 void
307 noprocess (void)
308 {
309 error (_("You can't do that without a process to debug."));
310 }
311
312 static int
313 nosymbol (char *name, CORE_ADDR *addrp)
314 {
315 return 1; /* Symbol does not exist in target env */
316 }
317
318 static void
319 nosupport_runtime (void)
320 {
321 if (ptid_equal (inferior_ptid, null_ptid))
322 noprocess ();
323 else
324 error (_("No run-time support for this"));
325 }
326
327
328 static void
329 default_terminal_info (char *args, int from_tty)
330 {
331 printf_unfiltered (_("No saved terminal information.\n"));
332 }
333
334 /* This is the default target_create_inferior and target_attach function.
335 If the current target is executing, it asks whether to kill it off.
336 If this function returns without calling error(), it has killed off
337 the target, and the operation should be attempted. */
338
339 static void
340 kill_or_be_killed (int from_tty)
341 {
342 if (target_has_execution)
343 {
344 printf_unfiltered (_("You are already running a program:\n"));
345 target_files_info ();
346 if (query ("Kill it? "))
347 {
348 target_kill ();
349 if (target_has_execution)
350 error (_("Killing the program did not help."));
351 return;
352 }
353 else
354 {
355 error (_("Program not killed."));
356 }
357 }
358 tcomplain ();
359 }
360
361 static void
362 maybe_kill_then_attach (char *args, int from_tty)
363 {
364 kill_or_be_killed (from_tty);
365 target_attach (args, from_tty);
366 }
367
368 static void
369 maybe_kill_then_create_inferior (char *exec, char *args, char **env,
370 int from_tty)
371 {
372 kill_or_be_killed (0);
373 target_create_inferior (exec, args, env, from_tty);
374 }
375
376 /* Go through the target stack from top to bottom, copying over zero
377 entries in current_target, then filling in still empty entries. In
378 effect, we are doing class inheritance through the pushed target
379 vectors.
380
381 NOTE: cagney/2003-10-17: The problem with this inheritance, as it
382 is currently implemented, is that it discards any knowledge of
383 which target an inherited method originally belonged to.
384 Consequently, new new target methods should instead explicitly and
385 locally search the target stack for the target that can handle the
386 request. */
387
388 static void
389 update_current_target (void)
390 {
391 struct target_ops *t;
392
393 /* First, reset current's contents. */
394 memset (&current_target, 0, sizeof (current_target));
395
396 #define INHERIT(FIELD, TARGET) \
397 if (!current_target.FIELD) \
398 current_target.FIELD = (TARGET)->FIELD
399
400 for (t = target_stack; t; t = t->beneath)
401 {
402 INHERIT (to_shortname, t);
403 INHERIT (to_longname, t);
404 INHERIT (to_doc, t);
405 INHERIT (to_open, t);
406 INHERIT (to_close, t);
407 INHERIT (to_attach, t);
408 INHERIT (to_post_attach, t);
409 INHERIT (to_attach_no_wait, t);
410 INHERIT (to_detach, t);
411 /* Do not inherit to_disconnect. */
412 INHERIT (to_resume, t);
413 INHERIT (to_wait, t);
414 INHERIT (to_fetch_registers, t);
415 INHERIT (to_store_registers, t);
416 INHERIT (to_prepare_to_store, t);
417 INHERIT (deprecated_xfer_memory, t);
418 INHERIT (to_files_info, t);
419 INHERIT (to_insert_breakpoint, t);
420 INHERIT (to_remove_breakpoint, t);
421 INHERIT (to_can_use_hw_breakpoint, t);
422 INHERIT (to_insert_hw_breakpoint, t);
423 INHERIT (to_remove_hw_breakpoint, t);
424 INHERIT (to_insert_watchpoint, t);
425 INHERIT (to_remove_watchpoint, t);
426 INHERIT (to_stopped_data_address, t);
427 INHERIT (to_have_steppable_watchpoint, t);
428 INHERIT (to_have_continuable_watchpoint, t);
429 INHERIT (to_stopped_by_watchpoint, t);
430 INHERIT (to_watchpoint_addr_within_range, t);
431 INHERIT (to_region_ok_for_hw_watchpoint, t);
432 INHERIT (to_terminal_init, t);
433 INHERIT (to_terminal_inferior, t);
434 INHERIT (to_terminal_ours_for_output, t);
435 INHERIT (to_terminal_ours, t);
436 INHERIT (to_terminal_save_ours, t);
437 INHERIT (to_terminal_info, t);
438 INHERIT (to_kill, t);
439 INHERIT (to_load, t);
440 INHERIT (to_lookup_symbol, t);
441 INHERIT (to_create_inferior, t);
442 INHERIT (to_post_startup_inferior, t);
443 INHERIT (to_acknowledge_created_inferior, t);
444 INHERIT (to_insert_fork_catchpoint, t);
445 INHERIT (to_remove_fork_catchpoint, t);
446 INHERIT (to_insert_vfork_catchpoint, t);
447 INHERIT (to_remove_vfork_catchpoint, t);
448 /* Do not inherit to_follow_fork. */
449 INHERIT (to_insert_exec_catchpoint, t);
450 INHERIT (to_remove_exec_catchpoint, t);
451 INHERIT (to_has_exited, t);
452 INHERIT (to_mourn_inferior, t);
453 INHERIT (to_can_run, t);
454 INHERIT (to_notice_signals, t);
455 INHERIT (to_thread_alive, t);
456 INHERIT (to_find_new_threads, t);
457 INHERIT (to_pid_to_str, t);
458 INHERIT (to_extra_thread_info, t);
459 INHERIT (to_stop, t);
460 /* Do not inherit to_xfer_partial. */
461 INHERIT (to_rcmd, t);
462 INHERIT (to_pid_to_exec_file, t);
463 INHERIT (to_log_command, t);
464 INHERIT (to_stratum, t);
465 INHERIT (to_has_all_memory, t);
466 INHERIT (to_has_memory, t);
467 INHERIT (to_has_stack, t);
468 INHERIT (to_has_registers, t);
469 INHERIT (to_has_execution, t);
470 INHERIT (to_has_thread_control, t);
471 INHERIT (to_sections, t);
472 INHERIT (to_sections_end, t);
473 INHERIT (to_can_async_p, t);
474 INHERIT (to_is_async_p, t);
475 INHERIT (to_async, t);
476 INHERIT (to_async_mask, t);
477 INHERIT (to_find_memory_regions, t);
478 INHERIT (to_make_corefile_notes, t);
479 INHERIT (to_get_thread_local_address, t);
480 /* Do not inherit to_read_description. */
481 /* Do not inherit to_search_memory. */
482 INHERIT (to_magic, t);
483 /* Do not inherit to_memory_map. */
484 /* Do not inherit to_flash_erase. */
485 /* Do not inherit to_flash_done. */
486 }
487 #undef INHERIT
488
489 /* Clean up a target struct so it no longer has any zero pointers in
490 it. Some entries are defaulted to a method that print an error,
491 others are hard-wired to a standard recursive default. */
492
493 #define de_fault(field, value) \
494 if (!current_target.field) \
495 current_target.field = value
496
497 de_fault (to_open,
498 (void (*) (char *, int))
499 tcomplain);
500 de_fault (to_close,
501 (void (*) (int))
502 target_ignore);
503 de_fault (to_attach,
504 maybe_kill_then_attach);
505 de_fault (to_post_attach,
506 (void (*) (int))
507 target_ignore);
508 de_fault (to_detach,
509 (void (*) (char *, int))
510 target_ignore);
511 de_fault (to_resume,
512 (void (*) (ptid_t, int, enum target_signal))
513 noprocess);
514 de_fault (to_wait,
515 (ptid_t (*) (ptid_t, struct target_waitstatus *))
516 noprocess);
517 de_fault (to_fetch_registers,
518 (void (*) (struct regcache *, int))
519 target_ignore);
520 de_fault (to_store_registers,
521 (void (*) (struct regcache *, int))
522 noprocess);
523 de_fault (to_prepare_to_store,
524 (void (*) (struct regcache *))
525 noprocess);
526 de_fault (deprecated_xfer_memory,
527 (int (*) (CORE_ADDR, gdb_byte *, int, int, struct mem_attrib *, struct target_ops *))
528 nomemory);
529 de_fault (to_files_info,
530 (void (*) (struct target_ops *))
531 target_ignore);
532 de_fault (to_insert_breakpoint,
533 memory_insert_breakpoint);
534 de_fault (to_remove_breakpoint,
535 memory_remove_breakpoint);
536 de_fault (to_can_use_hw_breakpoint,
537 (int (*) (int, int, int))
538 return_zero);
539 de_fault (to_insert_hw_breakpoint,
540 (int (*) (struct bp_target_info *))
541 return_minus_one);
542 de_fault (to_remove_hw_breakpoint,
543 (int (*) (struct bp_target_info *))
544 return_minus_one);
545 de_fault (to_insert_watchpoint,
546 (int (*) (CORE_ADDR, int, int))
547 return_minus_one);
548 de_fault (to_remove_watchpoint,
549 (int (*) (CORE_ADDR, int, int))
550 return_minus_one);
551 de_fault (to_stopped_by_watchpoint,
552 (int (*) (void))
553 return_zero);
554 de_fault (to_stopped_data_address,
555 (int (*) (struct target_ops *, CORE_ADDR *))
556 return_zero);
557 de_fault (to_watchpoint_addr_within_range,
558 default_watchpoint_addr_within_range);
559 de_fault (to_region_ok_for_hw_watchpoint,
560 default_region_ok_for_hw_watchpoint);
561 de_fault (to_terminal_init,
562 (void (*) (void))
563 target_ignore);
564 de_fault (to_terminal_inferior,
565 (void (*) (void))
566 target_ignore);
567 de_fault (to_terminal_ours_for_output,
568 (void (*) (void))
569 target_ignore);
570 de_fault (to_terminal_ours,
571 (void (*) (void))
572 target_ignore);
573 de_fault (to_terminal_save_ours,
574 (void (*) (void))
575 target_ignore);
576 de_fault (to_terminal_info,
577 default_terminal_info);
578 de_fault (to_kill,
579 (void (*) (void))
580 noprocess);
581 de_fault (to_load,
582 (void (*) (char *, int))
583 tcomplain);
584 de_fault (to_lookup_symbol,
585 (int (*) (char *, CORE_ADDR *))
586 nosymbol);
587 de_fault (to_create_inferior,
588 maybe_kill_then_create_inferior);
589 de_fault (to_post_startup_inferior,
590 (void (*) (ptid_t))
591 target_ignore);
592 de_fault (to_acknowledge_created_inferior,
593 (void (*) (int))
594 target_ignore);
595 de_fault (to_insert_fork_catchpoint,
596 (void (*) (int))
597 tcomplain);
598 de_fault (to_remove_fork_catchpoint,
599 (int (*) (int))
600 tcomplain);
601 de_fault (to_insert_vfork_catchpoint,
602 (void (*) (int))
603 tcomplain);
604 de_fault (to_remove_vfork_catchpoint,
605 (int (*) (int))
606 tcomplain);
607 de_fault (to_insert_exec_catchpoint,
608 (void (*) (int))
609 tcomplain);
610 de_fault (to_remove_exec_catchpoint,
611 (int (*) (int))
612 tcomplain);
613 de_fault (to_has_exited,
614 (int (*) (int, int, int *))
615 return_zero);
616 de_fault (to_mourn_inferior,
617 (void (*) (void))
618 noprocess);
619 de_fault (to_can_run,
620 return_zero);
621 de_fault (to_notice_signals,
622 (void (*) (ptid_t))
623 target_ignore);
624 de_fault (to_thread_alive,
625 (int (*) (ptid_t))
626 return_zero);
627 de_fault (to_find_new_threads,
628 (void (*) (void))
629 target_ignore);
630 de_fault (to_extra_thread_info,
631 (char *(*) (struct thread_info *))
632 return_zero);
633 de_fault (to_stop,
634 (void (*) (ptid_t))
635 target_ignore);
636 current_target.to_xfer_partial = current_xfer_partial;
637 de_fault (to_rcmd,
638 (void (*) (char *, struct ui_file *))
639 tcomplain);
640 de_fault (to_pid_to_exec_file,
641 (char *(*) (int))
642 return_zero);
643 de_fault (to_can_async_p,
644 (int (*) (void))
645 return_zero);
646 de_fault (to_is_async_p,
647 (int (*) (void))
648 return_zero);
649 de_fault (to_async,
650 (void (*) (void (*) (enum inferior_event_type, void*), void*))
651 tcomplain);
652 de_fault (to_async_mask,
653 (int (*) (int))
654 return_one);
655 current_target.to_read_description = NULL;
656 #undef de_fault
657
658 /* Finally, position the target-stack beneath the squashed
659 "current_target". That way code looking for a non-inherited
660 target method can quickly and simply find it. */
661 current_target.beneath = target_stack;
662
663 if (targetdebug)
664 setup_target_debug ();
665 }
666
667 /* Mark OPS as a running target. This reverses the effect
668 of target_mark_exited. */
669
670 void
671 target_mark_running (struct target_ops *ops)
672 {
673 struct target_ops *t;
674
675 for (t = target_stack; t != NULL; t = t->beneath)
676 if (t == ops)
677 break;
678 if (t == NULL)
679 internal_error (__FILE__, __LINE__,
680 "Attempted to mark unpushed target \"%s\" as running",
681 ops->to_shortname);
682
683 ops->to_has_execution = 1;
684 ops->to_has_all_memory = 1;
685 ops->to_has_memory = 1;
686 ops->to_has_stack = 1;
687 ops->to_has_registers = 1;
688
689 update_current_target ();
690 }
691
692 /* Mark OPS as a non-running target. This reverses the effect
693 of target_mark_running. */
694
695 void
696 target_mark_exited (struct target_ops *ops)
697 {
698 struct target_ops *t;
699
700 for (t = target_stack; t != NULL; t = t->beneath)
701 if (t == ops)
702 break;
703 if (t == NULL)
704 internal_error (__FILE__, __LINE__,
705 "Attempted to mark unpushed target \"%s\" as running",
706 ops->to_shortname);
707
708 ops->to_has_execution = 0;
709 ops->to_has_all_memory = 0;
710 ops->to_has_memory = 0;
711 ops->to_has_stack = 0;
712 ops->to_has_registers = 0;
713
714 update_current_target ();
715 }
716
717 /* Push a new target type into the stack of the existing target accessors,
718 possibly superseding some of the existing accessors.
719
720 Result is zero if the pushed target ended up on top of the stack,
721 nonzero if at least one target is on top of it.
722
723 Rather than allow an empty stack, we always have the dummy target at
724 the bottom stratum, so we can call the function vectors without
725 checking them. */
726
727 int
728 push_target (struct target_ops *t)
729 {
730 struct target_ops **cur;
731
732 /* Check magic number. If wrong, it probably means someone changed
733 the struct definition, but not all the places that initialize one. */
734 if (t->to_magic != OPS_MAGIC)
735 {
736 fprintf_unfiltered (gdb_stderr,
737 "Magic number of %s target struct wrong\n",
738 t->to_shortname);
739 internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
740 }
741
742 /* Find the proper stratum to install this target in. */
743 for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
744 {
745 if ((int) (t->to_stratum) >= (int) (*cur)->to_stratum)
746 break;
747 }
748
749 /* If there's already targets at this stratum, remove them. */
750 /* FIXME: cagney/2003-10-15: I think this should be popping all
751 targets to CUR, and not just those at this stratum level. */
752 while ((*cur) != NULL && t->to_stratum == (*cur)->to_stratum)
753 {
754 /* There's already something at this stratum level. Close it,
755 and un-hook it from the stack. */
756 struct target_ops *tmp = (*cur);
757 (*cur) = (*cur)->beneath;
758 tmp->beneath = NULL;
759 target_close (tmp, 0);
760 }
761
762 /* We have removed all targets in our stratum, now add the new one. */
763 t->beneath = (*cur);
764 (*cur) = t;
765
766 update_current_target ();
767
768 /* Not on top? */
769 return (t != target_stack);
770 }
771
772 /* Remove a target_ops vector from the stack, wherever it may be.
773 Return how many times it was removed (0 or 1). */
774
775 int
776 unpush_target (struct target_ops *t)
777 {
778 struct target_ops **cur;
779 struct target_ops *tmp;
780
781 /* Look for the specified target. Note that we assume that a target
782 can only occur once in the target stack. */
783
784 for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
785 {
786 if ((*cur) == t)
787 break;
788 }
789
790 if ((*cur) == NULL)
791 return 0; /* Didn't find target_ops, quit now */
792
793 /* NOTE: cagney/2003-12-06: In '94 the close call was made
794 unconditional by moving it to before the above check that the
795 target was in the target stack (something about "Change the way
796 pushing and popping of targets work to support target overlays
797 and inheritance"). This doesn't make much sense - only open
798 targets should be closed. */
799 target_close (t, 0);
800
801 /* Unchain the target */
802 tmp = (*cur);
803 (*cur) = (*cur)->beneath;
804 tmp->beneath = NULL;
805
806 update_current_target ();
807
808 return 1;
809 }
810
811 void
812 pop_target (void)
813 {
814 target_close (&current_target, 0); /* Let it clean up */
815 if (unpush_target (target_stack) == 1)
816 return;
817
818 fprintf_unfiltered (gdb_stderr,
819 "pop_target couldn't find target %s\n",
820 current_target.to_shortname);
821 internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
822 }
823
824 /* Using the objfile specified in OBJFILE, find the address for the
825 current thread's thread-local storage with offset OFFSET. */
826 CORE_ADDR
827 target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset)
828 {
829 volatile CORE_ADDR addr = 0;
830
831 if (target_get_thread_local_address_p ()
832 && gdbarch_fetch_tls_load_module_address_p (current_gdbarch))
833 {
834 ptid_t ptid = inferior_ptid;
835 volatile struct gdb_exception ex;
836
837 TRY_CATCH (ex, RETURN_MASK_ALL)
838 {
839 CORE_ADDR lm_addr;
840
841 /* Fetch the load module address for this objfile. */
842 lm_addr = gdbarch_fetch_tls_load_module_address (current_gdbarch,
843 objfile);
844 /* If it's 0, throw the appropriate exception. */
845 if (lm_addr == 0)
846 throw_error (TLS_LOAD_MODULE_NOT_FOUND_ERROR,
847 _("TLS load module not found"));
848
849 addr = target_get_thread_local_address (ptid, lm_addr, offset);
850 }
851 /* If an error occurred, print TLS related messages here. Otherwise,
852 throw the error to some higher catcher. */
853 if (ex.reason < 0)
854 {
855 int objfile_is_library = (objfile->flags & OBJF_SHARED);
856
857 switch (ex.error)
858 {
859 case TLS_NO_LIBRARY_SUPPORT_ERROR:
860 error (_("Cannot find thread-local variables in this thread library."));
861 break;
862 case TLS_LOAD_MODULE_NOT_FOUND_ERROR:
863 if (objfile_is_library)
864 error (_("Cannot find shared library `%s' in dynamic"
865 " linker's load module list"), objfile->name);
866 else
867 error (_("Cannot find executable file `%s' in dynamic"
868 " linker's load module list"), objfile->name);
869 break;
870 case TLS_NOT_ALLOCATED_YET_ERROR:
871 if (objfile_is_library)
872 error (_("The inferior has not yet allocated storage for"
873 " thread-local variables in\n"
874 "the shared library `%s'\n"
875 "for %s"),
876 objfile->name, target_pid_to_str (ptid));
877 else
878 error (_("The inferior has not yet allocated storage for"
879 " thread-local variables in\n"
880 "the executable `%s'\n"
881 "for %s"),
882 objfile->name, target_pid_to_str (ptid));
883 break;
884 case TLS_GENERIC_ERROR:
885 if (objfile_is_library)
886 error (_("Cannot find thread-local storage for %s, "
887 "shared library %s:\n%s"),
888 target_pid_to_str (ptid),
889 objfile->name, ex.message);
890 else
891 error (_("Cannot find thread-local storage for %s, "
892 "executable file %s:\n%s"),
893 target_pid_to_str (ptid),
894 objfile->name, ex.message);
895 break;
896 default:
897 throw_exception (ex);
898 break;
899 }
900 }
901 }
902 /* It wouldn't be wrong here to try a gdbarch method, too; finding
903 TLS is an ABI-specific thing. But we don't do that yet. */
904 else
905 error (_("Cannot find thread-local variables on this target"));
906
907 return addr;
908 }
909
910 #undef MIN
911 #define MIN(A, B) (((A) <= (B)) ? (A) : (B))
912
913 /* target_read_string -- read a null terminated string, up to LEN bytes,
914 from MEMADDR in target. Set *ERRNOP to the errno code, or 0 if successful.
915 Set *STRING to a pointer to malloc'd memory containing the data; the caller
916 is responsible for freeing it. Return the number of bytes successfully
917 read. */
918
919 int
920 target_read_string (CORE_ADDR memaddr, char **string, int len, int *errnop)
921 {
922 int tlen, origlen, offset, i;
923 gdb_byte buf[4];
924 int errcode = 0;
925 char *buffer;
926 int buffer_allocated;
927 char *bufptr;
928 unsigned int nbytes_read = 0;
929
930 gdb_assert (string);
931
932 /* Small for testing. */
933 buffer_allocated = 4;
934 buffer = xmalloc (buffer_allocated);
935 bufptr = buffer;
936
937 origlen = len;
938
939 while (len > 0)
940 {
941 tlen = MIN (len, 4 - (memaddr & 3));
942 offset = memaddr & 3;
943
944 errcode = target_read_memory (memaddr & ~3, buf, sizeof buf);
945 if (errcode != 0)
946 {
947 /* The transfer request might have crossed the boundary to an
948 unallocated region of memory. Retry the transfer, requesting
949 a single byte. */
950 tlen = 1;
951 offset = 0;
952 errcode = target_read_memory (memaddr, buf, 1);
953 if (errcode != 0)
954 goto done;
955 }
956
957 if (bufptr - buffer + tlen > buffer_allocated)
958 {
959 unsigned int bytes;
960 bytes = bufptr - buffer;
961 buffer_allocated *= 2;
962 buffer = xrealloc (buffer, buffer_allocated);
963 bufptr = buffer + bytes;
964 }
965
966 for (i = 0; i < tlen; i++)
967 {
968 *bufptr++ = buf[i + offset];
969 if (buf[i + offset] == '\000')
970 {
971 nbytes_read += i + 1;
972 goto done;
973 }
974 }
975
976 memaddr += tlen;
977 len -= tlen;
978 nbytes_read += tlen;
979 }
980 done:
981 *string = buffer;
982 if (errnop != NULL)
983 *errnop = errcode;
984 return nbytes_read;
985 }
986
987 /* Find a section containing ADDR. */
988 struct section_table *
989 target_section_by_addr (struct target_ops *target, CORE_ADDR addr)
990 {
991 struct section_table *secp;
992 for (secp = target->to_sections;
993 secp < target->to_sections_end;
994 secp++)
995 {
996 if (addr >= secp->addr && addr < secp->endaddr)
997 return secp;
998 }
999 return NULL;
1000 }
1001
1002 /* Perform a partial memory transfer. The arguments and return
1003 value are just as for target_xfer_partial. */
1004
1005 static LONGEST
1006 memory_xfer_partial (struct target_ops *ops, void *readbuf, const void *writebuf,
1007 ULONGEST memaddr, LONGEST len)
1008 {
1009 LONGEST res;
1010 int reg_len;
1011 struct mem_region *region;
1012
1013 /* Zero length requests are ok and require no work. */
1014 if (len == 0)
1015 return 0;
1016
1017 /* Try the executable file, if "trust-readonly-sections" is set. */
1018 if (readbuf != NULL && trust_readonly)
1019 {
1020 struct section_table *secp;
1021
1022 secp = target_section_by_addr (ops, memaddr);
1023 if (secp != NULL
1024 && (bfd_get_section_flags (secp->bfd, secp->the_bfd_section)
1025 & SEC_READONLY))
1026 return xfer_memory (memaddr, readbuf, len, 0, NULL, ops);
1027 }
1028
1029 /* Likewise for accesses to unmapped overlay sections. */
1030 if (readbuf != NULL && overlay_debugging)
1031 {
1032 asection *section = find_pc_overlay (memaddr);
1033 if (pc_in_unmapped_range (memaddr, section))
1034 return xfer_memory (memaddr, readbuf, len, 0, NULL, ops);
1035 }
1036
1037 /* Try GDB's internal data cache. */
1038 region = lookup_mem_region (memaddr);
1039 /* region->hi == 0 means there's no upper bound. */
1040 if (memaddr + len < region->hi || region->hi == 0)
1041 reg_len = len;
1042 else
1043 reg_len = region->hi - memaddr;
1044
1045 switch (region->attrib.mode)
1046 {
1047 case MEM_RO:
1048 if (writebuf != NULL)
1049 return -1;
1050 break;
1051
1052 case MEM_WO:
1053 if (readbuf != NULL)
1054 return -1;
1055 break;
1056
1057 case MEM_FLASH:
1058 /* We only support writing to flash during "load" for now. */
1059 if (writebuf != NULL)
1060 error (_("Writing to flash memory forbidden in this context"));
1061 break;
1062
1063 case MEM_NONE:
1064 return -1;
1065 }
1066
1067 if (region->attrib.cache)
1068 {
1069 /* FIXME drow/2006-08-09: This call discards OPS, so the raw
1070 memory request will start back at current_target. */
1071 if (readbuf != NULL)
1072 res = dcache_xfer_memory (target_dcache, memaddr, readbuf,
1073 reg_len, 0);
1074 else
1075 /* FIXME drow/2006-08-09: If we're going to preserve const
1076 correctness dcache_xfer_memory should take readbuf and
1077 writebuf. */
1078 res = dcache_xfer_memory (target_dcache, memaddr,
1079 (void *) writebuf,
1080 reg_len, 1);
1081 if (res <= 0)
1082 return -1;
1083 else
1084 {
1085 if (readbuf && !show_memory_breakpoints)
1086 breakpoint_restore_shadows (readbuf, memaddr, reg_len);
1087 return res;
1088 }
1089 }
1090
1091 /* If none of those methods found the memory we wanted, fall back
1092 to a target partial transfer. Normally a single call to
1093 to_xfer_partial is enough; if it doesn't recognize an object
1094 it will call the to_xfer_partial of the next target down.
1095 But for memory this won't do. Memory is the only target
1096 object which can be read from more than one valid target.
1097 A core file, for instance, could have some of memory but
1098 delegate other bits to the target below it. So, we must
1099 manually try all targets. */
1100
1101 do
1102 {
1103 res = ops->to_xfer_partial (ops, TARGET_OBJECT_MEMORY, NULL,
1104 readbuf, writebuf, memaddr, reg_len);
1105 if (res > 0)
1106 break;
1107
1108 /* We want to continue past core files to executables, but not
1109 past a running target's memory. */
1110 if (ops->to_has_all_memory)
1111 break;
1112
1113 ops = ops->beneath;
1114 }
1115 while (ops != NULL);
1116
1117 if (readbuf && !show_memory_breakpoints)
1118 breakpoint_restore_shadows (readbuf, memaddr, reg_len);
1119
1120 /* If we still haven't got anything, return the last error. We
1121 give up. */
1122 return res;
1123 }
1124
1125 static void
1126 restore_show_memory_breakpoints (void *arg)
1127 {
1128 show_memory_breakpoints = (uintptr_t) arg;
1129 }
1130
1131 struct cleanup *
1132 make_show_memory_breakpoints_cleanup (int show)
1133 {
1134 int current = show_memory_breakpoints;
1135 show_memory_breakpoints = show;
1136
1137 return make_cleanup (restore_show_memory_breakpoints,
1138 (void *) (uintptr_t) current);
1139 }
1140
1141 static LONGEST
1142 target_xfer_partial (struct target_ops *ops,
1143 enum target_object object, const char *annex,
1144 void *readbuf, const void *writebuf,
1145 ULONGEST offset, LONGEST len)
1146 {
1147 LONGEST retval;
1148
1149 gdb_assert (ops->to_xfer_partial != NULL);
1150
1151 /* If this is a memory transfer, let the memory-specific code
1152 have a look at it instead. Memory transfers are more
1153 complicated. */
1154 if (object == TARGET_OBJECT_MEMORY)
1155 retval = memory_xfer_partial (ops, readbuf, writebuf, offset, len);
1156 else
1157 {
1158 enum target_object raw_object = object;
1159
1160 /* If this is a raw memory transfer, request the normal
1161 memory object from other layers. */
1162 if (raw_object == TARGET_OBJECT_RAW_MEMORY)
1163 raw_object = TARGET_OBJECT_MEMORY;
1164
1165 retval = ops->to_xfer_partial (ops, raw_object, annex, readbuf,
1166 writebuf, offset, len);
1167 }
1168
1169 if (targetdebug)
1170 {
1171 const unsigned char *myaddr = NULL;
1172
1173 fprintf_unfiltered (gdb_stdlog,
1174 "%s:target_xfer_partial (%d, %s, 0x%lx, 0x%lx, 0x%s, %s) = %s",
1175 ops->to_shortname,
1176 (int) object,
1177 (annex ? annex : "(null)"),
1178 (long) readbuf, (long) writebuf,
1179 paddr_nz (offset), paddr_d (len), paddr_d (retval));
1180
1181 if (readbuf)
1182 myaddr = readbuf;
1183 if (writebuf)
1184 myaddr = writebuf;
1185 if (retval > 0 && myaddr != NULL)
1186 {
1187 int i;
1188
1189 fputs_unfiltered (", bytes =", gdb_stdlog);
1190 for (i = 0; i < retval; i++)
1191 {
1192 if ((((long) &(myaddr[i])) & 0xf) == 0)
1193 {
1194 if (targetdebug < 2 && i > 0)
1195 {
1196 fprintf_unfiltered (gdb_stdlog, " ...");
1197 break;
1198 }
1199 fprintf_unfiltered (gdb_stdlog, "\n");
1200 }
1201
1202 fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
1203 }
1204 }
1205
1206 fputc_unfiltered ('\n', gdb_stdlog);
1207 }
1208 return retval;
1209 }
1210
1211 /* Read LEN bytes of target memory at address MEMADDR, placing the results in
1212 GDB's memory at MYADDR. Returns either 0 for success or an errno value
1213 if any error occurs.
1214
1215 If an error occurs, no guarantee is made about the contents of the data at
1216 MYADDR. In particular, the caller should not depend upon partial reads
1217 filling the buffer with good data. There is no way for the caller to know
1218 how much good data might have been transfered anyway. Callers that can
1219 deal with partial reads should call target_read (which will retry until
1220 it makes no progress, and then return how much was transferred). */
1221
1222 int
1223 target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
1224 {
1225 if (target_read (&current_target, TARGET_OBJECT_MEMORY, NULL,
1226 myaddr, memaddr, len) == len)
1227 return 0;
1228 else
1229 return EIO;
1230 }
1231
1232 int
1233 target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, int len)
1234 {
1235 if (target_write (&current_target, TARGET_OBJECT_MEMORY, NULL,
1236 myaddr, memaddr, len) == len)
1237 return 0;
1238 else
1239 return EIO;
1240 }
1241
1242 /* Fetch the target's memory map. */
1243
1244 VEC(mem_region_s) *
1245 target_memory_map (void)
1246 {
1247 VEC(mem_region_s) *result;
1248 struct mem_region *last_one, *this_one;
1249 int ix;
1250 struct target_ops *t;
1251
1252 if (targetdebug)
1253 fprintf_unfiltered (gdb_stdlog, "target_memory_map ()\n");
1254
1255 for (t = current_target.beneath; t != NULL; t = t->beneath)
1256 if (t->to_memory_map != NULL)
1257 break;
1258
1259 if (t == NULL)
1260 return NULL;
1261
1262 result = t->to_memory_map (t);
1263 if (result == NULL)
1264 return NULL;
1265
1266 qsort (VEC_address (mem_region_s, result),
1267 VEC_length (mem_region_s, result),
1268 sizeof (struct mem_region), mem_region_cmp);
1269
1270 /* Check that regions do not overlap. Simultaneously assign
1271 a numbering for the "mem" commands to use to refer to
1272 each region. */
1273 last_one = NULL;
1274 for (ix = 0; VEC_iterate (mem_region_s, result, ix, this_one); ix++)
1275 {
1276 this_one->number = ix;
1277
1278 if (last_one && last_one->hi > this_one->lo)
1279 {
1280 warning (_("Overlapping regions in memory map: ignoring"));
1281 VEC_free (mem_region_s, result);
1282 return NULL;
1283 }
1284 last_one = this_one;
1285 }
1286
1287 return result;
1288 }
1289
1290 void
1291 target_flash_erase (ULONGEST address, LONGEST length)
1292 {
1293 struct target_ops *t;
1294
1295 for (t = current_target.beneath; t != NULL; t = t->beneath)
1296 if (t->to_flash_erase != NULL)
1297 {
1298 if (targetdebug)
1299 fprintf_unfiltered (gdb_stdlog, "target_flash_erase (%s, %s)\n",
1300 paddr (address), phex (length, 0));
1301 t->to_flash_erase (t, address, length);
1302 return;
1303 }
1304
1305 tcomplain ();
1306 }
1307
1308 void
1309 target_flash_done (void)
1310 {
1311 struct target_ops *t;
1312
1313 for (t = current_target.beneath; t != NULL; t = t->beneath)
1314 if (t->to_flash_done != NULL)
1315 {
1316 if (targetdebug)
1317 fprintf_unfiltered (gdb_stdlog, "target_flash_done\n");
1318 t->to_flash_done (t);
1319 return;
1320 }
1321
1322 tcomplain ();
1323 }
1324
1325 #ifndef target_stopped_data_address_p
1326 int
1327 target_stopped_data_address_p (struct target_ops *target)
1328 {
1329 if (target->to_stopped_data_address
1330 == (int (*) (struct target_ops *, CORE_ADDR *)) return_zero)
1331 return 0;
1332 if (target->to_stopped_data_address == debug_to_stopped_data_address
1333 && (debug_target.to_stopped_data_address
1334 == (int (*) (struct target_ops *, CORE_ADDR *)) return_zero))
1335 return 0;
1336 return 1;
1337 }
1338 #endif
1339
1340 static void
1341 show_trust_readonly (struct ui_file *file, int from_tty,
1342 struct cmd_list_element *c, const char *value)
1343 {
1344 fprintf_filtered (file, _("\
1345 Mode for reading from readonly sections is %s.\n"),
1346 value);
1347 }
1348
1349 /* More generic transfers. */
1350
1351 static LONGEST
1352 default_xfer_partial (struct target_ops *ops, enum target_object object,
1353 const char *annex, gdb_byte *readbuf,
1354 const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
1355 {
1356 if (object == TARGET_OBJECT_MEMORY
1357 && ops->deprecated_xfer_memory != NULL)
1358 /* If available, fall back to the target's
1359 "deprecated_xfer_memory" method. */
1360 {
1361 int xfered = -1;
1362 errno = 0;
1363 if (writebuf != NULL)
1364 {
1365 void *buffer = xmalloc (len);
1366 struct cleanup *cleanup = make_cleanup (xfree, buffer);
1367 memcpy (buffer, writebuf, len);
1368 xfered = ops->deprecated_xfer_memory (offset, buffer, len,
1369 1/*write*/, NULL, ops);
1370 do_cleanups (cleanup);
1371 }
1372 if (readbuf != NULL)
1373 xfered = ops->deprecated_xfer_memory (offset, readbuf, len,
1374 0/*read*/, NULL, ops);
1375 if (xfered > 0)
1376 return xfered;
1377 else if (xfered == 0 && errno == 0)
1378 /* "deprecated_xfer_memory" uses 0, cross checked against
1379 ERRNO as one indication of an error. */
1380 return 0;
1381 else
1382 return -1;
1383 }
1384 else if (ops->beneath != NULL)
1385 return ops->beneath->to_xfer_partial (ops->beneath, object, annex,
1386 readbuf, writebuf, offset, len);
1387 else
1388 return -1;
1389 }
1390
1391 /* The xfer_partial handler for the topmost target. Unlike the default,
1392 it does not need to handle memory specially; it just passes all
1393 requests down the stack. */
1394
1395 static LONGEST
1396 current_xfer_partial (struct target_ops *ops, enum target_object object,
1397 const char *annex, gdb_byte *readbuf,
1398 const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
1399 {
1400 if (ops->beneath != NULL)
1401 return ops->beneath->to_xfer_partial (ops->beneath, object, annex,
1402 readbuf, writebuf, offset, len);
1403 else
1404 return -1;
1405 }
1406
1407 /* Target vector read/write partial wrapper functions.
1408
1409 NOTE: cagney/2003-10-21: I wonder if having "to_xfer_partial
1410 (inbuf, outbuf)", instead of separate read/write methods, make life
1411 easier. */
1412
1413 static LONGEST
1414 target_read_partial (struct target_ops *ops,
1415 enum target_object object,
1416 const char *annex, gdb_byte *buf,
1417 ULONGEST offset, LONGEST len)
1418 {
1419 return target_xfer_partial (ops, object, annex, buf, NULL, offset, len);
1420 }
1421
1422 static LONGEST
1423 target_write_partial (struct target_ops *ops,
1424 enum target_object object,
1425 const char *annex, const gdb_byte *buf,
1426 ULONGEST offset, LONGEST len)
1427 {
1428 return target_xfer_partial (ops, object, annex, NULL, buf, offset, len);
1429 }
1430
1431 /* Wrappers to perform the full transfer. */
1432 LONGEST
1433 target_read (struct target_ops *ops,
1434 enum target_object object,
1435 const char *annex, gdb_byte *buf,
1436 ULONGEST offset, LONGEST len)
1437 {
1438 LONGEST xfered = 0;
1439 while (xfered < len)
1440 {
1441 LONGEST xfer = target_read_partial (ops, object, annex,
1442 (gdb_byte *) buf + xfered,
1443 offset + xfered, len - xfered);
1444 /* Call an observer, notifying them of the xfer progress? */
1445 if (xfer == 0)
1446 return xfered;
1447 if (xfer < 0)
1448 return -1;
1449 xfered += xfer;
1450 QUIT;
1451 }
1452 return len;
1453 }
1454
1455 LONGEST
1456 target_read_until_error (struct target_ops *ops,
1457 enum target_object object,
1458 const char *annex, gdb_byte *buf,
1459 ULONGEST offset, LONGEST len)
1460 {
1461 LONGEST xfered = 0;
1462 while (xfered < len)
1463 {
1464 LONGEST xfer = target_read_partial (ops, object, annex,
1465 (gdb_byte *) buf + xfered,
1466 offset + xfered, len - xfered);
1467 /* Call an observer, notifying them of the xfer progress? */
1468 if (xfer == 0)
1469 return xfered;
1470 if (xfer < 0)
1471 {
1472 /* We've got an error. Try to read in smaller blocks. */
1473 ULONGEST start = offset + xfered;
1474 ULONGEST remaining = len - xfered;
1475 ULONGEST half;
1476
1477 /* If an attempt was made to read a random memory address,
1478 it's likely that the very first byte is not accessible.
1479 Try reading the first byte, to avoid doing log N tries
1480 below. */
1481 xfer = target_read_partial (ops, object, annex,
1482 (gdb_byte *) buf + xfered, start, 1);
1483 if (xfer <= 0)
1484 return xfered;
1485 start += 1;
1486 remaining -= 1;
1487 half = remaining/2;
1488
1489 while (half > 0)
1490 {
1491 xfer = target_read_partial (ops, object, annex,
1492 (gdb_byte *) buf + xfered,
1493 start, half);
1494 if (xfer == 0)
1495 return xfered;
1496 if (xfer < 0)
1497 {
1498 remaining = half;
1499 }
1500 else
1501 {
1502 /* We have successfully read the first half. So, the
1503 error must be in the second half. Adjust start and
1504 remaining to point at the second half. */
1505 xfered += xfer;
1506 start += xfer;
1507 remaining -= xfer;
1508 }
1509 half = remaining/2;
1510 }
1511
1512 return xfered;
1513 }
1514 xfered += xfer;
1515 QUIT;
1516 }
1517 return len;
1518 }
1519
1520
1521 /* An alternative to target_write with progress callbacks. */
1522
1523 LONGEST
1524 target_write_with_progress (struct target_ops *ops,
1525 enum target_object object,
1526 const char *annex, const gdb_byte *buf,
1527 ULONGEST offset, LONGEST len,
1528 void (*progress) (ULONGEST, void *), void *baton)
1529 {
1530 LONGEST xfered = 0;
1531
1532 /* Give the progress callback a chance to set up. */
1533 if (progress)
1534 (*progress) (0, baton);
1535
1536 while (xfered < len)
1537 {
1538 LONGEST xfer = target_write_partial (ops, object, annex,
1539 (gdb_byte *) buf + xfered,
1540 offset + xfered, len - xfered);
1541
1542 if (xfer == 0)
1543 return xfered;
1544 if (xfer < 0)
1545 return -1;
1546
1547 if (progress)
1548 (*progress) (xfer, baton);
1549
1550 xfered += xfer;
1551 QUIT;
1552 }
1553 return len;
1554 }
1555
1556 LONGEST
1557 target_write (struct target_ops *ops,
1558 enum target_object object,
1559 const char *annex, const gdb_byte *buf,
1560 ULONGEST offset, LONGEST len)
1561 {
1562 return target_write_with_progress (ops, object, annex, buf, offset, len,
1563 NULL, NULL);
1564 }
1565
1566 /* Read OBJECT/ANNEX using OPS. Store the result in *BUF_P and return
1567 the size of the transferred data. PADDING additional bytes are
1568 available in *BUF_P. This is a helper function for
1569 target_read_alloc; see the declaration of that function for more
1570 information. */
1571
1572 static LONGEST
1573 target_read_alloc_1 (struct target_ops *ops, enum target_object object,
1574 const char *annex, gdb_byte **buf_p, int padding)
1575 {
1576 size_t buf_alloc, buf_pos;
1577 gdb_byte *buf;
1578 LONGEST n;
1579
1580 /* This function does not have a length parameter; it reads the
1581 entire OBJECT). Also, it doesn't support objects fetched partly
1582 from one target and partly from another (in a different stratum,
1583 e.g. a core file and an executable). Both reasons make it
1584 unsuitable for reading memory. */
1585 gdb_assert (object != TARGET_OBJECT_MEMORY);
1586
1587 /* Start by reading up to 4K at a time. The target will throttle
1588 this number down if necessary. */
1589 buf_alloc = 4096;
1590 buf = xmalloc (buf_alloc);
1591 buf_pos = 0;
1592 while (1)
1593 {
1594 n = target_read_partial (ops, object, annex, &buf[buf_pos],
1595 buf_pos, buf_alloc - buf_pos - padding);
1596 if (n < 0)
1597 {
1598 /* An error occurred. */
1599 xfree (buf);
1600 return -1;
1601 }
1602 else if (n == 0)
1603 {
1604 /* Read all there was. */
1605 if (buf_pos == 0)
1606 xfree (buf);
1607 else
1608 *buf_p = buf;
1609 return buf_pos;
1610 }
1611
1612 buf_pos += n;
1613
1614 /* If the buffer is filling up, expand it. */
1615 if (buf_alloc < buf_pos * 2)
1616 {
1617 buf_alloc *= 2;
1618 buf = xrealloc (buf, buf_alloc);
1619 }
1620
1621 QUIT;
1622 }
1623 }
1624
1625 /* Read OBJECT/ANNEX using OPS. Store the result in *BUF_P and return
1626 the size of the transferred data. See the declaration in "target.h"
1627 function for more information about the return value. */
1628
1629 LONGEST
1630 target_read_alloc (struct target_ops *ops, enum target_object object,
1631 const char *annex, gdb_byte **buf_p)
1632 {
1633 return target_read_alloc_1 (ops, object, annex, buf_p, 0);
1634 }
1635
1636 /* Read OBJECT/ANNEX using OPS. The result is NUL-terminated and
1637 returned as a string, allocated using xmalloc. If an error occurs
1638 or the transfer is unsupported, NULL is returned. Empty objects
1639 are returned as allocated but empty strings. A warning is issued
1640 if the result contains any embedded NUL bytes. */
1641
1642 char *
1643 target_read_stralloc (struct target_ops *ops, enum target_object object,
1644 const char *annex)
1645 {
1646 gdb_byte *buffer;
1647 LONGEST transferred;
1648
1649 transferred = target_read_alloc_1 (ops, object, annex, &buffer, 1);
1650
1651 if (transferred < 0)
1652 return NULL;
1653
1654 if (transferred == 0)
1655 return xstrdup ("");
1656
1657 buffer[transferred] = 0;
1658 if (strlen (buffer) < transferred)
1659 warning (_("target object %d, annex %s, "
1660 "contained unexpected null characters"),
1661 (int) object, annex ? annex : "(none)");
1662
1663 return (char *) buffer;
1664 }
1665
1666 /* Memory transfer methods. */
1667
1668 void
1669 get_target_memory (struct target_ops *ops, CORE_ADDR addr, gdb_byte *buf,
1670 LONGEST len)
1671 {
1672 if (target_read (ops, TARGET_OBJECT_MEMORY, NULL, buf, addr, len)
1673 != len)
1674 memory_error (EIO, addr);
1675 }
1676
1677 ULONGEST
1678 get_target_memory_unsigned (struct target_ops *ops,
1679 CORE_ADDR addr, int len)
1680 {
1681 gdb_byte buf[sizeof (ULONGEST)];
1682
1683 gdb_assert (len <= sizeof (buf));
1684 get_target_memory (ops, addr, buf, len);
1685 return extract_unsigned_integer (buf, len);
1686 }
1687
1688 static void
1689 target_info (char *args, int from_tty)
1690 {
1691 struct target_ops *t;
1692 int has_all_mem = 0;
1693
1694 if (symfile_objfile != NULL)
1695 printf_unfiltered (_("Symbols from \"%s\".\n"), symfile_objfile->name);
1696
1697 for (t = target_stack; t != NULL; t = t->beneath)
1698 {
1699 if (!t->to_has_memory)
1700 continue;
1701
1702 if ((int) (t->to_stratum) <= (int) dummy_stratum)
1703 continue;
1704 if (has_all_mem)
1705 printf_unfiltered (_("\tWhile running this, GDB does not access memory from...\n"));
1706 printf_unfiltered ("%s:\n", t->to_longname);
1707 (t->to_files_info) (t);
1708 has_all_mem = t->to_has_all_memory;
1709 }
1710 }
1711
1712 /* This function is called before any new inferior is created, e.g.
1713 by running a program, attaching, or connecting to a target.
1714 It cleans up any state from previous invocations which might
1715 change between runs. This is a subset of what target_preopen
1716 resets (things which might change between targets). */
1717
1718 void
1719 target_pre_inferior (int from_tty)
1720 {
1721 /* Clear out solib state. Otherwise the solib state of the previous
1722 inferior might have survived and is entirely wrong for the new
1723 target. This has been observed on GNU/Linux using glibc 2.3. How
1724 to reproduce:
1725
1726 bash$ ./foo&
1727 [1] 4711
1728 bash$ ./foo&
1729 [1] 4712
1730 bash$ gdb ./foo
1731 [...]
1732 (gdb) attach 4711
1733 (gdb) detach
1734 (gdb) attach 4712
1735 Cannot access memory at address 0xdeadbeef
1736 */
1737 no_shared_libraries (NULL, from_tty);
1738
1739 invalidate_target_mem_regions ();
1740
1741 target_clear_description ();
1742 }
1743
1744 /* This is to be called by the open routine before it does
1745 anything. */
1746
1747 void
1748 target_preopen (int from_tty)
1749 {
1750 dont_repeat ();
1751
1752 if (target_has_execution)
1753 {
1754 if (!from_tty
1755 || query (_("A program is being debugged already. Kill it? ")))
1756 target_kill ();
1757 else
1758 error (_("Program not killed."));
1759 }
1760
1761 /* Calling target_kill may remove the target from the stack. But if
1762 it doesn't (which seems like a win for UDI), remove it now. */
1763
1764 if (target_has_execution)
1765 pop_target ();
1766
1767 target_pre_inferior (from_tty);
1768 }
1769
1770 /* Detach a target after doing deferred register stores. */
1771
1772 void
1773 target_detach (char *args, int from_tty)
1774 {
1775 /* If we're in breakpoints-always-inserted mode, have to
1776 remove them before detaching. */
1777 remove_breakpoints ();
1778
1779 (current_target.to_detach) (args, from_tty);
1780 }
1781
1782 void
1783 target_disconnect (char *args, int from_tty)
1784 {
1785 struct target_ops *t;
1786
1787 /* If we're in breakpoints-always-inserted mode, have to
1788 remove them before disconnecting. */
1789 remove_breakpoints ();
1790
1791 for (t = current_target.beneath; t != NULL; t = t->beneath)
1792 if (t->to_disconnect != NULL)
1793 {
1794 if (targetdebug)
1795 fprintf_unfiltered (gdb_stdlog, "target_disconnect (%s, %d)\n",
1796 args, from_tty);
1797 t->to_disconnect (t, args, from_tty);
1798 return;
1799 }
1800
1801 tcomplain ();
1802 }
1803
1804 void
1805 target_resume (ptid_t ptid, int step, enum target_signal signal)
1806 {
1807 dcache_invalidate (target_dcache);
1808 (*current_target.to_resume) (ptid, step, signal);
1809 set_executing (ptid, 1);
1810 set_running (ptid, 1);
1811 }
1812 /* Look through the list of possible targets for a target that can
1813 follow forks. */
1814
1815 int
1816 target_follow_fork (int follow_child)
1817 {
1818 struct target_ops *t;
1819
1820 for (t = current_target.beneath; t != NULL; t = t->beneath)
1821 {
1822 if (t->to_follow_fork != NULL)
1823 {
1824 int retval = t->to_follow_fork (t, follow_child);
1825 if (targetdebug)
1826 fprintf_unfiltered (gdb_stdlog, "target_follow_fork (%d) = %d\n",
1827 follow_child, retval);
1828 return retval;
1829 }
1830 }
1831
1832 /* Some target returned a fork event, but did not know how to follow it. */
1833 internal_error (__FILE__, __LINE__,
1834 "could not find a target to follow fork");
1835 }
1836
1837 /* Look for a target which can describe architectural features, starting
1838 from TARGET. If we find one, return its description. */
1839
1840 const struct target_desc *
1841 target_read_description (struct target_ops *target)
1842 {
1843 struct target_ops *t;
1844
1845 for (t = target; t != NULL; t = t->beneath)
1846 if (t->to_read_description != NULL)
1847 {
1848 const struct target_desc *tdesc;
1849
1850 tdesc = t->to_read_description (t);
1851 if (tdesc)
1852 return tdesc;
1853 }
1854
1855 return NULL;
1856 }
1857
1858 /* The default implementation of to_search_memory.
1859 This implements a basic search of memory, reading target memory and
1860 performing the search here (as opposed to performing the search in on the
1861 target side with, for example, gdbserver). */
1862
1863 int
1864 simple_search_memory (struct target_ops *ops,
1865 CORE_ADDR start_addr, ULONGEST search_space_len,
1866 const gdb_byte *pattern, ULONGEST pattern_len,
1867 CORE_ADDR *found_addrp)
1868 {
1869 /* NOTE: also defined in find.c testcase. */
1870 #define SEARCH_CHUNK_SIZE 16000
1871 const unsigned chunk_size = SEARCH_CHUNK_SIZE;
1872 /* Buffer to hold memory contents for searching. */
1873 gdb_byte *search_buf;
1874 unsigned search_buf_size;
1875 struct cleanup *old_cleanups;
1876
1877 search_buf_size = chunk_size + pattern_len - 1;
1878
1879 /* No point in trying to allocate a buffer larger than the search space. */
1880 if (search_space_len < search_buf_size)
1881 search_buf_size = search_space_len;
1882
1883 search_buf = malloc (search_buf_size);
1884 if (search_buf == NULL)
1885 error (_("Unable to allocate memory to perform the search."));
1886 old_cleanups = make_cleanup (free_current_contents, &search_buf);
1887
1888 /* Prime the search buffer. */
1889
1890 if (target_read (ops, TARGET_OBJECT_MEMORY, NULL,
1891 search_buf, start_addr, search_buf_size) != search_buf_size)
1892 {
1893 warning (_("Unable to access target memory at %s, halting search."),
1894 hex_string (start_addr));
1895 do_cleanups (old_cleanups);
1896 return -1;
1897 }
1898
1899 /* Perform the search.
1900
1901 The loop is kept simple by allocating [N + pattern-length - 1] bytes.
1902 When we've scanned N bytes we copy the trailing bytes to the start and
1903 read in another N bytes. */
1904
1905 while (search_space_len >= pattern_len)
1906 {
1907 gdb_byte *found_ptr;
1908 unsigned nr_search_bytes = min (search_space_len, search_buf_size);
1909
1910 found_ptr = memmem (search_buf, nr_search_bytes,
1911 pattern, pattern_len);
1912
1913 if (found_ptr != NULL)
1914 {
1915 CORE_ADDR found_addr = start_addr + (found_ptr - search_buf);
1916 *found_addrp = found_addr;
1917 do_cleanups (old_cleanups);
1918 return 1;
1919 }
1920
1921 /* Not found in this chunk, skip to next chunk. */
1922
1923 /* Don't let search_space_len wrap here, it's unsigned. */
1924 if (search_space_len >= chunk_size)
1925 search_space_len -= chunk_size;
1926 else
1927 search_space_len = 0;
1928
1929 if (search_space_len >= pattern_len)
1930 {
1931 unsigned keep_len = search_buf_size - chunk_size;
1932 CORE_ADDR read_addr = start_addr + keep_len;
1933 int nr_to_read;
1934
1935 /* Copy the trailing part of the previous iteration to the front
1936 of the buffer for the next iteration. */
1937 gdb_assert (keep_len == pattern_len - 1);
1938 memcpy (search_buf, search_buf + chunk_size, keep_len);
1939
1940 nr_to_read = min (search_space_len - keep_len, chunk_size);
1941
1942 if (target_read (ops, TARGET_OBJECT_MEMORY, NULL,
1943 search_buf + keep_len, read_addr,
1944 nr_to_read) != nr_to_read)
1945 {
1946 warning (_("Unable to access target memory at %s, halting search."),
1947 hex_string (read_addr));
1948 do_cleanups (old_cleanups);
1949 return -1;
1950 }
1951
1952 start_addr += chunk_size;
1953 }
1954 }
1955
1956 /* Not found. */
1957
1958 do_cleanups (old_cleanups);
1959 return 0;
1960 }
1961
1962 /* Search SEARCH_SPACE_LEN bytes beginning at START_ADDR for the
1963 sequence of bytes in PATTERN with length PATTERN_LEN.
1964
1965 The result is 1 if found, 0 if not found, and -1 if there was an error
1966 requiring halting of the search (e.g. memory read error).
1967 If the pattern is found the address is recorded in FOUND_ADDRP. */
1968
1969 int
1970 target_search_memory (CORE_ADDR start_addr, ULONGEST search_space_len,
1971 const gdb_byte *pattern, ULONGEST pattern_len,
1972 CORE_ADDR *found_addrp)
1973 {
1974 struct target_ops *t;
1975 int found;
1976
1977 /* We don't use INHERIT to set current_target.to_search_memory,
1978 so we have to scan the target stack and handle targetdebug
1979 ourselves. */
1980
1981 if (targetdebug)
1982 fprintf_unfiltered (gdb_stdlog, "target_search_memory (%s, ...)\n",
1983 hex_string (start_addr));
1984
1985 for (t = current_target.beneath; t != NULL; t = t->beneath)
1986 if (t->to_search_memory != NULL)
1987 break;
1988
1989 if (t != NULL)
1990 {
1991 found = t->to_search_memory (t, start_addr, search_space_len,
1992 pattern, pattern_len, found_addrp);
1993 }
1994 else
1995 {
1996 /* If a special version of to_search_memory isn't available, use the
1997 simple version. */
1998 found = simple_search_memory (&current_target,
1999 start_addr, search_space_len,
2000 pattern, pattern_len, found_addrp);
2001 }
2002
2003 if (targetdebug)
2004 fprintf_unfiltered (gdb_stdlog, " = %d\n", found);
2005
2006 return found;
2007 }
2008
2009 /* Look through the currently pushed targets. If none of them will
2010 be able to restart the currently running process, issue an error
2011 message. */
2012
2013 void
2014 target_require_runnable (void)
2015 {
2016 struct target_ops *t;
2017
2018 for (t = target_stack; t != NULL; t = t->beneath)
2019 {
2020 /* If this target knows how to create a new program, then
2021 assume we will still be able to after killing the current
2022 one. Either killing and mourning will not pop T, or else
2023 find_default_run_target will find it again. */
2024 if (t->to_create_inferior != NULL)
2025 return;
2026
2027 /* Do not worry about thread_stratum targets that can not
2028 create inferiors. Assume they will be pushed again if
2029 necessary, and continue to the process_stratum. */
2030 if (t->to_stratum == thread_stratum)
2031 continue;
2032
2033 error (_("\
2034 The \"%s\" target does not support \"run\". Try \"help target\" or \"continue\"."),
2035 t->to_shortname);
2036 }
2037
2038 /* This function is only called if the target is running. In that
2039 case there should have been a process_stratum target and it
2040 should either know how to create inferiors, or not... */
2041 internal_error (__FILE__, __LINE__, "No targets found");
2042 }
2043
2044 /* Look through the list of possible targets for a target that can
2045 execute a run or attach command without any other data. This is
2046 used to locate the default process stratum.
2047
2048 If DO_MESG is not NULL, the result is always valid (error() is
2049 called for errors); else, return NULL on error. */
2050
2051 static struct target_ops *
2052 find_default_run_target (char *do_mesg)
2053 {
2054 struct target_ops **t;
2055 struct target_ops *runable = NULL;
2056 int count;
2057
2058 count = 0;
2059
2060 for (t = target_structs; t < target_structs + target_struct_size;
2061 ++t)
2062 {
2063 if ((*t)->to_can_run && target_can_run (*t))
2064 {
2065 runable = *t;
2066 ++count;
2067 }
2068 }
2069
2070 if (count != 1)
2071 {
2072 if (do_mesg)
2073 error (_("Don't know how to %s. Try \"help target\"."), do_mesg);
2074 else
2075 return NULL;
2076 }
2077
2078 return runable;
2079 }
2080
2081 void
2082 find_default_attach (char *args, int from_tty)
2083 {
2084 struct target_ops *t;
2085
2086 t = find_default_run_target ("attach");
2087 (t->to_attach) (args, from_tty);
2088 return;
2089 }
2090
2091 void
2092 find_default_create_inferior (char *exec_file, char *allargs, char **env,
2093 int from_tty)
2094 {
2095 struct target_ops *t;
2096
2097 t = find_default_run_target ("run");
2098 (t->to_create_inferior) (exec_file, allargs, env, from_tty);
2099 return;
2100 }
2101
2102 int
2103 find_default_can_async_p (void)
2104 {
2105 struct target_ops *t;
2106
2107 /* This may be called before the target is pushed on the stack;
2108 look for the default process stratum. If there's none, gdb isn't
2109 configured with a native debugger, and target remote isn't
2110 connected yet. */
2111 t = find_default_run_target (NULL);
2112 if (t && t->to_can_async_p)
2113 return (t->to_can_async_p) ();
2114 return 0;
2115 }
2116
2117 int
2118 find_default_is_async_p (void)
2119 {
2120 struct target_ops *t;
2121
2122 /* This may be called before the target is pushed on the stack;
2123 look for the default process stratum. If there's none, gdb isn't
2124 configured with a native debugger, and target remote isn't
2125 connected yet. */
2126 t = find_default_run_target (NULL);
2127 if (t && t->to_is_async_p)
2128 return (t->to_is_async_p) ();
2129 return 0;
2130 }
2131
2132 static int
2133 default_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
2134 {
2135 return (len <= TYPE_LENGTH (builtin_type_void_data_ptr));
2136 }
2137
2138 static int
2139 default_watchpoint_addr_within_range (struct target_ops *target,
2140 CORE_ADDR addr,
2141 CORE_ADDR start, int length)
2142 {
2143 return addr >= start && addr < start + length;
2144 }
2145
2146 static int
2147 return_zero (void)
2148 {
2149 return 0;
2150 }
2151
2152 static int
2153 return_one (void)
2154 {
2155 return 1;
2156 }
2157
2158 static int
2159 return_minus_one (void)
2160 {
2161 return -1;
2162 }
2163
2164 /*
2165 * Resize the to_sections pointer. Also make sure that anyone that
2166 * was holding on to an old value of it gets updated.
2167 * Returns the old size.
2168 */
2169
2170 int
2171 target_resize_to_sections (struct target_ops *target, int num_added)
2172 {
2173 struct target_ops **t;
2174 struct section_table *old_value;
2175 int old_count;
2176
2177 old_value = target->to_sections;
2178
2179 if (target->to_sections)
2180 {
2181 old_count = target->to_sections_end - target->to_sections;
2182 target->to_sections = (struct section_table *)
2183 xrealloc ((char *) target->to_sections,
2184 (sizeof (struct section_table)) * (num_added + old_count));
2185 }
2186 else
2187 {
2188 old_count = 0;
2189 target->to_sections = (struct section_table *)
2190 xmalloc ((sizeof (struct section_table)) * num_added);
2191 }
2192 target->to_sections_end = target->to_sections + (num_added + old_count);
2193
2194 /* Check to see if anyone else was pointing to this structure.
2195 If old_value was null, then no one was. */
2196
2197 if (old_value)
2198 {
2199 for (t = target_structs; t < target_structs + target_struct_size;
2200 ++t)
2201 {
2202 if ((*t)->to_sections == old_value)
2203 {
2204 (*t)->to_sections = target->to_sections;
2205 (*t)->to_sections_end = target->to_sections_end;
2206 }
2207 }
2208 /* There is a flattened view of the target stack in current_target,
2209 so its to_sections pointer might also need updating. */
2210 if (current_target.to_sections == old_value)
2211 {
2212 current_target.to_sections = target->to_sections;
2213 current_target.to_sections_end = target->to_sections_end;
2214 }
2215 }
2216
2217 return old_count;
2218
2219 }
2220
2221 /* Remove all target sections taken from ABFD.
2222
2223 Scan the current target stack for targets whose section tables
2224 refer to sections from BFD, and remove those sections. We use this
2225 when we notice that the inferior has unloaded a shared object, for
2226 example. */
2227 void
2228 remove_target_sections (bfd *abfd)
2229 {
2230 struct target_ops **t;
2231
2232 for (t = target_structs; t < target_structs + target_struct_size; t++)
2233 {
2234 struct section_table *src, *dest;
2235
2236 dest = (*t)->to_sections;
2237 for (src = (*t)->to_sections; src < (*t)->to_sections_end; src++)
2238 if (src->bfd != abfd)
2239 {
2240 /* Keep this section. */
2241 if (dest < src) *dest = *src;
2242 dest++;
2243 }
2244
2245 /* If we've dropped any sections, resize the section table. */
2246 if (dest < src)
2247 target_resize_to_sections (*t, dest - src);
2248 }
2249 }
2250
2251
2252
2253
2254 /* Find a single runnable target in the stack and return it. If for
2255 some reason there is more than one, return NULL. */
2256
2257 struct target_ops *
2258 find_run_target (void)
2259 {
2260 struct target_ops **t;
2261 struct target_ops *runable = NULL;
2262 int count;
2263
2264 count = 0;
2265
2266 for (t = target_structs; t < target_structs + target_struct_size; ++t)
2267 {
2268 if ((*t)->to_can_run && target_can_run (*t))
2269 {
2270 runable = *t;
2271 ++count;
2272 }
2273 }
2274
2275 return (count == 1 ? runable : NULL);
2276 }
2277
2278 /* Find a single core_stratum target in the list of targets and return it.
2279 If for some reason there is more than one, return NULL. */
2280
2281 struct target_ops *
2282 find_core_target (void)
2283 {
2284 struct target_ops **t;
2285 struct target_ops *runable = NULL;
2286 int count;
2287
2288 count = 0;
2289
2290 for (t = target_structs; t < target_structs + target_struct_size;
2291 ++t)
2292 {
2293 if ((*t)->to_stratum == core_stratum)
2294 {
2295 runable = *t;
2296 ++count;
2297 }
2298 }
2299
2300 return (count == 1 ? runable : NULL);
2301 }
2302
2303 /*
2304 * Find the next target down the stack from the specified target.
2305 */
2306
2307 struct target_ops *
2308 find_target_beneath (struct target_ops *t)
2309 {
2310 return t->beneath;
2311 }
2312
2313 \f
2314 /* The inferior process has died. Long live the inferior! */
2315
2316 void
2317 generic_mourn_inferior (void)
2318 {
2319 extern int show_breakpoint_hit_counts;
2320
2321 inferior_ptid = null_ptid;
2322 attach_flag = 0;
2323 breakpoint_init_inferior (inf_exited);
2324 registers_changed ();
2325
2326 reopen_exec_file ();
2327 reinit_frame_cache ();
2328
2329 /* It is confusing to the user for ignore counts to stick around
2330 from previous runs of the inferior. So clear them. */
2331 /* However, it is more confusing for the ignore counts to disappear when
2332 using hit counts. So don't clear them if we're counting hits. */
2333 if (!show_breakpoint_hit_counts)
2334 breakpoint_clear_ignore_counts ();
2335
2336 if (deprecated_detach_hook)
2337 deprecated_detach_hook ();
2338 }
2339 \f
2340 /* Helper function for child_wait and the derivatives of child_wait.
2341 HOSTSTATUS is the waitstatus from wait() or the equivalent; store our
2342 translation of that in OURSTATUS. */
2343 void
2344 store_waitstatus (struct target_waitstatus *ourstatus, int hoststatus)
2345 {
2346 if (WIFEXITED (hoststatus))
2347 {
2348 ourstatus->kind = TARGET_WAITKIND_EXITED;
2349 ourstatus->value.integer = WEXITSTATUS (hoststatus);
2350 }
2351 else if (!WIFSTOPPED (hoststatus))
2352 {
2353 ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
2354 ourstatus->value.sig = target_signal_from_host (WTERMSIG (hoststatus));
2355 }
2356 else
2357 {
2358 ourstatus->kind = TARGET_WAITKIND_STOPPED;
2359 ourstatus->value.sig = target_signal_from_host (WSTOPSIG (hoststatus));
2360 }
2361 }
2362 \f
2363 /* Returns zero to leave the inferior alone, one to interrupt it. */
2364 int (*target_activity_function) (void);
2365 int target_activity_fd;
2366 \f
2367 /* Convert a normal process ID to a string. Returns the string in a
2368 static buffer. */
2369
2370 char *
2371 normal_pid_to_str (ptid_t ptid)
2372 {
2373 static char buf[32];
2374
2375 xsnprintf (buf, sizeof buf, "process %d", ptid_get_pid (ptid));
2376 return buf;
2377 }
2378
2379 /* Error-catcher for target_find_memory_regions */
2380 static int dummy_find_memory_regions (int (*ignore1) (), void *ignore2)
2381 {
2382 error (_("No target."));
2383 return 0;
2384 }
2385
2386 /* Error-catcher for target_make_corefile_notes */
2387 static char * dummy_make_corefile_notes (bfd *ignore1, int *ignore2)
2388 {
2389 error (_("No target."));
2390 return NULL;
2391 }
2392
2393 /* Set up the handful of non-empty slots needed by the dummy target
2394 vector. */
2395
2396 static void
2397 init_dummy_target (void)
2398 {
2399 dummy_target.to_shortname = "None";
2400 dummy_target.to_longname = "None";
2401 dummy_target.to_doc = "";
2402 dummy_target.to_attach = find_default_attach;
2403 dummy_target.to_create_inferior = find_default_create_inferior;
2404 dummy_target.to_can_async_p = find_default_can_async_p;
2405 dummy_target.to_is_async_p = find_default_is_async_p;
2406 dummy_target.to_pid_to_str = normal_pid_to_str;
2407 dummy_target.to_stratum = dummy_stratum;
2408 dummy_target.to_find_memory_regions = dummy_find_memory_regions;
2409 dummy_target.to_make_corefile_notes = dummy_make_corefile_notes;
2410 dummy_target.to_xfer_partial = default_xfer_partial;
2411 dummy_target.to_magic = OPS_MAGIC;
2412 }
2413 \f
2414 static void
2415 debug_to_open (char *args, int from_tty)
2416 {
2417 debug_target.to_open (args, from_tty);
2418
2419 fprintf_unfiltered (gdb_stdlog, "target_open (%s, %d)\n", args, from_tty);
2420 }
2421
2422 static void
2423 debug_to_close (int quitting)
2424 {
2425 target_close (&debug_target, quitting);
2426 fprintf_unfiltered (gdb_stdlog, "target_close (%d)\n", quitting);
2427 }
2428
2429 void
2430 target_close (struct target_ops *targ, int quitting)
2431 {
2432 if (targ->to_xclose != NULL)
2433 targ->to_xclose (targ, quitting);
2434 else if (targ->to_close != NULL)
2435 targ->to_close (quitting);
2436 }
2437
2438 static void
2439 debug_to_attach (char *args, int from_tty)
2440 {
2441 debug_target.to_attach (args, from_tty);
2442
2443 fprintf_unfiltered (gdb_stdlog, "target_attach (%s, %d)\n", args, from_tty);
2444 }
2445
2446
2447 static void
2448 debug_to_post_attach (int pid)
2449 {
2450 debug_target.to_post_attach (pid);
2451
2452 fprintf_unfiltered (gdb_stdlog, "target_post_attach (%d)\n", pid);
2453 }
2454
2455 static void
2456 debug_to_detach (char *args, int from_tty)
2457 {
2458 debug_target.to_detach (args, from_tty);
2459
2460 fprintf_unfiltered (gdb_stdlog, "target_detach (%s, %d)\n", args, from_tty);
2461 }
2462
2463 static void
2464 debug_to_resume (ptid_t ptid, int step, enum target_signal siggnal)
2465 {
2466 debug_target.to_resume (ptid, step, siggnal);
2467
2468 fprintf_unfiltered (gdb_stdlog, "target_resume (%d, %s, %s)\n", PIDGET (ptid),
2469 step ? "step" : "continue",
2470 target_signal_to_name (siggnal));
2471 }
2472
2473 static ptid_t
2474 debug_to_wait (ptid_t ptid, struct target_waitstatus *status)
2475 {
2476 ptid_t retval;
2477
2478 retval = debug_target.to_wait (ptid, status);
2479
2480 fprintf_unfiltered (gdb_stdlog,
2481 "target_wait (%d, status) = %d, ", PIDGET (ptid),
2482 PIDGET (retval));
2483 fprintf_unfiltered (gdb_stdlog, "status->kind = ");
2484 switch (status->kind)
2485 {
2486 case TARGET_WAITKIND_EXITED:
2487 fprintf_unfiltered (gdb_stdlog, "exited, status = %d\n",
2488 status->value.integer);
2489 break;
2490 case TARGET_WAITKIND_STOPPED:
2491 fprintf_unfiltered (gdb_stdlog, "stopped, signal = %s\n",
2492 target_signal_to_name (status->value.sig));
2493 break;
2494 case TARGET_WAITKIND_SIGNALLED:
2495 fprintf_unfiltered (gdb_stdlog, "signalled, signal = %s\n",
2496 target_signal_to_name (status->value.sig));
2497 break;
2498 case TARGET_WAITKIND_LOADED:
2499 fprintf_unfiltered (gdb_stdlog, "loaded\n");
2500 break;
2501 case TARGET_WAITKIND_FORKED:
2502 fprintf_unfiltered (gdb_stdlog, "forked\n");
2503 break;
2504 case TARGET_WAITKIND_VFORKED:
2505 fprintf_unfiltered (gdb_stdlog, "vforked\n");
2506 break;
2507 case TARGET_WAITKIND_EXECD:
2508 fprintf_unfiltered (gdb_stdlog, "execd\n");
2509 break;
2510 case TARGET_WAITKIND_SPURIOUS:
2511 fprintf_unfiltered (gdb_stdlog, "spurious\n");
2512 break;
2513 default:
2514 fprintf_unfiltered (gdb_stdlog, "unknown???\n");
2515 break;
2516 }
2517
2518 return retval;
2519 }
2520
2521 static void
2522 debug_print_register (const char * func,
2523 struct regcache *regcache, int regno)
2524 {
2525 struct gdbarch *gdbarch = get_regcache_arch (regcache);
2526 fprintf_unfiltered (gdb_stdlog, "%s ", func);
2527 if (regno >= 0 && regno < gdbarch_num_regs (gdbarch)
2528 + gdbarch_num_pseudo_regs (gdbarch)
2529 && gdbarch_register_name (gdbarch, regno) != NULL
2530 && gdbarch_register_name (gdbarch, regno)[0] != '\0')
2531 fprintf_unfiltered (gdb_stdlog, "(%s)",
2532 gdbarch_register_name (gdbarch, regno));
2533 else
2534 fprintf_unfiltered (gdb_stdlog, "(%d)", regno);
2535 if (regno >= 0)
2536 {
2537 int i, size = register_size (gdbarch, regno);
2538 unsigned char buf[MAX_REGISTER_SIZE];
2539 regcache_cooked_read (regcache, regno, buf);
2540 fprintf_unfiltered (gdb_stdlog, " = ");
2541 for (i = 0; i < size; i++)
2542 {
2543 fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
2544 }
2545 if (size <= sizeof (LONGEST))
2546 {
2547 ULONGEST val = extract_unsigned_integer (buf, size);
2548 fprintf_unfiltered (gdb_stdlog, " 0x%s %s",
2549 paddr_nz (val), paddr_d (val));
2550 }
2551 }
2552 fprintf_unfiltered (gdb_stdlog, "\n");
2553 }
2554
2555 static void
2556 debug_to_fetch_registers (struct regcache *regcache, int regno)
2557 {
2558 debug_target.to_fetch_registers (regcache, regno);
2559 debug_print_register ("target_fetch_registers", regcache, regno);
2560 }
2561
2562 static void
2563 debug_to_store_registers (struct regcache *regcache, int regno)
2564 {
2565 debug_target.to_store_registers (regcache, regno);
2566 debug_print_register ("target_store_registers", regcache, regno);
2567 fprintf_unfiltered (gdb_stdlog, "\n");
2568 }
2569
2570 static void
2571 debug_to_prepare_to_store (struct regcache *regcache)
2572 {
2573 debug_target.to_prepare_to_store (regcache);
2574
2575 fprintf_unfiltered (gdb_stdlog, "target_prepare_to_store ()\n");
2576 }
2577
2578 static int
2579 deprecated_debug_xfer_memory (CORE_ADDR memaddr, bfd_byte *myaddr, int len,
2580 int write, struct mem_attrib *attrib,
2581 struct target_ops *target)
2582 {
2583 int retval;
2584
2585 retval = debug_target.deprecated_xfer_memory (memaddr, myaddr, len, write,
2586 attrib, target);
2587
2588 fprintf_unfiltered (gdb_stdlog,
2589 "target_xfer_memory (0x%x, xxx, %d, %s, xxx) = %d",
2590 (unsigned int) memaddr, /* possable truncate long long */
2591 len, write ? "write" : "read", retval);
2592
2593 if (retval > 0)
2594 {
2595 int i;
2596
2597 fputs_unfiltered (", bytes =", gdb_stdlog);
2598 for (i = 0; i < retval; i++)
2599 {
2600 if ((((long) &(myaddr[i])) & 0xf) == 0)
2601 {
2602 if (targetdebug < 2 && i > 0)
2603 {
2604 fprintf_unfiltered (gdb_stdlog, " ...");
2605 break;
2606 }
2607 fprintf_unfiltered (gdb_stdlog, "\n");
2608 }
2609
2610 fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
2611 }
2612 }
2613
2614 fputc_unfiltered ('\n', gdb_stdlog);
2615
2616 return retval;
2617 }
2618
2619 static void
2620 debug_to_files_info (struct target_ops *target)
2621 {
2622 debug_target.to_files_info (target);
2623
2624 fprintf_unfiltered (gdb_stdlog, "target_files_info (xxx)\n");
2625 }
2626
2627 static int
2628 debug_to_insert_breakpoint (struct bp_target_info *bp_tgt)
2629 {
2630 int retval;
2631
2632 retval = debug_target.to_insert_breakpoint (bp_tgt);
2633
2634 fprintf_unfiltered (gdb_stdlog,
2635 "target_insert_breakpoint (0x%lx, xxx) = %ld\n",
2636 (unsigned long) bp_tgt->placed_address,
2637 (unsigned long) retval);
2638 return retval;
2639 }
2640
2641 static int
2642 debug_to_remove_breakpoint (struct bp_target_info *bp_tgt)
2643 {
2644 int retval;
2645
2646 retval = debug_target.to_remove_breakpoint (bp_tgt);
2647
2648 fprintf_unfiltered (gdb_stdlog,
2649 "target_remove_breakpoint (0x%lx, xxx) = %ld\n",
2650 (unsigned long) bp_tgt->placed_address,
2651 (unsigned long) retval);
2652 return retval;
2653 }
2654
2655 static int
2656 debug_to_can_use_hw_breakpoint (int type, int cnt, int from_tty)
2657 {
2658 int retval;
2659
2660 retval = debug_target.to_can_use_hw_breakpoint (type, cnt, from_tty);
2661
2662 fprintf_unfiltered (gdb_stdlog,
2663 "target_can_use_hw_breakpoint (%ld, %ld, %ld) = %ld\n",
2664 (unsigned long) type,
2665 (unsigned long) cnt,
2666 (unsigned long) from_tty,
2667 (unsigned long) retval);
2668 return retval;
2669 }
2670
2671 static int
2672 debug_to_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
2673 {
2674 CORE_ADDR retval;
2675
2676 retval = debug_target.to_region_ok_for_hw_watchpoint (addr, len);
2677
2678 fprintf_unfiltered (gdb_stdlog,
2679 "TARGET_REGION_OK_FOR_HW_WATCHPOINT (%ld, %ld) = 0x%lx\n",
2680 (unsigned long) addr,
2681 (unsigned long) len,
2682 (unsigned long) retval);
2683 return retval;
2684 }
2685
2686 static int
2687 debug_to_stopped_by_watchpoint (void)
2688 {
2689 int retval;
2690
2691 retval = debug_target.to_stopped_by_watchpoint ();
2692
2693 fprintf_unfiltered (gdb_stdlog,
2694 "STOPPED_BY_WATCHPOINT () = %ld\n",
2695 (unsigned long) retval);
2696 return retval;
2697 }
2698
2699 static int
2700 debug_to_stopped_data_address (struct target_ops *target, CORE_ADDR *addr)
2701 {
2702 int retval;
2703
2704 retval = debug_target.to_stopped_data_address (target, addr);
2705
2706 fprintf_unfiltered (gdb_stdlog,
2707 "target_stopped_data_address ([0x%lx]) = %ld\n",
2708 (unsigned long)*addr,
2709 (unsigned long)retval);
2710 return retval;
2711 }
2712
2713 static int
2714 debug_to_watchpoint_addr_within_range (struct target_ops *target,
2715 CORE_ADDR addr,
2716 CORE_ADDR start, int length)
2717 {
2718 int retval;
2719
2720 retval = debug_target.to_watchpoint_addr_within_range (target, addr,
2721 start, length);
2722
2723 fprintf_filtered (gdb_stdlog,
2724 "target_watchpoint_addr_within_range (0x%lx, 0x%lx, %d) = %d\n",
2725 (unsigned long) addr, (unsigned long) start, length,
2726 retval);
2727 return retval;
2728 }
2729
2730 static int
2731 debug_to_insert_hw_breakpoint (struct bp_target_info *bp_tgt)
2732 {
2733 int retval;
2734
2735 retval = debug_target.to_insert_hw_breakpoint (bp_tgt);
2736
2737 fprintf_unfiltered (gdb_stdlog,
2738 "target_insert_hw_breakpoint (0x%lx, xxx) = %ld\n",
2739 (unsigned long) bp_tgt->placed_address,
2740 (unsigned long) retval);
2741 return retval;
2742 }
2743
2744 static int
2745 debug_to_remove_hw_breakpoint (struct bp_target_info *bp_tgt)
2746 {
2747 int retval;
2748
2749 retval = debug_target.to_remove_hw_breakpoint (bp_tgt);
2750
2751 fprintf_unfiltered (gdb_stdlog,
2752 "target_remove_hw_breakpoint (0x%lx, xxx) = %ld\n",
2753 (unsigned long) bp_tgt->placed_address,
2754 (unsigned long) retval);
2755 return retval;
2756 }
2757
2758 static int
2759 debug_to_insert_watchpoint (CORE_ADDR addr, int len, int type)
2760 {
2761 int retval;
2762
2763 retval = debug_target.to_insert_watchpoint (addr, len, type);
2764
2765 fprintf_unfiltered (gdb_stdlog,
2766 "target_insert_watchpoint (0x%lx, %d, %d) = %ld\n",
2767 (unsigned long) addr, len, type, (unsigned long) retval);
2768 return retval;
2769 }
2770
2771 static int
2772 debug_to_remove_watchpoint (CORE_ADDR addr, int len, int type)
2773 {
2774 int retval;
2775
2776 retval = debug_target.to_remove_watchpoint (addr, len, type);
2777
2778 fprintf_unfiltered (gdb_stdlog,
2779 "target_remove_watchpoint (0x%lx, %d, %d) = %ld\n",
2780 (unsigned long) addr, len, type, (unsigned long) retval);
2781 return retval;
2782 }
2783
2784 static void
2785 debug_to_terminal_init (void)
2786 {
2787 debug_target.to_terminal_init ();
2788
2789 fprintf_unfiltered (gdb_stdlog, "target_terminal_init ()\n");
2790 }
2791
2792 static void
2793 debug_to_terminal_inferior (void)
2794 {
2795 debug_target.to_terminal_inferior ();
2796
2797 fprintf_unfiltered (gdb_stdlog, "target_terminal_inferior ()\n");
2798 }
2799
2800 static void
2801 debug_to_terminal_ours_for_output (void)
2802 {
2803 debug_target.to_terminal_ours_for_output ();
2804
2805 fprintf_unfiltered (gdb_stdlog, "target_terminal_ours_for_output ()\n");
2806 }
2807
2808 static void
2809 debug_to_terminal_ours (void)
2810 {
2811 debug_target.to_terminal_ours ();
2812
2813 fprintf_unfiltered (gdb_stdlog, "target_terminal_ours ()\n");
2814 }
2815
2816 static void
2817 debug_to_terminal_save_ours (void)
2818 {
2819 debug_target.to_terminal_save_ours ();
2820
2821 fprintf_unfiltered (gdb_stdlog, "target_terminal_save_ours ()\n");
2822 }
2823
2824 static void
2825 debug_to_terminal_info (char *arg, int from_tty)
2826 {
2827 debug_target.to_terminal_info (arg, from_tty);
2828
2829 fprintf_unfiltered (gdb_stdlog, "target_terminal_info (%s, %d)\n", arg,
2830 from_tty);
2831 }
2832
2833 static void
2834 debug_to_kill (void)
2835 {
2836 debug_target.to_kill ();
2837
2838 fprintf_unfiltered (gdb_stdlog, "target_kill ()\n");
2839 }
2840
2841 static void
2842 debug_to_load (char *args, int from_tty)
2843 {
2844 debug_target.to_load (args, from_tty);
2845
2846 fprintf_unfiltered (gdb_stdlog, "target_load (%s, %d)\n", args, from_tty);
2847 }
2848
2849 static int
2850 debug_to_lookup_symbol (char *name, CORE_ADDR *addrp)
2851 {
2852 int retval;
2853
2854 retval = debug_target.to_lookup_symbol (name, addrp);
2855
2856 fprintf_unfiltered (gdb_stdlog, "target_lookup_symbol (%s, xxx)\n", name);
2857
2858 return retval;
2859 }
2860
2861 static void
2862 debug_to_create_inferior (char *exec_file, char *args, char **env,
2863 int from_tty)
2864 {
2865 debug_target.to_create_inferior (exec_file, args, env, from_tty);
2866
2867 fprintf_unfiltered (gdb_stdlog, "target_create_inferior (%s, %s, xxx, %d)\n",
2868 exec_file, args, from_tty);
2869 }
2870
2871 static void
2872 debug_to_post_startup_inferior (ptid_t ptid)
2873 {
2874 debug_target.to_post_startup_inferior (ptid);
2875
2876 fprintf_unfiltered (gdb_stdlog, "target_post_startup_inferior (%d)\n",
2877 PIDGET (ptid));
2878 }
2879
2880 static void
2881 debug_to_acknowledge_created_inferior (int pid)
2882 {
2883 debug_target.to_acknowledge_created_inferior (pid);
2884
2885 fprintf_unfiltered (gdb_stdlog, "target_acknowledge_created_inferior (%d)\n",
2886 pid);
2887 }
2888
2889 static void
2890 debug_to_insert_fork_catchpoint (int pid)
2891 {
2892 debug_target.to_insert_fork_catchpoint (pid);
2893
2894 fprintf_unfiltered (gdb_stdlog, "target_insert_fork_catchpoint (%d)\n",
2895 pid);
2896 }
2897
2898 static int
2899 debug_to_remove_fork_catchpoint (int pid)
2900 {
2901 int retval;
2902
2903 retval = debug_target.to_remove_fork_catchpoint (pid);
2904
2905 fprintf_unfiltered (gdb_stdlog, "target_remove_fork_catchpoint (%d) = %d\n",
2906 pid, retval);
2907
2908 return retval;
2909 }
2910
2911 static void
2912 debug_to_insert_vfork_catchpoint (int pid)
2913 {
2914 debug_target.to_insert_vfork_catchpoint (pid);
2915
2916 fprintf_unfiltered (gdb_stdlog, "target_insert_vfork_catchpoint (%d)\n",
2917 pid);
2918 }
2919
2920 static int
2921 debug_to_remove_vfork_catchpoint (int pid)
2922 {
2923 int retval;
2924
2925 retval = debug_target.to_remove_vfork_catchpoint (pid);
2926
2927 fprintf_unfiltered (gdb_stdlog, "target_remove_vfork_catchpoint (%d) = %d\n",
2928 pid, retval);
2929
2930 return retval;
2931 }
2932
2933 static void
2934 debug_to_insert_exec_catchpoint (int pid)
2935 {
2936 debug_target.to_insert_exec_catchpoint (pid);
2937
2938 fprintf_unfiltered (gdb_stdlog, "target_insert_exec_catchpoint (%d)\n",
2939 pid);
2940 }
2941
2942 static int
2943 debug_to_remove_exec_catchpoint (int pid)
2944 {
2945 int retval;
2946
2947 retval = debug_target.to_remove_exec_catchpoint (pid);
2948
2949 fprintf_unfiltered (gdb_stdlog, "target_remove_exec_catchpoint (%d) = %d\n",
2950 pid, retval);
2951
2952 return retval;
2953 }
2954
2955 static int
2956 debug_to_has_exited (int pid, int wait_status, int *exit_status)
2957 {
2958 int has_exited;
2959
2960 has_exited = debug_target.to_has_exited (pid, wait_status, exit_status);
2961
2962 fprintf_unfiltered (gdb_stdlog, "target_has_exited (%d, %d, %d) = %d\n",
2963 pid, wait_status, *exit_status, has_exited);
2964
2965 return has_exited;
2966 }
2967
2968 static void
2969 debug_to_mourn_inferior (void)
2970 {
2971 debug_target.to_mourn_inferior ();
2972
2973 fprintf_unfiltered (gdb_stdlog, "target_mourn_inferior ()\n");
2974 }
2975
2976 static int
2977 debug_to_can_run (void)
2978 {
2979 int retval;
2980
2981 retval = debug_target.to_can_run ();
2982
2983 fprintf_unfiltered (gdb_stdlog, "target_can_run () = %d\n", retval);
2984
2985 return retval;
2986 }
2987
2988 static void
2989 debug_to_notice_signals (ptid_t ptid)
2990 {
2991 debug_target.to_notice_signals (ptid);
2992
2993 fprintf_unfiltered (gdb_stdlog, "target_notice_signals (%d)\n",
2994 PIDGET (ptid));
2995 }
2996
2997 static int
2998 debug_to_thread_alive (ptid_t ptid)
2999 {
3000 int retval;
3001
3002 retval = debug_target.to_thread_alive (ptid);
3003
3004 fprintf_unfiltered (gdb_stdlog, "target_thread_alive (%d) = %d\n",
3005 PIDGET (ptid), retval);
3006
3007 return retval;
3008 }
3009
3010 static void
3011 debug_to_find_new_threads (void)
3012 {
3013 debug_target.to_find_new_threads ();
3014
3015 fputs_unfiltered ("target_find_new_threads ()\n", gdb_stdlog);
3016 }
3017
3018 static void
3019 debug_to_stop (ptid_t ptid)
3020 {
3021 debug_target.to_stop (ptid);
3022
3023 fprintf_unfiltered (gdb_stdlog, "target_stop (%s)\n",
3024 target_pid_to_str (ptid));
3025 }
3026
3027 static void
3028 debug_to_rcmd (char *command,
3029 struct ui_file *outbuf)
3030 {
3031 debug_target.to_rcmd (command, outbuf);
3032 fprintf_unfiltered (gdb_stdlog, "target_rcmd (%s, ...)\n", command);
3033 }
3034
3035 static char *
3036 debug_to_pid_to_exec_file (int pid)
3037 {
3038 char *exec_file;
3039
3040 exec_file = debug_target.to_pid_to_exec_file (pid);
3041
3042 fprintf_unfiltered (gdb_stdlog, "target_pid_to_exec_file (%d) = %s\n",
3043 pid, exec_file);
3044
3045 return exec_file;
3046 }
3047
3048 static void
3049 setup_target_debug (void)
3050 {
3051 memcpy (&debug_target, &current_target, sizeof debug_target);
3052
3053 current_target.to_open = debug_to_open;
3054 current_target.to_close = debug_to_close;
3055 current_target.to_attach = debug_to_attach;
3056 current_target.to_post_attach = debug_to_post_attach;
3057 current_target.to_detach = debug_to_detach;
3058 current_target.to_resume = debug_to_resume;
3059 current_target.to_wait = debug_to_wait;
3060 current_target.to_fetch_registers = debug_to_fetch_registers;
3061 current_target.to_store_registers = debug_to_store_registers;
3062 current_target.to_prepare_to_store = debug_to_prepare_to_store;
3063 current_target.deprecated_xfer_memory = deprecated_debug_xfer_memory;
3064 current_target.to_files_info = debug_to_files_info;
3065 current_target.to_insert_breakpoint = debug_to_insert_breakpoint;
3066 current_target.to_remove_breakpoint = debug_to_remove_breakpoint;
3067 current_target.to_can_use_hw_breakpoint = debug_to_can_use_hw_breakpoint;
3068 current_target.to_insert_hw_breakpoint = debug_to_insert_hw_breakpoint;
3069 current_target.to_remove_hw_breakpoint = debug_to_remove_hw_breakpoint;
3070 current_target.to_insert_watchpoint = debug_to_insert_watchpoint;
3071 current_target.to_remove_watchpoint = debug_to_remove_watchpoint;
3072 current_target.to_stopped_by_watchpoint = debug_to_stopped_by_watchpoint;
3073 current_target.to_stopped_data_address = debug_to_stopped_data_address;
3074 current_target.to_watchpoint_addr_within_range = debug_to_watchpoint_addr_within_range;
3075 current_target.to_region_ok_for_hw_watchpoint = debug_to_region_ok_for_hw_watchpoint;
3076 current_target.to_terminal_init = debug_to_terminal_init;
3077 current_target.to_terminal_inferior = debug_to_terminal_inferior;
3078 current_target.to_terminal_ours_for_output = debug_to_terminal_ours_for_output;
3079 current_target.to_terminal_ours = debug_to_terminal_ours;
3080 current_target.to_terminal_save_ours = debug_to_terminal_save_ours;
3081 current_target.to_terminal_info = debug_to_terminal_info;
3082 current_target.to_kill = debug_to_kill;
3083 current_target.to_load = debug_to_load;
3084 current_target.to_lookup_symbol = debug_to_lookup_symbol;
3085 current_target.to_create_inferior = debug_to_create_inferior;
3086 current_target.to_post_startup_inferior = debug_to_post_startup_inferior;
3087 current_target.to_acknowledge_created_inferior = debug_to_acknowledge_created_inferior;
3088 current_target.to_insert_fork_catchpoint = debug_to_insert_fork_catchpoint;
3089 current_target.to_remove_fork_catchpoint = debug_to_remove_fork_catchpoint;
3090 current_target.to_insert_vfork_catchpoint = debug_to_insert_vfork_catchpoint;
3091 current_target.to_remove_vfork_catchpoint = debug_to_remove_vfork_catchpoint;
3092 current_target.to_insert_exec_catchpoint = debug_to_insert_exec_catchpoint;
3093 current_target.to_remove_exec_catchpoint = debug_to_remove_exec_catchpoint;
3094 current_target.to_has_exited = debug_to_has_exited;
3095 current_target.to_mourn_inferior = debug_to_mourn_inferior;
3096 current_target.to_can_run = debug_to_can_run;
3097 current_target.to_notice_signals = debug_to_notice_signals;
3098 current_target.to_thread_alive = debug_to_thread_alive;
3099 current_target.to_find_new_threads = debug_to_find_new_threads;
3100 current_target.to_stop = debug_to_stop;
3101 current_target.to_rcmd = debug_to_rcmd;
3102 current_target.to_pid_to_exec_file = debug_to_pid_to_exec_file;
3103 }
3104 \f
3105
3106 static char targ_desc[] =
3107 "Names of targets and files being debugged.\n\
3108 Shows the entire stack of targets currently in use (including the exec-file,\n\
3109 core-file, and process, if any), as well as the symbol file name.";
3110
3111 static void
3112 do_monitor_command (char *cmd,
3113 int from_tty)
3114 {
3115 if ((current_target.to_rcmd
3116 == (void (*) (char *, struct ui_file *)) tcomplain)
3117 || (current_target.to_rcmd == debug_to_rcmd
3118 && (debug_target.to_rcmd
3119 == (void (*) (char *, struct ui_file *)) tcomplain)))
3120 error (_("\"monitor\" command not supported by this target."));
3121 target_rcmd (cmd, gdb_stdtarg);
3122 }
3123
3124 /* Print the name of each layers of our target stack. */
3125
3126 static void
3127 maintenance_print_target_stack (char *cmd, int from_tty)
3128 {
3129 struct target_ops *t;
3130
3131 printf_filtered (_("The current target stack is:\n"));
3132
3133 for (t = target_stack; t != NULL; t = t->beneath)
3134 {
3135 printf_filtered (" - %s (%s)\n", t->to_shortname, t->to_longname);
3136 }
3137 }
3138
3139 void
3140 initialize_targets (void)
3141 {
3142 init_dummy_target ();
3143 push_target (&dummy_target);
3144
3145 add_info ("target", target_info, targ_desc);
3146 add_info ("files", target_info, targ_desc);
3147
3148 add_setshow_zinteger_cmd ("target", class_maintenance, &targetdebug, _("\
3149 Set target debugging."), _("\
3150 Show target debugging."), _("\
3151 When non-zero, target debugging is enabled. Higher numbers are more\n\
3152 verbose. Changes do not take effect until the next \"run\" or \"target\"\n\
3153 command."),
3154 NULL,
3155 show_targetdebug,
3156 &setdebuglist, &showdebuglist);
3157
3158 add_setshow_boolean_cmd ("trust-readonly-sections", class_support,
3159 &trust_readonly, _("\
3160 Set mode for reading from readonly sections."), _("\
3161 Show mode for reading from readonly sections."), _("\
3162 When this mode is on, memory reads from readonly sections (such as .text)\n\
3163 will be read from the object file instead of from the target. This will\n\
3164 result in significant performance improvement for remote targets."),
3165 NULL,
3166 show_trust_readonly,
3167 &setlist, &showlist);
3168
3169 add_com ("monitor", class_obscure, do_monitor_command,
3170 _("Send a command to the remote monitor (remote targets only)."));
3171
3172 add_cmd ("target-stack", class_maintenance, maintenance_print_target_stack,
3173 _("Print the name of each layer of the internal target stack."),
3174 &maintenanceprintlist);
3175
3176 target_dcache = dcache_init ();
3177 }