* elfxx-mips.c (mips_elf_calculate_relocation): Adjust two other
[deliverable/binutils-gdb.git] / gdb / inferior.h
CommitLineData
c906108c
SS
1/* Variables that describe the inferior process running under GDB:
2 Where it is, why it stopped, and how to step it.
1bac305b
AC
3
4 Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
5 1996, 1998, 1999, 2000, 2001, 2003 Free Software Foundation, 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#if !defined (INFERIOR_H)
25#define INFERIOR_H 1
26
67a2b77e 27struct gdbarch;
72cec141 28struct regcache;
67a2b77e 29
c906108c
SS
30/* For bpstat. */
31#include "breakpoint.h"
32
33/* For enum target_signal. */
34#include "target.h"
35
aa0cd9c1
AC
36/* For struct frame_id. */
37#include "frame.h"
38
7a292a7a 39/* Structure in which to save the status of the inferior. Create/Save
c906108c
SS
40 through "save_inferior_status", restore through
41 "restore_inferior_status".
7a292a7a 42
c906108c
SS
43 This pair of routines should be called around any transfer of
44 control to the inferior which you don't want showing up in your
45 control variables. */
46
7a292a7a 47struct inferior_status;
7a292a7a 48
a14ed312 49extern struct inferior_status *save_inferior_status (int);
7a292a7a 50
a14ed312 51extern void restore_inferior_status (struct inferior_status *);
7a292a7a 52
74b7792f
AC
53extern struct cleanup *make_cleanup_restore_inferior_status (struct inferior_status *);
54
a14ed312 55extern void discard_inferior_status (struct inferior_status *);
7a292a7a 56
a14ed312
KB
57extern void write_inferior_status_register (struct inferior_status
58 *inf_status, int regno,
59 LONGEST val);
c906108c 60
ca6724c1
KB
61/* The -1 ptid, often used to indicate either an error condition
62 or a "don't care" condition, i.e, "run all threads." */
63extern ptid_t minus_one_ptid;
64
65/* The null or zero ptid, often used to indicate no process. */
66extern ptid_t null_ptid;
67
68/* Attempt to find and return an existing ptid with the given PID, LWP,
69 and TID components. If none exists, create a new one and return
70 that. */
71ptid_t ptid_build (int pid, long lwp, long tid);
72
73/* Find/Create a ptid from just a pid. */
74ptid_t pid_to_ptid (int pid);
75
76/* Fetch the pid (process id) component from a ptid. */
77int ptid_get_pid (ptid_t ptid);
78
79/* Fetch the lwp (lightweight process) component from a ptid. */
80long ptid_get_lwp (ptid_t ptid);
81
82/* Fetch the tid (thread id) component from a ptid. */
83long ptid_get_tid (ptid_t ptid);
84
85/* Compare two ptids to see if they are equal */
86extern int ptid_equal (ptid_t p1, ptid_t p2);
87
ce696e05
KB
88/* Save value of inferior_ptid so that it may be restored by
89 a later call to do_cleanups(). Returns the struct cleanup
90 pointer needed for later doing the cleanup. */
91extern struct cleanup * save_inferior_ptid (void);
92
a14ed312 93extern void set_sigint_trap (void);
c906108c 94
a14ed312 95extern void clear_sigint_trap (void);
c906108c 96
a14ed312 97extern void set_sigio_trap (void);
c906108c 98
a14ed312 99extern void clear_sigio_trap (void);
c906108c
SS
100
101/* File name for default use for standard in/out in the inferior. */
102
103extern char *inferior_io_terminal;
104
39f77062
KB
105/* Collected pid, tid, etc. of the debugged inferior. When there's
106 no inferior, PIDGET (inferior_ptid) will be 0. */
c906108c 107
39f77062 108extern ptid_t inferior_ptid;
c906108c 109
43ff13b4
JM
110/* Is the inferior running right now, as a result of a 'run&',
111 'continue&' etc command? This is used in asycn gdb to determine
112 whether a command that the user enters while the target is running
113 is allowed or not. */
114extern int target_executing;
115
116/* Are we simulating synchronous execution? This is used in async gdb
117 to implement the 'run', 'continue' etc commands, which will not
118 redisplay the prompt until the execution is actually over. */
119extern int sync_execution;
120
39f77062 121/* This is only valid when inferior_ptid is non-zero.
c906108c
SS
122
123 If this is 0, then exec events should be noticed and responded to
124 by the debugger (i.e., be reported to the user).
125
126 If this is > 0, then that many subsequent exec events should be
127 ignored (i.e., not be reported to the user).
c5aa993b 128 */
c906108c
SS
129extern int inferior_ignoring_startup_exec_events;
130
131/* This is only valid when inferior_ignoring_startup_exec_events is
132 zero.
133
134 Some targets (stupidly) report more than one exec event per actual
135 call to an event() system call. If only the last such exec event
136 need actually be noticed and responded to by the debugger (i.e.,
137 be reported to the user), then this is the number of "leading"
138 exec events which should be ignored.
c5aa993b 139 */
c906108c
SS
140extern int inferior_ignoring_leading_exec_events;
141
142/* Inferior environment. */
143
144extern struct environ *inferior_environ;
145
a14ed312 146extern void clear_proceed_status (void);
c906108c 147
a14ed312 148extern void proceed (CORE_ADDR, enum target_signal, int);
c906108c 149
5fbbeb29
CF
150/* When set, stop the 'step' command if we enter a function which has
151 no line number information. The normal behavior is that we step
152 over such function. */
153extern int step_stop_if_no_debug;
154
a14ed312 155extern void kill_inferior (void);
c906108c 156
a14ed312 157extern void generic_mourn_inferior (void);
c906108c 158
a790ad35
SC
159extern void terminal_save_ours (void);
160
a14ed312 161extern void terminal_ours (void);
c906108c 162
36160dc4 163extern int run_stack_dummy (CORE_ADDR , struct regcache *);
c906108c 164
a14ed312 165extern CORE_ADDR read_pc (void);
c906108c 166
39f77062 167extern CORE_ADDR read_pc_pid (ptid_t);
c906108c 168
39f77062 169extern CORE_ADDR generic_target_read_pc (ptid_t);
0f71a2f6 170
a14ed312 171extern void write_pc (CORE_ADDR);
c906108c 172
39f77062 173extern void write_pc_pid (CORE_ADDR, ptid_t);
c906108c 174
39f77062 175extern void generic_target_write_pc (CORE_ADDR, ptid_t);
0f71a2f6 176
a14ed312 177extern CORE_ADDR read_sp (void);
c906108c 178
a14ed312 179extern CORE_ADDR generic_target_read_sp (void);
0f71a2f6 180
a14ed312 181extern void generic_target_write_sp (CORE_ADDR);
0f71a2f6 182
a14ed312 183extern CORE_ADDR read_fp (void);
c906108c 184
a14ed312 185extern CORE_ADDR generic_target_read_fp (void);
0f71a2f6 186
66140c26 187extern CORE_ADDR unsigned_pointer_to_address (struct type *type, const void *buf);
4478b372 188
ac2e2ef7
AC
189extern void unsigned_address_to_pointer (struct type *type, void *buf,
190 CORE_ADDR addr);
66140c26
AC
191extern CORE_ADDR signed_pointer_to_address (struct type *type,
192 const void *buf);
ac2e2ef7
AC
193extern void address_to_signed_pointer (struct type *type, void *buf,
194 CORE_ADDR addr);
4478b372 195
a14ed312 196extern void wait_for_inferior (void);
c906108c 197
a14ed312 198extern void fetch_inferior_event (void *);
43ff13b4 199
a14ed312 200extern void init_wait_for_inferior (void);
c906108c 201
a14ed312 202extern void close_exec_file (void);
c906108c 203
a14ed312 204extern void reopen_exec_file (void);
c906108c
SS
205
206/* The `resume' routine should only be called in special circumstances.
207 Normally, use `proceed', which handles a lot of bookkeeping. */
208
a14ed312 209extern void resume (int, enum target_signal);
c906108c
SS
210
211/* From misc files */
212
0ab7a791
AC
213extern void default_print_registers_info (struct gdbarch *gdbarch,
214 struct ui_file *file,
215 struct frame_info *frame,
216 int regnum, int all);
666e11c5 217
a14ed312 218extern void store_inferior_registers (int);
c906108c 219
a14ed312 220extern void fetch_inferior_registers (int);
c906108c 221
a14ed312 222extern void solib_create_inferior_hook (void);
c906108c 223
a14ed312 224extern void child_terminal_info (char *, int);
c906108c 225
a14ed312 226extern void term_info (char *, int);
c906108c 227
a14ed312 228extern void terminal_ours_for_output (void);
c906108c 229
a14ed312 230extern void terminal_inferior (void);
c906108c 231
a14ed312 232extern void terminal_init_inferior (void);
c906108c 233
a14ed312 234extern void terminal_init_inferior_with_pgrp (int pgrp);
c906108c
SS
235
236/* From infptrace.c or infttrace.c */
237
a14ed312 238extern int attach (int);
c906108c 239
a14ed312 240extern void detach (int);
c906108c 241
7a292a7a 242/* PTRACE method of waiting for inferior process. */
39f77062 243int ptrace_wait (ptid_t, int *);
c906108c 244
39f77062 245extern void child_resume (ptid_t, int, enum target_signal);
c906108c
SS
246
247#ifndef PTRACE_ARG3_TYPE
248#define PTRACE_ARG3_TYPE int /* Correct definition for most systems. */
249#endif
250
a14ed312 251extern int call_ptrace (int, int, PTRACE_ARG3_TYPE, int);
c906108c 252
a14ed312 253extern void pre_fork_inferior (void);
c906108c
SS
254
255/* From procfs.c */
256
a14ed312 257extern int proc_iterate_over_mappings (int (*)(int, CORE_ADDR));
c906108c 258
39f77062 259extern ptid_t procfs_first_available (void);
c906108c 260
c906108c
SS
261/* From fork-child.c */
262
a14ed312
KB
263extern void fork_inferior (char *, char *, char **,
264 void (*)(void),
265 void (*)(int), void (*)(void), char *);
c906108c
SS
266
267
a14ed312 268extern void startup_inferior (int);
c906108c 269
552c04a7
TT
270extern char *construct_inferior_arguments (struct gdbarch *, int, char **);
271
c906108c
SS
272/* From inflow.c */
273
a14ed312 274extern void new_tty_prefork (char *);
c906108c 275
a14ed312 276extern int gdb_has_a_terminal (void);
c906108c
SS
277
278/* From infrun.c */
279
a14ed312 280extern void start_remote (void);
c906108c 281
a14ed312 282extern void normal_stop (void);
c906108c 283
a14ed312 284extern int signal_stop_state (int);
c906108c 285
a14ed312 286extern int signal_print_state (int);
c906108c 287
a14ed312 288extern int signal_pass_state (int);
c906108c 289
a14ed312 290extern int signal_stop_update (int, int);
d4f3574e 291
a14ed312 292extern int signal_print_update (int, int);
d4f3574e 293
a14ed312 294extern int signal_pass_update (int, int);
d4f3574e 295
39f77062
KB
296extern void get_last_target_status(ptid_t *ptid,
297 struct target_waitstatus *status);
e02bc4cc 298
6604731b
DJ
299extern void follow_inferior_reset_breakpoints (void);
300
c906108c
SS
301/* From infcmd.c */
302
a14ed312 303extern void tty_command (char *, int);
c906108c 304
a14ed312 305extern void attach_command (char *, int);
c906108c 306
a250df2e 307extern char *get_inferior_args (void);
07091751 308
a250df2e 309extern char *set_inferior_args (char *);
07091751 310
552c04a7
TT
311extern void set_inferior_args_vector (int, char **);
312
36dc181b
EZ
313extern void registers_info (char *, int);
314
315extern void nexti_command (char *, int);
316
317extern void stepi_command (char *, int);
318
319extern void continue_command (char *, int);
320
321extern void interrupt_target_command (char *args, int from_tty);
322
c906108c
SS
323/* Last signal that the inferior received (why it stopped). */
324
325extern enum target_signal stop_signal;
326
327/* Address at which inferior stopped. */
328
329extern CORE_ADDR stop_pc;
330
331/* Chain containing status of breakpoint(s) that we have stopped at. */
332
333extern bpstat stop_bpstat;
334
335/* Flag indicating that a command has proceeded the inferior past the
336 current breakpoint. */
337
338extern int breakpoint_proceeded;
339
340/* Nonzero if stopped due to a step command. */
341
342extern int stop_step;
343
344/* Nonzero if stopped due to completion of a stack dummy routine. */
345
346extern int stop_stack_dummy;
347
348/* Nonzero if program stopped due to a random (unexpected) signal in
349 inferior process. */
350
351extern int stopped_by_random_signal;
352
353/* Range to single step within.
354 If this is nonzero, respond to a single-step signal
355 by continuing to step if the pc is in this range.
356
357 If step_range_start and step_range_end are both 1, it means to step for
358 a single instruction (FIXME: it might clean up wait_for_inferior in a
359 minor way if this were changed to the address of the instruction and
360 that address plus one. But maybe not.). */
361
362extern CORE_ADDR step_range_start; /* Inclusive */
c5aa993b 363extern CORE_ADDR step_range_end; /* Exclusive */
c906108c
SS
364
365/* Stack frame address as of when stepping command was issued.
366 This is how we know when we step into a subroutine call,
367 and how to set the frame for the breakpoint used to step out. */
368
aa0cd9c1 369extern struct frame_id step_frame_id;
c906108c
SS
370
371/* Our notion of the current stack pointer. */
372
373extern CORE_ADDR step_sp;
374
375/* 1 means step over all subroutine calls.
376 -1 means step over calls to undebuggable functions. */
377
5fbbeb29
CF
378enum step_over_calls_kind
379 {
380 STEP_OVER_NONE,
381 STEP_OVER_ALL,
a4acd088
CF
382 STEP_OVER_UNDEBUGGABLE
383 };
384
385extern enum step_over_calls_kind step_over_calls;
c906108c
SS
386
387/* If stepping, nonzero means step count is > 1
388 so don't print frame next time inferior stops
389 if it stops due to stepping. */
390
391extern int step_multi;
392
c54cfec8
EZ
393/* Nonzero means expecting a trap and caller will handle it
394 themselves. It is used when running in the shell before the child
395 program has been exec'd; and when running some kinds of remote
396 stuff (FIXME?). */
397
398/* It is also used after attach, due to attaching to a process. This
399 is a bit trickier. When doing an attach, the kernel stops the
400 debuggee with a SIGSTOP. On newer GNU/Linux kernels (>= 2.5.61)
401 the handling of SIGSTOP for a ptraced process has changed. Earlier
402 versions of the kernel would ignore these SIGSTOPs, while now
403 SIGSTOP is treated like any other signal, i.e. it is not muffled.
404
405 If the gdb user does a 'continue' after the 'attach', gdb passes
406 the global variable stop_signal (which stores the signal from the
407 attach, SIGSTOP) to the ptrace(PTRACE_CONT,...) call. This is
408 problematic, because the kernel doesn't ignore such SIGSTOP
409 now. I.e. it is reported back to gdb, which in turn presents it
410 back to the user.
411
412 To avoid the problem, we use STOP_QUIETLY_NO_SIGSTOP, which allows
413 gdb to clear the value of stop_signal after the attach, so that it
414 is not passed back down to the kernel. */
415
416enum stop_kind
417 {
418 NO_STOP_QUIETLY = 0,
419 STOP_QUIETLY,
420 STOP_QUIETLY_NO_SIGSTOP
421 };
c906108c 422
c0236d92 423extern enum stop_kind stop_soon;
c906108c
SS
424
425/* Nonzero if proceed is being used for a "finish" command or a similar
426 situation when stop_registers should be saved. */
427
428extern int proceed_to_finish;
429
430/* Save register contents here when about to pop a stack dummy frame,
431 if-and-only-if proceed_to_finish is set.
432 Thus this contains the return value from the called function (assuming
433 values are returned in a register). */
434
72cec141 435extern struct regcache *stop_registers;
c906108c 436
39f77062 437/* Nonzero if the child process in inferior_ptid was attached rather
c906108c
SS
438 than forked. */
439
440extern int attach_flag;
441\f
c906108c
SS
442/* Possible values for CALL_DUMMY_LOCATION. */
443#define ON_STACK 1
c906108c
SS
444#define AT_ENTRY_POINT 4
445
ba886e9d
AC
446/* FIXME: cagney/2000-04-17: gdbarch should manage this. The default
447 shouldn't be necessary. */
448
7a292a7a 449#if !defined PUSH_DUMMY_FRAME
8e65ff28 450#define PUSH_DUMMY_FRAME (internal_error (__FILE__, __LINE__, "PUSH_DUMMY_FRAME"), 0)
7a292a7a 451#endif
7a292a7a
SS
452
453#if !defined STORE_STRUCT_RETURN
8e65ff28 454#define STORE_STRUCT_RETURN(a1,a2) (internal_error (__FILE__, __LINE__, "STORE_STRUCT_RETURN"), 0)
7a292a7a
SS
455#endif
456
457
458/* Are we in a call dummy? */
459
b4b88177
AC
460/* NOTE: cagney/2002-11-24: Targets need to both switch to generic
461 dummy frames, and use generic_pc_in_call_dummy(). The generic
462 version should be able to handle all cases since that code works by
463 saving the address of the dummy's breakpoint (where ever it is). */
464
465extern int deprecated_pc_in_call_dummy_on_stack (CORE_ADDR pc,
466 CORE_ADDR sp,
467 CORE_ADDR frame_address);
7a292a7a 468
b4b88177
AC
469/* NOTE: cagney/2002-11-24: Targets need to both switch to generic
470 dummy frames, and use generic_pc_in_call_dummy(). The generic
471 version should be able to handle all cases since that code works by
472 saving the address of the dummy's breakpoint (where ever it is). */
473
474extern int deprecated_pc_in_call_dummy_at_entry_point (CORE_ADDR pc,
475 CORE_ADDR sp,
476 CORE_ADDR frame_address);
c906108c
SS
477
478/* It's often not enough for our clients to know whether the PC is merely
479 somewhere within the call dummy. They may need to know whether the
480 call dummy has actually completed. (For example, wait_for_inferior
481 wants to know when it should truly stop because the call dummy has
482 completed. If we're single-stepping because of slow watchpoints,
483 then we may find ourselves stopped at the entry of the call dummy,
484 and want to continue stepping until we reach the end.)
485
486 Note that this macro is intended for targets (like HP-UX) which
487 require more than a single breakpoint in their call dummies, and
488 therefore cannot use the CALL_DUMMY_BREAKPOINT_OFFSET mechanism.
489
490 If a target does define CALL_DUMMY_BREAKPOINT_OFFSET, then this
491 default implementation of CALL_DUMMY_HAS_COMPLETED is sufficient.
492 Else, a target may wish to supply an implementation that works in
493 the presense of multiple breakpoints in its call dummy.
c5aa993b 494 */
c906108c
SS
495#if !defined(CALL_DUMMY_HAS_COMPLETED)
496#define CALL_DUMMY_HAS_COMPLETED(pc, sp, frame_address) \
ae45cd16 497 DEPRECATED_PC_IN_CALL_DUMMY((pc), (sp), (frame_address))
c906108c
SS
498#endif
499
500/* If STARTUP_WITH_SHELL is set, GDB's "run"
501 will attempts to start up the debugee under a shell.
502 This is in order for argument-expansion to occur. E.g.,
503 (gdb) run *
504 The "*" gets expanded by the shell into a list of files.
505 While this is a nice feature, it turns out to interact badly
506 with some of the catch-fork/catch-exec features we have added.
507 In particular, if the shell does any fork/exec's before
508 the exec of the target program, that can confuse GDB.
509 To disable this feature, set STARTUP_WITH_SHELL to 0.
510 To enable this feature, set STARTUP_WITH_SHELL to 1.
511 The catch-exec traps expected during start-up will
512 be 1 if target is not started up with a shell, 2 if it is.
513 - RT
514 If you disable this, you need to decrement
515 START_INFERIOR_TRAPS_EXPECTED in tm.h. */
516#define STARTUP_WITH_SHELL 1
517#if !defined(START_INFERIOR_TRAPS_EXPECTED)
518#define START_INFERIOR_TRAPS_EXPECTED 2
519#endif
520#endif /* !defined (INFERIOR_H) */
This page took 0.316086 seconds and 4 git commands to generate.