⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inferior.h

📁 早期freebsd实现
💻 H
字号:
/* Variables that describe the inferior process running under GDB:   Where it is, why it stopped, and how to step it.   Copyright 1986, 1989, 1992 Free Software Foundation, Inc.This file is part of GDB.This program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2 of the License, or(at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */#if !defined (INFERIOR_H)#define INFERIOR_H 1/* For symtab_and_line */#include "symtab.h"/* For bpstat.  */#include "breakpoint.h"/* For FRAME_ADDR.  */#include "frame.h"/* * Structure in which to save the status of the inferior.  Save * through "save_inferior_status", restore through * "restore_inferior_status". * This pair of routines should be called around any transfer of * control to the inferior which you don't want showing up in your * control variables. */struct inferior_status {  int pc_changed;  int stop_signal;  int stop_pc;  FRAME_ADDR stop_frame_address;  bpstat stop_bpstat;  int stop_step;  int stop_stack_dummy;  int stopped_by_random_signal;  int trap_expected;  CORE_ADDR step_range_start;  CORE_ADDR step_range_end;  FRAME_ADDR step_frame_address;  int step_over_calls;  CORE_ADDR step_resume_break_address;  int stop_after_trap;  int stop_soon_quietly;  FRAME_ADDR selected_frame_address;  int selected_level;  char register_context[REGISTER_BYTES];  int breakpoint_proceeded;  int restore_stack_info;};extern voidsave_inferior_status PARAMS ((struct inferior_status *, int));extern voidrestore_inferior_status PARAMS ((struct inferior_status *));/* File name for default use for standard in/out in the inferior.  */extern char *inferior_io_terminal;/* Pid of our debugged inferior, or 0 if no inferior now.  */extern int inferior_pid;/* Character array containing an image of the inferior programs' registers.  */extern char registers[];/* Array of validity bits (one per register).  Nonzero at position XXX_REGNUM   means that `registers' contains a valid copy of inferior register XXX.  */extern char register_valid[NUM_REGS];extern voidclear_proceed_status PARAMS ((void));extern voidproceed PARAMS ((CORE_ADDR, int, int));extern voidkill_inferior PARAMS ((void));extern voidgeneric_mourn_inferior PARAMS ((void));extern voidterminal_ours PARAMS ((void));extern voidrun_stack_dummy PARAMS ((CORE_ADDR, char [REGISTER_BYTES]));extern CORE_ADDRread_pc PARAMS ((void));extern voidwrite_pc PARAMS ((CORE_ADDR));extern voidwait_for_inferior PARAMS ((void));extern voidinit_wait_for_inferior PARAMS ((void));extern voidclose_exec_file PARAMS ((void));extern voidreopen_exec_file PARAMS ((void));/* The `resume' routine should only be called in special circumstances.   Normally, use `proceed', which handles a lot of bookkeeping.  */extern voidresume PARAMS ((int, int));/* From misc files */extern voidstore_inferior_registers PARAMS ((int));extern voidfetch_inferior_registers PARAMS ((int));extern void solib_create_inferior_hook PARAMS ((void));extern voidchild_terminal_info PARAMS ((char *, int));extern voidterm_info PARAMS ((char *, int));extern voidterminal_ours_for_output PARAMS ((void));extern voidterminal_inferior PARAMS ((void));extern voidterminal_init_inferior PARAMS ((void));/* From infptrace.c */extern intattach PARAMS ((int));voiddetach PARAMS ((int));extern voidchild_resume PARAMS ((int, int));#ifndef PTRACE_ARG3_TYPE#define PTRACE_ARG3_TYPE int	/* Correct definition for most systems. */#endifextern intcall_ptrace PARAMS ((int, int, PTRACE_ARG3_TYPE, int));/* From procfs.c */extern intproc_iterate_over_mappings PARAMS ((int (*) (int, CORE_ADDR)));/* From fork-child.c */extern voidfork_inferior PARAMS ((char *, char *, char **,		       void (*) (void),		       void (*) (int)));/* From inflow.c */extern voidnew_tty_prefork PARAMS ((char *));/* From infrun.c */extern voidstart_remote PARAMS ((void));extern voidnormal_stop PARAMS ((void));extern intsignal_stop_state PARAMS ((int));extern intsignal_print_state PARAMS ((int));extern intsignal_pass_state PARAMS ((int));/* From infcmd.c */extern voidtty_command PARAMS ((char *, int));extern voidattach_command PARAMS ((char *, int));/* Last signal that the inferior received (why it stopped).  */extern int stop_signal;/* Address at which inferior stopped.  */extern CORE_ADDR stop_pc;/* Stack frame when program stopped.  */extern FRAME_ADDR stop_frame_address;/* Chain containing status of breakpoint(s) that we have stopped at.  */extern bpstat stop_bpstat;/* Flag indicating that a command has proceeded the inferior past the   current breakpoint.  */extern int breakpoint_proceeded;/* Nonzero if stopped due to a step command.  */extern int stop_step;/* Nonzero if stopped due to completion of a stack dummy routine.  */extern int stop_stack_dummy;/* Nonzero if program stopped due to a random (unexpected) signal in   inferior process.  */extern int stopped_by_random_signal;/* Range to single step within.   If this is nonzero, respond to a single-step signal   by continuing to step if the pc is in this range.  */extern CORE_ADDR step_range_start; /* Inclusive */extern CORE_ADDR step_range_end; /* Exclusive *//* Stack frame address as of when stepping command was issued.   This is how we know when we step into a subroutine call,   and how to set the frame for the breakpoint used to step out.  */extern FRAME_ADDR step_frame_address;/* 1 means step over all subroutine calls.   -1 means step over calls to undebuggable functions.  */extern int step_over_calls;/* If stepping, nonzero means step count is > 1   so don't print frame next time inferior stops   if it stops due to stepping.  */extern int step_multi;/* Nonzero means expecting a trap and caller will handle it themselves.   It is used after attach, due to attaching to a process;   when running in the shell before the child program has been exec'd;   and when running some kinds of remote stuff (FIXME?).  */extern int stop_soon_quietly;/* Nonzero if proceed is being used for a "finish" command or a similar   situation when stop_registers should be saved.  */extern int proceed_to_finish;/* Save register contents here when about to pop a stack dummy frame,   if-and-only-if proceed_to_finish is set.   Thus this contains the return value from the called function (assuming   values are returned in a register).  */extern char stop_registers[REGISTER_BYTES];/* Nonzero if pc has been changed by the debugger   since the inferior stopped.  */extern int pc_changed;/* Nonzero if the child process in inferior_pid was attached rather   than forked.  */extern int attach_flag;/* Possible values for CALL_DUMMY_LOCATION.  */#define ON_STACK 1#define BEFORE_TEXT_END 2#define AFTER_TEXT_END 3#if !defined (CALL_DUMMY_LOCATION)#define CALL_DUMMY_LOCATION ON_STACK#endif /* No CALL_DUMMY_LOCATION.  *//* Are we in a call dummy?  The code below which allows DECR_PC_AFTER_BREAK   below is for infrun.c, which may give the macro a pc without that   subtracted out.  */#if !defined (PC_IN_CALL_DUMMY)#if CALL_DUMMY_LOCATION == BEFORE_TEXT_ENDextern CORE_ADDR text_end;#define PC_IN_CALL_DUMMY(pc, sp, frame_address) \  ((pc) >= text_end - CALL_DUMMY_LENGTH         \   && (pc) <= text_end + DECR_PC_AFTER_BREAK)#else /* Not before text_end.  */#if CALL_DUMMY_LOCATION == AFTER_TEXT_ENDextern CORE_ADDR text_end;#define PC_IN_CALL_DUMMY(pc, sp, frame_address) \  ((pc) >= text_end   \   && (pc) <= text_end + CALL_DUMMY_LENGTH + DECR_PC_AFTER_BREAK)#else /* On stack.  */#define PC_IN_CALL_DUMMY(pc, sp, frame_address) \  ((sp) INNER_THAN (pc) && (pc) INNER_THAN (frame_address))#endif /* On stack.  */#endif /* Not before text_end.  */#endif /* No PC_IN_CALL_DUMMY.  */#endif	/* !defined (INFERIOR_H) */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -