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