*** empty log message ***
[deliverable/binutils-gdb.git] / gdb / target.c
CommitLineData
c906108c 1/* Select target systems and architectures at runtime for GDB.
7998dfc3 2
6aba47ca 3 Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4c38e0a4 4 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
f6519ebc 5 Free Software Foundation, Inc.
7998dfc3 6
c906108c
SS
7 Contributed by Cygnus Support.
8
c5aa993b 9 This file is part of GDB.
c906108c 10
c5aa993b
JM
11 This program is free software; you can redistribute it and/or modify
12 it under the terms of the GNU General Public License as published by
a9762ec7 13 the Free Software Foundation; either version 3 of the License, or
c5aa993b 14 (at your option) any later version.
c906108c 15
c5aa993b
JM
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
c906108c 20
c5aa993b 21 You should have received a copy of the GNU General Public License
a9762ec7 22 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
23
24#include "defs.h"
25#include <errno.h>
c906108c
SS
26#include "gdb_string.h"
27#include "target.h"
28#include "gdbcmd.h"
29#include "symtab.h"
30#include "inferior.h"
31#include "bfd.h"
32#include "symfile.h"
33#include "objfiles.h"
03f2053f 34#include "gdb_wait.h"
4930751a 35#include "dcache.h"
c906108c 36#include <signal.h>
4e052eda 37#include "regcache.h"
0088c768 38#include "gdb_assert.h"
b6591e8b 39#include "gdbcore.h"
9e35dae4 40#include "exceptions.h"
424163ea 41#include "target-descriptions.h"
e1ac3328 42#include "gdbthread.h"
b9db4ced 43#include "solib.h"
07b82ea5 44#include "exec.h"
edb3359d 45#include "inline-frame.h"
2f4d8875 46#include "tracepoint.h"
c906108c 47
a14ed312 48static void target_info (char *, int);
c906108c 49
a14ed312 50static void default_terminal_info (char *, int);
c906108c 51
5009afc5
AS
52static int default_watchpoint_addr_within_range (struct target_ops *,
53 CORE_ADDR, CORE_ADDR, int);
54
e0d24f8d
WZ
55static int default_region_ok_for_hw_watchpoint (CORE_ADDR, int);
56
a14ed312 57static int nosymbol (char *, CORE_ADDR *);
c906108c 58
c25c4a8b 59static void tcomplain (void) ATTRIBUTE_NORETURN;
c906108c 60
a14ed312 61static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *);
c906108c 62
a14ed312 63static int return_zero (void);
c906108c 64
a14ed312 65static int return_one (void);
c906108c 66
ccaa32c7
GS
67static int return_minus_one (void);
68
a14ed312 69void target_ignore (void);
c906108c 70
a14ed312 71static void target_command (char *, int);
c906108c 72
a14ed312 73static struct target_ops *find_default_run_target (char *);
c906108c 74
4b8a223f 75static LONGEST default_xfer_partial (struct target_ops *ops,
0088c768 76 enum target_object object,
1b0ba102
AC
77 const char *annex, gdb_byte *readbuf,
78 const gdb_byte *writebuf,
8aa91c1e 79 ULONGEST offset, LONGEST len);
0088c768 80
cf7a04e8
DJ
81static LONGEST current_xfer_partial (struct target_ops *ops,
82 enum target_object object,
83 const char *annex, gdb_byte *readbuf,
84 const gdb_byte *writebuf,
85 ULONGEST offset, LONGEST len);
c906108c 86
cf7a04e8
DJ
87static LONGEST target_xfer_partial (struct target_ops *ops,
88 enum target_object object,
89 const char *annex,
90 void *readbuf, const void *writebuf,
91 ULONGEST offset, LONGEST len);
c906108c 92
c2250ad1
UW
93static struct gdbarch *default_thread_architecture (struct target_ops *ops,
94 ptid_t ptid);
95
a14ed312 96static void init_dummy_target (void);
c906108c 97
aa869812
AC
98static struct target_ops debug_target;
99
a14ed312 100static void debug_to_open (char *, int);
c906108c 101
316f2060 102static void debug_to_prepare_to_store (struct regcache *);
c906108c 103
a14ed312 104static void debug_to_files_info (struct target_ops *);
c906108c 105
a6d9a66e
UW
106static int debug_to_insert_breakpoint (struct gdbarch *,
107 struct bp_target_info *);
c906108c 108
a6d9a66e
UW
109static int debug_to_remove_breakpoint (struct gdbarch *,
110 struct bp_target_info *);
c906108c 111
ccaa32c7
GS
112static int debug_to_can_use_hw_breakpoint (int, int, int);
113
a6d9a66e
UW
114static int debug_to_insert_hw_breakpoint (struct gdbarch *,
115 struct bp_target_info *);
ccaa32c7 116
a6d9a66e
UW
117static int debug_to_remove_hw_breakpoint (struct gdbarch *,
118 struct bp_target_info *);
ccaa32c7
GS
119
120static int debug_to_insert_watchpoint (CORE_ADDR, int, int);
121
122static int debug_to_remove_watchpoint (CORE_ADDR, int, int);
123
124static int debug_to_stopped_by_watchpoint (void);
125
4aa7a7f5 126static int debug_to_stopped_data_address (struct target_ops *, CORE_ADDR *);
ccaa32c7 127
5009afc5
AS
128static int debug_to_watchpoint_addr_within_range (struct target_ops *,
129 CORE_ADDR, CORE_ADDR, int);
130
e0d24f8d
WZ
131static int debug_to_region_ok_for_hw_watchpoint (CORE_ADDR, int);
132
a14ed312 133static void debug_to_terminal_init (void);
c906108c 134
a14ed312 135static void debug_to_terminal_inferior (void);
c906108c 136
a14ed312 137static void debug_to_terminal_ours_for_output (void);
c906108c 138
a790ad35
SC
139static void debug_to_terminal_save_ours (void);
140
a14ed312 141static void debug_to_terminal_ours (void);
c906108c 142
a14ed312 143static void debug_to_terminal_info (char *, int);
c906108c 144
a14ed312 145static void debug_to_load (char *, int);
c906108c 146
a14ed312 147static int debug_to_lookup_symbol (char *, CORE_ADDR *);
c906108c 148
a14ed312 149static int debug_to_can_run (void);
c906108c 150
39f77062 151static void debug_to_notice_signals (ptid_t);
c906108c 152
94cc34af 153static void debug_to_stop (ptid_t);
c906108c 154
5ac10fd1
AC
155/* NOTE: cagney/2004-09-29: Many targets reference this variable in
156 wierd and mysterious ways. Putting the variable here lets those
157 wierd and mysterious ways keep building while they are being
158 converted to the inferior inheritance structure. */
1df84f13 159struct target_ops deprecated_child_ops;
5ac10fd1 160
c906108c 161/* Pointer to array of target architecture structures; the size of the
2bc416ba 162 array; the current index into the array; the allocated size of the
c906108c
SS
163 array. */
164struct target_ops **target_structs;
165unsigned target_struct_size;
166unsigned target_struct_index;
167unsigned target_struct_allocsize;
168#define DEFAULT_ALLOCSIZE 10
169
170/* The initial current target, so that there is always a semi-valid
171 current target. */
172
173static struct target_ops dummy_target;
174
175/* Top of target stack. */
176
258b763a 177static struct target_ops *target_stack;
c906108c
SS
178
179/* The target structure we are currently using to talk to a process
180 or file or whatever "inferior" we have. */
181
182struct target_ops current_target;
183
184/* Command list for target. */
185
186static struct cmd_list_element *targetlist = NULL;
187
cf7a04e8
DJ
188/* Nonzero if we should trust readonly sections from the
189 executable when reading memory. */
190
191static int trust_readonly = 0;
192
8defab1a
DJ
193/* Nonzero if we should show true memory content including
194 memory breakpoint inserted by gdb. */
195
196static int show_memory_breakpoints = 0;
197
c906108c
SS
198/* Non-zero if we want to see trace of target level stuff. */
199
200static int targetdebug = 0;
920d2a44
AC
201static void
202show_targetdebug (struct ui_file *file, int from_tty,
203 struct cmd_list_element *c, const char *value)
204{
205 fprintf_filtered (file, _("Target debugging is %s.\n"), value);
206}
c906108c 207
a14ed312 208static void setup_target_debug (void);
c906108c 209
4e5d721f
DE
210/* The option sets this. */
211static int stack_cache_enabled_p_1 = 1;
212/* And set_stack_cache_enabled_p updates this.
213 The reason for the separation is so that we don't flush the cache for
214 on->on transitions. */
215static int stack_cache_enabled_p = 1;
216
217/* This is called *after* the stack-cache has been set.
218 Flush the cache for off->on and on->off transitions.
219 There's no real need to flush the cache for on->off transitions,
220 except cleanliness. */
221
222static void
223set_stack_cache_enabled_p (char *args, int from_tty,
224 struct cmd_list_element *c)
225{
226 if (stack_cache_enabled_p != stack_cache_enabled_p_1)
227 target_dcache_invalidate ();
228
229 stack_cache_enabled_p = stack_cache_enabled_p_1;
230}
231
232static void
233show_stack_cache_enabled_p (struct ui_file *file, int from_tty,
234 struct cmd_list_element *c, const char *value)
235{
236 fprintf_filtered (file, _("Cache use for stack accesses is %s.\n"), value);
237}
238
239/* Cache of memory operations, to speed up remote access. */
240static DCACHE *target_dcache;
241
242/* Invalidate the target dcache. */
243
244void
245target_dcache_invalidate (void)
246{
247 dcache_invalidate (target_dcache);
248}
4930751a 249
c906108c
SS
250/* The user just typed 'target' without the name of a target. */
251
c906108c 252static void
fba45db2 253target_command (char *arg, int from_tty)
c906108c
SS
254{
255 fputs_filtered ("Argument required (target name). Try `help target'\n",
256 gdb_stdout);
257}
258
c35b1492
PA
259/* Default target_has_* methods for process_stratum targets. */
260
261int
262default_child_has_all_memory (struct target_ops *ops)
263{
264 /* If no inferior selected, then we can't read memory here. */
265 if (ptid_equal (inferior_ptid, null_ptid))
266 return 0;
267
268 return 1;
269}
270
271int
272default_child_has_memory (struct target_ops *ops)
273{
274 /* If no inferior selected, then we can't read memory here. */
275 if (ptid_equal (inferior_ptid, null_ptid))
276 return 0;
277
278 return 1;
279}
280
281int
282default_child_has_stack (struct target_ops *ops)
283{
284 /* If no inferior selected, there's no stack. */
285 if (ptid_equal (inferior_ptid, null_ptid))
286 return 0;
287
288 return 1;
289}
290
291int
292default_child_has_registers (struct target_ops *ops)
293{
294 /* Can't read registers from no inferior. */
295 if (ptid_equal (inferior_ptid, null_ptid))
296 return 0;
297
298 return 1;
299}
300
301int
302default_child_has_execution (struct target_ops *ops)
303{
304 /* If there's no thread selected, then we can't make it run through
305 hoops. */
306 if (ptid_equal (inferior_ptid, null_ptid))
307 return 0;
308
309 return 1;
310}
311
312
313int
314target_has_all_memory_1 (void)
315{
316 struct target_ops *t;
317
318 for (t = current_target.beneath; t != NULL; t = t->beneath)
319 if (t->to_has_all_memory (t))
320 return 1;
321
322 return 0;
323}
324
325int
326target_has_memory_1 (void)
327{
328 struct target_ops *t;
329
330 for (t = current_target.beneath; t != NULL; t = t->beneath)
331 if (t->to_has_memory (t))
332 return 1;
333
334 return 0;
335}
336
337int
338target_has_stack_1 (void)
339{
340 struct target_ops *t;
341
342 for (t = current_target.beneath; t != NULL; t = t->beneath)
343 if (t->to_has_stack (t))
344 return 1;
345
346 return 0;
347}
348
349int
350target_has_registers_1 (void)
351{
352 struct target_ops *t;
353
354 for (t = current_target.beneath; t != NULL; t = t->beneath)
355 if (t->to_has_registers (t))
356 return 1;
357
358 return 0;
359}
360
361int
362target_has_execution_1 (void)
363{
364 struct target_ops *t;
365
366 for (t = current_target.beneath; t != NULL; t = t->beneath)
367 if (t->to_has_execution (t))
368 return 1;
369
370 return 0;
371}
372
c906108c
SS
373/* Add a possible target architecture to the list. */
374
375void
fba45db2 376add_target (struct target_ops *t)
c906108c 377{
0088c768 378 /* Provide default values for all "must have" methods. */
0b603eba
AC
379 if (t->to_xfer_partial == NULL)
380 t->to_xfer_partial = default_xfer_partial;
0088c768 381
c35b1492
PA
382 if (t->to_has_all_memory == NULL)
383 t->to_has_all_memory = (int (*) (struct target_ops *)) return_zero;
384
385 if (t->to_has_memory == NULL)
386 t->to_has_memory = (int (*) (struct target_ops *)) return_zero;
387
388 if (t->to_has_stack == NULL)
389 t->to_has_stack = (int (*) (struct target_ops *)) return_zero;
390
391 if (t->to_has_registers == NULL)
392 t->to_has_registers = (int (*) (struct target_ops *)) return_zero;
393
394 if (t->to_has_execution == NULL)
395 t->to_has_execution = (int (*) (struct target_ops *)) return_zero;
396
c906108c
SS
397 if (!target_structs)
398 {
399 target_struct_allocsize = DEFAULT_ALLOCSIZE;
400 target_structs = (struct target_ops **) xmalloc
401 (target_struct_allocsize * sizeof (*target_structs));
402 }
403 if (target_struct_size >= target_struct_allocsize)
404 {
405 target_struct_allocsize *= 2;
406 target_structs = (struct target_ops **)
c5aa993b
JM
407 xrealloc ((char *) target_structs,
408 target_struct_allocsize * sizeof (*target_structs));
c906108c
SS
409 }
410 target_structs[target_struct_size++] = t;
c906108c
SS
411
412 if (targetlist == NULL)
1bedd215
AC
413 add_prefix_cmd ("target", class_run, target_command, _("\
414Connect to a target machine or process.\n\
c906108c
SS
415The first argument is the type or protocol of the target machine.\n\
416Remaining arguments are interpreted by the target protocol. For more\n\
417information on the arguments for a particular protocol, type\n\
1bedd215 418`help target ' followed by the protocol name."),
c906108c
SS
419 &targetlist, "target ", 0, &cmdlist);
420 add_cmd (t->to_shortname, no_class, t->to_open, t->to_doc, &targetlist);
421}
422
423/* Stub functions */
424
425void
fba45db2 426target_ignore (void)
c906108c
SS
427{
428}
429
7d85a9c0
JB
430void
431target_kill (void)
432{
433 struct target_ops *t;
434
435 for (t = current_target.beneath; t != NULL; t = t->beneath)
436 if (t->to_kill != NULL)
437 {
438 if (targetdebug)
439 fprintf_unfiltered (gdb_stdlog, "target_kill ()\n");
440
441 t->to_kill (t);
442 return;
443 }
444
445 noprocess ();
446}
447
11cf8741
JM
448void
449target_load (char *arg, int from_tty)
450{
4e5d721f 451 target_dcache_invalidate ();
11cf8741
JM
452 (*current_target.to_load) (arg, from_tty);
453}
454
947b8855
PA
455void
456target_create_inferior (char *exec_file, char *args,
457 char **env, int from_tty)
136d6dae
VP
458{
459 struct target_ops *t;
5d502164 460
136d6dae
VP
461 for (t = current_target.beneath; t != NULL; t = t->beneath)
462 {
463 if (t->to_create_inferior != NULL)
464 {
465 t->to_create_inferior (t, exec_file, args, env, from_tty);
947b8855
PA
466 if (targetdebug)
467 fprintf_unfiltered (gdb_stdlog,
468 "target_create_inferior (%s, %s, xxx, %d)\n",
469 exec_file, args, from_tty);
136d6dae
VP
470 return;
471 }
472 }
473
474 internal_error (__FILE__, __LINE__,
475 "could not find a target to create inferior");
476}
477
d9d2d8b6
PA
478void
479target_terminal_inferior (void)
480{
481 /* A background resume (``run&'') should leave GDB in control of the
ba7f6c64
VP
482 terminal. Use target_can_async_p, not target_is_async_p, since at
483 this point the target is not async yet. However, if sync_execution
484 is not set, we know it will become async prior to resume. */
485 if (target_can_async_p () && !sync_execution)
d9d2d8b6
PA
486 return;
487
488 /* If GDB is resuming the inferior in the foreground, install
489 inferior's terminal modes. */
490 (*current_target.to_terminal_inferior) ();
491}
136d6dae 492
c906108c 493static int
fba45db2
KB
494nomemory (CORE_ADDR memaddr, char *myaddr, int len, int write,
495 struct target_ops *t)
c906108c 496{
c5aa993b
JM
497 errno = EIO; /* Can't read/write this location */
498 return 0; /* No bytes handled */
c906108c
SS
499}
500
501static void
fba45db2 502tcomplain (void)
c906108c 503{
8a3fe4f8 504 error (_("You can't do that when your target is `%s'"),
c906108c
SS
505 current_target.to_shortname);
506}
507
508void
fba45db2 509noprocess (void)
c906108c 510{
8a3fe4f8 511 error (_("You can't do that without a process to debug."));
c906108c
SS
512}
513
c906108c 514static int
fba45db2 515nosymbol (char *name, CORE_ADDR *addrp)
c906108c 516{
c5aa993b 517 return 1; /* Symbol does not exist in target env */
c906108c
SS
518}
519
c906108c 520static void
fba45db2 521default_terminal_info (char *args, int from_tty)
c906108c 522{
a3f17187 523 printf_unfiltered (_("No saved terminal information.\n"));
c906108c
SS
524}
525
0ef643c8
JB
526/* A default implementation for the to_get_ada_task_ptid target method.
527
528 This function builds the PTID by using both LWP and TID as part of
529 the PTID lwp and tid elements. The pid used is the pid of the
530 inferior_ptid. */
531
2c0b251b 532static ptid_t
0ef643c8
JB
533default_get_ada_task_ptid (long lwp, long tid)
534{
535 return ptid_build (ptid_get_pid (inferior_ptid), lwp, tid);
536}
537
7998dfc3
AC
538/* Go through the target stack from top to bottom, copying over zero
539 entries in current_target, then filling in still empty entries. In
540 effect, we are doing class inheritance through the pushed target
541 vectors.
542
543 NOTE: cagney/2003-10-17: The problem with this inheritance, as it
544 is currently implemented, is that it discards any knowledge of
545 which target an inherited method originally belonged to.
546 Consequently, new new target methods should instead explicitly and
547 locally search the target stack for the target that can handle the
548 request. */
c906108c
SS
549
550static void
7998dfc3 551update_current_target (void)
c906108c 552{
7998dfc3
AC
553 struct target_ops *t;
554
08d8bcd7 555 /* First, reset current's contents. */
7998dfc3
AC
556 memset (&current_target, 0, sizeof (current_target));
557
558#define INHERIT(FIELD, TARGET) \
559 if (!current_target.FIELD) \
560 current_target.FIELD = (TARGET)->FIELD
561
562 for (t = target_stack; t; t = t->beneath)
563 {
564 INHERIT (to_shortname, t);
565 INHERIT (to_longname, t);
566 INHERIT (to_doc, t);
b52323fa
UW
567 /* Do not inherit to_open. */
568 /* Do not inherit to_close. */
136d6dae 569 /* Do not inherit to_attach. */
7998dfc3 570 INHERIT (to_post_attach, t);
dc177b7a 571 INHERIT (to_attach_no_wait, t);
136d6dae 572 /* Do not inherit to_detach. */
597320e7 573 /* Do not inherit to_disconnect. */
28439f5e 574 /* Do not inherit to_resume. */
117de6a9 575 /* Do not inherit to_wait. */
28439f5e
PA
576 /* Do not inherit to_fetch_registers. */
577 /* Do not inherit to_store_registers. */
7998dfc3 578 INHERIT (to_prepare_to_store, t);
c8e73a31 579 INHERIT (deprecated_xfer_memory, t);
7998dfc3
AC
580 INHERIT (to_files_info, t);
581 INHERIT (to_insert_breakpoint, t);
582 INHERIT (to_remove_breakpoint, t);
583 INHERIT (to_can_use_hw_breakpoint, t);
584 INHERIT (to_insert_hw_breakpoint, t);
585 INHERIT (to_remove_hw_breakpoint, t);
586 INHERIT (to_insert_watchpoint, t);
587 INHERIT (to_remove_watchpoint, t);
588 INHERIT (to_stopped_data_address, t);
74174d2e 589 INHERIT (to_have_steppable_watchpoint, t);
7998dfc3 590 INHERIT (to_have_continuable_watchpoint, t);
5009afc5
AS
591 INHERIT (to_stopped_by_watchpoint, t);
592 INHERIT (to_watchpoint_addr_within_range, t);
e0d24f8d 593 INHERIT (to_region_ok_for_hw_watchpoint, t);
7998dfc3
AC
594 INHERIT (to_terminal_init, t);
595 INHERIT (to_terminal_inferior, t);
596 INHERIT (to_terminal_ours_for_output, t);
597 INHERIT (to_terminal_ours, t);
598 INHERIT (to_terminal_save_ours, t);
599 INHERIT (to_terminal_info, t);
7d85a9c0 600 /* Do not inherit to_kill. */
7998dfc3
AC
601 INHERIT (to_load, t);
602 INHERIT (to_lookup_symbol, t);
136d6dae 603 /* Do no inherit to_create_inferior. */
7998dfc3
AC
604 INHERIT (to_post_startup_inferior, t);
605 INHERIT (to_acknowledge_created_inferior, t);
606 INHERIT (to_insert_fork_catchpoint, t);
607 INHERIT (to_remove_fork_catchpoint, t);
608 INHERIT (to_insert_vfork_catchpoint, t);
609 INHERIT (to_remove_vfork_catchpoint, t);
ee057212 610 /* Do not inherit to_follow_fork. */
7998dfc3
AC
611 INHERIT (to_insert_exec_catchpoint, t);
612 INHERIT (to_remove_exec_catchpoint, t);
a96d9b2e 613 INHERIT (to_set_syscall_catchpoint, t);
7998dfc3 614 INHERIT (to_has_exited, t);
82892036 615 /* Do not inherit to_mourn_inferior. */
7998dfc3
AC
616 INHERIT (to_can_run, t);
617 INHERIT (to_notice_signals, t);
28439f5e
PA
618 /* Do not inherit to_thread_alive. */
619 /* Do not inherit to_find_new_threads. */
117de6a9 620 /* Do not inherit to_pid_to_str. */
7998dfc3
AC
621 INHERIT (to_extra_thread_info, t);
622 INHERIT (to_stop, t);
4b8a223f 623 /* Do not inherit to_xfer_partial. */
7998dfc3 624 INHERIT (to_rcmd, t);
7998dfc3 625 INHERIT (to_pid_to_exec_file, t);
49d03eab 626 INHERIT (to_log_command, t);
7998dfc3 627 INHERIT (to_stratum, t);
c35b1492
PA
628 /* Do not inherit to_has_all_memory */
629 /* Do not inherit to_has_memory */
630 /* Do not inherit to_has_stack */
631 /* Do not inherit to_has_registers */
632 /* Do not inherit to_has_execution */
7998dfc3 633 INHERIT (to_has_thread_control, t);
7998dfc3
AC
634 INHERIT (to_can_async_p, t);
635 INHERIT (to_is_async_p, t);
636 INHERIT (to_async, t);
b84876c2 637 INHERIT (to_async_mask, t);
7998dfc3
AC
638 INHERIT (to_find_memory_regions, t);
639 INHERIT (to_make_corefile_notes, t);
6b04bdb7
MS
640 INHERIT (to_get_bookmark, t);
641 INHERIT (to_goto_bookmark, t);
117de6a9 642 /* Do not inherit to_get_thread_local_address. */
b2175913 643 INHERIT (to_can_execute_reverse, t);
c2250ad1 644 INHERIT (to_thread_architecture, t);
424163ea 645 /* Do not inherit to_read_description. */
0ef643c8 646 INHERIT (to_get_ada_task_ptid, t);
08388c79 647 /* Do not inherit to_search_memory. */
8a305172 648 INHERIT (to_supports_multi_process, t);
35b1e5cc
SS
649 INHERIT (to_trace_init, t);
650 INHERIT (to_download_tracepoint, t);
651 INHERIT (to_download_trace_state_variable, t);
652 INHERIT (to_trace_set_readonly_regions, t);
653 INHERIT (to_trace_start, t);
654 INHERIT (to_get_trace_status, t);
655 INHERIT (to_trace_stop, t);
656 INHERIT (to_trace_find, t);
657 INHERIT (to_get_trace_state_variable_value, t);
00bf0b85
SS
658 INHERIT (to_save_trace_data, t);
659 INHERIT (to_upload_tracepoints, t);
660 INHERIT (to_upload_trace_state_variables, t);
661 INHERIT (to_get_raw_trace_data, t);
35b1e5cc 662 INHERIT (to_set_disconnected_tracing, t);
4daf5ac0 663 INHERIT (to_set_circular_trace_buffer, t);
711e434b 664 INHERIT (to_get_tib_address, t);
7998dfc3 665 INHERIT (to_magic, t);
fd79ecee 666 /* Do not inherit to_memory_map. */
a76d924d
DJ
667 /* Do not inherit to_flash_erase. */
668 /* Do not inherit to_flash_done. */
7998dfc3
AC
669 }
670#undef INHERIT
671
672 /* Clean up a target struct so it no longer has any zero pointers in
0088c768
AC
673 it. Some entries are defaulted to a method that print an error,
674 others are hard-wired to a standard recursive default. */
c906108c
SS
675
676#define de_fault(field, value) \
7998dfc3
AC
677 if (!current_target.field) \
678 current_target.field = value
0d06e24b 679
2bc416ba
DJ
680 de_fault (to_open,
681 (void (*) (char *, int))
0d06e24b 682 tcomplain);
2bc416ba
DJ
683 de_fault (to_close,
684 (void (*) (int))
0d06e24b 685 target_ignore);
2bc416ba
DJ
686 de_fault (to_post_attach,
687 (void (*) (int))
0d06e24b 688 target_ignore);
2bc416ba 689 de_fault (to_prepare_to_store,
316f2060 690 (void (*) (struct regcache *))
0d06e24b 691 noprocess);
2bc416ba
DJ
692 de_fault (deprecated_xfer_memory,
693 (int (*) (CORE_ADDR, gdb_byte *, int, int, struct mem_attrib *, struct target_ops *))
0d06e24b 694 nomemory);
2bc416ba
DJ
695 de_fault (to_files_info,
696 (void (*) (struct target_ops *))
0d06e24b 697 target_ignore);
2bc416ba 698 de_fault (to_insert_breakpoint,
0d06e24b 699 memory_insert_breakpoint);
2bc416ba 700 de_fault (to_remove_breakpoint,
0d06e24b 701 memory_remove_breakpoint);
ccaa32c7
GS
702 de_fault (to_can_use_hw_breakpoint,
703 (int (*) (int, int, int))
704 return_zero);
705 de_fault (to_insert_hw_breakpoint,
a6d9a66e 706 (int (*) (struct gdbarch *, struct bp_target_info *))
ccaa32c7
GS
707 return_minus_one);
708 de_fault (to_remove_hw_breakpoint,
a6d9a66e 709 (int (*) (struct gdbarch *, struct bp_target_info *))
ccaa32c7
GS
710 return_minus_one);
711 de_fault (to_insert_watchpoint,
712 (int (*) (CORE_ADDR, int, int))
713 return_minus_one);
714 de_fault (to_remove_watchpoint,
715 (int (*) (CORE_ADDR, int, int))
716 return_minus_one);
717 de_fault (to_stopped_by_watchpoint,
718 (int (*) (void))
719 return_zero);
720 de_fault (to_stopped_data_address,
4aa7a7f5 721 (int (*) (struct target_ops *, CORE_ADDR *))
ccaa32c7 722 return_zero);
5009afc5
AS
723 de_fault (to_watchpoint_addr_within_range,
724 default_watchpoint_addr_within_range);
e0d24f8d
WZ
725 de_fault (to_region_ok_for_hw_watchpoint,
726 default_region_ok_for_hw_watchpoint);
2bc416ba
DJ
727 de_fault (to_terminal_init,
728 (void (*) (void))
0d06e24b 729 target_ignore);
2bc416ba
DJ
730 de_fault (to_terminal_inferior,
731 (void (*) (void))
0d06e24b 732 target_ignore);
2bc416ba
DJ
733 de_fault (to_terminal_ours_for_output,
734 (void (*) (void))
0d06e24b 735 target_ignore);
2bc416ba
DJ
736 de_fault (to_terminal_ours,
737 (void (*) (void))
0d06e24b 738 target_ignore);
2bc416ba
DJ
739 de_fault (to_terminal_save_ours,
740 (void (*) (void))
a790ad35 741 target_ignore);
2bc416ba 742 de_fault (to_terminal_info,
0d06e24b 743 default_terminal_info);
2bc416ba
DJ
744 de_fault (to_load,
745 (void (*) (char *, int))
0d06e24b 746 tcomplain);
2bc416ba
DJ
747 de_fault (to_lookup_symbol,
748 (int (*) (char *, CORE_ADDR *))
0d06e24b 749 nosymbol);
2bc416ba
DJ
750 de_fault (to_post_startup_inferior,
751 (void (*) (ptid_t))
0d06e24b 752 target_ignore);
2bc416ba
DJ
753 de_fault (to_acknowledge_created_inferior,
754 (void (*) (int))
0d06e24b 755 target_ignore);
2bc416ba
DJ
756 de_fault (to_insert_fork_catchpoint,
757 (void (*) (int))
0d06e24b 758 tcomplain);
2bc416ba
DJ
759 de_fault (to_remove_fork_catchpoint,
760 (int (*) (int))
0d06e24b 761 tcomplain);
2bc416ba
DJ
762 de_fault (to_insert_vfork_catchpoint,
763 (void (*) (int))
0d06e24b 764 tcomplain);
2bc416ba
DJ
765 de_fault (to_remove_vfork_catchpoint,
766 (int (*) (int))
0d06e24b 767 tcomplain);
2bc416ba
DJ
768 de_fault (to_insert_exec_catchpoint,
769 (void (*) (int))
0d06e24b 770 tcomplain);
2bc416ba
DJ
771 de_fault (to_remove_exec_catchpoint,
772 (int (*) (int))
0d06e24b 773 tcomplain);
a96d9b2e
SDJ
774 de_fault (to_set_syscall_catchpoint,
775 (int (*) (int, int, int, int, int *))
776 tcomplain);
2bc416ba
DJ
777 de_fault (to_has_exited,
778 (int (*) (int, int, int *))
0d06e24b 779 return_zero);
2bc416ba 780 de_fault (to_can_run,
0d06e24b 781 return_zero);
2bc416ba
DJ
782 de_fault (to_notice_signals,
783 (void (*) (ptid_t))
0d06e24b 784 target_ignore);
2bc416ba
DJ
785 de_fault (to_extra_thread_info,
786 (char *(*) (struct thread_info *))
0d06e24b 787 return_zero);
2bc416ba 788 de_fault (to_stop,
94cc34af 789 (void (*) (ptid_t))
0d06e24b 790 target_ignore);
cf7a04e8 791 current_target.to_xfer_partial = current_xfer_partial;
2bc416ba
DJ
792 de_fault (to_rcmd,
793 (void (*) (char *, struct ui_file *))
0d06e24b 794 tcomplain);
2bc416ba
DJ
795 de_fault (to_pid_to_exec_file,
796 (char *(*) (int))
0d06e24b 797 return_zero);
2bc416ba
DJ
798 de_fault (to_async,
799 (void (*) (void (*) (enum inferior_event_type, void*), void*))
0d06e24b 800 tcomplain);
b84876c2
PA
801 de_fault (to_async_mask,
802 (int (*) (int))
803 return_one);
c2250ad1
UW
804 de_fault (to_thread_architecture,
805 default_thread_architecture);
424163ea 806 current_target.to_read_description = NULL;
0ef643c8
JB
807 de_fault (to_get_ada_task_ptid,
808 (ptid_t (*) (long, long))
809 default_get_ada_task_ptid);
8a305172
PA
810 de_fault (to_supports_multi_process,
811 (int (*) (void))
812 return_zero);
35b1e5cc
SS
813 de_fault (to_trace_init,
814 (void (*) (void))
815 tcomplain);
816 de_fault (to_download_tracepoint,
817 (void (*) (struct breakpoint *))
818 tcomplain);
819 de_fault (to_download_trace_state_variable,
820 (void (*) (struct trace_state_variable *))
821 tcomplain);
822 de_fault (to_trace_set_readonly_regions,
823 (void (*) (void))
824 tcomplain);
825 de_fault (to_trace_start,
826 (void (*) (void))
827 tcomplain);
828 de_fault (to_get_trace_status,
00bf0b85 829 (int (*) (struct trace_status *))
35b1e5cc
SS
830 return_minus_one);
831 de_fault (to_trace_stop,
832 (void (*) (void))
833 tcomplain);
834 de_fault (to_trace_find,
835 (int (*) (enum trace_find_type, int, ULONGEST, ULONGEST, int *))
4136fdd2 836 return_minus_one);
35b1e5cc
SS
837 de_fault (to_get_trace_state_variable_value,
838 (int (*) (int, LONGEST *))
839 return_zero);
00bf0b85 840 de_fault (to_save_trace_data,
011aacb0 841 (int (*) (const char *))
00bf0b85
SS
842 tcomplain);
843 de_fault (to_upload_tracepoints,
844 (int (*) (struct uploaded_tp **))
845 return_zero);
846 de_fault (to_upload_trace_state_variables,
847 (int (*) (struct uploaded_tsv **))
848 return_zero);
849 de_fault (to_get_raw_trace_data,
850 (LONGEST (*) (gdb_byte *, ULONGEST, LONGEST))
851 tcomplain);
35b1e5cc
SS
852 de_fault (to_set_disconnected_tracing,
853 (void (*) (int))
4daf5ac0
SS
854 target_ignore);
855 de_fault (to_set_circular_trace_buffer,
856 (void (*) (int))
857 target_ignore);
711e434b
PM
858 de_fault (to_get_tib_address,
859 (int (*) (ptid_t, CORE_ADDR *))
860 tcomplain);
c906108c 861#undef de_fault
c906108c 862
7998dfc3
AC
863 /* Finally, position the target-stack beneath the squashed
864 "current_target". That way code looking for a non-inherited
865 target method can quickly and simply find it. */
866 current_target.beneath = target_stack;
b4b61fdb
DJ
867
868 if (targetdebug)
869 setup_target_debug ();
c906108c
SS
870}
871
872/* Push a new target type into the stack of the existing target accessors,
873 possibly superseding some of the existing accessors.
874
c906108c
SS
875 Rather than allow an empty stack, we always have the dummy target at
876 the bottom stratum, so we can call the function vectors without
877 checking them. */
878
b26a4dcb 879void
fba45db2 880push_target (struct target_ops *t)
c906108c 881{
258b763a 882 struct target_ops **cur;
c906108c
SS
883
884 /* Check magic number. If wrong, it probably means someone changed
885 the struct definition, but not all the places that initialize one. */
886 if (t->to_magic != OPS_MAGIC)
887 {
c5aa993b
JM
888 fprintf_unfiltered (gdb_stderr,
889 "Magic number of %s target struct wrong\n",
890 t->to_shortname);
e2e0b3e5 891 internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
c906108c
SS
892 }
893
258b763a
AC
894 /* Find the proper stratum to install this target in. */
895 for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
c906108c 896 {
258b763a 897 if ((int) (t->to_stratum) >= (int) (*cur)->to_stratum)
c906108c
SS
898 break;
899 }
900
258b763a 901 /* If there's already targets at this stratum, remove them. */
88c231eb 902 /* FIXME: cagney/2003-10-15: I think this should be popping all
258b763a
AC
903 targets to CUR, and not just those at this stratum level. */
904 while ((*cur) != NULL && t->to_stratum == (*cur)->to_stratum)
905 {
906 /* There's already something at this stratum level. Close it,
907 and un-hook it from the stack. */
908 struct target_ops *tmp = (*cur);
5d502164 909
258b763a
AC
910 (*cur) = (*cur)->beneath;
911 tmp->beneath = NULL;
f1c07ab0 912 target_close (tmp, 0);
258b763a 913 }
c906108c
SS
914
915 /* We have removed all targets in our stratum, now add the new one. */
258b763a
AC
916 t->beneath = (*cur);
917 (*cur) = t;
c906108c
SS
918
919 update_current_target ();
c906108c
SS
920}
921
2bc416ba 922/* Remove a target_ops vector from the stack, wherever it may be.
c906108c
SS
923 Return how many times it was removed (0 or 1). */
924
925int
fba45db2 926unpush_target (struct target_ops *t)
c906108c 927{
258b763a
AC
928 struct target_ops **cur;
929 struct target_ops *tmp;
c906108c 930
c8d104ad
PA
931 if (t->to_stratum == dummy_stratum)
932 internal_error (__FILE__, __LINE__,
933 "Attempt to unpush the dummy target");
934
c906108c
SS
935 /* Look for the specified target. Note that we assume that a target
936 can only occur once in the target stack. */
937
258b763a
AC
938 for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
939 {
940 if ((*cur) == t)
941 break;
942 }
c906108c 943
258b763a 944 if ((*cur) == NULL)
c906108c
SS
945 return 0; /* Didn't find target_ops, quit now */
946
5269965e
AC
947 /* NOTE: cagney/2003-12-06: In '94 the close call was made
948 unconditional by moving it to before the above check that the
949 target was in the target stack (something about "Change the way
950 pushing and popping of targets work to support target overlays
951 and inheritance"). This doesn't make much sense - only open
952 targets should be closed. */
953 target_close (t, 0);
954
c906108c 955 /* Unchain the target */
258b763a
AC
956 tmp = (*cur);
957 (*cur) = (*cur)->beneath;
958 tmp->beneath = NULL;
c906108c
SS
959
960 update_current_target ();
c906108c
SS
961
962 return 1;
963}
964
965void
fba45db2 966pop_target (void)
c906108c 967{
b52323fa 968 target_close (target_stack, 0); /* Let it clean up */
258b763a 969 if (unpush_target (target_stack) == 1)
c906108c
SS
970 return;
971
c5aa993b
JM
972 fprintf_unfiltered (gdb_stderr,
973 "pop_target couldn't find target %s\n",
974 current_target.to_shortname);
5d502164
MS
975 internal_error (__FILE__, __LINE__,
976 _("failed internal consistency check"));
c906108c
SS
977}
978
aa76d38d 979void
87ab71f0 980pop_all_targets_above (enum strata above_stratum, int quitting)
aa76d38d 981{
87ab71f0 982 while ((int) (current_target.to_stratum) > (int) above_stratum)
aa76d38d 983 {
b52323fa 984 target_close (target_stack, quitting);
aa76d38d
PA
985 if (!unpush_target (target_stack))
986 {
987 fprintf_unfiltered (gdb_stderr,
988 "pop_all_targets couldn't find target %s\n",
b52323fa 989 target_stack->to_shortname);
aa76d38d
PA
990 internal_error (__FILE__, __LINE__,
991 _("failed internal consistency check"));
992 break;
993 }
994 }
995}
996
87ab71f0
PA
997void
998pop_all_targets (int quitting)
999{
1000 pop_all_targets_above (dummy_stratum, quitting);
1001}
1002
72f5cf0e 1003/* Using the objfile specified in OBJFILE, find the address for the
9e35dae4
DJ
1004 current thread's thread-local storage with offset OFFSET. */
1005CORE_ADDR
1006target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset)
1007{
1008 volatile CORE_ADDR addr = 0;
117de6a9
PA
1009 struct target_ops *target;
1010
1011 for (target = current_target.beneath;
1012 target != NULL;
1013 target = target->beneath)
1014 {
1015 if (target->to_get_thread_local_address != NULL)
1016 break;
1017 }
9e35dae4 1018
117de6a9 1019 if (target != NULL
1cf3db46 1020 && gdbarch_fetch_tls_load_module_address_p (target_gdbarch))
9e35dae4
DJ
1021 {
1022 ptid_t ptid = inferior_ptid;
1023 volatile struct gdb_exception ex;
1024
1025 TRY_CATCH (ex, RETURN_MASK_ALL)
1026 {
1027 CORE_ADDR lm_addr;
1028
1029 /* Fetch the load module address for this objfile. */
1cf3db46 1030 lm_addr = gdbarch_fetch_tls_load_module_address (target_gdbarch,
9e35dae4
DJ
1031 objfile);
1032 /* If it's 0, throw the appropriate exception. */
1033 if (lm_addr == 0)
1034 throw_error (TLS_LOAD_MODULE_NOT_FOUND_ERROR,
1035 _("TLS load module not found"));
1036
117de6a9 1037 addr = target->to_get_thread_local_address (target, ptid, lm_addr, offset);
9e35dae4
DJ
1038 }
1039 /* If an error occurred, print TLS related messages here. Otherwise,
1040 throw the error to some higher catcher. */
1041 if (ex.reason < 0)
1042 {
1043 int objfile_is_library = (objfile->flags & OBJF_SHARED);
1044
1045 switch (ex.error)
1046 {
1047 case TLS_NO_LIBRARY_SUPPORT_ERROR:
1048 error (_("Cannot find thread-local variables in this thread library."));
1049 break;
1050 case TLS_LOAD_MODULE_NOT_FOUND_ERROR:
1051 if (objfile_is_library)
1052 error (_("Cannot find shared library `%s' in dynamic"
1053 " linker's load module list"), objfile->name);
1054 else
1055 error (_("Cannot find executable file `%s' in dynamic"
1056 " linker's load module list"), objfile->name);
1057 break;
1058 case TLS_NOT_ALLOCATED_YET_ERROR:
1059 if (objfile_is_library)
1060 error (_("The inferior has not yet allocated storage for"
1061 " thread-local variables in\n"
1062 "the shared library `%s'\n"
1063 "for %s"),
1064 objfile->name, target_pid_to_str (ptid));
1065 else
1066 error (_("The inferior has not yet allocated storage for"
1067 " thread-local variables in\n"
1068 "the executable `%s'\n"
1069 "for %s"),
1070 objfile->name, target_pid_to_str (ptid));
1071 break;
1072 case TLS_GENERIC_ERROR:
1073 if (objfile_is_library)
1074 error (_("Cannot find thread-local storage for %s, "
1075 "shared library %s:\n%s"),
1076 target_pid_to_str (ptid),
1077 objfile->name, ex.message);
1078 else
1079 error (_("Cannot find thread-local storage for %s, "
1080 "executable file %s:\n%s"),
1081 target_pid_to_str (ptid),
1082 objfile->name, ex.message);
1083 break;
1084 default:
1085 throw_exception (ex);
1086 break;
1087 }
1088 }
1089 }
1090 /* It wouldn't be wrong here to try a gdbarch method, too; finding
1091 TLS is an ABI-specific thing. But we don't do that yet. */
1092 else
1093 error (_("Cannot find thread-local variables on this target"));
1094
1095 return addr;
1096}
1097
c906108c
SS
1098#undef MIN
1099#define MIN(A, B) (((A) <= (B)) ? (A) : (B))
1100
1101/* target_read_string -- read a null terminated string, up to LEN bytes,
1102 from MEMADDR in target. Set *ERRNOP to the errno code, or 0 if successful.
1103 Set *STRING to a pointer to malloc'd memory containing the data; the caller
1104 is responsible for freeing it. Return the number of bytes successfully
1105 read. */
1106
1107int
fba45db2 1108target_read_string (CORE_ADDR memaddr, char **string, int len, int *errnop)
c906108c
SS
1109{
1110 int tlen, origlen, offset, i;
1b0ba102 1111 gdb_byte buf[4];
c906108c
SS
1112 int errcode = 0;
1113 char *buffer;
1114 int buffer_allocated;
1115 char *bufptr;
1116 unsigned int nbytes_read = 0;
1117
6217bf3e
MS
1118 gdb_assert (string);
1119
c906108c
SS
1120 /* Small for testing. */
1121 buffer_allocated = 4;
1122 buffer = xmalloc (buffer_allocated);
1123 bufptr = buffer;
1124
1125 origlen = len;
1126
1127 while (len > 0)
1128 {
1129 tlen = MIN (len, 4 - (memaddr & 3));
1130 offset = memaddr & 3;
1131
1b0ba102 1132 errcode = target_read_memory (memaddr & ~3, buf, sizeof buf);
c906108c
SS
1133 if (errcode != 0)
1134 {
1135 /* The transfer request might have crossed the boundary to an
1136 unallocated region of memory. Retry the transfer, requesting
1137 a single byte. */
1138 tlen = 1;
1139 offset = 0;
b8eb5af0 1140 errcode = target_read_memory (memaddr, buf, 1);
c906108c
SS
1141 if (errcode != 0)
1142 goto done;
1143 }
1144
1145 if (bufptr - buffer + tlen > buffer_allocated)
1146 {
1147 unsigned int bytes;
5d502164 1148
c906108c
SS
1149 bytes = bufptr - buffer;
1150 buffer_allocated *= 2;
1151 buffer = xrealloc (buffer, buffer_allocated);
1152 bufptr = buffer + bytes;
1153 }
1154
1155 for (i = 0; i < tlen; i++)
1156 {
1157 *bufptr++ = buf[i + offset];
1158 if (buf[i + offset] == '\000')
1159 {
1160 nbytes_read += i + 1;
1161 goto done;
1162 }
1163 }
1164
1165 memaddr += tlen;
1166 len -= tlen;
1167 nbytes_read += tlen;
1168 }
c5aa993b 1169done:
6217bf3e 1170 *string = buffer;
c906108c
SS
1171 if (errnop != NULL)
1172 *errnop = errcode;
c906108c
SS
1173 return nbytes_read;
1174}
1175
07b82ea5
PA
1176struct target_section_table *
1177target_get_section_table (struct target_ops *target)
1178{
1179 struct target_ops *t;
1180
1181 if (targetdebug)
1182 fprintf_unfiltered (gdb_stdlog, "target_get_section_table ()\n");
1183
1184 for (t = target; t != NULL; t = t->beneath)
1185 if (t->to_get_section_table != NULL)
1186 return (*t->to_get_section_table) (t);
1187
1188 return NULL;
1189}
1190
8db32d44 1191/* Find a section containing ADDR. */
07b82ea5 1192
0542c86d 1193struct target_section *
8db32d44
AC
1194target_section_by_addr (struct target_ops *target, CORE_ADDR addr)
1195{
07b82ea5 1196 struct target_section_table *table = target_get_section_table (target);
0542c86d 1197 struct target_section *secp;
07b82ea5
PA
1198
1199 if (table == NULL)
1200 return NULL;
1201
1202 for (secp = table->sections; secp < table->sections_end; secp++)
8db32d44
AC
1203 {
1204 if (addr >= secp->addr && addr < secp->endaddr)
1205 return secp;
1206 }
1207 return NULL;
1208}
1209
7f79c47e
DE
1210/* Perform a partial memory transfer.
1211 For docs see target.h, to_xfer_partial. */
cf7a04e8
DJ
1212
1213static LONGEST
4e5d721f
DE
1214memory_xfer_partial (struct target_ops *ops, enum target_object object,
1215 void *readbuf, const void *writebuf, ULONGEST memaddr,
1216 LONGEST len)
0779438d 1217{
cf7a04e8
DJ
1218 LONGEST res;
1219 int reg_len;
1220 struct mem_region *region;
4e5d721f 1221 struct inferior *inf;
cf7a04e8
DJ
1222
1223 /* Zero length requests are ok and require no work. */
1224 if (len == 0)
1225 return 0;
1226
07b82ea5
PA
1227 /* For accesses to unmapped overlay sections, read directly from
1228 files. Must do this first, as MEMADDR may need adjustment. */
1229 if (readbuf != NULL && overlay_debugging)
1230 {
1231 struct obj_section *section = find_pc_overlay (memaddr);
5d502164 1232
07b82ea5
PA
1233 if (pc_in_unmapped_range (memaddr, section))
1234 {
1235 struct target_section_table *table
1236 = target_get_section_table (ops);
1237 const char *section_name = section->the_bfd_section->name;
5d502164 1238
07b82ea5
PA
1239 memaddr = overlay_mapped_address (memaddr, section);
1240 return section_table_xfer_memory_partial (readbuf, writebuf,
1241 memaddr, len,
1242 table->sections,
1243 table->sections_end,
1244 section_name);
1245 }
1246 }
1247
1248 /* Try the executable files, if "trust-readonly-sections" is set. */
cf7a04e8
DJ
1249 if (readbuf != NULL && trust_readonly)
1250 {
0542c86d 1251 struct target_section *secp;
07b82ea5 1252 struct target_section_table *table;
cf7a04e8
DJ
1253
1254 secp = target_section_by_addr (ops, memaddr);
1255 if (secp != NULL
1256 && (bfd_get_section_flags (secp->bfd, secp->the_bfd_section)
1257 & SEC_READONLY))
07b82ea5
PA
1258 {
1259 table = target_get_section_table (ops);
1260 return section_table_xfer_memory_partial (readbuf, writebuf,
1261 memaddr, len,
1262 table->sections,
1263 table->sections_end,
1264 NULL);
1265 }
98646950
UW
1266 }
1267
cf7a04e8
DJ
1268 /* Try GDB's internal data cache. */
1269 region = lookup_mem_region (memaddr);
4b5752d0
VP
1270 /* region->hi == 0 means there's no upper bound. */
1271 if (memaddr + len < region->hi || region->hi == 0)
cf7a04e8
DJ
1272 reg_len = len;
1273 else
1274 reg_len = region->hi - memaddr;
1275
1276 switch (region->attrib.mode)
1277 {
1278 case MEM_RO:
1279 if (writebuf != NULL)
1280 return -1;
1281 break;
1282
1283 case MEM_WO:
1284 if (readbuf != NULL)
1285 return -1;
1286 break;
a76d924d
DJ
1287
1288 case MEM_FLASH:
1289 /* We only support writing to flash during "load" for now. */
1290 if (writebuf != NULL)
1291 error (_("Writing to flash memory forbidden in this context"));
1292 break;
4b5752d0
VP
1293
1294 case MEM_NONE:
1295 return -1;
cf7a04e8
DJ
1296 }
1297
6c95b8df
PA
1298 if (!ptid_equal (inferior_ptid, null_ptid))
1299 inf = find_inferior_pid (ptid_get_pid (inferior_ptid));
1300 else
1301 inf = NULL;
4e5d721f
DE
1302
1303 if (inf != NULL
2f4d8875
PA
1304 /* The dcache reads whole cache lines; that doesn't play well
1305 with reading from a trace buffer, because reading outside of
1306 the collected memory range fails. */
1307 && get_traceframe_number () == -1
4e5d721f
DE
1308 && (region->attrib.cache
1309 || (stack_cache_enabled_p && object == TARGET_OBJECT_STACK_MEMORY)))
cf7a04e8 1310 {
cf7a04e8 1311 if (readbuf != NULL)
25f122dc 1312 res = dcache_xfer_memory (ops, target_dcache, memaddr, readbuf,
cf7a04e8
DJ
1313 reg_len, 0);
1314 else
1315 /* FIXME drow/2006-08-09: If we're going to preserve const
1316 correctness dcache_xfer_memory should take readbuf and
1317 writebuf. */
25f122dc 1318 res = dcache_xfer_memory (ops, target_dcache, memaddr,
cf7a04e8
DJ
1319 (void *) writebuf,
1320 reg_len, 1);
1321 if (res <= 0)
1322 return -1;
1323 else
8defab1a
DJ
1324 {
1325 if (readbuf && !show_memory_breakpoints)
1326 breakpoint_restore_shadows (readbuf, memaddr, reg_len);
1327 return res;
1328 }
cf7a04e8
DJ
1329 }
1330
1331 /* If none of those methods found the memory we wanted, fall back
1332 to a target partial transfer. Normally a single call to
1333 to_xfer_partial is enough; if it doesn't recognize an object
1334 it will call the to_xfer_partial of the next target down.
1335 But for memory this won't do. Memory is the only target
1336 object which can be read from more than one valid target.
1337 A core file, for instance, could have some of memory but
1338 delegate other bits to the target below it. So, we must
1339 manually try all targets. */
1340
1341 do
1342 {
1343 res = ops->to_xfer_partial (ops, TARGET_OBJECT_MEMORY, NULL,
4b5752d0 1344 readbuf, writebuf, memaddr, reg_len);
cf7a04e8 1345 if (res > 0)
8defab1a 1346 break;
cf7a04e8 1347
5ad3a4ca
DJ
1348 /* We want to continue past core files to executables, but not
1349 past a running target's memory. */
c35b1492 1350 if (ops->to_has_all_memory (ops))
8defab1a 1351 break;
5ad3a4ca 1352
cf7a04e8
DJ
1353 ops = ops->beneath;
1354 }
1355 while (ops != NULL);
1356
8defab1a
DJ
1357 if (readbuf && !show_memory_breakpoints)
1358 breakpoint_restore_shadows (readbuf, memaddr, reg_len);
1359
41dcd03f
DE
1360 /* Make sure the cache gets updated no matter what - if we are writing
1361 to the stack. Even if this write is not tagged as such, we still need
1362 to update the cache. */
1363
1364 if (res > 0
1365 && inf != NULL
1366 && writebuf != NULL
1367 && !region->attrib.cache
1368 && stack_cache_enabled_p
1369 && object != TARGET_OBJECT_STACK_MEMORY)
1370 {
7d4f32d3 1371 dcache_update (target_dcache, memaddr, (void *) writebuf, res);
41dcd03f
DE
1372 }
1373
cf7a04e8
DJ
1374 /* If we still haven't got anything, return the last error. We
1375 give up. */
1376 return res;
0779438d
AC
1377}
1378
8defab1a
DJ
1379static void
1380restore_show_memory_breakpoints (void *arg)
1381{
1382 show_memory_breakpoints = (uintptr_t) arg;
1383}
1384
1385struct cleanup *
1386make_show_memory_breakpoints_cleanup (int show)
1387{
1388 int current = show_memory_breakpoints;
8defab1a 1389
5d502164 1390 show_memory_breakpoints = show;
8defab1a
DJ
1391 return make_cleanup (restore_show_memory_breakpoints,
1392 (void *) (uintptr_t) current);
1393}
1394
7f79c47e
DE
1395/* For docs see target.h, to_xfer_partial. */
1396
27394598
AC
1397static LONGEST
1398target_xfer_partial (struct target_ops *ops,
1399 enum target_object object, const char *annex,
1400 void *readbuf, const void *writebuf,
1401 ULONGEST offset, LONGEST len)
1402{
1403 LONGEST retval;
1404
1405 gdb_assert (ops->to_xfer_partial != NULL);
cf7a04e8
DJ
1406
1407 /* If this is a memory transfer, let the memory-specific code
1408 have a look at it instead. Memory transfers are more
1409 complicated. */
4e5d721f
DE
1410 if (object == TARGET_OBJECT_MEMORY || object == TARGET_OBJECT_STACK_MEMORY)
1411 retval = memory_xfer_partial (ops, object, readbuf,
1412 writebuf, offset, len);
cf7a04e8
DJ
1413 else
1414 {
1415 enum target_object raw_object = object;
1416
1417 /* If this is a raw memory transfer, request the normal
1418 memory object from other layers. */
1419 if (raw_object == TARGET_OBJECT_RAW_MEMORY)
1420 raw_object = TARGET_OBJECT_MEMORY;
1421
1422 retval = ops->to_xfer_partial (ops, raw_object, annex, readbuf,
1423 writebuf, offset, len);
1424 }
1425
27394598
AC
1426 if (targetdebug)
1427 {
1428 const unsigned char *myaddr = NULL;
1429
1430 fprintf_unfiltered (gdb_stdlog,
53b71562 1431 "%s:target_xfer_partial (%d, %s, %s, %s, %s, %s) = %s",
27394598
AC
1432 ops->to_shortname,
1433 (int) object,
1434 (annex ? annex : "(null)"),
53b71562
JB
1435 host_address_to_string (readbuf),
1436 host_address_to_string (writebuf),
0b1553bc
UW
1437 core_addr_to_string_nz (offset),
1438 plongest (len), plongest (retval));
27394598
AC
1439
1440 if (readbuf)
1441 myaddr = readbuf;
1442 if (writebuf)
1443 myaddr = writebuf;
1444 if (retval > 0 && myaddr != NULL)
1445 {
1446 int i;
2bc416ba 1447
27394598
AC
1448 fputs_unfiltered (", bytes =", gdb_stdlog);
1449 for (i = 0; i < retval; i++)
1450 {
53b71562 1451 if ((((intptr_t) &(myaddr[i])) & 0xf) == 0)
27394598
AC
1452 {
1453 if (targetdebug < 2 && i > 0)
1454 {
1455 fprintf_unfiltered (gdb_stdlog, " ...");
1456 break;
1457 }
1458 fprintf_unfiltered (gdb_stdlog, "\n");
1459 }
2bc416ba 1460
27394598
AC
1461 fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
1462 }
1463 }
2bc416ba 1464
27394598
AC
1465 fputc_unfiltered ('\n', gdb_stdlog);
1466 }
1467 return retval;
1468}
1469
c906108c
SS
1470/* Read LEN bytes of target memory at address MEMADDR, placing the results in
1471 GDB's memory at MYADDR. Returns either 0 for success or an errno value
1472 if any error occurs.
1473
1474 If an error occurs, no guarantee is made about the contents of the data at
1475 MYADDR. In particular, the caller should not depend upon partial reads
1476 filling the buffer with good data. There is no way for the caller to know
1477 how much good data might have been transfered anyway. Callers that can
cf7a04e8
DJ
1478 deal with partial reads should call target_read (which will retry until
1479 it makes no progress, and then return how much was transferred). */
c906108c
SS
1480
1481int
fc1a4b47 1482target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
c906108c 1483{
c35b1492
PA
1484 /* Dispatch to the topmost target, not the flattened current_target.
1485 Memory accesses check target->to_has_(all_)memory, and the
1486 flattened target doesn't inherit those. */
1487 if (target_read (current_target.beneath, TARGET_OBJECT_MEMORY, NULL,
cf7a04e8
DJ
1488 myaddr, memaddr, len) == len)
1489 return 0;
0779438d 1490 else
cf7a04e8 1491 return EIO;
c906108c
SS
1492}
1493
4e5d721f
DE
1494/* Like target_read_memory, but specify explicitly that this is a read from
1495 the target's stack. This may trigger different cache behavior. */
1496
1497int
1498target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
1499{
1500 /* Dispatch to the topmost target, not the flattened current_target.
1501 Memory accesses check target->to_has_(all_)memory, and the
1502 flattened target doesn't inherit those. */
1503
1504 if (target_read (current_target.beneath, TARGET_OBJECT_STACK_MEMORY, NULL,
1505 myaddr, memaddr, len) == len)
1506 return 0;
1507 else
1508 return EIO;
1509}
1510
7f79c47e
DE
1511/* Write LEN bytes from MYADDR to target memory at address MEMADDR.
1512 Returns either 0 for success or an errno value if any error occurs.
1513 If an error occurs, no guarantee is made about how much data got written.
1514 Callers that can deal with partial writes should call target_write. */
1515
c906108c 1516int
fc1a4b47 1517target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, int len)
c906108c 1518{
c35b1492
PA
1519 /* Dispatch to the topmost target, not the flattened current_target.
1520 Memory accesses check target->to_has_(all_)memory, and the
1521 flattened target doesn't inherit those. */
1522 if (target_write (current_target.beneath, TARGET_OBJECT_MEMORY, NULL,
cf7a04e8
DJ
1523 myaddr, memaddr, len) == len)
1524 return 0;
0779438d 1525 else
cf7a04e8 1526 return EIO;
c906108c 1527}
c5aa993b 1528
fd79ecee
DJ
1529/* Fetch the target's memory map. */
1530
1531VEC(mem_region_s) *
1532target_memory_map (void)
1533{
1534 VEC(mem_region_s) *result;
1535 struct mem_region *last_one, *this_one;
1536 int ix;
1537 struct target_ops *t;
1538
1539 if (targetdebug)
1540 fprintf_unfiltered (gdb_stdlog, "target_memory_map ()\n");
1541
1542 for (t = current_target.beneath; t != NULL; t = t->beneath)
1543 if (t->to_memory_map != NULL)
1544 break;
1545
1546 if (t == NULL)
1547 return NULL;
1548
1549 result = t->to_memory_map (t);
1550 if (result == NULL)
1551 return NULL;
1552
1553 qsort (VEC_address (mem_region_s, result),
1554 VEC_length (mem_region_s, result),
1555 sizeof (struct mem_region), mem_region_cmp);
1556
1557 /* Check that regions do not overlap. Simultaneously assign
1558 a numbering for the "mem" commands to use to refer to
1559 each region. */
1560 last_one = NULL;
1561 for (ix = 0; VEC_iterate (mem_region_s, result, ix, this_one); ix++)
1562 {
1563 this_one->number = ix;
1564
1565 if (last_one && last_one->hi > this_one->lo)
1566 {
1567 warning (_("Overlapping regions in memory map: ignoring"));
1568 VEC_free (mem_region_s, result);
1569 return NULL;
1570 }
1571 last_one = this_one;
1572 }
1573
1574 return result;
1575}
1576
a76d924d
DJ
1577void
1578target_flash_erase (ULONGEST address, LONGEST length)
1579{
1580 struct target_ops *t;
1581
1582 for (t = current_target.beneath; t != NULL; t = t->beneath)
1583 if (t->to_flash_erase != NULL)
5d502164
MS
1584 {
1585 if (targetdebug)
1586 fprintf_unfiltered (gdb_stdlog, "target_flash_erase (%s, %s)\n",
1587 hex_string (address), phex (length, 0));
1588 t->to_flash_erase (t, address, length);
1589 return;
1590 }
a76d924d
DJ
1591
1592 tcomplain ();
1593}
1594
1595void
1596target_flash_done (void)
1597{
1598 struct target_ops *t;
1599
1600 for (t = current_target.beneath; t != NULL; t = t->beneath)
1601 if (t->to_flash_done != NULL)
5d502164
MS
1602 {
1603 if (targetdebug)
1604 fprintf_unfiltered (gdb_stdlog, "target_flash_done\n");
1605 t->to_flash_done (t);
1606 return;
1607 }
a76d924d
DJ
1608
1609 tcomplain ();
1610}
1611
920d2a44
AC
1612static void
1613show_trust_readonly (struct ui_file *file, int from_tty,
1614 struct cmd_list_element *c, const char *value)
1615{
1616 fprintf_filtered (file, _("\
1617Mode for reading from readonly sections is %s.\n"),
1618 value);
1619}
3a11626d 1620
1e3ff5ad
AC
1621/* More generic transfers. */
1622
0088c768 1623static LONGEST
8aa91c1e 1624default_xfer_partial (struct target_ops *ops, enum target_object object,
2bc416ba 1625 const char *annex, gdb_byte *readbuf,
1b0ba102 1626 const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
0088c768
AC
1627{
1628 if (object == TARGET_OBJECT_MEMORY
c8e73a31
AC
1629 && ops->deprecated_xfer_memory != NULL)
1630 /* If available, fall back to the target's
1631 "deprecated_xfer_memory" method. */
0088c768 1632 {
4b8a223f 1633 int xfered = -1;
5d502164 1634
0088c768 1635 errno = 0;
4b8a223f
AC
1636 if (writebuf != NULL)
1637 {
1638 void *buffer = xmalloc (len);
1639 struct cleanup *cleanup = make_cleanup (xfree, buffer);
5d502164 1640
4b8a223f 1641 memcpy (buffer, writebuf, len);
c8e73a31
AC
1642 xfered = ops->deprecated_xfer_memory (offset, buffer, len,
1643 1/*write*/, NULL, ops);
4b8a223f
AC
1644 do_cleanups (cleanup);
1645 }
1646 if (readbuf != NULL)
244e85c8
MS
1647 xfered = ops->deprecated_xfer_memory (offset, readbuf, len,
1648 0/*read*/, NULL, ops);
0088c768
AC
1649 if (xfered > 0)
1650 return xfered;
1651 else if (xfered == 0 && errno == 0)
c8e73a31
AC
1652 /* "deprecated_xfer_memory" uses 0, cross checked against
1653 ERRNO as one indication of an error. */
0088c768
AC
1654 return 0;
1655 else
1656 return -1;
1657 }
1658 else if (ops->beneath != NULL)
cf7a04e8
DJ
1659 return ops->beneath->to_xfer_partial (ops->beneath, object, annex,
1660 readbuf, writebuf, offset, len);
1661 else
1662 return -1;
1663}
1664
1665/* The xfer_partial handler for the topmost target. Unlike the default,
1666 it does not need to handle memory specially; it just passes all
1667 requests down the stack. */
1668
1669static LONGEST
1670current_xfer_partial (struct target_ops *ops, enum target_object object,
1671 const char *annex, gdb_byte *readbuf,
1672 const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
1673{
1674 if (ops->beneath != NULL)
1675 return ops->beneath->to_xfer_partial (ops->beneath, object, annex,
1676 readbuf, writebuf, offset, len);
0088c768
AC
1677 else
1678 return -1;
1679}
1680
7f79c47e 1681/* Target vector read/write partial wrapper functions. */
0088c768 1682
13547ab6 1683static LONGEST
1e3ff5ad
AC
1684target_read_partial (struct target_ops *ops,
1685 enum target_object object,
1b0ba102 1686 const char *annex, gdb_byte *buf,
1e3ff5ad
AC
1687 ULONGEST offset, LONGEST len)
1688{
27394598 1689 return target_xfer_partial (ops, object, annex, buf, NULL, offset, len);
1e3ff5ad
AC
1690}
1691
13547ab6 1692static LONGEST
1e3ff5ad
AC
1693target_write_partial (struct target_ops *ops,
1694 enum target_object object,
1b0ba102 1695 const char *annex, const gdb_byte *buf,
1e3ff5ad
AC
1696 ULONGEST offset, LONGEST len)
1697{
27394598 1698 return target_xfer_partial (ops, object, annex, NULL, buf, offset, len);
1e3ff5ad
AC
1699}
1700
1701/* Wrappers to perform the full transfer. */
7f79c47e
DE
1702
1703/* For docs on target_read see target.h. */
1704
1e3ff5ad
AC
1705LONGEST
1706target_read (struct target_ops *ops,
1707 enum target_object object,
1b0ba102 1708 const char *annex, gdb_byte *buf,
1e3ff5ad
AC
1709 ULONGEST offset, LONGEST len)
1710{
1711 LONGEST xfered = 0;
5d502164 1712
1e3ff5ad
AC
1713 while (xfered < len)
1714 {
0088c768 1715 LONGEST xfer = target_read_partial (ops, object, annex,
fc1a4b47 1716 (gdb_byte *) buf + xfered,
0088c768 1717 offset + xfered, len - xfered);
5d502164 1718
1e3ff5ad 1719 /* Call an observer, notifying them of the xfer progress? */
13547ab6
DJ
1720 if (xfer == 0)
1721 return xfered;
1722 if (xfer < 0)
0088c768 1723 return -1;
1e3ff5ad
AC
1724 xfered += xfer;
1725 QUIT;
1726 }
1727 return len;
1728}
1729
d5086790
VP
1730LONGEST
1731target_read_until_error (struct target_ops *ops,
1732 enum target_object object,
1733 const char *annex, gdb_byte *buf,
1734 ULONGEST offset, LONGEST len)
1735{
1736 LONGEST xfered = 0;
5d502164 1737
d5086790
VP
1738 while (xfered < len)
1739 {
1740 LONGEST xfer = target_read_partial (ops, object, annex,
1741 (gdb_byte *) buf + xfered,
1742 offset + xfered, len - xfered);
5d502164 1743
d5086790
VP
1744 /* Call an observer, notifying them of the xfer progress? */
1745 if (xfer == 0)
1746 return xfered;
1747 if (xfer < 0)
1748 {
1749 /* We've got an error. Try to read in smaller blocks. */
1750 ULONGEST start = offset + xfered;
1751 ULONGEST remaining = len - xfered;
1752 ULONGEST half;
1753
1754 /* If an attempt was made to read a random memory address,
1755 it's likely that the very first byte is not accessible.
1756 Try reading the first byte, to avoid doing log N tries
1757 below. */
1758 xfer = target_read_partial (ops, object, annex,
1759 (gdb_byte *) buf + xfered, start, 1);
1760 if (xfer <= 0)
1761 return xfered;
1762 start += 1;
1763 remaining -= 1;
1764 half = remaining/2;
1765
1766 while (half > 0)
1767 {
1768 xfer = target_read_partial (ops, object, annex,
1769 (gdb_byte *) buf + xfered,
1770 start, half);
1771 if (xfer == 0)
1772 return xfered;
1773 if (xfer < 0)
1774 {
1775 remaining = half;
1776 }
1777 else
1778 {
1779 /* We have successfully read the first half. So, the
1780 error must be in the second half. Adjust start and
1781 remaining to point at the second half. */
1782 xfered += xfer;
1783 start += xfer;
1784 remaining -= xfer;
1785 }
1786 half = remaining/2;
1787 }
1788
1789 return xfered;
1790 }
1791 xfered += xfer;
1792 QUIT;
1793 }
1794 return len;
1795}
1796
cf7a04e8
DJ
1797/* An alternative to target_write with progress callbacks. */
1798
1e3ff5ad 1799LONGEST
cf7a04e8
DJ
1800target_write_with_progress (struct target_ops *ops,
1801 enum target_object object,
1802 const char *annex, const gdb_byte *buf,
1803 ULONGEST offset, LONGEST len,
1804 void (*progress) (ULONGEST, void *), void *baton)
1e3ff5ad
AC
1805{
1806 LONGEST xfered = 0;
a76d924d
DJ
1807
1808 /* Give the progress callback a chance to set up. */
1809 if (progress)
1810 (*progress) (0, baton);
1811
1e3ff5ad
AC
1812 while (xfered < len)
1813 {
1814 LONGEST xfer = target_write_partial (ops, object, annex,
fc1a4b47 1815 (gdb_byte *) buf + xfered,
1e3ff5ad 1816 offset + xfered, len - xfered);
cf7a04e8 1817
13547ab6
DJ
1818 if (xfer == 0)
1819 return xfered;
1820 if (xfer < 0)
0088c768 1821 return -1;
cf7a04e8
DJ
1822
1823 if (progress)
1824 (*progress) (xfer, baton);
1825
1e3ff5ad
AC
1826 xfered += xfer;
1827 QUIT;
1828 }
1829 return len;
1830}
1831
7f79c47e
DE
1832/* For docs on target_write see target.h. */
1833
cf7a04e8
DJ
1834LONGEST
1835target_write (struct target_ops *ops,
1836 enum target_object object,
1837 const char *annex, const gdb_byte *buf,
1838 ULONGEST offset, LONGEST len)
1839{
1840 return target_write_with_progress (ops, object, annex, buf, offset, len,
1841 NULL, NULL);
1842}
1843
159f81f3
DJ
1844/* Read OBJECT/ANNEX using OPS. Store the result in *BUF_P and return
1845 the size of the transferred data. PADDING additional bytes are
1846 available in *BUF_P. This is a helper function for
1847 target_read_alloc; see the declaration of that function for more
1848 information. */
13547ab6 1849
159f81f3
DJ
1850static LONGEST
1851target_read_alloc_1 (struct target_ops *ops, enum target_object object,
1852 const char *annex, gdb_byte **buf_p, int padding)
13547ab6
DJ
1853{
1854 size_t buf_alloc, buf_pos;
1855 gdb_byte *buf;
1856 LONGEST n;
1857
1858 /* This function does not have a length parameter; it reads the
1859 entire OBJECT). Also, it doesn't support objects fetched partly
1860 from one target and partly from another (in a different stratum,
1861 e.g. a core file and an executable). Both reasons make it
1862 unsuitable for reading memory. */
1863 gdb_assert (object != TARGET_OBJECT_MEMORY);
1864
1865 /* Start by reading up to 4K at a time. The target will throttle
1866 this number down if necessary. */
1867 buf_alloc = 4096;
1868 buf = xmalloc (buf_alloc);
1869 buf_pos = 0;
1870 while (1)
1871 {
1872 n = target_read_partial (ops, object, annex, &buf[buf_pos],
159f81f3 1873 buf_pos, buf_alloc - buf_pos - padding);
13547ab6
DJ
1874 if (n < 0)
1875 {
1876 /* An error occurred. */
1877 xfree (buf);
1878 return -1;
1879 }
1880 else if (n == 0)
1881 {
1882 /* Read all there was. */
1883 if (buf_pos == 0)
1884 xfree (buf);
1885 else
1886 *buf_p = buf;
1887 return buf_pos;
1888 }
1889
1890 buf_pos += n;
1891
1892 /* If the buffer is filling up, expand it. */
1893 if (buf_alloc < buf_pos * 2)
1894 {
1895 buf_alloc *= 2;
1896 buf = xrealloc (buf, buf_alloc);
1897 }
1898
1899 QUIT;
1900 }
1901}
1902
159f81f3
DJ
1903/* Read OBJECT/ANNEX using OPS. Store the result in *BUF_P and return
1904 the size of the transferred data. See the declaration in "target.h"
1905 function for more information about the return value. */
1906
1907LONGEST
1908target_read_alloc (struct target_ops *ops, enum target_object object,
1909 const char *annex, gdb_byte **buf_p)
1910{
1911 return target_read_alloc_1 (ops, object, annex, buf_p, 0);
1912}
1913
1914/* Read OBJECT/ANNEX using OPS. The result is NUL-terminated and
1915 returned as a string, allocated using xmalloc. If an error occurs
1916 or the transfer is unsupported, NULL is returned. Empty objects
1917 are returned as allocated but empty strings. A warning is issued
1918 if the result contains any embedded NUL bytes. */
1919
1920char *
1921target_read_stralloc (struct target_ops *ops, enum target_object object,
1922 const char *annex)
1923{
1924 gdb_byte *buffer;
1925 LONGEST transferred;
1926
1927 transferred = target_read_alloc_1 (ops, object, annex, &buffer, 1);
1928
1929 if (transferred < 0)
1930 return NULL;
1931
1932 if (transferred == 0)
1933 return xstrdup ("");
1934
1935 buffer[transferred] = 0;
1936 if (strlen (buffer) < transferred)
1937 warning (_("target object %d, annex %s, "
1938 "contained unexpected null characters"),
1939 (int) object, annex ? annex : "(none)");
1940
1941 return (char *) buffer;
1942}
1943
b6591e8b
AC
1944/* Memory transfer methods. */
1945
1946void
1b0ba102 1947get_target_memory (struct target_ops *ops, CORE_ADDR addr, gdb_byte *buf,
b6591e8b
AC
1948 LONGEST len)
1949{
07b82ea5
PA
1950 /* This method is used to read from an alternate, non-current
1951 target. This read must bypass the overlay support (as symbols
1952 don't match this target), and GDB's internal cache (wrong cache
1953 for this target). */
1954 if (target_read (ops, TARGET_OBJECT_RAW_MEMORY, NULL, buf, addr, len)
b6591e8b
AC
1955 != len)
1956 memory_error (EIO, addr);
1957}
1958
1959ULONGEST
5d502164
MS
1960get_target_memory_unsigned (struct target_ops *ops, CORE_ADDR addr,
1961 int len, enum bfd_endian byte_order)
b6591e8b 1962{
f6519ebc 1963 gdb_byte buf[sizeof (ULONGEST)];
b6591e8b
AC
1964
1965 gdb_assert (len <= sizeof (buf));
1966 get_target_memory (ops, addr, buf, len);
e17a4113 1967 return extract_unsigned_integer (buf, len, byte_order);
b6591e8b
AC
1968}
1969
c906108c 1970static void
fba45db2 1971target_info (char *args, int from_tty)
c906108c
SS
1972{
1973 struct target_ops *t;
c906108c 1974 int has_all_mem = 0;
c5aa993b 1975
c906108c 1976 if (symfile_objfile != NULL)
a3f17187 1977 printf_unfiltered (_("Symbols from \"%s\".\n"), symfile_objfile->name);
c906108c 1978
258b763a 1979 for (t = target_stack; t != NULL; t = t->beneath)
c906108c 1980 {
c35b1492 1981 if (!(*t->to_has_memory) (t))
c906108c
SS
1982 continue;
1983
c5aa993b 1984 if ((int) (t->to_stratum) <= (int) dummy_stratum)
c906108c
SS
1985 continue;
1986 if (has_all_mem)
a3f17187 1987 printf_unfiltered (_("\tWhile running this, GDB does not access memory from...\n"));
c5aa993b
JM
1988 printf_unfiltered ("%s:\n", t->to_longname);
1989 (t->to_files_info) (t);
c35b1492 1990 has_all_mem = (*t->to_has_all_memory) (t);
c906108c
SS
1991 }
1992}
1993
fd79ecee
DJ
1994/* This function is called before any new inferior is created, e.g.
1995 by running a program, attaching, or connecting to a target.
1996 It cleans up any state from previous invocations which might
1997 change between runs. This is a subset of what target_preopen
1998 resets (things which might change between targets). */
1999
2000void
2001target_pre_inferior (int from_tty)
2002{
b9db4ced
UW
2003 /* Clear out solib state. Otherwise the solib state of the previous
2004 inferior might have survived and is entirely wrong for the new
2005 target. This has been observed on GNU/Linux using glibc 2.3. How
2006 to reproduce:
2007
2008 bash$ ./foo&
2009 [1] 4711
2010 bash$ ./foo&
2011 [1] 4712
2012 bash$ gdb ./foo
2013 [...]
2014 (gdb) attach 4711
2015 (gdb) detach
2016 (gdb) attach 4712
2017 Cannot access memory at address 0xdeadbeef
2018 */
b9db4ced 2019
50c71eaf
PA
2020 /* In some OSs, the shared library list is the same/global/shared
2021 across inferiors. If code is shared between processes, so are
2022 memory regions and features. */
2023 if (!gdbarch_has_global_solist (target_gdbarch))
2024 {
2025 no_shared_libraries (NULL, from_tty);
2026
2027 invalidate_target_mem_regions ();
424163ea 2028
50c71eaf
PA
2029 target_clear_description ();
2030 }
fd79ecee
DJ
2031}
2032
b8fa0bfa
PA
2033/* Callback for iterate_over_inferiors. Gets rid of the given
2034 inferior. */
2035
2036static int
2037dispose_inferior (struct inferior *inf, void *args)
2038{
2039 struct thread_info *thread;
2040
2041 thread = any_thread_of_process (inf->pid);
2042 if (thread)
2043 {
2044 switch_to_thread (thread->ptid);
2045
2046 /* Core inferiors actually should be detached, not killed. */
2047 if (target_has_execution)
2048 target_kill ();
2049 else
2050 target_detach (NULL, 0);
2051 }
2052
2053 return 0;
2054}
2055
c906108c
SS
2056/* This is to be called by the open routine before it does
2057 anything. */
2058
2059void
fba45db2 2060target_preopen (int from_tty)
c906108c 2061{
c5aa993b 2062 dont_repeat ();
c906108c 2063
b8fa0bfa 2064 if (have_inferiors ())
c5aa993b 2065 {
adf40b2e 2066 if (!from_tty
b8fa0bfa
PA
2067 || !have_live_inferiors ()
2068 || query (_("A program is being debugged already. Kill it? ")))
2069 iterate_over_inferiors (dispose_inferior, NULL);
c906108c 2070 else
8a3fe4f8 2071 error (_("Program not killed."));
c906108c
SS
2072 }
2073
2074 /* Calling target_kill may remove the target from the stack. But if
2075 it doesn't (which seems like a win for UDI), remove it now. */
87ab71f0
PA
2076 /* Leave the exec target, though. The user may be switching from a
2077 live process to a core of the same program. */
2078 pop_all_targets_above (file_stratum, 0);
fd79ecee
DJ
2079
2080 target_pre_inferior (from_tty);
c906108c
SS
2081}
2082
2083/* Detach a target after doing deferred register stores. */
2084
2085void
fba45db2 2086target_detach (char *args, int from_tty)
c906108c 2087{
136d6dae
VP
2088 struct target_ops* t;
2089
2567c7d9 2090 if (gdbarch_has_global_breakpoints (target_gdbarch))
50c71eaf
PA
2091 /* Don't remove global breakpoints here. They're removed on
2092 disconnection from the target. */
2093 ;
2094 else
2095 /* If we're in breakpoints-always-inserted mode, have to remove
2096 them before detaching. */
6c95b8df 2097 remove_breakpoints_pid (PIDGET (inferior_ptid));
74960c60 2098
24291992
PA
2099 prepare_for_detach ();
2100
136d6dae
VP
2101 for (t = current_target.beneath; t != NULL; t = t->beneath)
2102 {
2103 if (t->to_detach != NULL)
2104 {
2105 t->to_detach (t, args, from_tty);
947b8855
PA
2106 if (targetdebug)
2107 fprintf_unfiltered (gdb_stdlog, "target_detach (%s, %d)\n",
2108 args, from_tty);
136d6dae
VP
2109 return;
2110 }
2111 }
2112
2113 internal_error (__FILE__, __LINE__, "could not find a target to detach");
c906108c
SS
2114}
2115
6ad8ae5c
DJ
2116void
2117target_disconnect (char *args, int from_tty)
2118{
597320e7
DJ
2119 struct target_ops *t;
2120
50c71eaf
PA
2121 /* If we're in breakpoints-always-inserted mode or if breakpoints
2122 are global across processes, we have to remove them before
2123 disconnecting. */
74960c60
VP
2124 remove_breakpoints ();
2125
597320e7
DJ
2126 for (t = current_target.beneath; t != NULL; t = t->beneath)
2127 if (t->to_disconnect != NULL)
2128 {
2129 if (targetdebug)
2130 fprintf_unfiltered (gdb_stdlog, "target_disconnect (%s, %d)\n",
2131 args, from_tty);
2132 t->to_disconnect (t, args, from_tty);
2133 return;
2134 }
2135
2136 tcomplain ();
6ad8ae5c
DJ
2137}
2138
117de6a9 2139ptid_t
47608cb1 2140target_wait (ptid_t ptid, struct target_waitstatus *status, int options)
117de6a9
PA
2141{
2142 struct target_ops *t;
2143
2144 for (t = current_target.beneath; t != NULL; t = t->beneath)
2145 {
2146 if (t->to_wait != NULL)
2147 {
47608cb1 2148 ptid_t retval = (*t->to_wait) (t, ptid, status, options);
117de6a9
PA
2149
2150 if (targetdebug)
2151 {
2152 char *status_string;
2153
2154 status_string = target_waitstatus_to_string (status);
2155 fprintf_unfiltered (gdb_stdlog,
2156 "target_wait (%d, status) = %d, %s\n",
2157 PIDGET (ptid), PIDGET (retval),
2158 status_string);
2159 xfree (status_string);
2160 }
2161
2162 return retval;
2163 }
2164 }
2165
2166 noprocess ();
2167}
2168
2169char *
2170target_pid_to_str (ptid_t ptid)
2171{
2172 struct target_ops *t;
2173
2174 for (t = current_target.beneath; t != NULL; t = t->beneath)
2175 {
2176 if (t->to_pid_to_str != NULL)
2177 return (*t->to_pid_to_str) (t, ptid);
2178 }
2179
2180 return normal_pid_to_str (ptid);
2181}
2182
e1ac3328
VP
2183void
2184target_resume (ptid_t ptid, int step, enum target_signal signal)
2185{
28439f5e
PA
2186 struct target_ops *t;
2187
4e5d721f 2188 target_dcache_invalidate ();
28439f5e
PA
2189
2190 for (t = current_target.beneath; t != NULL; t = t->beneath)
2191 {
2192 if (t->to_resume != NULL)
2193 {
2194 t->to_resume (t, ptid, step, signal);
2195 if (targetdebug)
2196 fprintf_unfiltered (gdb_stdlog, "target_resume (%d, %s, %s)\n",
2197 PIDGET (ptid),
2198 step ? "step" : "continue",
2199 target_signal_to_name (signal));
2200
e66408ed 2201 registers_changed_ptid (ptid);
28439f5e
PA
2202 set_executing (ptid, 1);
2203 set_running (ptid, 1);
edb3359d 2204 clear_inline_frame_state (ptid);
28439f5e
PA
2205 return;
2206 }
2207 }
2208
2209 noprocess ();
e1ac3328 2210}
ee057212
DJ
2211/* Look through the list of possible targets for a target that can
2212 follow forks. */
2213
2214int
2215target_follow_fork (int follow_child)
2216{
2217 struct target_ops *t;
2218
2219 for (t = current_target.beneath; t != NULL; t = t->beneath)
2220 {
2221 if (t->to_follow_fork != NULL)
2222 {
2223 int retval = t->to_follow_fork (t, follow_child);
5d502164 2224
ee057212
DJ
2225 if (targetdebug)
2226 fprintf_unfiltered (gdb_stdlog, "target_follow_fork (%d) = %d\n",
2227 follow_child, retval);
2228 return retval;
2229 }
2230 }
2231
2232 /* Some target returned a fork event, but did not know how to follow it. */
2233 internal_error (__FILE__, __LINE__,
2234 "could not find a target to follow fork");
2235}
2236
136d6dae
VP
2237void
2238target_mourn_inferior (void)
2239{
2240 struct target_ops *t;
5d502164 2241
136d6dae
VP
2242 for (t = current_target.beneath; t != NULL; t = t->beneath)
2243 {
2244 if (t->to_mourn_inferior != NULL)
2245 {
2246 t->to_mourn_inferior (t);
947b8855
PA
2247 if (targetdebug)
2248 fprintf_unfiltered (gdb_stdlog, "target_mourn_inferior ()\n");
efbd6e75
JB
2249
2250 /* We no longer need to keep handles on any of the object files.
2251 Make sure to release them to avoid unnecessarily locking any
2252 of them while we're not actually debugging. */
2253 bfd_cache_close_all ();
2254
136d6dae
VP
2255 return;
2256 }
2257 }
2258
2259 internal_error (__FILE__, __LINE__,
82892036 2260 "could not find a target to follow mourn inferior");
136d6dae
VP
2261}
2262
424163ea
DJ
2263/* Look for a target which can describe architectural features, starting
2264 from TARGET. If we find one, return its description. */
2265
2266const struct target_desc *
2267target_read_description (struct target_ops *target)
2268{
2269 struct target_ops *t;
2270
2271 for (t = target; t != NULL; t = t->beneath)
2272 if (t->to_read_description != NULL)
2273 {
2274 const struct target_desc *tdesc;
2275
2276 tdesc = t->to_read_description (t);
2277 if (tdesc)
2278 return tdesc;
2279 }
2280
2281 return NULL;
2282}
2283
08388c79
DE
2284/* The default implementation of to_search_memory.
2285 This implements a basic search of memory, reading target memory and
2286 performing the search here (as opposed to performing the search in on the
2287 target side with, for example, gdbserver). */
2288
2289int
2290simple_search_memory (struct target_ops *ops,
2291 CORE_ADDR start_addr, ULONGEST search_space_len,
2292 const gdb_byte *pattern, ULONGEST pattern_len,
2293 CORE_ADDR *found_addrp)
2294{
2295 /* NOTE: also defined in find.c testcase. */
2296#define SEARCH_CHUNK_SIZE 16000
2297 const unsigned chunk_size = SEARCH_CHUNK_SIZE;
2298 /* Buffer to hold memory contents for searching. */
2299 gdb_byte *search_buf;
2300 unsigned search_buf_size;
2301 struct cleanup *old_cleanups;
2302
2303 search_buf_size = chunk_size + pattern_len - 1;
2304
2305 /* No point in trying to allocate a buffer larger than the search space. */
2306 if (search_space_len < search_buf_size)
2307 search_buf_size = search_space_len;
2308
2309 search_buf = malloc (search_buf_size);
2310 if (search_buf == NULL)
5e1471f5 2311 error (_("Unable to allocate memory to perform the search."));
08388c79
DE
2312 old_cleanups = make_cleanup (free_current_contents, &search_buf);
2313
2314 /* Prime the search buffer. */
2315
2316 if (target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2317 search_buf, start_addr, search_buf_size) != search_buf_size)
2318 {
5e1471f5 2319 warning (_("Unable to access target memory at %s, halting search."),
08388c79
DE
2320 hex_string (start_addr));
2321 do_cleanups (old_cleanups);
2322 return -1;
2323 }
2324
2325 /* Perform the search.
2326
2327 The loop is kept simple by allocating [N + pattern-length - 1] bytes.
2328 When we've scanned N bytes we copy the trailing bytes to the start and
2329 read in another N bytes. */
2330
2331 while (search_space_len >= pattern_len)
2332 {
2333 gdb_byte *found_ptr;
2334 unsigned nr_search_bytes = min (search_space_len, search_buf_size);
2335
2336 found_ptr = memmem (search_buf, nr_search_bytes,
2337 pattern, pattern_len);
2338
2339 if (found_ptr != NULL)
2340 {
2341 CORE_ADDR found_addr = start_addr + (found_ptr - search_buf);
5d502164 2342
08388c79
DE
2343 *found_addrp = found_addr;
2344 do_cleanups (old_cleanups);
2345 return 1;
2346 }
2347
2348 /* Not found in this chunk, skip to next chunk. */
2349
2350 /* Don't let search_space_len wrap here, it's unsigned. */
2351 if (search_space_len >= chunk_size)
2352 search_space_len -= chunk_size;
2353 else
2354 search_space_len = 0;
2355
2356 if (search_space_len >= pattern_len)
2357 {
2358 unsigned keep_len = search_buf_size - chunk_size;
8a35fb51 2359 CORE_ADDR read_addr = start_addr + chunk_size + keep_len;
08388c79
DE
2360 int nr_to_read;
2361
2362 /* Copy the trailing part of the previous iteration to the front
2363 of the buffer for the next iteration. */
2364 gdb_assert (keep_len == pattern_len - 1);
2365 memcpy (search_buf, search_buf + chunk_size, keep_len);
2366
2367 nr_to_read = min (search_space_len - keep_len, chunk_size);
2368
2369 if (target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2370 search_buf + keep_len, read_addr,
2371 nr_to_read) != nr_to_read)
2372 {
5e1471f5 2373 warning (_("Unable to access target memory at %s, halting search."),
08388c79
DE
2374 hex_string (read_addr));
2375 do_cleanups (old_cleanups);
2376 return -1;
2377 }
2378
2379 start_addr += chunk_size;
2380 }
2381 }
2382
2383 /* Not found. */
2384
2385 do_cleanups (old_cleanups);
2386 return 0;
2387}
2388
2389/* Search SEARCH_SPACE_LEN bytes beginning at START_ADDR for the
2390 sequence of bytes in PATTERN with length PATTERN_LEN.
2391
2392 The result is 1 if found, 0 if not found, and -1 if there was an error
2393 requiring halting of the search (e.g. memory read error).
2394 If the pattern is found the address is recorded in FOUND_ADDRP. */
2395
2396int
2397target_search_memory (CORE_ADDR start_addr, ULONGEST search_space_len,
2398 const gdb_byte *pattern, ULONGEST pattern_len,
2399 CORE_ADDR *found_addrp)
2400{
2401 struct target_ops *t;
2402 int found;
2403
2404 /* We don't use INHERIT to set current_target.to_search_memory,
2405 so we have to scan the target stack and handle targetdebug
2406 ourselves. */
2407
2408 if (targetdebug)
2409 fprintf_unfiltered (gdb_stdlog, "target_search_memory (%s, ...)\n",
2410 hex_string (start_addr));
2411
2412 for (t = current_target.beneath; t != NULL; t = t->beneath)
2413 if (t->to_search_memory != NULL)
2414 break;
2415
2416 if (t != NULL)
2417 {
2418 found = t->to_search_memory (t, start_addr, search_space_len,
2419 pattern, pattern_len, found_addrp);
2420 }
2421 else
2422 {
2423 /* If a special version of to_search_memory isn't available, use the
2424 simple version. */
c35b1492 2425 found = simple_search_memory (current_target.beneath,
08388c79
DE
2426 start_addr, search_space_len,
2427 pattern, pattern_len, found_addrp);
2428 }
2429
2430 if (targetdebug)
2431 fprintf_unfiltered (gdb_stdlog, " = %d\n", found);
2432
2433 return found;
2434}
2435
8edfe269
DJ
2436/* Look through the currently pushed targets. If none of them will
2437 be able to restart the currently running process, issue an error
2438 message. */
2439
2440void
2441target_require_runnable (void)
2442{
2443 struct target_ops *t;
2444
2445 for (t = target_stack; t != NULL; t = t->beneath)
2446 {
2447 /* If this target knows how to create a new program, then
2448 assume we will still be able to after killing the current
2449 one. Either killing and mourning will not pop T, or else
2450 find_default_run_target will find it again. */
2451 if (t->to_create_inferior != NULL)
2452 return;
2453
2454 /* Do not worry about thread_stratum targets that can not
2455 create inferiors. Assume they will be pushed again if
2456 necessary, and continue to the process_stratum. */
85e747d2
UW
2457 if (t->to_stratum == thread_stratum
2458 || t->to_stratum == arch_stratum)
8edfe269
DJ
2459 continue;
2460
2461 error (_("\
2462The \"%s\" target does not support \"run\". Try \"help target\" or \"continue\"."),
2463 t->to_shortname);
2464 }
2465
2466 /* This function is only called if the target is running. In that
2467 case there should have been a process_stratum target and it
2468 should either know how to create inferiors, or not... */
2469 internal_error (__FILE__, __LINE__, "No targets found");
2470}
2471
c906108c
SS
2472/* Look through the list of possible targets for a target that can
2473 execute a run or attach command without any other data. This is
2474 used to locate the default process stratum.
2475
5f667f2d
PA
2476 If DO_MESG is not NULL, the result is always valid (error() is
2477 called for errors); else, return NULL on error. */
c906108c
SS
2478
2479static struct target_ops *
fba45db2 2480find_default_run_target (char *do_mesg)
c906108c
SS
2481{
2482 struct target_ops **t;
2483 struct target_ops *runable = NULL;
2484 int count;
2485
2486 count = 0;
2487
2488 for (t = target_structs; t < target_structs + target_struct_size;
2489 ++t)
2490 {
c5aa993b 2491 if ((*t)->to_can_run && target_can_run (*t))
c906108c
SS
2492 {
2493 runable = *t;
2494 ++count;
2495 }
2496 }
2497
2498 if (count != 1)
5f667f2d
PA
2499 {
2500 if (do_mesg)
2501 error (_("Don't know how to %s. Try \"help target\"."), do_mesg);
2502 else
2503 return NULL;
2504 }
c906108c
SS
2505
2506 return runable;
2507}
2508
2509void
136d6dae 2510find_default_attach (struct target_ops *ops, char *args, int from_tty)
c906108c
SS
2511{
2512 struct target_ops *t;
2513
c5aa993b 2514 t = find_default_run_target ("attach");
136d6dae 2515 (t->to_attach) (t, args, from_tty);
c906108c
SS
2516 return;
2517}
2518
c906108c 2519void
136d6dae
VP
2520find_default_create_inferior (struct target_ops *ops,
2521 char *exec_file, char *allargs, char **env,
c27cda74 2522 int from_tty)
c906108c
SS
2523{
2524 struct target_ops *t;
2525
c5aa993b 2526 t = find_default_run_target ("run");
136d6dae 2527 (t->to_create_inferior) (t, exec_file, allargs, env, from_tty);
c906108c
SS
2528 return;
2529}
2530
2c0b251b 2531static int
b84876c2
PA
2532find_default_can_async_p (void)
2533{
2534 struct target_ops *t;
2535
5f667f2d
PA
2536 /* This may be called before the target is pushed on the stack;
2537 look for the default process stratum. If there's none, gdb isn't
2538 configured with a native debugger, and target remote isn't
2539 connected yet. */
2540 t = find_default_run_target (NULL);
2541 if (t && t->to_can_async_p)
b84876c2
PA
2542 return (t->to_can_async_p) ();
2543 return 0;
2544}
2545
2c0b251b 2546static int
b84876c2
PA
2547find_default_is_async_p (void)
2548{
2549 struct target_ops *t;
2550
5f667f2d
PA
2551 /* This may be called before the target is pushed on the stack;
2552 look for the default process stratum. If there's none, gdb isn't
2553 configured with a native debugger, and target remote isn't
2554 connected yet. */
2555 t = find_default_run_target (NULL);
2556 if (t && t->to_is_async_p)
b84876c2
PA
2557 return (t->to_is_async_p) ();
2558 return 0;
2559}
2560
2c0b251b 2561static int
9908b566
VP
2562find_default_supports_non_stop (void)
2563{
2564 struct target_ops *t;
2565
2566 t = find_default_run_target (NULL);
2567 if (t && t->to_supports_non_stop)
2568 return (t->to_supports_non_stop) ();
2569 return 0;
2570}
2571
2572int
2c0b251b 2573target_supports_non_stop (void)
9908b566
VP
2574{
2575 struct target_ops *t;
5d502164 2576
9908b566
VP
2577 for (t = &current_target; t != NULL; t = t->beneath)
2578 if (t->to_supports_non_stop)
2579 return t->to_supports_non_stop ();
2580
2581 return 0;
2582}
2583
2584
07e059b5
VP
2585char *
2586target_get_osdata (const char *type)
2587{
07e059b5
VP
2588 struct target_ops *t;
2589
739ef7fb
PA
2590 /* If we're already connected to something that can get us OS
2591 related data, use it. Otherwise, try using the native
2592 target. */
2593 if (current_target.to_stratum >= process_stratum)
6d097e65 2594 t = current_target.beneath;
739ef7fb
PA
2595 else
2596 t = find_default_run_target ("get OS data");
07e059b5
VP
2597
2598 if (!t)
2599 return NULL;
2600
6d097e65 2601 return target_read_stralloc (t, TARGET_OBJECT_OSDATA, type);
07e059b5
VP
2602}
2603
6c95b8df
PA
2604/* Determine the current address space of thread PTID. */
2605
2606struct address_space *
2607target_thread_address_space (ptid_t ptid)
2608{
c0694254 2609 struct address_space *aspace;
6c95b8df 2610 struct inferior *inf;
c0694254
PA
2611 struct target_ops *t;
2612
2613 for (t = current_target.beneath; t != NULL; t = t->beneath)
2614 {
2615 if (t->to_thread_address_space != NULL)
2616 {
2617 aspace = t->to_thread_address_space (t, ptid);
2618 gdb_assert (aspace);
6c95b8df 2619
c0694254
PA
2620 if (targetdebug)
2621 fprintf_unfiltered (gdb_stdlog,
2622 "target_thread_address_space (%s) = %d\n",
2623 target_pid_to_str (ptid),
2624 address_space_num (aspace));
2625 return aspace;
2626 }
2627 }
6c95b8df
PA
2628
2629 /* Fall-back to the "main" address space of the inferior. */
2630 inf = find_inferior_pid (ptid_get_pid (ptid));
2631
2632 if (inf == NULL || inf->aspace == NULL)
2633 internal_error (__FILE__, __LINE__, "\
2634Can't determine the current address space of thread %s\n",
2635 target_pid_to_str (ptid));
2636
2637 return inf->aspace;
2638}
2639
e0d24f8d
WZ
2640static int
2641default_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
2642{
ffe5a37e 2643 return (len <= gdbarch_ptr_bit (target_gdbarch) / TARGET_CHAR_BIT);
ccaa32c7
GS
2644}
2645
5009afc5
AS
2646static int
2647default_watchpoint_addr_within_range (struct target_ops *target,
2648 CORE_ADDR addr,
2649 CORE_ADDR start, int length)
2650{
2651 return addr >= start && addr < start + length;
2652}
2653
c2250ad1
UW
2654static struct gdbarch *
2655default_thread_architecture (struct target_ops *ops, ptid_t ptid)
2656{
2657 return target_gdbarch;
2658}
2659
c906108c 2660static int
fba45db2 2661return_zero (void)
c906108c
SS
2662{
2663 return 0;
2664}
2665
2666static int
fba45db2 2667return_one (void)
c906108c
SS
2668{
2669 return 1;
2670}
2671
ccaa32c7
GS
2672static int
2673return_minus_one (void)
2674{
2675 return -1;
2676}
2677
7a292a7a
SS
2678/* Find a single runnable target in the stack and return it. If for
2679 some reason there is more than one, return NULL. */
2680
2681struct target_ops *
fba45db2 2682find_run_target (void)
7a292a7a
SS
2683{
2684 struct target_ops **t;
2685 struct target_ops *runable = NULL;
2686 int count;
c5aa993b 2687
7a292a7a 2688 count = 0;
c5aa993b 2689
7a292a7a
SS
2690 for (t = target_structs; t < target_structs + target_struct_size; ++t)
2691 {
c5aa993b 2692 if ((*t)->to_can_run && target_can_run (*t))
7a292a7a
SS
2693 {
2694 runable = *t;
2695 ++count;
2696 }
2697 }
c5aa993b 2698
7a292a7a
SS
2699 return (count == 1 ? runable : NULL);
2700}
2701
ed9a39eb
JM
2702/* Find a single core_stratum target in the list of targets and return it.
2703 If for some reason there is more than one, return NULL. */
2704
c906108c 2705struct target_ops *
fba45db2 2706find_core_target (void)
c906108c
SS
2707{
2708 struct target_ops **t;
2709 struct target_ops *runable = NULL;
2710 int count;
c5aa993b 2711
c906108c 2712 count = 0;
c5aa993b 2713
c906108c
SS
2714 for (t = target_structs; t < target_structs + target_struct_size;
2715 ++t)
2716 {
2717 if ((*t)->to_stratum == core_stratum)
2718 {
2719 runable = *t;
2720 ++count;
2721 }
2722 }
c5aa993b
JM
2723
2724 return (count == 1 ? runable : NULL);
c906108c 2725}
ed9a39eb
JM
2726
2727/*
2728 * Find the next target down the stack from the specified target.
2729 */
2730
2731struct target_ops *
fba45db2 2732find_target_beneath (struct target_ops *t)
ed9a39eb 2733{
258b763a 2734 return t->beneath;
ed9a39eb
JM
2735}
2736
c906108c
SS
2737\f
2738/* The inferior process has died. Long live the inferior! */
2739
2740void
fba45db2 2741generic_mourn_inferior (void)
c906108c 2742{
7f9f62ba 2743 ptid_t ptid;
c906108c 2744
7f9f62ba 2745 ptid = inferior_ptid;
39f77062 2746 inferior_ptid = null_ptid;
7f9f62ba
PA
2747
2748 if (!ptid_equal (ptid, null_ptid))
2749 {
2750 int pid = ptid_get_pid (ptid);
6c95b8df 2751 exit_inferior (pid);
7f9f62ba
PA
2752 }
2753
c906108c
SS
2754 breakpoint_init_inferior (inf_exited);
2755 registers_changed ();
2756
c906108c
SS
2757 reopen_exec_file ();
2758 reinit_frame_cache ();
2759
9a4105ab
AC
2760 if (deprecated_detach_hook)
2761 deprecated_detach_hook ();
c906108c
SS
2762}
2763\f
8807d78b 2764/* Helper function for child_wait and the derivatives of child_wait.
c906108c
SS
2765 HOSTSTATUS is the waitstatus from wait() or the equivalent; store our
2766 translation of that in OURSTATUS. */
2767void
fba45db2 2768store_waitstatus (struct target_waitstatus *ourstatus, int hoststatus)
c906108c 2769{
c906108c
SS
2770 if (WIFEXITED (hoststatus))
2771 {
2772 ourstatus->kind = TARGET_WAITKIND_EXITED;
2773 ourstatus->value.integer = WEXITSTATUS (hoststatus);
2774 }
2775 else if (!WIFSTOPPED (hoststatus))
2776 {
2777 ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
2778 ourstatus->value.sig = target_signal_from_host (WTERMSIG (hoststatus));
2779 }
2780 else
2781 {
2782 ourstatus->kind = TARGET_WAITKIND_STOPPED;
2783 ourstatus->value.sig = target_signal_from_host (WSTOPSIG (hoststatus));
2784 }
2785}
2786\f
fd0a2a6f
MK
2787/* Convert a normal process ID to a string. Returns the string in a
2788 static buffer. */
c906108c
SS
2789
2790char *
39f77062 2791normal_pid_to_str (ptid_t ptid)
c906108c 2792{
fd0a2a6f 2793 static char buf[32];
c906108c 2794
5fff8fc0 2795 xsnprintf (buf, sizeof buf, "process %d", ptid_get_pid (ptid));
c906108c
SS
2796 return buf;
2797}
2798
2c0b251b 2799static char *
117de6a9
PA
2800dummy_pid_to_str (struct target_ops *ops, ptid_t ptid)
2801{
2802 return normal_pid_to_str (ptid);
2803}
2804
9b4eba8e
HZ
2805/* Error-catcher for target_find_memory_regions. */
2806static int
2807dummy_find_memory_regions (int (*ignore1) (), void *ignore2)
be4d1333 2808{
9b4eba8e 2809 error (_("Command not implemented for this target."));
be4d1333
MS
2810 return 0;
2811}
2812
9b4eba8e
HZ
2813/* Error-catcher for target_make_corefile_notes. */
2814static char *
2815dummy_make_corefile_notes (bfd *ignore1, int *ignore2)
be4d1333 2816{
9b4eba8e 2817 error (_("Command not implemented for this target."));
be4d1333
MS
2818 return NULL;
2819}
2820
6b04bdb7
MS
2821/* Error-catcher for target_get_bookmark. */
2822static gdb_byte *
2823dummy_get_bookmark (char *ignore1, int ignore2)
2824{
2825 tcomplain ();
2826 return NULL;
2827}
2828
2829/* Error-catcher for target_goto_bookmark. */
2830static void
2831dummy_goto_bookmark (gdb_byte *ignore, int from_tty)
2832{
2833 tcomplain ();
2834}
2835
c906108c
SS
2836/* Set up the handful of non-empty slots needed by the dummy target
2837 vector. */
2838
2839static void
fba45db2 2840init_dummy_target (void)
c906108c
SS
2841{
2842 dummy_target.to_shortname = "None";
2843 dummy_target.to_longname = "None";
2844 dummy_target.to_doc = "";
2845 dummy_target.to_attach = find_default_attach;
136d6dae
VP
2846 dummy_target.to_detach =
2847 (void (*)(struct target_ops *, char *, int))target_ignore;
c906108c 2848 dummy_target.to_create_inferior = find_default_create_inferior;
b84876c2
PA
2849 dummy_target.to_can_async_p = find_default_can_async_p;
2850 dummy_target.to_is_async_p = find_default_is_async_p;
9908b566 2851 dummy_target.to_supports_non_stop = find_default_supports_non_stop;
117de6a9 2852 dummy_target.to_pid_to_str = dummy_pid_to_str;
c906108c 2853 dummy_target.to_stratum = dummy_stratum;
be4d1333
MS
2854 dummy_target.to_find_memory_regions = dummy_find_memory_regions;
2855 dummy_target.to_make_corefile_notes = dummy_make_corefile_notes;
6b04bdb7
MS
2856 dummy_target.to_get_bookmark = dummy_get_bookmark;
2857 dummy_target.to_goto_bookmark = dummy_goto_bookmark;
0b603eba 2858 dummy_target.to_xfer_partial = default_xfer_partial;
c35b1492
PA
2859 dummy_target.to_has_all_memory = (int (*) (struct target_ops *)) return_zero;
2860 dummy_target.to_has_memory = (int (*) (struct target_ops *)) return_zero;
2861 dummy_target.to_has_stack = (int (*) (struct target_ops *)) return_zero;
2862 dummy_target.to_has_registers = (int (*) (struct target_ops *)) return_zero;
2863 dummy_target.to_has_execution = (int (*) (struct target_ops *)) return_zero;
7155de5a
HZ
2864 dummy_target.to_stopped_by_watchpoint = return_zero;
2865 dummy_target.to_stopped_data_address =
2866 (int (*) (struct target_ops *, CORE_ADDR *)) return_zero;
c906108c
SS
2867 dummy_target.to_magic = OPS_MAGIC;
2868}
c906108c 2869\f
c906108c 2870static void
fba45db2 2871debug_to_open (char *args, int from_tty)
c906108c
SS
2872{
2873 debug_target.to_open (args, from_tty);
2874
96baa820 2875 fprintf_unfiltered (gdb_stdlog, "target_open (%s, %d)\n", args, from_tty);
c906108c
SS
2876}
2877
f1c07ab0
AC
2878void
2879target_close (struct target_ops *targ, int quitting)
2880{
2881 if (targ->to_xclose != NULL)
2882 targ->to_xclose (targ, quitting);
2883 else if (targ->to_close != NULL)
2884 targ->to_close (quitting);
947b8855
PA
2885
2886 if (targetdebug)
2887 fprintf_unfiltered (gdb_stdlog, "target_close (%d)\n", quitting);
f1c07ab0
AC
2888}
2889
136d6dae
VP
2890void
2891target_attach (char *args, int from_tty)
2892{
2893 struct target_ops *t;
5d502164 2894
136d6dae
VP
2895 for (t = current_target.beneath; t != NULL; t = t->beneath)
2896 {
2897 if (t->to_attach != NULL)
2898 {
2899 t->to_attach (t, args, from_tty);
947b8855
PA
2900 if (targetdebug)
2901 fprintf_unfiltered (gdb_stdlog, "target_attach (%s, %d)\n",
2902 args, from_tty);
136d6dae
VP
2903 return;
2904 }
2905 }
2906
2907 internal_error (__FILE__, __LINE__,
2908 "could not find a target to attach");
2909}
2910
28439f5e
PA
2911int
2912target_thread_alive (ptid_t ptid)
c906108c 2913{
28439f5e 2914 struct target_ops *t;
5d502164 2915
28439f5e
PA
2916 for (t = current_target.beneath; t != NULL; t = t->beneath)
2917 {
2918 if (t->to_thread_alive != NULL)
2919 {
2920 int retval;
c906108c 2921
28439f5e
PA
2922 retval = t->to_thread_alive (t, ptid);
2923 if (targetdebug)
2924 fprintf_unfiltered (gdb_stdlog, "target_thread_alive (%d) = %d\n",
2925 PIDGET (ptid), retval);
2926
2927 return retval;
2928 }
2929 }
2930
2931 return 0;
2932}
2933
2934void
2935target_find_new_threads (void)
2936{
2937 struct target_ops *t;
5d502164 2938
28439f5e
PA
2939 for (t = current_target.beneath; t != NULL; t = t->beneath)
2940 {
2941 if (t->to_find_new_threads != NULL)
2942 {
2943 t->to_find_new_threads (t);
2944 if (targetdebug)
2945 fprintf_unfiltered (gdb_stdlog, "target_find_new_threads ()\n");
2946
2947 return;
2948 }
2949 }
c906108c
SS
2950}
2951
c906108c 2952static void
28439f5e 2953debug_to_post_attach (int pid)
c906108c 2954{
28439f5e 2955 debug_target.to_post_attach (pid);
c906108c 2956
28439f5e 2957 fprintf_unfiltered (gdb_stdlog, "target_post_attach (%d)\n", pid);
c906108c
SS
2958}
2959
f00150c9
DE
2960/* Return a pretty printed form of target_waitstatus.
2961 Space for the result is malloc'd, caller must free. */
c906108c 2962
f00150c9
DE
2963char *
2964target_waitstatus_to_string (const struct target_waitstatus *ws)
2965{
2966 const char *kind_str = "status->kind = ";
c906108c 2967
f00150c9 2968 switch (ws->kind)
c906108c
SS
2969 {
2970 case TARGET_WAITKIND_EXITED:
f00150c9
DE
2971 return xstrprintf ("%sexited, status = %d",
2972 kind_str, ws->value.integer);
c906108c 2973 case TARGET_WAITKIND_STOPPED:
f00150c9
DE
2974 return xstrprintf ("%sstopped, signal = %s",
2975 kind_str, target_signal_to_name (ws->value.sig));
c906108c 2976 case TARGET_WAITKIND_SIGNALLED:
f00150c9
DE
2977 return xstrprintf ("%ssignalled, signal = %s",
2978 kind_str, target_signal_to_name (ws->value.sig));
c906108c 2979 case TARGET_WAITKIND_LOADED:
f00150c9 2980 return xstrprintf ("%sloaded", kind_str);
c906108c 2981 case TARGET_WAITKIND_FORKED:
f00150c9 2982 return xstrprintf ("%sforked", kind_str);
c906108c 2983 case TARGET_WAITKIND_VFORKED:
f00150c9 2984 return xstrprintf ("%svforked", kind_str);
c906108c 2985 case TARGET_WAITKIND_EXECD:
f00150c9
DE
2986 return xstrprintf ("%sexecd", kind_str);
2987 case TARGET_WAITKIND_SYSCALL_ENTRY:
a96d9b2e 2988 return xstrprintf ("%sentered syscall", kind_str);
f00150c9 2989 case TARGET_WAITKIND_SYSCALL_RETURN:
a96d9b2e 2990 return xstrprintf ("%sexited syscall", kind_str);
c906108c 2991 case TARGET_WAITKIND_SPURIOUS:
f00150c9
DE
2992 return xstrprintf ("%sspurious", kind_str);
2993 case TARGET_WAITKIND_IGNORE:
2994 return xstrprintf ("%signore", kind_str);
2995 case TARGET_WAITKIND_NO_HISTORY:
2996 return xstrprintf ("%sno-history", kind_str);
c906108c 2997 default:
f00150c9 2998 return xstrprintf ("%sunknown???", kind_str);
c906108c 2999 }
f00150c9
DE
3000}
3001
bf0c5130 3002static void
56be3814
UW
3003debug_print_register (const char * func,
3004 struct regcache *regcache, int regno)
bf0c5130 3005{
f8d29908 3006 struct gdbarch *gdbarch = get_regcache_arch (regcache);
5d502164 3007
bf0c5130 3008 fprintf_unfiltered (gdb_stdlog, "%s ", func);
f8d29908 3009 if (regno >= 0 && regno < gdbarch_num_regs (gdbarch)
f8d29908
UW
3010 && gdbarch_register_name (gdbarch, regno) != NULL
3011 && gdbarch_register_name (gdbarch, regno)[0] != '\0')
3012 fprintf_unfiltered (gdb_stdlog, "(%s)",
3013 gdbarch_register_name (gdbarch, regno));
bf0c5130
AC
3014 else
3015 fprintf_unfiltered (gdb_stdlog, "(%d)", regno);
0ff58721 3016 if (regno >= 0 && regno < gdbarch_num_regs (gdbarch))
bf0c5130 3017 {
e17a4113 3018 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
f8d29908 3019 int i, size = register_size (gdbarch, regno);
d9d9c31f 3020 unsigned char buf[MAX_REGISTER_SIZE];
5d502164 3021
0ff58721 3022 regcache_raw_collect (regcache, regno, buf);
bf0c5130 3023 fprintf_unfiltered (gdb_stdlog, " = ");
81c4a259 3024 for (i = 0; i < size; i++)
bf0c5130
AC
3025 {
3026 fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
3027 }
81c4a259 3028 if (size <= sizeof (LONGEST))
bf0c5130 3029 {
e17a4113 3030 ULONGEST val = extract_unsigned_integer (buf, size, byte_order);
5d502164 3031
0b1553bc
UW
3032 fprintf_unfiltered (gdb_stdlog, " %s %s",
3033 core_addr_to_string_nz (val), plongest (val));
bf0c5130
AC
3034 }
3035 }
3036 fprintf_unfiltered (gdb_stdlog, "\n");
3037}
3038
28439f5e
PA
3039void
3040target_fetch_registers (struct regcache *regcache, int regno)
c906108c 3041{
28439f5e 3042 struct target_ops *t;
5d502164 3043
28439f5e
PA
3044 for (t = current_target.beneath; t != NULL; t = t->beneath)
3045 {
3046 if (t->to_fetch_registers != NULL)
3047 {
3048 t->to_fetch_registers (t, regcache, regno);
3049 if (targetdebug)
3050 debug_print_register ("target_fetch_registers", regcache, regno);
3051 return;
3052 }
3053 }
c906108c
SS
3054}
3055
28439f5e
PA
3056void
3057target_store_registers (struct regcache *regcache, int regno)
c906108c 3058{
28439f5e 3059 struct target_ops *t;
5d502164 3060
28439f5e
PA
3061 for (t = current_target.beneath; t != NULL; t = t->beneath)
3062 {
3063 if (t->to_store_registers != NULL)
3064 {
3065 t->to_store_registers (t, regcache, regno);
3066 if (targetdebug)
3067 {
3068 debug_print_register ("target_store_registers", regcache, regno);
3069 }
3070 return;
3071 }
3072 }
3073
3074 noprocess ();
c906108c
SS
3075}
3076
dc146f7c
VP
3077int
3078target_core_of_thread (ptid_t ptid)
3079{
3080 struct target_ops *t;
3081
3082 for (t = current_target.beneath; t != NULL; t = t->beneath)
3083 {
3084 if (t->to_core_of_thread != NULL)
3085 {
3086 int retval = t->to_core_of_thread (t, ptid);
5d502164 3087
dc146f7c
VP
3088 if (targetdebug)
3089 fprintf_unfiltered (gdb_stdlog, "target_core_of_thread (%d) = %d\n",
3090 PIDGET (ptid), retval);
3091 return retval;
3092 }
3093 }
3094
3095 return -1;
3096}
3097
4a5e7a5b
PA
3098int
3099target_verify_memory (const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size)
3100{
3101 struct target_ops *t;
3102
3103 for (t = current_target.beneath; t != NULL; t = t->beneath)
3104 {
3105 if (t->to_verify_memory != NULL)
3106 {
3107 int retval = t->to_verify_memory (t, data, memaddr, size);
5d502164 3108
4a5e7a5b
PA
3109 if (targetdebug)
3110 fprintf_unfiltered (gdb_stdlog, "target_verify_memory (%s, %s) = %d\n",
3111 paddress (target_gdbarch, memaddr),
3112 pulongest (size),
3113 retval);
3114 return retval;
3115 }
3116 }
3117
3118 tcomplain ();
3119}
3120
c906108c 3121static void
316f2060 3122debug_to_prepare_to_store (struct regcache *regcache)
c906108c 3123{
316f2060 3124 debug_target.to_prepare_to_store (regcache);
c906108c 3125
96baa820 3126 fprintf_unfiltered (gdb_stdlog, "target_prepare_to_store ()\n");
c906108c
SS
3127}
3128
3129static int
961cb7b5 3130deprecated_debug_xfer_memory (CORE_ADDR memaddr, bfd_byte *myaddr, int len,
c8e73a31
AC
3131 int write, struct mem_attrib *attrib,
3132 struct target_ops *target)
c906108c
SS
3133{
3134 int retval;
3135
c8e73a31
AC
3136 retval = debug_target.deprecated_xfer_memory (memaddr, myaddr, len, write,
3137 attrib, target);
c906108c 3138
96baa820 3139 fprintf_unfiltered (gdb_stdlog,
53b71562 3140 "target_xfer_memory (%s, xxx, %d, %s, xxx) = %d",
5af949e3
UW
3141 paddress (target_gdbarch, memaddr), len,
3142 write ? "write" : "read", retval);
c906108c 3143
c906108c
SS
3144 if (retval > 0)
3145 {
3146 int i;
3147
96baa820 3148 fputs_unfiltered (", bytes =", gdb_stdlog);
c906108c
SS
3149 for (i = 0; i < retval; i++)
3150 {
53b71562 3151 if ((((intptr_t) &(myaddr[i])) & 0xf) == 0)
333dabeb
DJ
3152 {
3153 if (targetdebug < 2 && i > 0)
3154 {
3155 fprintf_unfiltered (gdb_stdlog, " ...");
3156 break;
3157 }
3158 fprintf_unfiltered (gdb_stdlog, "\n");
3159 }
2bc416ba 3160
96baa820 3161 fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
c906108c
SS
3162 }
3163 }
3164
96baa820 3165 fputc_unfiltered ('\n', gdb_stdlog);
c906108c
SS
3166
3167 return retval;
3168}
3169
3170static void
fba45db2 3171debug_to_files_info (struct target_ops *target)
c906108c
SS
3172{
3173 debug_target.to_files_info (target);
3174
96baa820 3175 fprintf_unfiltered (gdb_stdlog, "target_files_info (xxx)\n");
c906108c
SS
3176}
3177
3178static int
a6d9a66e
UW
3179debug_to_insert_breakpoint (struct gdbarch *gdbarch,
3180 struct bp_target_info *bp_tgt)
c906108c
SS
3181{
3182 int retval;
3183
a6d9a66e 3184 retval = debug_target.to_insert_breakpoint (gdbarch, bp_tgt);
c906108c 3185
96baa820 3186 fprintf_unfiltered (gdb_stdlog,
104c1213 3187 "target_insert_breakpoint (0x%lx, xxx) = %ld\n",
8181d85f 3188 (unsigned long) bp_tgt->placed_address,
104c1213 3189 (unsigned long) retval);
c906108c
SS
3190 return retval;
3191}
3192
3193static int
a6d9a66e
UW
3194debug_to_remove_breakpoint (struct gdbarch *gdbarch,
3195 struct bp_target_info *bp_tgt)
c906108c
SS
3196{
3197 int retval;
3198
a6d9a66e 3199 retval = debug_target.to_remove_breakpoint (gdbarch, bp_tgt);
c906108c 3200
96baa820 3201 fprintf_unfiltered (gdb_stdlog,
104c1213 3202 "target_remove_breakpoint (0x%lx, xxx) = %ld\n",
8181d85f 3203 (unsigned long) bp_tgt->placed_address,
104c1213 3204 (unsigned long) retval);
c906108c
SS
3205 return retval;
3206}
3207
ccaa32c7
GS
3208static int
3209debug_to_can_use_hw_breakpoint (int type, int cnt, int from_tty)
3210{
3211 int retval;
3212
3213 retval = debug_target.to_can_use_hw_breakpoint (type, cnt, from_tty);
3214
3215 fprintf_unfiltered (gdb_stdlog,
3216 "target_can_use_hw_breakpoint (%ld, %ld, %ld) = %ld\n",
3217 (unsigned long) type,
3218 (unsigned long) cnt,
3219 (unsigned long) from_tty,
3220 (unsigned long) retval);
3221 return retval;
3222}
3223
e0d24f8d
WZ
3224static int
3225debug_to_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
3226{
3227 CORE_ADDR retval;
3228
3229 retval = debug_target.to_region_ok_for_hw_watchpoint (addr, len);
3230
3231 fprintf_unfiltered (gdb_stdlog,
d92524f1 3232 "target_region_ok_for_hw_watchpoint (%ld, %ld) = 0x%lx\n",
e0d24f8d
WZ
3233 (unsigned long) addr,
3234 (unsigned long) len,
3235 (unsigned long) retval);
3236 return retval;
3237}
3238
ccaa32c7
GS
3239static int
3240debug_to_stopped_by_watchpoint (void)
3241{
3242 int retval;
3243
3244 retval = debug_target.to_stopped_by_watchpoint ();
3245
3246 fprintf_unfiltered (gdb_stdlog,
d92524f1 3247 "target_stopped_by_watchpoint () = %ld\n",
ccaa32c7
GS
3248 (unsigned long) retval);
3249 return retval;
3250}
3251
4aa7a7f5
JJ
3252static int
3253debug_to_stopped_data_address (struct target_ops *target, CORE_ADDR *addr)
ccaa32c7 3254{
4aa7a7f5 3255 int retval;
ccaa32c7 3256
4aa7a7f5 3257 retval = debug_target.to_stopped_data_address (target, addr);
ccaa32c7
GS
3258
3259 fprintf_unfiltered (gdb_stdlog,
4aa7a7f5
JJ
3260 "target_stopped_data_address ([0x%lx]) = %ld\n",
3261 (unsigned long)*addr,
3262 (unsigned long)retval);
ccaa32c7
GS
3263 return retval;
3264}
3265
5009afc5
AS
3266static int
3267debug_to_watchpoint_addr_within_range (struct target_ops *target,
3268 CORE_ADDR addr,
3269 CORE_ADDR start, int length)
3270{
3271 int retval;
3272
3273 retval = debug_target.to_watchpoint_addr_within_range (target, addr,
3274 start, length);
3275
3276 fprintf_filtered (gdb_stdlog,
3277 "target_watchpoint_addr_within_range (0x%lx, 0x%lx, %d) = %d\n",
3278 (unsigned long) addr, (unsigned long) start, length,
3279 retval);
3280 return retval;
3281}
3282
ccaa32c7 3283static int
a6d9a66e
UW
3284debug_to_insert_hw_breakpoint (struct gdbarch *gdbarch,
3285 struct bp_target_info *bp_tgt)
ccaa32c7
GS
3286{
3287 int retval;
3288
a6d9a66e 3289 retval = debug_target.to_insert_hw_breakpoint (gdbarch, bp_tgt);
ccaa32c7
GS
3290
3291 fprintf_unfiltered (gdb_stdlog,
3292 "target_insert_hw_breakpoint (0x%lx, xxx) = %ld\n",
8181d85f 3293 (unsigned long) bp_tgt->placed_address,
ccaa32c7
GS
3294 (unsigned long) retval);
3295 return retval;
3296}
3297
3298static int
a6d9a66e
UW
3299debug_to_remove_hw_breakpoint (struct gdbarch *gdbarch,
3300 struct bp_target_info *bp_tgt)
ccaa32c7
GS
3301{
3302 int retval;
3303
a6d9a66e 3304 retval = debug_target.to_remove_hw_breakpoint (gdbarch, bp_tgt);
ccaa32c7
GS
3305
3306 fprintf_unfiltered (gdb_stdlog,
3307 "target_remove_hw_breakpoint (0x%lx, xxx) = %ld\n",
8181d85f 3308 (unsigned long) bp_tgt->placed_address,
ccaa32c7
GS
3309 (unsigned long) retval);
3310 return retval;
3311}
3312
3313static int
3314debug_to_insert_watchpoint (CORE_ADDR addr, int len, int type)
3315{
3316 int retval;
3317
3318 retval = debug_target.to_insert_watchpoint (addr, len, type);
3319
3320 fprintf_unfiltered (gdb_stdlog,
3321 "target_insert_watchpoint (0x%lx, %d, %d) = %ld\n",
3322 (unsigned long) addr, len, type, (unsigned long) retval);
3323 return retval;
3324}
3325
3326static int
3327debug_to_remove_watchpoint (CORE_ADDR addr, int len, int type)
3328{
3329 int retval;
3330
ecde4882 3331 retval = debug_target.to_remove_watchpoint (addr, len, type);
ccaa32c7
GS
3332
3333 fprintf_unfiltered (gdb_stdlog,
ecde4882 3334 "target_remove_watchpoint (0x%lx, %d, %d) = %ld\n",
ccaa32c7
GS
3335 (unsigned long) addr, len, type, (unsigned long) retval);
3336 return retval;
3337}
3338
c906108c 3339static void
fba45db2 3340debug_to_terminal_init (void)
c906108c
SS
3341{
3342 debug_target.to_terminal_init ();
3343
96baa820 3344 fprintf_unfiltered (gdb_stdlog, "target_terminal_init ()\n");
c906108c
SS
3345}
3346
3347static void
fba45db2 3348debug_to_terminal_inferior (void)
c906108c
SS
3349{
3350 debug_target.to_terminal_inferior ();
3351
96baa820 3352 fprintf_unfiltered (gdb_stdlog, "target_terminal_inferior ()\n");
c906108c
SS
3353}
3354
3355static void
fba45db2 3356debug_to_terminal_ours_for_output (void)
c906108c
SS
3357{
3358 debug_target.to_terminal_ours_for_output ();
3359
96baa820 3360 fprintf_unfiltered (gdb_stdlog, "target_terminal_ours_for_output ()\n");
c906108c
SS
3361}
3362
3363static void
fba45db2 3364debug_to_terminal_ours (void)
c906108c
SS
3365{
3366 debug_target.to_terminal_ours ();
3367
96baa820 3368 fprintf_unfiltered (gdb_stdlog, "target_terminal_ours ()\n");
c906108c
SS
3369}
3370
a790ad35
SC
3371static void
3372debug_to_terminal_save_ours (void)
3373{
3374 debug_target.to_terminal_save_ours ();
3375
3376 fprintf_unfiltered (gdb_stdlog, "target_terminal_save_ours ()\n");
3377}
3378
c906108c 3379static void
fba45db2 3380debug_to_terminal_info (char *arg, int from_tty)
c906108c
SS
3381{
3382 debug_target.to_terminal_info (arg, from_tty);
3383
96baa820 3384 fprintf_unfiltered (gdb_stdlog, "target_terminal_info (%s, %d)\n", arg,
c906108c
SS
3385 from_tty);
3386}
3387
c906108c 3388static void
fba45db2 3389debug_to_load (char *args, int from_tty)
c906108c
SS
3390{
3391 debug_target.to_load (args, from_tty);
3392
96baa820 3393 fprintf_unfiltered (gdb_stdlog, "target_load (%s, %d)\n", args, from_tty);
c906108c
SS
3394}
3395
3396static int
fba45db2 3397debug_to_lookup_symbol (char *name, CORE_ADDR *addrp)
c906108c
SS
3398{
3399 int retval;
3400
3401 retval = debug_target.to_lookup_symbol (name, addrp);
3402
96baa820 3403 fprintf_unfiltered (gdb_stdlog, "target_lookup_symbol (%s, xxx)\n", name);
c906108c
SS
3404
3405 return retval;
3406}
3407
c906108c 3408static void
39f77062 3409debug_to_post_startup_inferior (ptid_t ptid)
c906108c 3410{
39f77062 3411 debug_target.to_post_startup_inferior (ptid);
c906108c 3412
96baa820 3413 fprintf_unfiltered (gdb_stdlog, "target_post_startup_inferior (%d)\n",
39f77062 3414 PIDGET (ptid));
c906108c
SS
3415}
3416
3417static void
fba45db2 3418debug_to_acknowledge_created_inferior (int pid)
c906108c
SS
3419{
3420 debug_target.to_acknowledge_created_inferior (pid);
3421
96baa820 3422 fprintf_unfiltered (gdb_stdlog, "target_acknowledge_created_inferior (%d)\n",
c906108c
SS
3423 pid);
3424}
3425
fa113d1a 3426static void
fba45db2 3427debug_to_insert_fork_catchpoint (int pid)
c906108c 3428{
fa113d1a 3429 debug_target.to_insert_fork_catchpoint (pid);
c906108c 3430
fa113d1a
AC
3431 fprintf_unfiltered (gdb_stdlog, "target_insert_fork_catchpoint (%d)\n",
3432 pid);
c906108c
SS
3433}
3434
3435static int
fba45db2 3436debug_to_remove_fork_catchpoint (int pid)
c906108c 3437{
c5aa993b 3438 int retval;
c906108c
SS
3439
3440 retval = debug_target.to_remove_fork_catchpoint (pid);
3441
96baa820 3442 fprintf_unfiltered (gdb_stdlog, "target_remove_fork_catchpoint (%d) = %d\n",
c5aa993b 3443 pid, retval);
c906108c
SS
3444
3445 return retval;
3446}
3447
fa113d1a 3448static void
fba45db2 3449debug_to_insert_vfork_catchpoint (int pid)
c906108c 3450{
fa113d1a 3451 debug_target.to_insert_vfork_catchpoint (pid);
c906108c 3452
fa113d1a
AC
3453 fprintf_unfiltered (gdb_stdlog, "target_insert_vfork_catchpoint (%d)\n",
3454 pid);
c906108c
SS
3455}
3456
3457static int
fba45db2 3458debug_to_remove_vfork_catchpoint (int pid)
c906108c 3459{
c5aa993b 3460 int retval;
c906108c
SS
3461
3462 retval = debug_target.to_remove_vfork_catchpoint (pid);
3463
96baa820 3464 fprintf_unfiltered (gdb_stdlog, "target_remove_vfork_catchpoint (%d) = %d\n",
c5aa993b 3465 pid, retval);
c906108c
SS
3466
3467 return retval;
3468}
3469
fa113d1a 3470static void
fba45db2 3471debug_to_insert_exec_catchpoint (int pid)
c906108c 3472{
fa113d1a 3473 debug_target.to_insert_exec_catchpoint (pid);
c906108c 3474
fa113d1a
AC
3475 fprintf_unfiltered (gdb_stdlog, "target_insert_exec_catchpoint (%d)\n",
3476 pid);
c906108c
SS
3477}
3478
3479static int
fba45db2 3480debug_to_remove_exec_catchpoint (int pid)
c906108c 3481{
c5aa993b 3482 int retval;
c906108c
SS
3483
3484 retval = debug_target.to_remove_exec_catchpoint (pid);
3485
96baa820 3486 fprintf_unfiltered (gdb_stdlog, "target_remove_exec_catchpoint (%d) = %d\n",
c5aa993b 3487 pid, retval);
c906108c
SS
3488
3489 return retval;
3490}
3491
c906108c 3492static int
fba45db2 3493debug_to_has_exited (int pid, int wait_status, int *exit_status)
c906108c 3494{
c5aa993b 3495 int has_exited;
c906108c
SS
3496
3497 has_exited = debug_target.to_has_exited (pid, wait_status, exit_status);
3498
96baa820 3499 fprintf_unfiltered (gdb_stdlog, "target_has_exited (%d, %d, %d) = %d\n",
c5aa993b 3500 pid, wait_status, *exit_status, has_exited);
c906108c
SS
3501
3502 return has_exited;
3503}
3504
c906108c 3505static int
fba45db2 3506debug_to_can_run (void)
c906108c
SS
3507{
3508 int retval;
3509
3510 retval = debug_target.to_can_run ();
3511
96baa820 3512 fprintf_unfiltered (gdb_stdlog, "target_can_run () = %d\n", retval);
c906108c
SS
3513
3514 return retval;
3515}
3516
3517static void
39f77062 3518debug_to_notice_signals (ptid_t ptid)
c906108c 3519{
39f77062 3520 debug_target.to_notice_signals (ptid);
c906108c 3521
39f77062
KB
3522 fprintf_unfiltered (gdb_stdlog, "target_notice_signals (%d)\n",
3523 PIDGET (ptid));
c906108c
SS
3524}
3525
c2250ad1
UW
3526static struct gdbarch *
3527debug_to_thread_architecture (struct target_ops *ops, ptid_t ptid)
3528{
3529 struct gdbarch *retval;
3530
3531 retval = debug_target.to_thread_architecture (ops, ptid);
3532
67e5d36c
PM
3533 fprintf_unfiltered (gdb_stdlog, "target_thread_architecture (%s) = %s [%s]\n",
3534 target_pid_to_str (ptid), host_address_to_string (retval),
c2250ad1
UW
3535 gdbarch_bfd_arch_info (retval)->printable_name);
3536 return retval;
3537}
3538
c906108c 3539static void
94cc34af 3540debug_to_stop (ptid_t ptid)
c906108c 3541{
94cc34af 3542 debug_target.to_stop (ptid);
c906108c 3543
94cc34af
PA
3544 fprintf_unfiltered (gdb_stdlog, "target_stop (%s)\n",
3545 target_pid_to_str (ptid));
c906108c
SS
3546}
3547
96baa820
JM
3548static void
3549debug_to_rcmd (char *command,
d9fcf2fb 3550 struct ui_file *outbuf)
96baa820
JM
3551{
3552 debug_target.to_rcmd (command, outbuf);
3553 fprintf_unfiltered (gdb_stdlog, "target_rcmd (%s, ...)\n", command);
3554}
3555
c906108c 3556static char *
fba45db2 3557debug_to_pid_to_exec_file (int pid)
c906108c 3558{
c5aa993b 3559 char *exec_file;
c906108c
SS
3560
3561 exec_file = debug_target.to_pid_to_exec_file (pid);
3562
96baa820 3563 fprintf_unfiltered (gdb_stdlog, "target_pid_to_exec_file (%d) = %s\n",
c5aa993b 3564 pid, exec_file);
c906108c
SS
3565
3566 return exec_file;
3567}
3568
c906108c 3569static void
fba45db2 3570setup_target_debug (void)
c906108c
SS
3571{
3572 memcpy (&debug_target, &current_target, sizeof debug_target);
3573
3574 current_target.to_open = debug_to_open;
c906108c 3575 current_target.to_post_attach = debug_to_post_attach;
c906108c 3576 current_target.to_prepare_to_store = debug_to_prepare_to_store;
c8e73a31 3577 current_target.deprecated_xfer_memory = deprecated_debug_xfer_memory;
c906108c
SS
3578 current_target.to_files_info = debug_to_files_info;
3579 current_target.to_insert_breakpoint = debug_to_insert_breakpoint;
3580 current_target.to_remove_breakpoint = debug_to_remove_breakpoint;
ccaa32c7
GS
3581 current_target.to_can_use_hw_breakpoint = debug_to_can_use_hw_breakpoint;
3582 current_target.to_insert_hw_breakpoint = debug_to_insert_hw_breakpoint;
3583 current_target.to_remove_hw_breakpoint = debug_to_remove_hw_breakpoint;
3584 current_target.to_insert_watchpoint = debug_to_insert_watchpoint;
3585 current_target.to_remove_watchpoint = debug_to_remove_watchpoint;
3586 current_target.to_stopped_by_watchpoint = debug_to_stopped_by_watchpoint;
3587 current_target.to_stopped_data_address = debug_to_stopped_data_address;
5009afc5 3588 current_target.to_watchpoint_addr_within_range = debug_to_watchpoint_addr_within_range;
e0d24f8d 3589 current_target.to_region_ok_for_hw_watchpoint = debug_to_region_ok_for_hw_watchpoint;
c906108c
SS
3590 current_target.to_terminal_init = debug_to_terminal_init;
3591 current_target.to_terminal_inferior = debug_to_terminal_inferior;
3592 current_target.to_terminal_ours_for_output = debug_to_terminal_ours_for_output;
3593 current_target.to_terminal_ours = debug_to_terminal_ours;
a790ad35 3594 current_target.to_terminal_save_ours = debug_to_terminal_save_ours;
c906108c 3595 current_target.to_terminal_info = debug_to_terminal_info;
c906108c
SS
3596 current_target.to_load = debug_to_load;
3597 current_target.to_lookup_symbol = debug_to_lookup_symbol;
c906108c
SS
3598 current_target.to_post_startup_inferior = debug_to_post_startup_inferior;
3599 current_target.to_acknowledge_created_inferior = debug_to_acknowledge_created_inferior;
c906108c
SS
3600 current_target.to_insert_fork_catchpoint = debug_to_insert_fork_catchpoint;
3601 current_target.to_remove_fork_catchpoint = debug_to_remove_fork_catchpoint;
3602 current_target.to_insert_vfork_catchpoint = debug_to_insert_vfork_catchpoint;
3603 current_target.to_remove_vfork_catchpoint = debug_to_remove_vfork_catchpoint;
c906108c
SS
3604 current_target.to_insert_exec_catchpoint = debug_to_insert_exec_catchpoint;
3605 current_target.to_remove_exec_catchpoint = debug_to_remove_exec_catchpoint;
c906108c 3606 current_target.to_has_exited = debug_to_has_exited;
c906108c
SS
3607 current_target.to_can_run = debug_to_can_run;
3608 current_target.to_notice_signals = debug_to_notice_signals;
c906108c 3609 current_target.to_stop = debug_to_stop;
96baa820 3610 current_target.to_rcmd = debug_to_rcmd;
c906108c 3611 current_target.to_pid_to_exec_file = debug_to_pid_to_exec_file;
c2250ad1 3612 current_target.to_thread_architecture = debug_to_thread_architecture;
c906108c 3613}
c906108c 3614\f
c5aa993b
JM
3615
3616static char targ_desc[] =
3617"Names of targets and files being debugged.\n\
c906108c
SS
3618Shows the entire stack of targets currently in use (including the exec-file,\n\
3619core-file, and process, if any), as well as the symbol file name.";
3620
96baa820
JM
3621static void
3622do_monitor_command (char *cmd,
3623 int from_tty)
3624{
2b5fe715
AC
3625 if ((current_target.to_rcmd
3626 == (void (*) (char *, struct ui_file *)) tcomplain)
96baa820 3627 || (current_target.to_rcmd == debug_to_rcmd
2b5fe715
AC
3628 && (debug_target.to_rcmd
3629 == (void (*) (char *, struct ui_file *)) tcomplain)))
8a3fe4f8 3630 error (_("\"monitor\" command not supported by this target."));
96baa820
JM
3631 target_rcmd (cmd, gdb_stdtarg);
3632}
3633
87680a14
JB
3634/* Print the name of each layers of our target stack. */
3635
3636static void
3637maintenance_print_target_stack (char *cmd, int from_tty)
3638{
3639 struct target_ops *t;
3640
3641 printf_filtered (_("The current target stack is:\n"));
3642
3643 for (t = target_stack; t != NULL; t = t->beneath)
3644 {
3645 printf_filtered (" - %s (%s)\n", t->to_shortname, t->to_longname);
3646 }
3647}
3648
c6ebd6cf
VP
3649/* Controls if async mode is permitted. */
3650int target_async_permitted = 0;
3651
3652/* The set command writes to this variable. If the inferior is
3653 executing, linux_nat_async_permitted is *not* updated. */
3654static int target_async_permitted_1 = 0;
3655
3656static void
3657set_maintenance_target_async_permitted (char *args, int from_tty,
3658 struct cmd_list_element *c)
3659{
c35b1492 3660 if (have_live_inferiors ())
c6ebd6cf
VP
3661 {
3662 target_async_permitted_1 = target_async_permitted;
3663 error (_("Cannot change this setting while the inferior is running."));
3664 }
3665
3666 target_async_permitted = target_async_permitted_1;
3667}
3668
3669static void
3670show_maintenance_target_async_permitted (struct ui_file *file, int from_tty,
3671 struct cmd_list_element *c,
3672 const char *value)
3673{
3674 fprintf_filtered (file, _("\
3675Controlling the inferior in asynchronous mode is %s.\n"), value);
3676}
3677
c906108c 3678void
fba45db2 3679initialize_targets (void)
c906108c
SS
3680{
3681 init_dummy_target ();
3682 push_target (&dummy_target);
3683
3684 add_info ("target", target_info, targ_desc);
3685 add_info ("files", target_info, targ_desc);
3686
85c07804
AC
3687 add_setshow_zinteger_cmd ("target", class_maintenance, &targetdebug, _("\
3688Set target debugging."), _("\
3689Show target debugging."), _("\
333dabeb
DJ
3690When non-zero, target debugging is enabled. Higher numbers are more\n\
3691verbose. Changes do not take effect until the next \"run\" or \"target\"\n\
85c07804
AC
3692command."),
3693 NULL,
920d2a44 3694 show_targetdebug,
85c07804 3695 &setdebuglist, &showdebuglist);
3a11626d 3696
2bc416ba 3697 add_setshow_boolean_cmd ("trust-readonly-sections", class_support,
7915a72c
AC
3698 &trust_readonly, _("\
3699Set mode for reading from readonly sections."), _("\
3700Show mode for reading from readonly sections."), _("\
3a11626d
MS
3701When this mode is on, memory reads from readonly sections (such as .text)\n\
3702will be read from the object file instead of from the target. This will\n\
7915a72c 3703result in significant performance improvement for remote targets."),
2c5b56ce 3704 NULL,
920d2a44 3705 show_trust_readonly,
e707bbc2 3706 &setlist, &showlist);
96baa820
JM
3707
3708 add_com ("monitor", class_obscure, do_monitor_command,
1bedd215 3709 _("Send a command to the remote monitor (remote targets only)."));
96baa820 3710
87680a14
JB
3711 add_cmd ("target-stack", class_maintenance, maintenance_print_target_stack,
3712 _("Print the name of each layer of the internal target stack."),
3713 &maintenanceprintlist);
3714
c6ebd6cf
VP
3715 add_setshow_boolean_cmd ("target-async", no_class,
3716 &target_async_permitted_1, _("\
3717Set whether gdb controls the inferior in asynchronous mode."), _("\
3718Show whether gdb controls the inferior in asynchronous mode."), _("\
3719Tells gdb whether to control the inferior in asynchronous mode."),
3720 set_maintenance_target_async_permitted,
3721 show_maintenance_target_async_permitted,
3722 &setlist,
3723 &showlist);
3724
4e5d721f 3725 add_setshow_boolean_cmd ("stack-cache", class_support,
9cf1b572 3726 &stack_cache_enabled_p_1, _("\
4e5d721f
DE
3727Set cache use for stack access."), _("\
3728Show cache use for stack access."), _("\
3729When on, use the data cache for all stack access, regardless of any\n\
3730configured memory regions. This improves remote performance significantly.\n\
3731By default, caching for stack access is on."),
3732 set_stack_cache_enabled_p,
3733 show_stack_cache_enabled_p,
3734 &setlist, &showlist);
3735
8add0441 3736 target_dcache = dcache_init ();
c906108c 3737}
This page took 1.639021 seconds and 4 git commands to generate.