* Rename remote-es1800.c to remote-es.c
[deliverable/binutils-gdb.git] / gdb / inferior.h
CommitLineData
bd5635a1
RP
1/* Variables that describe the inferior process running under GDB:
2 Where it is, why it stopped, and how to step it.
cc221e76 3 Copyright 1986, 1989, 1992 Free Software Foundation, Inc.
bd5635a1
RP
4
5This file is part of GDB.
6
bdbd5f50 7This program is free software; you can redistribute it and/or modify
bd5635a1 8it under the terms of the GNU General Public License as published by
bdbd5f50
JG
9the Free Software Foundation; either version 2 of the License, or
10(at your option) any later version.
bd5635a1 11
bdbd5f50 12This program is distributed in the hope that it will be useful,
bd5635a1
RP
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
bdbd5f50
JG
18along with this program; if not, write to the Free Software
19Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
bd5635a1 20
cc221e76
FF
21#if !defined (INFERIOR_H)
22#define INFERIOR_H 1
23
24/* For symtab_and_line */
25#include "symtab.h"
26
bd5635a1
RP
27/* For bpstat. */
28#include "breakpoint.h"
29
30/* For FRAME_ADDR. */
31#include "frame.h"
32
33/*
34 * Structure in which to save the status of the inferior. Save
35 * through "save_inferior_status", restore through
36 * "restore_inferior_status".
37 * This pair of routines should be called around any transfer of
38 * control to the inferior which you don't want showing up in your
39 * control variables.
40 */
41struct inferior_status {
42 int pc_changed;
43 int stop_signal;
44 int stop_pc;
45 FRAME_ADDR stop_frame_address;
46 bpstat stop_bpstat;
47 int stop_step;
48 int stop_stack_dummy;
49 int stopped_by_random_signal;
50 int trap_expected;
51 CORE_ADDR step_range_start;
52 CORE_ADDR step_range_end;
53 FRAME_ADDR step_frame_address;
54 int step_over_calls;
55 CORE_ADDR step_resume_break_address;
56 int stop_after_trap;
57 int stop_soon_quietly;
58 FRAME_ADDR selected_frame_address;
59 int selected_level;
60 char stop_registers[REGISTER_BYTES];
61 int breakpoint_proceeded;
62 int restore_stack_info;
63 int proceed_to_finish;
64};
65
cc221e76
FF
66extern void
67save_inferior_status PARAMS ((struct inferior_status *, int));
68
69extern void
70restore_inferior_status PARAMS ((struct inferior_status *));
bd5635a1
RP
71
72/* File name for default use for standard in/out in the inferior. */
73
74extern char *inferior_io_terminal;
75
76/* Pid of our debugged inferior, or 0 if no inferior now. */
77
78extern int inferior_pid;
79
80/* Character array containing an image of the inferior programs' registers. */
81
82extern char registers[];
83
310cc570
RP
84/* Array of validity bits (one per register). Nonzero at position XXX_REGNUM
85 means that `registers' contains a valid copy of inferior register XXX. */
86
87extern char register_valid[NUM_REGS];
88
cc221e76
FF
89extern void
90clear_proceed_status PARAMS ((void));
91
92extern void
93proceed PARAMS ((CORE_ADDR, int, int));
94
95extern void
96kill_inferior PARAMS ((void));
97
cc221e76
FF
98extern void
99generic_mourn_inferior PARAMS ((void));
100
101extern void
102terminal_ours PARAMS ((void));
103
104extern void
105run_stack_dummy PARAMS ((CORE_ADDR, char [REGISTER_BYTES]));
106
107extern CORE_ADDR
108read_pc PARAMS ((void));
109
110extern void
111write_pc PARAMS ((CORE_ADDR));
112
113extern void
114wait_for_inferior PARAMS ((void));
115
116extern void
117init_wait_for_inferior PARAMS ((void));
118
119extern void
120close_exec_file PARAMS ((void));
121
122extern void
123reopen_exec_file PARAMS ((void));
124
3aa6856a
JG
125/* The `resume' routine should only be called in special circumstances.
126 Normally, use `proceed', which handles a lot of bookkeeping. */
310cc570
RP
127extern void
128resume PARAMS ((int, int));
129
cc221e76
FF
130/* From misc files */
131
132extern void
133store_inferior_registers PARAMS ((int));
134
135extern void
136fetch_inferior_registers PARAMS ((int));
137
138extern void
139solib_create_inferior_hook PARAMS ((void));
140
cc221e76
FF
141extern void
142child_terminal_info PARAMS ((char *, int));
143
144extern void
145term_info PARAMS ((char *, int));
146
147extern void
148terminal_ours_for_output PARAMS ((void));
149
150extern void
151terminal_inferior PARAMS ((void));
152
153extern void
154terminal_init_inferior PARAMS ((void));
155
34517ebc 156/* From infptrace.c */
cc221e76
FF
157
158extern int
159attach PARAMS ((int));
160
161void
162detach PARAMS ((int));
163
164extern void
165child_resume PARAMS ((int, int));
166
310cc570
RP
167#ifndef PTRACE_ARG3_TYPE
168#define PTRACE_ARG3_TYPE int /* Correct definition for most systems. */
169#endif
170
171extern int
172call_ptrace PARAMS ((int, int, PTRACE_ARG3_TYPE, int));
173
cc221e76
FF
174/* From procfs.c */
175
cc221e76
FF
176extern int
177proc_iterate_over_mappings PARAMS ((int (*) (int, CORE_ADDR)));
178
34517ebc 179/* From fork-child.c */
bd5635a1 180
34517ebc
JG
181extern void
182fork_inferior PARAMS ((char *, char *, char **,
183 void (*) (void),
184 void (*) (int)));
cc221e76
FF
185
186/* From inflow.c */
187
188extern void
189new_tty_prefork PARAMS ((char *));
190
191/* From infrun.c */
192
193extern void
194start_remote PARAMS ((void));
195
cc221e76
FF
196extern void
197normal_stop PARAMS ((void));
198
199extern int
200signal_stop_state PARAMS ((int));
201
202extern int
203signal_print_state PARAMS ((int));
204
205extern int
206signal_pass_state PARAMS ((int));
207
208/* From infcmd.c */
209
210extern void
211tty_command PARAMS ((char *, int));
212
213extern void
214attach_command PARAMS ((char *, int));
215
bd5635a1
RP
216/* Last signal that the inferior received (why it stopped). */
217
218extern int stop_signal;
219
220/* Address at which inferior stopped. */
221
222extern CORE_ADDR stop_pc;
223
224/* Stack frame when program stopped. */
225
226extern FRAME_ADDR stop_frame_address;
227
228/* Chain containing status of breakpoint(s) that we have stopped at. */
229
230extern bpstat stop_bpstat;
231
232/* Flag indicating that a command has proceeded the inferior past the
233 current breakpoint. */
234
235extern int breakpoint_proceeded;
236
237/* Nonzero if stopped due to a step command. */
238
239extern int stop_step;
240
241/* Nonzero if stopped due to completion of a stack dummy routine. */
242
243extern int stop_stack_dummy;
244
245/* Nonzero if program stopped due to a random (unexpected) signal in
246 inferior process. */
247
248extern int stopped_by_random_signal;
249
250/* Range to single step within.
251 If this is nonzero, respond to a single-step signal
252 by continuing to step if the pc is in this range. */
253
254extern CORE_ADDR step_range_start; /* Inclusive */
255extern CORE_ADDR step_range_end; /* Exclusive */
256
257/* Stack frame address as of when stepping command was issued.
258 This is how we know when we step into a subroutine call,
259 and how to set the frame for the breakpoint used to step out. */
260
261extern FRAME_ADDR step_frame_address;
262
263/* 1 means step over all subroutine calls.
264 -1 means step over calls to undebuggable functions. */
265
266extern int step_over_calls;
267
268/* If stepping, nonzero means step count is > 1
269 so don't print frame next time inferior stops
270 if it stops due to stepping. */
271
272extern int step_multi;
273
bdbd5f50
JG
274/* Nonzero means expecting a trap and caller will handle it themselves.
275 It is used after attach, due to attaching to a process;
276 when running in the shell before the child program has been exec'd;
277 and when running some kinds of remote stuff (FIXME?). */
278
cc221e76 279extern int stop_soon_quietly;
bdbd5f50 280
bd5635a1
RP
281/* Nonzero if proceed is being used for a "finish" command or a similar
282 situation when stop_registers should be saved. */
283
284extern int proceed_to_finish;
285
286/* Save register contents here when about to pop a stack dummy frame,
287 if-and-only-if proceed_to_finish is set.
288 Thus this contains the return value from the called function (assuming
289 values are returned in a register). */
290
291extern char stop_registers[REGISTER_BYTES];
292
293/* Nonzero if pc has been changed by the debugger
294 since the inferior stopped. */
295
296extern int pc_changed;
297
298/* Nonzero if the child process in inferior_pid was attached rather
299 than forked. */
300
cc221e76 301extern int attach_flag;
bd5635a1
RP
302\f
303/* Possible values for CALL_DUMMY_LOCATION. */
304#define ON_STACK 1
305#define BEFORE_TEXT_END 2
306#define AFTER_TEXT_END 3
307
308#if !defined (CALL_DUMMY_LOCATION)
bd5635a1 309#define CALL_DUMMY_LOCATION ON_STACK
bd5635a1
RP
310#endif /* No CALL_DUMMY_LOCATION. */
311
312/* Are we in a call dummy? The code below which allows DECR_PC_AFTER_BREAK
313 below is for infrun.c, which may give the macro a pc without that
314 subtracted out. */
315#if !defined (PC_IN_CALL_DUMMY)
316#if CALL_DUMMY_LOCATION == BEFORE_TEXT_END
cc221e76 317extern CORE_ADDR text_end;
bd5635a1
RP
318#define PC_IN_CALL_DUMMY(pc, sp, frame_address) \
319 ((pc) >= text_end - CALL_DUMMY_LENGTH \
34517ebc 320 && (pc) <= text_end + DECR_PC_AFTER_BREAK)
bd5635a1
RP
321#else /* Not before text_end. */
322#if CALL_DUMMY_LOCATION == AFTER_TEXT_END
cc221e76 323extern CORE_ADDR text_end;
bd5635a1
RP
324#define PC_IN_CALL_DUMMY(pc, sp, frame_address) \
325 ((pc) >= text_end \
34517ebc 326 && (pc) <= text_end + CALL_DUMMY_LENGTH + DECR_PC_AFTER_BREAK)
bd5635a1 327#else /* On stack. */
f49cf589
JK
328
329/* This assumes that frame_address is the value of SP_REGNUM before
330 the dummy frame was pushed. The only known machine for which this
331 isn't true is the 29k, which doesn't use ON_STACK. Machines for
332 which it isn't true who want to put stack dummies on the stack
333 could provide their own PC_IN_CALL_DUMMY, or perhaps this macro
334 could be re-written to check for the end of the stack instead
335 (using the target_ops->sections). Are there user programs, libraries,
336 kernel routines, etc. which also execute on the stack? If so, the
337 latter would be a bad idea. */
338
bd5635a1 339#define PC_IN_CALL_DUMMY(pc, sp, frame_address) \
f49cf589 340 ((sp) INNER_THAN (pc) && (frame_address != 0) && (pc) INNER_THAN (frame_address))
bd5635a1
RP
341#endif /* On stack. */
342#endif /* Not before text_end. */
343#endif /* No PC_IN_CALL_DUMMY. */
cc221e76
FF
344
345#endif /* !defined (INFERIOR_H) */
This page took 0.104747 seconds and 4 git commands to generate.