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