1 /* Copyright (C) 2010-2020 Free Software Foundation, Inc.
3 This file is part of GDB.
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */
18 #ifndef GDBSERVER_LYNX_LOW_H
19 #define GDBSERVER_LYNX_LOW_H
24 /* Some information relative to a given register set. */
26 struct lynx_regset_info
28 /* The ptrace request needed to get/set registers of this set. */
29 int get_request
, set_request
;
30 /* The size of the register set. */
32 /* Fill the buffer BUF from the contents of the given REGCACHE. */
33 void (*fill_function
) (struct regcache
*regcache
, char *buf
);
34 /* Store the register value in BUF in the given REGCACHE. */
35 void (*store_function
) (struct regcache
*regcache
, const char *buf
);
38 /* A list of regsets for the target being debugged, terminated by an entry
39 where the size is negative.
41 This list should be created by the target-specific code. */
43 extern struct lynx_regset_info lynx_target_regsets
[];
45 /* The target-specific operations for LynxOS support. */
47 struct lynx_target_ops
49 /* Architecture-specific setup. */
50 void (*arch_setup
) (void);
53 extern struct lynx_target_ops the_low_target
;
55 /* Target ops definitions for a LynxOS target. */
57 class lynx_process_target
: public process_stratum_target
61 int create_inferior (const char *program
,
62 const std::vector
<char *> &program_args
) override
;
64 int attach (unsigned long pid
) override
;
66 int kill (process_info
*proc
) override
;
68 int detach (process_info
*proc
) override
;
70 void mourn (process_info
*proc
) override
;
72 void join (int pid
) override
;
74 bool thread_alive (ptid_t pid
) override
;
76 void resume (thread_resume
*resume_info
, size_t n
) override
;
78 ptid_t
wait (ptid_t ptid
, target_waitstatus
*status
,
79 int options
) override
;
81 void fetch_registers (regcache
*regcache
, int regno
) override
;
83 void store_registers (regcache
*regcache
, int regno
) override
;
85 int read_memory (CORE_ADDR memaddr
, unsigned char *myaddr
,
88 int write_memory (CORE_ADDR memaddr
, const unsigned char *myaddr
,
91 void request_interrupt () override
;
93 bool supports_hardware_single_step () override
;
95 const gdb_byte
*sw_breakpoint_from_kind (int kind
, int *size
) override
;
98 /* The inferior's target description. This is a global because the
99 LynxOS ports support neither bi-arch nor multi-process. */
100 extern const struct target_desc
*lynx_tdesc
;
102 #endif /* GDBSERVER_LYNX_LOW_H */