Change regcache list to be an hash map
[deliverable/binutils-gdb.git] / gdb / inferior.h
1 /* Variables that describe the inferior process running under GDB:
2 Where it is, why it stopped, and how to step it.
3
4 Copyright (C) 1986-2020 Free Software Foundation, Inc.
5
6 This file is part of GDB.
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>. */
20
21 #if !defined (INFERIOR_H)
22 #define INFERIOR_H 1
23
24 struct target_waitstatus;
25 struct frame_info;
26 struct ui_file;
27 struct type;
28 struct gdbarch;
29 struct regcache;
30 struct ui_out;
31 struct terminal_info;
32 struct target_desc_info;
33 struct continuation;
34 struct inferior;
35 struct thread_info;
36
37 /* For bpstat. */
38 #include "breakpoint.h"
39
40 /* For enum gdb_signal. */
41 #include "target.h"
42
43 /* For struct frame_id. */
44 #include "frame.h"
45
46 /* For gdb_environ. */
47 #include "gdbsupport/environ.h"
48
49 #include "progspace.h"
50 #include "registry.h"
51
52 #include "symfile-add-flags.h"
53 #include "gdbsupport/refcounted-object.h"
54 #include "gdbsupport/forward-scope-exit.h"
55 #include "gdbsupport/gdb_unique_ptr.h"
56
57 #include "gdbsupport/common-inferior.h"
58 #include "gdbthread.h"
59 #include "thread-map.h"
60
61 #include "process-stratum-target.h"
62
63 struct infcall_suspend_state;
64 struct infcall_control_state;
65
66 extern void restore_infcall_suspend_state (struct infcall_suspend_state *);
67 extern void restore_infcall_control_state (struct infcall_control_state *);
68
69 /* A deleter for infcall_suspend_state that calls
70 restore_infcall_suspend_state. */
71 struct infcall_suspend_state_deleter
72 {
73 void operator() (struct infcall_suspend_state *state) const
74 {
75 try
76 {
77 restore_infcall_suspend_state (state);
78 }
79 catch (const gdb_exception_error &e)
80 {
81 /* If we are restoring the inferior state due to an exception,
82 some error message will be printed. So, only warn the user
83 when we cannot restore during normal execution. */
84 if (!std::uncaught_exception ())
85 warning (_("Failed to restore inferior state: %s"), e.what ());
86 }
87 }
88 };
89
90 /* A unique_ptr specialization for infcall_suspend_state. */
91 typedef std::unique_ptr<infcall_suspend_state, infcall_suspend_state_deleter>
92 infcall_suspend_state_up;
93
94 extern infcall_suspend_state_up save_infcall_suspend_state ();
95
96 /* A deleter for infcall_control_state that calls
97 restore_infcall_control_state. */
98 struct infcall_control_state_deleter
99 {
100 void operator() (struct infcall_control_state *state) const
101 {
102 restore_infcall_control_state (state);
103 }
104 };
105
106 /* A unique_ptr specialization for infcall_control_state. */
107 typedef std::unique_ptr<infcall_control_state, infcall_control_state_deleter>
108 infcall_control_state_up;
109
110 extern infcall_control_state_up save_infcall_control_state ();
111
112 extern void discard_infcall_suspend_state (struct infcall_suspend_state *);
113 extern void discard_infcall_control_state (struct infcall_control_state *);
114
115 extern readonly_detached_regcache *
116 get_infcall_suspend_state_regcache (struct infcall_suspend_state *);
117
118 extern void set_sigint_trap (void);
119
120 extern void clear_sigint_trap (void);
121
122 /* Collected pid, tid, etc. of the debugged inferior. When there's
123 no inferior, inferior_ptid.pid () will be 0. */
124
125 extern ptid_t inferior_ptid;
126
127 extern void generic_mourn_inferior (void);
128
129 extern CORE_ADDR unsigned_pointer_to_address (struct gdbarch *gdbarch,
130 struct type *type,
131 const gdb_byte *buf);
132 extern void unsigned_address_to_pointer (struct gdbarch *gdbarch,
133 struct type *type, gdb_byte *buf,
134 CORE_ADDR addr);
135 extern CORE_ADDR signed_pointer_to_address (struct gdbarch *gdbarch,
136 struct type *type,
137 const gdb_byte *buf);
138 extern void address_to_signed_pointer (struct gdbarch *gdbarch,
139 struct type *type, gdb_byte *buf,
140 CORE_ADDR addr);
141
142 extern void reopen_exec_file (void);
143
144 /* From misc files */
145
146 extern void default_print_registers_info (struct gdbarch *gdbarch,
147 struct ui_file *file,
148 struct frame_info *frame,
149 int regnum, int all);
150
151 /* Default implementation of gdbarch_print_float_info. Print
152 the values of all floating point registers. */
153
154 extern void default_print_float_info (struct gdbarch *gdbarch,
155 struct ui_file *file,
156 struct frame_info *frame,
157 const char *args);
158
159 extern void child_terminal_info (struct target_ops *self, const char *, int);
160
161 extern void child_terminal_ours (struct target_ops *self);
162
163 extern void child_terminal_ours_for_output (struct target_ops *self);
164
165 extern void child_terminal_inferior (struct target_ops *self);
166
167 extern void child_terminal_save_inferior (struct target_ops *self);
168
169 extern void child_terminal_init (struct target_ops *self);
170
171 extern void child_terminal_init_with_pgrp (int pgrp);
172
173 extern void child_pass_ctrlc (struct target_ops *self);
174
175 extern void child_interrupt (struct target_ops *self);
176
177 /* From fork-child.c */
178
179 /* Helper function to call STARTUP_INFERIOR with PID and NUM_TRAPS.
180 This function already calls set_executing. Return the ptid_t from
181 STARTUP_INFERIOR. */
182 extern ptid_t gdb_startup_inferior (pid_t pid, int num_traps);
183
184 /* From infcmd.c */
185
186 /* Initial inferior setup. Determines the exec file is not yet known,
187 takes any necessary post-attaching actions, fetches the target
188 description and syncs the shared library list. */
189
190 extern void setup_inferior (int from_tty);
191
192 extern void post_create_inferior (struct target_ops *, int);
193
194 extern void attach_command (const char *, int);
195
196 extern const char *get_inferior_args (void);
197
198 extern void set_inferior_args (const char *);
199
200 extern void set_inferior_args_vector (int, char **);
201
202 extern void registers_info (const char *, int);
203
204 extern void continue_1 (int all_threads);
205
206 extern void interrupt_target_1 (bool all_threads);
207
208 using delete_longjmp_breakpoint_cleanup
209 = FORWARD_SCOPE_EXIT (delete_longjmp_breakpoint);
210
211 extern void detach_command (const char *, int);
212
213 extern void notice_new_inferior (struct thread_info *, int, int);
214
215 extern struct value *get_return_value (struct value *function,
216 struct type *value_type);
217
218 /* Prepare for execution command. TARGET is the target that will run
219 the command. BACKGROUND determines whether this is a foreground
220 (synchronous) or background (asynchronous) command. */
221
222 extern void prepare_execution_command (struct target_ops *target,
223 int background);
224
225 /* Nonzero if stopped due to completion of a stack dummy routine. */
226
227 extern enum stop_stack_kind stop_stack_dummy;
228
229 /* Nonzero if program stopped due to a random (unexpected) signal in
230 inferior process. */
231
232 extern int stopped_by_random_signal;
233
234 /* Print notices on inferior events (attach, detach, etc.), set with
235 `set print inferior-events'. */
236 extern bool print_inferior_events;
237
238 /* Anything but NO_STOP_QUIETLY means we expect a trap and the caller
239 will handle it themselves. STOP_QUIETLY is used when running in
240 the shell before the child program has been exec'd and when running
241 through shared library loading. STOP_QUIETLY_REMOTE is used when
242 setting up a remote connection; it is like STOP_QUIETLY_NO_SIGSTOP
243 except that there is no need to hide a signal. */
244
245 /* STOP_QUIETLY_NO_SIGSTOP is used to handle a tricky situation with attach.
246 When doing an attach, the kernel stops the debuggee with a SIGSTOP.
247 On newer GNU/Linux kernels (>= 2.5.61) the handling of SIGSTOP for
248 a ptraced process has changed. Earlier versions of the kernel
249 would ignore these SIGSTOPs, while now SIGSTOP is treated like any
250 other signal, i.e. it is not muffled.
251
252 If the gdb user does a 'continue' after the 'attach', gdb passes
253 the global variable stop_signal (which stores the signal from the
254 attach, SIGSTOP) to the ptrace(PTRACE_CONT,...) call. This is
255 problematic, because the kernel doesn't ignore such SIGSTOP
256 now. I.e. it is reported back to gdb, which in turn presents it
257 back to the user.
258
259 To avoid the problem, we use STOP_QUIETLY_NO_SIGSTOP, which allows
260 gdb to clear the value of stop_signal after the attach, so that it
261 is not passed back down to the kernel. */
262
263 enum stop_kind
264 {
265 NO_STOP_QUIETLY = 0,
266 STOP_QUIETLY,
267 STOP_QUIETLY_REMOTE,
268 STOP_QUIETLY_NO_SIGSTOP
269 };
270
271 \f
272 /* Possible values for gdbarch_call_dummy_location. */
273 #define ON_STACK 1
274 #define AT_ENTRY_POINT 4
275
276 /* Base class for target-specific inferior data. */
277
278 struct private_inferior
279 {
280 virtual ~private_inferior () = 0;
281 };
282
283 /* Inferior process specific part of `struct infcall_control_state'.
284
285 Inferior thread counterpart is `struct thread_control_state'. */
286
287 struct inferior_control_state
288 {
289 inferior_control_state ()
290 : stop_soon (NO_STOP_QUIETLY)
291 {
292 }
293
294 explicit inferior_control_state (enum stop_kind when)
295 : stop_soon (when)
296 {
297 }
298
299 /* See the definition of stop_kind above. */
300 enum stop_kind stop_soon;
301 };
302
303 /* Return a pointer to the current inferior. */
304 extern inferior *current_inferior ();
305
306 extern void set_current_inferior (inferior *);
307
308 /* Switch inferior (and program space) to INF, and switch to no thread
309 selected. */
310 extern void switch_to_inferior_no_thread (inferior *inf);
311
312 /* GDB represents the state of each program execution with an object
313 called an inferior. An inferior typically corresponds to a process
314 but is more general and applies also to targets that do not have a
315 notion of processes. Each run of an executable creates a new
316 inferior, as does each attachment to an existing process.
317 Inferiors have unique internal identifiers that are different from
318 target process ids. Each inferior may in turn have multiple
319 threads running in it.
320
321 Inferiors are intrusively refcounted objects. Unlike thread
322 objects, being the user-selected inferior is considered a strong
323 reference and is thus accounted for in the inferior object's
324 refcount (see set_current_inferior). When GDB needs to remember
325 the selected inferior to later restore it, GDB temporarily bumps
326 the inferior object's refcount, to prevent something deleting the
327 inferior object before reverting back (e.g., due to a
328 "remove-inferiors" command (see
329 scoped_restore_current_inferior). All other inferior
330 references are considered weak references. Inferiors are always
331 listed exactly once in the inferior list, so placing an inferior in
332 the inferior list is an implicit, not counted strong reference. */
333
334 class inferior : public refcounted_object
335 {
336 public:
337 explicit inferior (int pid);
338 ~inferior ();
339
340 /* Returns true if we can delete this inferior. */
341 bool deletable () const { return refcount () == 0; }
342
343 /* Push T in this inferior's target stack. */
344 void push_target (struct target_ops *t)
345 { m_target_stack.push (t); }
346
347 /* Unpush T from this inferior's target stack. */
348 int unpush_target (struct target_ops *t)
349 { return m_target_stack.unpush (t); }
350
351 /* Returns true if T is pushed in this inferior's target stack. */
352 bool target_is_pushed (target_ops *t)
353 { return m_target_stack.is_pushed (t); }
354
355 /* Find the target beneath T in this inferior's target stack. */
356 target_ops *find_target_beneath (const target_ops *t)
357 { return m_target_stack.find_beneath (t); }
358
359 /* Return the target at the top of this inferior's target stack. */
360 target_ops *top_target ()
361 { return m_target_stack.top (); }
362
363 /* Return the target at process_stratum level in this inferior's
364 target stack. */
365 struct process_stratum_target *process_target ()
366 { return (process_stratum_target *) m_target_stack.at (process_stratum); }
367
368 /* Return the target at STRATUM in this inferior's target stack. */
369 target_ops *target_at (enum strata stratum)
370 { return m_target_stack.at (stratum); }
371
372 bool has_execution ()
373 { return target_has_execution_1 (this); }
374
375 /* Pointer to next inferior in singly-linked list of inferiors. */
376 struct inferior *next = NULL;
377
378 /* This inferior's thread list. */
379 thread_info *thread_list = nullptr;
380
381 /* This inferior's ptid to thread map, only contains non exited threads. */
382 ptid_thread_map thread_map;
383
384 /* Returns a range adapter covering the inferior's threads,
385 including exited threads. Used like this:
386
387 for (thread_info *thr : inf->threads ())
388 { .... }
389 */
390 inf_threads_range threads ()
391 { return inf_threads_range (this->thread_list); }
392
393 /* Returns a range adapter covering the inferior's non-exited
394 threads. Used like this:
395
396 for (thread_info *thr : inf->non_exited_threads ())
397 { .... }
398 */
399 inf_non_exited_threads_range non_exited_threads ()
400 { return inf_non_exited_threads_range (this->thread_list); }
401
402 /* Like inferior::threads(), but returns a range adapter that can be
403 used with range-for, safely. I.e., it is safe to delete the
404 currently-iterated thread, like this:
405
406 for (thread_info *t : inf->threads_safe ())
407 if (some_condition ())
408 delete f;
409 */
410 inline safe_inf_threads_range threads_safe ()
411 { return safe_inf_threads_range (this->thread_list); }
412
413 /* Set/get file name for default use for standard in/out in the
414 inferior. On Unix systems, we try to make TERMINAL_NAME the
415 inferior's controlling terminal. If TERMINAL_NAME is nullptr or
416 the empty string, then the inferior inherits GDB's terminal (or
417 GDBserver's if spawning a remote process). */
418 void set_tty (const char *terminal_name);
419 const char *tty ();
420
421 /* Convenient handle (GDB inferior id). Unique across all
422 inferiors. */
423 int num = 0;
424
425 /* Actual target inferior id, usually, a process id. This matches
426 the ptid_t.pid member of threads of this inferior. */
427 int pid = 0;
428 /* True if the PID was actually faked by GDB. */
429 bool fake_pid_p = false;
430
431 /* The highest thread number this inferior ever had. */
432 int highest_thread_num = 0;
433
434 /* State of GDB control of inferior process execution.
435 See `struct inferior_control_state'. */
436 inferior_control_state control;
437
438 /* True if this was an auto-created inferior, e.g. created from
439 following a fork; false, if this inferior was manually added by
440 the user, and we should not attempt to prune it
441 automatically. */
442 bool removable = false;
443
444 /* The address space bound to this inferior. */
445 struct address_space *aspace = NULL;
446
447 /* The program space bound to this inferior. */
448 struct program_space *pspace = NULL;
449
450 /* The arguments string to use when running. */
451 char *args = NULL;
452
453 /* The size of elements in argv. */
454 int argc = 0;
455
456 /* The vector version of arguments. If ARGC is nonzero,
457 then we must compute ARGS from this (via the target).
458 This is always coming from main's argv and therefore
459 should never be freed. */
460 char **argv = NULL;
461
462 /* The current working directory that will be used when starting
463 this inferior. */
464 gdb::unique_xmalloc_ptr<char> cwd;
465
466 /* The terminal state as set by the last target_terminal::terminal_*
467 call. */
468 target_terminal_state terminal_state = target_terminal_state::is_ours;
469
470 /* Environment to use for running inferior,
471 in format described in environ.h. */
472 gdb_environ environment;
473
474 /* True if this child process was attached rather than forked. */
475 bool attach_flag = false;
476
477 /* If this inferior is a vfork child, then this is the pointer to
478 its vfork parent, if GDB is still attached to it. */
479 inferior *vfork_parent = NULL;
480
481 /* If this process is a vfork parent, this is the pointer to the
482 child. Since a vfork parent is left frozen by the kernel until
483 the child execs or exits, a process can only have one vfork child
484 at a given time. */
485 inferior *vfork_child = NULL;
486
487 /* True if this inferior should be detached when it's vfork sibling
488 exits or execs. */
489 bool pending_detach = false;
490
491 /* True if this inferior is a vfork parent waiting for a vfork child
492 not under our control to be done with the shared memory region,
493 either by exiting or execing. */
494 bool waiting_for_vfork_done = false;
495
496 /* True if we're in the process of detaching from this inferior. */
497 bool detaching = false;
498
499 /* What is left to do for an execution command after any thread of
500 this inferior stops. For continuations associated with a
501 specific thread, see `struct thread_info'. */
502 continuation *continuations = NULL;
503
504 /* True if setup_inferior wasn't called for this inferior yet.
505 Until that is done, we must not access inferior memory or
506 registers, as we haven't determined the target
507 architecture/description. */
508 bool needs_setup = false;
509
510 /* Private data used by the target vector implementation. */
511 std::unique_ptr<private_inferior> priv;
512
513 /* HAS_EXIT_CODE is true if the inferior exited with an exit code.
514 In this case, the EXIT_CODE field is also valid. */
515 bool has_exit_code = false;
516 LONGEST exit_code = 0;
517
518 /* Default flags to pass to the symbol reading functions. These are
519 used whenever a new objfile is created. */
520 symfile_add_flags symfile_flags = 0;
521
522 /* Info about an inferior's target description (if it's fetched; the
523 user supplied description's filename, if any; etc.). */
524 target_desc_info *tdesc_info = NULL;
525
526 /* The architecture associated with the inferior through the
527 connection to the target.
528
529 The architecture vector provides some information that is really
530 a property of the inferior, accessed through a particular target:
531 ptrace operations; the layout of certain RSP packets; the
532 solib_ops vector; etc. To differentiate architecture accesses to
533 per-inferior/target properties from
534 per-thread/per-frame/per-objfile properties, accesses to
535 per-inferior/target properties should be made through
536 this gdbarch. */
537 struct gdbarch *gdbarch = NULL;
538
539 /* Data related to displaced stepping. */
540 displaced_step_inferior_state displaced_step_state;
541
542 /* Per inferior data-pointers required by other GDB modules. */
543 REGISTRY_FIELDS;
544
545 private:
546 /* The inferior's target stack. */
547 target_stack m_target_stack;
548
549 /* The name of terminal device to use for I/O. */
550 gdb::unique_xmalloc_ptr<char> m_terminal;
551 };
552
553 /* Keep a registry of per-inferior data-pointers required by other GDB
554 modules. */
555
556 DECLARE_REGISTRY (inferior);
557
558 /* Add an inferior to the inferior list, print a message that a new
559 inferior is found, and return the pointer to the new inferior.
560 Caller may use this pointer to initialize the private inferior
561 data. */
562 extern struct inferior *add_inferior (int pid);
563
564 /* Same as add_inferior, but don't print new inferior notifications to
565 the CLI. */
566 extern struct inferior *add_inferior_silent (int pid);
567
568 extern void delete_inferior (struct inferior *todel);
569
570 /* Delete an existing inferior list entry, due to inferior detaching. */
571 extern void detach_inferior (inferior *inf);
572
573 extern void exit_inferior (inferior *inf);
574
575 extern void exit_inferior_silent (inferior *inf);
576
577 extern void exit_inferior_num_silent (int num);
578
579 extern void inferior_appeared (struct inferior *inf, int pid);
580
581 /* Search function to lookup an inferior of TARG by target 'pid'. */
582 extern struct inferior *find_inferior_pid (process_stratum_target *targ,
583 int pid);
584
585 /* Search function to lookup an inferior of TARG whose pid is equal to
586 'ptid.pid'. */
587 extern struct inferior *find_inferior_ptid (process_stratum_target *targ,
588 ptid_t ptid);
589
590 /* Search function to lookup an inferior by GDB 'num'. */
591 extern struct inferior *find_inferior_id (int num);
592
593 /* Find an inferior bound to PSPACE, giving preference to the current
594 inferior. */
595 extern struct inferior *
596 find_inferior_for_program_space (struct program_space *pspace);
597
598 /* Returns true if the inferior list is not empty. */
599 extern int have_inferiors (void);
600
601 /* Returns the number of live inferiors running on PROC_TARGET (real
602 live processes with execution). */
603 extern int number_of_live_inferiors (process_stratum_target *proc_target);
604
605 /* Returns true if there are any live inferiors in the inferior list
606 (not cores, not executables, real live processes). */
607 extern int have_live_inferiors (void);
608
609 /* Save/restore the current inferior. */
610
611 class scoped_restore_current_inferior
612 {
613 public:
614 scoped_restore_current_inferior ()
615 : m_saved_inf (current_inferior ())
616 {}
617
618 ~scoped_restore_current_inferior ()
619 { set_current_inferior (m_saved_inf); }
620
621 DISABLE_COPY_AND_ASSIGN (scoped_restore_current_inferior);
622
623 private:
624 inferior *m_saved_inf;
625 };
626
627
628 /* Traverse all inferiors. */
629
630 extern struct inferior *inferior_list;
631
632 /* Pull in the internals of the inferiors ranges and iterators. Must
633 be done after struct inferior is defined. */
634 #include "inferior-iter.h"
635
636 /* Return a range that can be used to walk over all inferiors
637 inferiors, with range-for, safely. I.e., it is safe to delete the
638 currently-iterated inferior. When combined with range-for, this
639 allow convenient patterns like this:
640
641 for (inferior *inf : all_inferiors_safe ())
642 if (some_condition ())
643 delete inf;
644 */
645
646 inline all_inferiors_safe_range
647 all_inferiors_safe ()
648 {
649 return {};
650 }
651
652 /* Returns a range representing all inferiors, suitable to use with
653 range-for, like this:
654
655 for (inferior *inf : all_inferiors ())
656 [...]
657 */
658
659 inline all_inferiors_range
660 all_inferiors (process_stratum_target *proc_target = nullptr)
661 {
662 return all_inferiors_range (proc_target);
663 }
664
665 /* Return a range that can be used to walk over all inferiors with PID
666 not zero, with range-for. */
667
668 inline all_non_exited_inferiors_range
669 all_non_exited_inferiors (process_stratum_target *proc_target = nullptr)
670 {
671 return all_non_exited_inferiors_range (proc_target);
672 }
673
674 /* Prune away automatically added inferiors that aren't required
675 anymore. */
676 extern void prune_inferiors (void);
677
678 extern int number_of_inferiors (void);
679
680 extern struct inferior *add_inferior_with_spaces (void);
681
682 /* Print the current selected inferior. */
683 extern void print_selected_inferior (struct ui_out *uiout);
684
685 #endif /* !defined (INFERIOR_H) */
This page took 0.042522 seconds and 4 git commands to generate.