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