1 /* Internal interfaces for the QNX Neutrino specific target code for gdbserver.
2 Copyright (C) 2009-2020 Free Software Foundation, Inc.
4 This file is part of GDB.
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.
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.
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/>. */
19 #ifndef GDBSERVER_NTO_LOW_H
20 #define GDBSERVER_NTO_LOW_H
35 /* Architecture specific setup. */
36 void (*arch_setup
) (void);
38 int (*register_offset
) (int gdbregno
);
39 const unsigned char *breakpoint
;
43 extern struct nto_target_ops the_low_target
;
45 /* Target ops definitions for a QNX Neutrino target. */
47 class nto_process_target
: public process_stratum_target
51 int create_inferior (const char *program
,
52 const std::vector
<char *> &program_args
) override
;
54 int attach (unsigned long pid
) override
;
56 int kill (process_info
*proc
) override
;
58 int detach (process_info
*proc
) override
;
60 void mourn (process_info
*proc
) override
;
62 void join (int pid
) override
;
64 bool thread_alive (ptid_t pid
) override
;
66 void resume (thread_resume
*resume_info
, size_t n
) override
;
68 ptid_t
wait (ptid_t ptid
, target_waitstatus
*status
,
69 int options
) override
;
71 void fetch_registers (regcache
*regcache
, int regno
) override
;
73 void store_registers (regcache
*regcache
, int regno
) override
;
75 int read_memory (CORE_ADDR memaddr
, unsigned char *myaddr
,
78 int write_memory (CORE_ADDR memaddr
, const unsigned char *myaddr
,
81 void request_interrupt () override
;
83 bool supports_read_auxv () override
;
85 int read_auxv (CORE_ADDR offset
, unsigned char *myaddr
,
86 unsigned int len
) override
;
88 bool supports_z_point_type (char z_type
) override
;
90 int insert_point (enum raw_bkpt_type type
, CORE_ADDR addr
,
91 int size
, raw_breakpoint
*bp
) override
;
93 int remove_point (enum raw_bkpt_type type
, CORE_ADDR addr
,
94 int size
, raw_breakpoint
*bp
) override
;
96 bool supports_hardware_single_step () override
;
98 bool stopped_by_watchpoint () override
;
100 CORE_ADDR
stopped_data_address () override
;
102 const gdb_byte
*sw_breakpoint_from_kind (int kind
, int *size
) override
;
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
;
109 #endif /* GDBSERVER_NTO_LOW_H */