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

📄 hp-symtab.h

📁 基于4个mips核的noc设计
💻 H
📖 第 1 页 / 共 5 页
字号:
    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 + -