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