2004-04-21 Andrew Cagney <cagney@redhat.com>
[deliverable/binutils-gdb.git] / gdb / gdbcore.h
CommitLineData
c906108c 1/* Machine independent variables that describe the core file under GDB.
00e32a35
AC
2
3 Copyright 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1997, 1998, 1999, 2000, 2001, 2004 Free Software Foundation,
5 Inc.
c906108c 6
c5aa993b 7 This file is part of GDB.
c906108c 8
c5aa993b
JM
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
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
c906108c 13
c5aa993b
JM
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.
c906108c 18
c5aa993b
JM
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA. */
c906108c
SS
23
24/* Interface routines for core, executable, etc. */
25
26#if !defined (GDBCORE_H)
27#define GDBCORE_H 1
28
da3331ec
AC
29struct type;
30
c906108c
SS
31#include "bfd.h"
32
33/* Return the name of the executable file as a string.
34 ERR nonzero means get error if there is none specified;
35 otherwise return 0 in that case. */
36
a14ed312 37extern char *get_exec_file (int err);
c906108c
SS
38
39/* Nonzero if there is a core file. */
40
a14ed312 41extern int have_core_file_p (void);
c906108c
SS
42
43/* Read "memory data" from whatever target or inferior we have.
44 Returns zero if successful, errno value if not. EIO is used for
45 address out of bounds. If breakpoints are inserted, returns shadow
46 contents, not the breakpoints themselves. From breakpoint.c. */
47
a14ed312 48extern int read_memory_nobpt (CORE_ADDR memaddr, char *myaddr, unsigned len);
c906108c
SS
49
50/* Report a memory error with error(). */
51
a14ed312 52extern void memory_error (int status, CORE_ADDR memaddr);
c906108c
SS
53
54/* Like target_read_memory, but report an error if can't read. */
55
a14ed312 56extern void read_memory (CORE_ADDR memaddr, char *myaddr, int len);
c906108c 57
c906108c
SS
58/* Read an integer from debugged memory, given address and number of
59 bytes. */
60
a14ed312 61extern LONGEST read_memory_integer (CORE_ADDR memaddr, int len);
16a0f3e7 62extern int safe_read_memory_integer (CORE_ADDR memaddr, int len, LONGEST *return_value);
c906108c
SS
63
64/* Read an unsigned integer from debugged memory, given address and
65 number of bytes. */
66
a14ed312 67extern ULONGEST read_memory_unsigned_integer (CORE_ADDR memaddr, int len);
c906108c
SS
68
69/* Read a null-terminated string from the debuggee's memory, given address,
c5aa993b 70 * a buffer into which to place the string, and the maximum available space */
0d540cdf 71
a14ed312 72extern void read_memory_string (CORE_ADDR, char *, int);
c906108c 73
0d540cdf
KD
74/* Read the pointer of type TYPE at ADDR, and return the address it
75 represents. */
76
570b8f7c 77CORE_ADDR read_memory_typed_address (CORE_ADDR addr, struct type *type);
0d540cdf 78
c906108c
SS
79/* This takes a char *, not void *. This is probably right, because
80 passing in an int * or whatever is wrong with respect to
81 byteswapping, alignment, different sizes for host vs. target types,
82 etc. */
83
a14ed312 84extern void write_memory (CORE_ADDR memaddr, char *myaddr, int len);
c906108c 85
c26e4683
JB
86/* Store VALUE at ADDR in the inferior as a LEN-byte unsigned integer. */
87extern void write_memory_unsigned_integer (CORE_ADDR addr, int len,
88 ULONGEST value);
89
90/* Store VALUE at ADDR in the inferior as a LEN-byte unsigned integer. */
91extern void write_memory_signed_integer (CORE_ADDR addr, int len,
92 LONGEST value);
93
a14ed312
KB
94extern void generic_search (int len, char *data, char *mask,
95 CORE_ADDR startaddr, int increment,
96 CORE_ADDR lorange, CORE_ADDR hirange,
97 CORE_ADDR * addr_found, char *data_found);
c906108c
SS
98\f
99/* Hook for `exec_file_command' command to call. */
100
507f3c78 101extern void (*exec_file_display_hook) (char *filename);
c906108c
SS
102
103/* Hook for "file_command", which is more useful than above
104 (because it is invoked AFTER symbols are read, not before) */
105
507f3c78 106extern void (*file_changed_hook) (char *filename);
c906108c 107
a14ed312 108extern void specify_exec_file_hook (void (*hook) (char *filename));
c906108c
SS
109
110/* Binary File Diddlers for the exec and core files */
111
112extern bfd *core_bfd;
113extern bfd *exec_bfd;
114
115/* Whether to open exec and core files read-only or read-write. */
116
117extern int write_files;
118
a14ed312 119extern void core_file_command (char *filename, int from_tty);
c906108c 120
1adeb98a
FN
121extern void exec_open (char *filename, int from_tty);
122
a14ed312 123extern void exec_file_attach (char *filename, int from_tty);
c906108c 124
1adeb98a 125extern void exec_file_clear (int from_tty);
c906108c 126
a14ed312 127extern void validate_files (void);
c906108c 128
a14ed312 129extern CORE_ADDR register_addr (int regno, CORE_ADDR blockend);
c906108c 130
c906108c
SS
131#if !defined (KERNEL_U_ADDR)
132extern CORE_ADDR kernel_u_addr;
133#define KERNEL_U_ADDR kernel_u_addr
134#endif
135
136/* The target vector for core files. */
137
138extern struct target_ops core_ops;
139
140/* The current default bfd target. */
141
142extern char *gnutarget;
143
a14ed312 144extern void set_gnutarget (char *);
c906108c
SS
145
146/* Structure to keep track of core register reading functions for
147 various core file types. */
148
c5aa993b
JM
149struct core_fns
150 {
c906108c 151
2acceee2
JM
152 /* BFD flavour that a core file handler is prepared to read. This
153 can be used by the handler's core tasting function as a first
154 level filter to reject BFD's that don't have the right
155 flavour. */
c906108c 156
c5aa993b 157 enum bfd_flavour core_flavour;
c906108c 158
2acceee2
JM
159 /* Core file handler function to call to recognize corefile
160 formats that BFD rejects. Some core file format just don't fit
161 into the BFD model, or may require other resources to identify
162 them, that simply aren't available to BFD (such as symbols from
163 another file). Returns nonzero if the handler recognizes the
164 format, zero otherwise. */
165
507f3c78 166 int (*check_format) (bfd *);
2acceee2
JM
167
168 /* Core file handler function to call to ask if it can handle a
169 given core file format or not. Returns zero if it can't,
170 nonzero otherwise. */
171
507f3c78 172 int (*core_sniffer) (struct core_fns *, bfd *);
2acceee2 173
c5aa993b
JM
174 /* Extract the register values out of the core file and store them where
175 `read_register' will find them.
c906108c 176
c5aa993b
JM
177 CORE_REG_SECT points to the register values themselves, read into
178 memory.
c906108c 179
c5aa993b 180 CORE_REG_SIZE is the size of that area.
c906108c 181
de57eccd
JM
182 WHICH says which set of registers we are handling:
183 0 --- integer registers
184 2 --- floating-point registers, on machines where they are
185 discontiguous
186 3 --- extended floating-point registers, on machines where
187 these are present in yet a third area. (GNU/Linux uses
188 this to get at the SSE registers.)
c906108c 189
c5aa993b
JM
190 REG_ADDR is the offset from u.u_ar0 to the register values relative to
191 core_reg_sect. This is used with old-fashioned core files to locate the
192 registers in a large upage-plus-stack ".reg" section. Original upage
193 address X is at location core_reg_sect+x+reg_addr. */
c906108c 194
507f3c78
KB
195 void (*core_read_registers) (char *core_reg_sect,
196 unsigned core_reg_size,
197 int which, CORE_ADDR reg_addr);
c906108c 198
00e32a35
AC
199 /* Finds the next struct core_fns. They are allocated and
200 initialized in whatever module implements the functions pointed
201 to; an initializer calls deprecated_add_core_fns to add them to
202 the global chain. */
c906108c 203
c5aa993b 204 struct core_fns *next;
c906108c 205
c5aa993b 206 };
c906108c 207
00e32a35
AC
208/* NOTE: cagney/2004-04-05: Replaced by "regset.h" and
209 regset_from_core_section(). */
210extern void deprecated_add_core_fns (struct core_fns *cf);
a14ed312
KB
211extern int default_core_sniffer (struct core_fns *cf, bfd * abfd);
212extern int default_check_format (bfd * abfd);
c906108c 213
c5aa993b 214#endif /* !defined (GDBCORE_H) */
This page took 0.331898 seconds and 4 git commands to generate.