📄 hp-symtab.h
字号:
dst_ln_ctx_2, /* next 2 bytes switch context: 13 bit index, 3 bit run length */ dst_ln_ctx_4, /* next 4 bytes switch context: 29 bit index, 3 bit run length */ dst_ln_ctx_end, /* end current context */ dst_ln_col_run_1, /* next byte is column position of start of next statement, */ /* following byte is length of statement */ dst_ln_col_run_2, /* next 2 bytes is column position of start of next statement, */ /* following 2 bytes is length of statement */ dst_ln_init_base1, /* next 4 bytes are absolute PC, followed by 1 byte of line number */ dst_ln_init_base2, /* next 4 bytes are absolute PC, followed by 2 bytes of line number */ dst_ln_init_base3, /* next 4 bytes are absolute PC, followed by 3 bytes of line number */ dst_ln_escape2_END_OF_ENUM } dst_ln_escape2_t; typedef union { struct { unsigned int pc_delta : 4; /* 4 bit pc delta */ int ln_delta : 4; /* 4 bit line number delta */ } delta; struct { unsigned int esc_flag : 4; /* alias for pc_delta */ unsigned int esc_code : 4; /* escape function code (dst_ln_escape1_t, or ...2_t */ } esc; struct { unsigned int esc_flag : 4; /* dst_ln_ctx_spec1, or dst_ln_ctx_spec2 */ unsigned int run_length : 2; unsigned int ctx_index : 2; /* ...spec2 contains index; ...spec1, index - 4 */ } ctx_spec; char sdata; /* signed data byte */ unsigned char udata; /* unsigned data byte */ } dst_ln_entry_t, *dst_ln_entry_ptr_t;/* Warning: although the above union occupies only 1 byte the compiler treats * it as having size 2 (the minimum size of a struct). Therefore a sequence of * dst_ln_entry_t's cannot be described as an array, and walking through such a * sequence requires convoluted code such as * ln_ptr = (dst_ln_entry_ptr_t) (char*) ln_ptr + 1 * We regret the inconvenience. *//* Structure for interpreting the byte following a dst_ln_ctx1 entry */typedef struct { unsigned int ctx1_index : 5; /* 5 bit index into context table */ unsigned int ctx1_run_length : 3; /* 3 bit run length */} dst_ln_ctx1_t, *dst_ln_ctx1_ptr_t;/* Structure for interpreting the bytes following a dst_ln_ctx2 entry */typedef struct { unsigned int ctx2_index : 13; /* 13 bit index into context table */ unsigned int ctx2_run_length : 3; /* 3 bit run length */} dst_ln_ctx2_t, *dst_ln_ctx2_ptr_t;/* Structure for interpreting the bytes following a dst_ln_ctx4 entry */typedef struct { unsigned int ctx4_index : 29; /* 29 bit index into context table */ unsigned int ctx4_run_length : 3; /* 3 bit run length */} dst_ln_ctx4_t, *dst_ln_ctx4_ptr_t;/* PXDB definitions. * * PXDB is a post-processor which takes the executable file * and massages the debug information so that the debugger may * start up and run more efficiently. Some of the tasks * performed by PXDB are: * * o Remove duplicate global type and variable information * from the GNTT, * * o Append the GNTT onto the end of the LNTT and place both * back in the LNTT section, * * o Build quick look-up tables (description follows) for * files, procedures, modules, and paragraphs (for Cobol), * placing these in the GNTT section, * * o Reconstruct the header appearing in the header section * to access this information. * * The "quick look-up" tables are in the $GNTT$ sub-space, in * the following order: * * Procedures -sorted by address * Source files -sorted by address (of the * generated code from routines) * Modules -sorted by address * Classes -<unsorted?> * Address Alias -sorted by index <?> * Object IDs -sorted by object identifier * * Most quick entries have (0-based) indices into the LNTT tables to * the full entries for the item it describes. * * The post-PXDB header is in the $HEADER$ sub-space. Alas, it * occurs in different forms, depending on the optimization level * in the compilation step and whether PXDB was run or not. The * worst part is the forms aren't self-describing, so we'll have * to grovel in the bits to figure out what kind we're looking at * (see hp_get_header in hp-psymtab-read.c). *//* PXDB versions */#define PXDB_VERSION_CPLUSPLUS 1#define PXDB_VERSION_7_4 2#define PXDB_VERSION_CPP_30 3#define PXDB_VERSION_DDE_3_2A 4#define PXDB_VERSION_DDE_3_2 5#define PXDB_VERSION_DDE_4_0 6#define PXDB_VERSION_2_1 1/* Header version for the case that there is no DOC info * but the executable has been processed by pxdb (the easy * case, from "cc -g"). */typedef struct PXDB_struct { int pd_entries; /* # of entries in function look-up table */ int fd_entries; /* # of entries in file look-up table */ int md_entries; /* # of entries in module look-up table */ unsigned int pxdbed : 1; /* 1 => file has been preprocessed */ unsigned int bighdr : 1; /* 1 => this header contains 'time' word */ unsigned int sa_header : 1;/* 1 => created by SA version of pxdb */ /* used for version check in xdb */ unsigned int inlined: 1; /* one or more functions have been inlined */ unsigned int spare:12; short version; /* pxdb header version */ int globals; /* index into the DNTT where GNTT begins */ unsigned int time; /* modify time of file before being pxdbed */ int pg_entries; /* # of entries in label look-up table */ int functions; /* actual number of functions */ int files; /* actual number of files */ int cd_entries; /* # of entries in class look-up table */ int aa_entries; /* # of entries in addr alias look-up table */ int oi_entries; /* # of entries in object id look-up table */} PXDB_header, *PXDB_header_ptr;/* Header version for the case that there is no DOC info and the * executable has NOT been processed by pxdb. */typedef struct XDB_header_struct { long gntt_length; long lntt_length; long slt_length; long vt_length; long xt_length; } XDB_header;/* Header version for the case that there is DOC info and the * executable has been processed by pxdb. */typedef struct DOC_info_PXDB_header_struct { unsigned int xdb_header: 1; /* bit set if this is post-3.1 xdb */ unsigned int doc_header: 1; /* bit set if this is doc-style header*/ unsigned int version: 8; /* version of pxdb see defines * PXDB_VERSION_* in this file */ unsigned int reserved_for_flags: 16;/* for future use; -- must be * set to zero */ unsigned int has_aux_pd_table: 1; /* $GNTT$ has aux PD table */ unsigned int has_expr_table: 1; /* space has $EXPR$ */ unsigned int has_range_table: 1; /* space has $RANGE$ */ unsigned int has_context_table: 1; /* space has $SRC_CTXT$ */ unsigned int has_lines_table: 1; /* space contains a $LINES$ * subspace for line tables. */ unsigned int has_lt_offset_map: 1; /* space contains an lt_offset * subspace for line table mapping */ /* the following fields are the same as those in the PXDB_header in $DEBUG$ */ int pd_entries; /* # of entries in function look-up table */ int fd_entries; /* # of entries in file look-up table */ int md_entries; /* # of entries in module look-up table */ unsigned int pxdbed : 1; /* 1 => file has been preprocessed */ unsigned int bighdr : 1; /* 1 => this header contains 'time' word */ unsigned int sa_header : 1;/* 1 => created by SA version of pxdb */ /* used for version check in xdb */ unsigned int inlined: 1; /* one or more functions have been inlined */ unsigned int spare : 28; int globals; /* index into the DNTT where GNTT begins */ unsigned int time; /* modify time of file before being pxdbed */ int pg_entries; /* # of entries in label look-up table */ int functions; /* actual number of functions */ int files; /* actual number of files */ int cd_entries; /* # of entries in class look-up table */ int aa_entries; /* # of entries in addr alias look-up table */ int oi_entries; /* # of entries in object id look-up table */} DOC_info_PXDB_header;/* Header version for the case that there is DOC info and the * executable has NOT been processed by pxdb. */typedef struct DOC_info_header_struct { unsigned int xdb_header: 1; /* bit set if this is post-3.1 xdb */ unsigned int doc_header: 1; /* bit set if this is doc-style header*/ unsigned int version: 8; /* version of debug/header format. For 10.0 the value will be 1. For "Davis" the value is 2. */ unsigned int reserved_for_flags: 18; /* for future use; -- must be set to zero */ unsigned int has_range_table: 1; /* space contains a $RANGE$ subspace for variable ranges. */ unsigned int has_context_table: 1; /* space contains a $CTXT$ subspace for context/inline table. */ unsigned int has_lines_table: 1; /* space contains a $LINES$ subspace for line tables. */ unsigned int has_lt_offset_map: 1; /* space contains an lt_offset subspace for line table mapping */ long gntt_length; /* same as old header */ long lntt_length; /* same as old header */ long slt_length; /* same as old header */ long vt_length; /* same as old header */ long xt_length; /* same as old header */ long ctxt_length; /* present only if version >= 2 */ long range_length; /* present only if version >= 2 */ long expr_length; /* present only if version >= 2 */} DOC_info_header;typedef union GenericDebugHeader_union{ PXDB_header no_doc; DOC_info_PXDB_header doc; XDB_header no_pxdb_no_doc; DOC_info_header no_pxdb_doc;} GenericDebugHeader;/* Procedure Descriptor: * * An element of the procedure quick look-up table */typedef struct quick_procedure { long isym; /* 0-based index of first symbol*/ /* for procedure in $LNTT$, */ /* i.e. the procedure itself */ CORE_ADDR adrStart; /* memory adr of start of proc */ CORE_ADDR adrEnd; /* memory adr of end of proc */ char *sbAlias; /* alias name of procedure */ char *sbProc; /* real name of procedure */ CORE_ADDR adrBp; /* address of entry breakpoint */ CORE_ADDR adrExitBp; /* address of exit breakpoint */ int icd; /* member of this class (index) */ unsigned int ipd; /* index of template for this */ /* function (index) */ unsigned int unused: 5; unsigned int no_lt_offset: 1;/* no entry in lt_offset table */ unsigned int fTemplate: 1; /* function template */ unsigned int fExpansion: 1; /* function expansion */ unsigned int linked : 1; /* linked with other expansions */ unsigned int duplicate: 1; /* clone of another procedure */ unsigned int overloaded:1; /* overloaded function */ unsigned int member: 1; /* class member function */ unsigned int constructor:1; /* constructor function */ unsigned int destructor:1; /* destructor function */ unsigned int Static: 1; /* static function */ unsigned int Virtual: 1; /* virtual function */ unsigned int constant: 1; /* constant function */ unsigned int pure: 1; /* pure (virtual) function */ unsigned int language: 4; /* procedure's language */ unsigned int inlined: 1; /* function has been inlined */ unsigned int Operator: 1; /* operator function */ unsigned int stub: 1; /* bodyless function */ unsigned int optimize: 2; /* optimization level */ unsigned int level: 5; /* nesting level (top=0) */} quick_procedure_entry, *quick_procedure_entry_ptr;/* Source File Descriptor: * * An element of the source file quick look-up table */typedef struct quick_source { long isym; /* 0-based index in $LNTT$ of */ /* first symbol for this file */ CORE_ADDR adrStart; /* mem adr of start of file's code */ CORE_ADDR adrEnd; /* mem adr of end of file's code */ char *sbFile; /* name of source file */ unsigned int fHasDecl: 1; /* do we have a .d file? */ unsigned int fWarned: 1; /* have warned about age problems? */ unsigned int fSrcfile: 1; /* 0 => include 1=> source */ unsigned short ilnMac; /* lines in file (0 if don't know) */ int ipd; /* 0-based index of first procedure*/ /* in this file, in the quick */ /* look-up table of procedures */ unsigned int *rgLn; /* line pointer array, if any */} quick_file_entry, *quick_file_entry_ptr;/* Module Descriptor: * * An element of the module quick reference table */typedef struct quick_module { long isym; /* 0-based index of first */ /* symbol for module */ CORE_ADDR adrStart; /* adr of start of mod. */ CORE_ADDR adrEnd; /* adr of end of mod. */ char *sbAlias; /* alias name of module */ char *sbMod; /* real name of module */ unsigned int imports: 1; /* module have any imports? */ unsigned int vars_in_front: 1; /* module globals in front? */ unsigned int vars_in_gaps: 1; /* module globals in gaps? */ unsigned int language: 4; /* type of language */ unsigned int unused : 25; unsigned int unused2; /* space for future stuff */} quick_module_entry, *quick_module_entry_ptr;/* Auxiliary Procedure Descriptor: * * An element of the auxiliary procedure quick look-up table */typedef struct quick_aux_procedure { long isym_inln; /* start on inline list for proc */ long spare;} quick_aux_procedure_entry, *quick_aux_procedure_entry_ptr;/* Paragraph Descriptor: * * An element of the paragraph quick look-up table */typedef struct quick_paragraph { long isym; /* first symbol for label (index) */ CORE_ADDR adrStart; /* memory adr of start of label */ CORE_ADDR adrEnd; /* memory adr of end of label */ char *sbLab; /* name of label */ unsigned int inst; /* Used in xdb to store inst @ bp */ unsigned int sect: 1; /* true = section, false = parag. */ unsigned int unused: 31; /* future use */} quick_paragraph_entry, *quick_paragraph_entry_ptr;/* * Class Descriptor: * * An element of the class quick look-up table */typedef struct quick_class { char *sbClass; /* name of class */ long isym; /* class symbol (tag) */ unsigned int type : 2; /* 0=class, 1=union, 2=struct */ unsigned int fTemplate : 1;/* class template */ unsigned int expansion : 1;/* template expansion */ unsigned int unused :28; sltpointer lowscope; /* beginning of defined scope */ sltpointer hiscope;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -