btrace: remove leftover comment
[deliverable/binutils-gdb.git] / gdb / nto-tdep.h
CommitLineData
1b883d35
KW
1/* nto-tdep.h - QNX Neutrino target header.
2
618f726f 3 Copyright (C) 2003-2016 Free Software Foundation, Inc.
1b883d35
KW
4
5 Contributed by QNX Software Systems Ltd.
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
1b883d35
KW
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
1b883d35
KW
21
22#ifndef _NTO_TDEP_H
23#define _NTO_TDEP_H
24
1b883d35 25#include "solist.h"
d737fd7f
KW
26#include "osabi.h"
27#include "regset.h"
745a434e 28#include "gdbthread.h"
1b883d35
KW
29
30/* Target operations defined for Neutrino targets (<target>-nto-tdep.c). */
31
32struct nto_target_ops
33{
1b883d35
KW
34/* The CPUINFO flags from the remote. Currently used by
35 i386 for fxsave but future proofing other hosts.
36 This is initialized in procfs_attach or nto_start_remote
37 depending on our host/target. It would only be invalid
38 if we were talking to an older pdebug which didn't support
39 the cpuinfo message. */
d737fd7f 40 unsigned cpuinfo_flags;
1b883d35
KW
41
42/* True if successfully retrieved cpuinfo from remote. */
d737fd7f 43 int cpuinfo_valid;
1b883d35
KW
44
45/* Given a register, return an id that represents the Neutrino
46 regset it came from. If reg == -1 update all regsets. */
d737fd7f 47 int (*regset_id) (int);
1b883d35 48
468e3d51 49 void (*supply_gregset) (struct regcache *, char *);
1b883d35 50
468e3d51 51 void (*supply_fpregset) (struct regcache *, char *);
1b883d35 52
468e3d51 53 void (*supply_altregset) (struct regcache *, char *);
1b883d35
KW
54
55/* Given a regset, tell gdb about registers stored in data. */
468e3d51 56 void (*supply_regset) (struct regcache *, int, char *);
1b883d35
KW
57
58/* Given a register and regset, calculate the offset into the regset
59 and stuff it into the last argument. If regno is -1, calculate the
60 size of the entire regset. Returns length of data, -1 if unknown
61 regset, 0 if unknown register. */
60441ab9 62 int (*register_area) (struct gdbarch *, int, int, unsigned *);
1b883d35 63
0df8b418 64/* Build the Neutrino register set info into the data buffer.
1b883d35 65 Return -1 if unknown regset, 0 otherwise. */
468e3d51 66 int (*regset_fill) (const struct regcache *, int, char *);
1b883d35
KW
67
68/* Gives the fetch_link_map_offsets function exposure outside of
69 solib-svr4.c so that we can override relocate_section_addresses(). */
d737fd7f
KW
70 struct link_map_offsets *(*fetch_link_map_offsets) (void);
71
72/* Used by nto_elf_osabi_sniffer to determine if we're connected to an
73 Neutrino target. */
74 enum gdb_osabi (*is_nto_target) (bfd *abfd);
75};
76
77extern struct nto_target_ops current_nto_target;
78
d737fd7f
KW
79#define nto_cpuinfo_flags (current_nto_target.cpuinfo_flags)
80
81#define nto_cpuinfo_valid (current_nto_target.cpuinfo_valid)
82
83#define nto_regset_id (current_nto_target.regset_id)
84
85#define nto_supply_gregset (current_nto_target.supply_gregset)
86
87#define nto_supply_fpregset (current_nto_target.supply_fpregset)
88
89#define nto_supply_altregset (current_nto_target.supply_altregset)
90
91#define nto_supply_regset (current_nto_target.supply_regset)
92
93#define nto_register_area (current_nto_target.register_area)
94
95#define nto_regset_fill (current_nto_target.regset_fill)
96
97#define nto_fetch_link_map_offsets \
98(current_nto_target.fetch_link_map_offsets)
99
100#define nto_is_nto_target (current_nto_target.is_nto_target)
1b883d35
KW
101
102/* Keep this consistant with neutrino syspage.h. */
103enum
104{
105 CPUTYPE_X86,
106 CPUTYPE_PPC,
107 CPUTYPE_MIPS,
108 CPUTYPE_SPARE,
109 CPUTYPE_ARM,
110 CPUTYPE_SH,
111 CPUTYPE_UNKNOWN
112};
113
114enum
115{
116 OSTYPE_QNX4,
117 OSTYPE_NTO
118};
119
0df8b418 120/* These correspond to the DSMSG_* versions in dsmsgs.h. */
1b883d35
KW
121enum
122{
123 NTO_REG_GENERAL,
124 NTO_REG_FLOAT,
125 NTO_REG_SYSTEM,
126 NTO_REG_ALT,
127 NTO_REG_END
128};
129
130typedef char qnx_reg64[8];
131
132typedef struct _debug_regs
133{
134 qnx_reg64 padding[1024];
135} nto_regset_t;
136
745a434e
AR
137struct private_thread_info
138{
139 short tid;
140 unsigned char state;
141 unsigned char flags;
142 char name[1];
143};
144
a9889169
AR
145/* Per-inferior data, common for both procfs and remote. */
146struct nto_inferior_data
147{
148 /* Last stopped flags result from wait function */
149 unsigned int stopped_flags;
150
151 /* Last known stopped PC */
152 CORE_ADDR stopped_pc;
153};
154
d737fd7f
KW
155/* Generic functions in nto-tdep.c. */
156
157void nto_init_solib_absolute_prefix (void);
158
14ef7606
AR
159char **nto_parse_redirection (char *start_argv[], const char **in,
160 const char **out, const char **err);
d737fd7f 161
d737fd7f 162void nto_relocate_section_addresses (struct so_list *,
0542c86d 163 struct target_section *);
d737fd7f
KW
164
165int nto_map_arch_to_cputype (const char *);
166
167int nto_find_and_open_solib (char *, unsigned, char **);
168
169enum gdb_osabi nto_elf_osabi_sniffer (bfd *abfd);
170
171void nto_initialize_signals (void);
172
d737fd7f
KW
173/* Dummy function for initializing nto_target_ops on targets which do
174 not define a particular regset. */
468e3d51 175void nto_dummy_supply_regset (struct regcache *regcache, char *regs);
d737fd7f
KW
176
177int nto_in_dynsym_resolve_code (CORE_ADDR pc);
178
c15906d8 179char *nto_extra_thread_info (struct target_ops *self, struct thread_info *);
745a434e 180
8a6c0ccd
AR
181LONGEST nto_read_auxv_from_initial_stack (CORE_ADDR inital_stack,
182 gdb_byte *readbuf,
183 LONGEST len, size_t sizeof_auxv_t);
a9889169
AR
184
185struct nto_inferior_data *nto_inferior_data (struct inferior *inf);
186
1b883d35 187#endif
This page took 1.301431 seconds and 4 git commands to generate.