mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
1d506c26d9
This commit is the result of the following actions: - Running gdb/copyright.py to update all of the copyright headers to include 2024, - Manually updating a few files the copyright.py script told me to update, these files had copyright headers embedded within the file, - Regenerating gdbsupport/Makefile.in to refresh it's copyright date, - Using grep to find other files that still mentioned 2023. If these files were updated last year from 2022 to 2023 then I've updated them this year to 2024. I'm sure I've probably missed some dates. Feel free to fix them up as you spot them.
119 lines
4.0 KiB
C++
119 lines
4.0 KiB
C++
/* Base/prototype target for default child (native) targets.
|
|
|
|
Copyright (C) 2004-2024 Free Software Foundation, Inc.
|
|
|
|
This file is part of GDB.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#ifndef INF_CHILD_H
|
|
#define INF_CHILD_H
|
|
|
|
#include "target.h"
|
|
#include "process-stratum-target.h"
|
|
|
|
/* A prototype child target. The client can override it with local
|
|
methods. */
|
|
|
|
class inf_child_target
|
|
: public memory_breakpoint_target<process_stratum_target>
|
|
{
|
|
public:
|
|
inf_child_target () = default;
|
|
~inf_child_target () override = 0;
|
|
|
|
const target_info &info () const override;
|
|
|
|
void close () override;
|
|
|
|
void disconnect (const char *, int) override;
|
|
|
|
void fetch_registers (struct regcache *, int) override = 0;
|
|
void store_registers (struct regcache *, int) override = 0;
|
|
|
|
void prepare_to_store (struct regcache *) override;
|
|
|
|
bool supports_terminal_ours () override;
|
|
void terminal_init () override;
|
|
void terminal_inferior () override;
|
|
void terminal_save_inferior () override;
|
|
void terminal_ours_for_output () override;
|
|
void terminal_ours () override;
|
|
void terminal_info (const char *, int) override;
|
|
|
|
void interrupt () override;
|
|
void pass_ctrlc () override;
|
|
|
|
void follow_exec (inferior *follow_inf, ptid_t ptid,
|
|
const char *execd_pathname) override;
|
|
|
|
void mourn_inferior () override;
|
|
|
|
bool can_run () override;
|
|
|
|
bool can_create_inferior () override;
|
|
void create_inferior (const char *, const std::string &,
|
|
char **, int) override = 0;
|
|
|
|
bool can_attach () override;
|
|
void attach (const char *, int) override = 0;
|
|
|
|
void post_attach (int) override;
|
|
|
|
const char *pid_to_exec_file (int pid) override;
|
|
|
|
int fileio_open (struct inferior *inf, const char *filename,
|
|
int flags, int mode, int warn_if_slow,
|
|
fileio_error *target_errno) override;
|
|
int fileio_pwrite (int fd, const gdb_byte *write_buf, int len,
|
|
ULONGEST offset, fileio_error *target_errno) override;
|
|
int fileio_pread (int fd, gdb_byte *read_buf, int len,
|
|
ULONGEST offset, fileio_error *target_errno) override;
|
|
int fileio_fstat (int fd, struct stat *sb, fileio_error *target_errno) override;
|
|
int fileio_close (int fd, fileio_error *target_errno) override;
|
|
int fileio_unlink (struct inferior *inf,
|
|
const char *filename,
|
|
fileio_error *target_errno) override;
|
|
std::optional<std::string> fileio_readlink (struct inferior *inf,
|
|
const char *filename,
|
|
fileio_error *target_errno) override;
|
|
bool use_agent (bool use) override;
|
|
|
|
bool can_use_agent () override;
|
|
|
|
protected:
|
|
/* Unpush the target if it wasn't explicitly open with "target native"
|
|
and there are no live inferiors left. Note: if calling this as a
|
|
result of a mourn or detach, the current inferior shall already
|
|
have its PID cleared, so it isn't counted as live. That's usually
|
|
done by calling either generic_mourn_inferior or
|
|
detach_inferior. */
|
|
void maybe_unpush_target ();
|
|
};
|
|
|
|
/* Convert the host wait(2) status to a target_waitstatus. */
|
|
|
|
extern target_waitstatus host_status_to_waitstatus (int hoststatus);
|
|
|
|
/* Register TARGET as native target and set it up to respond to the
|
|
"target native" command. */
|
|
extern void add_inf_child_target (inf_child_target *target);
|
|
|
|
/* target_open_ftype callback for inf-child targets. Used by targets
|
|
that want to register an alternative target_info object. Most
|
|
targets use add_inf_child_target instead. */
|
|
extern void inf_child_open_target (const char *arg, int from_tty);
|
|
|
|
#endif
|