Automatic date update in version.in
[deliverable/binutils-gdb.git] / gdb / inf-child.h
CommitLineData
91f83b02 1/* Base/prototype target for default child (native) targets.
5bf970f9 2
3666a048 3 Copyright (C) 2004-2021 Free Software Foundation, Inc.
5bf970f9
AC
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
5bf970f9
AC
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
5bf970f9
AC
19
20#ifndef INF_CHILD_H
21#define INF_CHILD_H
22
f6ac5f3d 23#include "target.h"
3b3dac9b 24#include "process-stratum-target.h"
5bf970f9 25
f6ac5f3d
PA
26/* A prototype child target. The client can override it with local
27 methods. */
5bf970f9 28
f6ac5f3d 29class inf_child_target
3b3dac9b 30 : public memory_breakpoint_target<process_stratum_target>
f6ac5f3d
PA
31{
32public:
3b3dac9b 33 inf_child_target () = default;
f6ac5f3d 34 ~inf_child_target () override = 0;
dab06dbe 35
d9f719f1 36 const target_info &info () const override;
f6ac5f3d 37
f6ac5f3d
PA
38 void close () override;
39
40 void disconnect (const char *, int) override;
41
42 void fetch_registers (struct regcache *, int) override = 0;
43 void store_registers (struct regcache *, int) override = 0;
44
45 void prepare_to_store (struct regcache *) override;
46
47 bool supports_terminal_ours () override;
48 void terminal_init () override;
49 void terminal_inferior () override;
ae739fe7 50 void terminal_save_inferior () override;
f6ac5f3d
PA
51 void terminal_ours_for_output () override;
52 void terminal_ours () override;
53 void terminal_info (const char *, int) override;
54
55 void interrupt () override;
56 void pass_ctrlc () override;
dab06dbe 57
f6ac5f3d 58 void post_startup_inferior (ptid_t) override;
6a3cb8e8 59
737358ba
SM
60 void follow_exec (inferior *follow_inf, ptid_t ptid,
61 const char *execd_pathname) override;
62
f6ac5f3d 63 void mourn_inferior () override;
6a3cb8e8 64
57810aa7 65 bool can_run () override;
c1ee2fb3 66
f6ac5f3d
PA
67 bool can_create_inferior () override;
68 void create_inferior (const char *, const std::string &,
69 char **, int) override = 0;
c1ee2fb3 70
f6ac5f3d
PA
71 bool can_attach () override;
72 void attach (const char *, int) override = 0;
6a3cb8e8 73
f6ac5f3d
PA
74 void post_attach (int) override;
75
f6ac5f3d
PA
76 char *pid_to_exec_file (int pid) override;
77
f6ac5f3d
PA
78 int fileio_open (struct inferior *inf, const char *filename,
79 int flags, int mode, int warn_if_slow,
80 int *target_errno) override;
81 int fileio_pwrite (int fd, const gdb_byte *write_buf, int len,
82 ULONGEST offset, int *target_errno) override;
83 int fileio_pread (int fd, gdb_byte *read_buf, int len,
84 ULONGEST offset, int *target_errno) override;
85 int fileio_fstat (int fd, struct stat *sb, int *target_errno) override;
86 int fileio_close (int fd, int *target_errno) override;
87 int fileio_unlink (struct inferior *inf,
88 const char *filename,
89 int *target_errno) override;
90 gdb::optional<std::string> fileio_readlink (struct inferior *inf,
91 const char *filename,
92 int *target_errno) override;
57810aa7 93 bool use_agent (bool use) override;
f6ac5f3d 94
57810aa7 95 bool can_use_agent () override;
f6ac5f3d
PA
96
97protected:
98 /* Unpush the target if it wasn't explicitly open with "target native"
99 and there are no live inferiors left. Note: if calling this as a
100 result of a mourn or detach, the current inferior shall already
101 have its PID cleared, so it isn't counted as live. That's usually
102 done by calling either generic_mourn_inferior or
103 detach_inferior. */
104 void maybe_unpush_target ();
105};
106
107/* Functions for helping to write a native target. */
108
109/* This is for native targets which use a unix/POSIX-style waitstatus. */
110extern void store_waitstatus (struct target_waitstatus *, int);
6a3cb8e8 111
d9f719f1
PA
112/* Register TARGET as native target and set it up to respond to the
113 "target native" command. */
114extern void add_inf_child_target (inf_child_target *target);
115
116/* target_open_ftype callback for inf-child targets. Used by targets
117 that want to register an alternative target_info object. Most
118 targets use add_inf_child_target instead. */
119extern void inf_child_open_target (const char *arg, int from_tty);
120
5bf970f9 121#endif
This page took 1.573849 seconds and 4 git commands to generate.