* exec.c: #include "arch-utils.h"
[deliverable/binutils-gdb.git] / gdb / nto-tdep.h
CommitLineData
1b883d35
KW
1/* nto-tdep.h - QNX Neutrino target header.
2
9b254dd1 3 Copyright (C) 2003, 2007, 2008 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
25#include "defs.h"
26#include "solist.h"
d737fd7f
KW
27#include "osabi.h"
28#include "regset.h"
1b883d35
KW
29
30/* Target operations defined for Neutrino targets (<target>-nto-tdep.c). */
31
32struct nto_target_ops
33{
1b883d35 34/* For 'maintenance debug nto-debug' command. */
d737fd7f 35 int internal_debugging;
1b883d35
KW
36
37/* The CPUINFO flags from the remote. Currently used by
38 i386 for fxsave but future proofing other hosts.
39 This is initialized in procfs_attach or nto_start_remote
40 depending on our host/target. It would only be invalid
41 if we were talking to an older pdebug which didn't support
42 the cpuinfo message. */
d737fd7f 43 unsigned cpuinfo_flags;
1b883d35
KW
44
45/* True if successfully retrieved cpuinfo from remote. */
d737fd7f 46 int cpuinfo_valid;
1b883d35
KW
47
48/* Given a register, return an id that represents the Neutrino
49 regset it came from. If reg == -1 update all regsets. */
d737fd7f 50 int (*regset_id) (int);
1b883d35 51
468e3d51 52 void (*supply_gregset) (struct regcache *, char *);
1b883d35 53
468e3d51 54 void (*supply_fpregset) (struct regcache *, char *);
1b883d35 55
468e3d51 56 void (*supply_altregset) (struct regcache *, char *);
1b883d35
KW
57
58/* Given a regset, tell gdb about registers stored in data. */
468e3d51 59 void (*supply_regset) (struct regcache *, int, char *);
1b883d35
KW
60
61/* Given a register and regset, calculate the offset into the regset
62 and stuff it into the last argument. If regno is -1, calculate the
63 size of the entire regset. Returns length of data, -1 if unknown
64 regset, 0 if unknown register. */
d737fd7f 65 int (*register_area) (int, int, unsigned *);
1b883d35
KW
66
67/* Build the Neutrino register set info into the data buffer.
68 Return -1 if unknown regset, 0 otherwise. */
468e3d51 69 int (*regset_fill) (const struct regcache *, int, char *);
1b883d35
KW
70
71/* Gives the fetch_link_map_offsets function exposure outside of
72 solib-svr4.c so that we can override relocate_section_addresses(). */
d737fd7f
KW
73 struct link_map_offsets *(*fetch_link_map_offsets) (void);
74
75/* Used by nto_elf_osabi_sniffer to determine if we're connected to an
76 Neutrino target. */
77 enum gdb_osabi (*is_nto_target) (bfd *abfd);
78};
79
80extern struct nto_target_ops current_nto_target;
81
82#define nto_internal_debugging (current_nto_target.internal_debugging)
83
84#define nto_cpuinfo_flags (current_nto_target.cpuinfo_flags)
85
86#define nto_cpuinfo_valid (current_nto_target.cpuinfo_valid)
87
88#define nto_regset_id (current_nto_target.regset_id)
89
90#define nto_supply_gregset (current_nto_target.supply_gregset)
91
92#define nto_supply_fpregset (current_nto_target.supply_fpregset)
93
94#define nto_supply_altregset (current_nto_target.supply_altregset)
95
96#define nto_supply_regset (current_nto_target.supply_regset)
97
98#define nto_register_area (current_nto_target.register_area)
99
100#define nto_regset_fill (current_nto_target.regset_fill)
101
102#define nto_fetch_link_map_offsets \
103(current_nto_target.fetch_link_map_offsets)
104
105#define nto_is_nto_target (current_nto_target.is_nto_target)
1b883d35
KW
106
107/* Keep this consistant with neutrino syspage.h. */
108enum
109{
110 CPUTYPE_X86,
111 CPUTYPE_PPC,
112 CPUTYPE_MIPS,
113 CPUTYPE_SPARE,
114 CPUTYPE_ARM,
115 CPUTYPE_SH,
116 CPUTYPE_UNKNOWN
117};
118
119enum
120{
121 OSTYPE_QNX4,
122 OSTYPE_NTO
123};
124
125/* These correspond to the DSMSG_* versions in dsmsgs.h. */
126enum
127{
128 NTO_REG_GENERAL,
129 NTO_REG_FLOAT,
130 NTO_REG_SYSTEM,
131 NTO_REG_ALT,
132 NTO_REG_END
133};
134
135typedef char qnx_reg64[8];
136
137typedef struct _debug_regs
138{
139 qnx_reg64 padding[1024];
140} nto_regset_t;
141
d737fd7f
KW
142/* Generic functions in nto-tdep.c. */
143
144void nto_init_solib_absolute_prefix (void);
145
146void nto_set_target(struct nto_target_ops *);
147
148char **nto_parse_redirection (char *start_argv[], char **in,
149 char **out, char **err);
150
151int proc_iterate_over_mappings (int (*func) (int, CORE_ADDR));
152
153void nto_relocate_section_addresses (struct so_list *,
154 struct section_table *);
155
156int nto_map_arch_to_cputype (const char *);
157
158int nto_find_and_open_solib (char *, unsigned, char **);
159
160enum gdb_osabi nto_elf_osabi_sniffer (bfd *abfd);
161
162void nto_initialize_signals (void);
163
164void nto_generic_supply_gpregset (const struct regset *, struct regcache *,
165 int, const void *, size_t);
166
167void nto_generic_supply_fpregset (const struct regset *, struct regcache *,
168 int, const void *, size_t);
169
170void nto_generic_supply_altregset (const struct regset *, struct regcache *,
171 int, const void *, size_t);
172
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
1b883d35 179#endif
This page took 0.39424 seconds and 4 git commands to generate.