gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gdbserver / nto-low.h
1 /* Internal interfaces for the QNX Neutrino specific target code for gdbserver.
2 Copyright (C) 2009-2020 Free Software Foundation, Inc.
3
4 This file is part of GDB.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
18
19 #ifndef GDBSERVER_NTO_LOW_H
20 #define GDBSERVER_NTO_LOW_H
21
22 struct target_desc;
23
24 enum regset_type
25 {
26 NTO_REG_GENERAL,
27 NTO_REG_FLOAT,
28 NTO_REG_SYSTEM,
29 NTO_REG_ALT,
30 NTO_REG_END
31 };
32
33 struct nto_target_ops
34 {
35 /* Architecture specific setup. */
36 void (*arch_setup) (void);
37 int num_regs;
38 int (*register_offset) (int gdbregno);
39 const unsigned char *breakpoint;
40 int breakpoint_len;
41 };
42
43 extern struct nto_target_ops the_low_target;
44
45 /* Target ops definitions for a QNX Neutrino target. */
46
47 class nto_process_target : public process_stratum_target
48 {
49 public:
50
51 int create_inferior (const char *program,
52 const std::vector<char *> &program_args) override;
53
54 int attach (unsigned long pid) override;
55
56 int kill (process_info *proc) override;
57
58 int detach (process_info *proc) override;
59
60 void mourn (process_info *proc) override;
61
62 void join (int pid) override;
63
64 bool thread_alive (ptid_t pid) override;
65
66 void resume (thread_resume *resume_info, size_t n) override;
67
68 ptid_t wait (ptid_t ptid, target_waitstatus *status,
69 int options) override;
70
71 void fetch_registers (regcache *regcache, int regno) override;
72
73 void store_registers (regcache *regcache, int regno) override;
74
75 int read_memory (CORE_ADDR memaddr, unsigned char *myaddr,
76 int len) override;
77
78 int write_memory (CORE_ADDR memaddr, const unsigned char *myaddr,
79 int len) override;
80
81 void request_interrupt () override;
82
83 bool supports_read_auxv () override;
84
85 int read_auxv (CORE_ADDR offset, unsigned char *myaddr,
86 unsigned int len) override;
87
88 bool supports_z_point_type (char z_type) override;
89
90 int insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
91 int size, raw_breakpoint *bp) override;
92
93 int remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
94 int size, raw_breakpoint *bp) override;
95
96 bool supports_hardware_single_step () override;
97
98 bool stopped_by_watchpoint () override;
99
100 CORE_ADDR stopped_data_address () override;
101
102 const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
103 };
104
105 /* The inferior's target description. This is a global because the
106 LynxOS ports support neither bi-arch nor multi-process. */
107 extern const struct target_desc *nto_tdesc;
108
109 #endif /* GDBSERVER_NTO_LOW_H */
This page took 0.032878 seconds and 4 git commands to generate.