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