📄 hp-symtab.h
字号:
};/* C++ "friend" classes ... */struct dntt_type_friend_class { unsigned int extension: 1; /* always zero */ unsigned int kind: 10; /* always DNTT_TYPE_FRIEND_CLASS */ unsigned int unused: 21; dnttpointer classptr ; /* pointer to class DNTT */ dnttpointer next ; /* next DNTT_FRIEND */};struct dntt_type_friend_func { unsigned int extension: 1; /* always zero */ unsigned int kind: 10; /* always DNTT_TYPE_FRIEND_FUNC */ unsigned int unused: 21; dnttpointer funcptr ; /* pointer to function */ dnttpointer classptr ; /* pointer to class DNTT */ dnttpointer next ; /* next DNTT_FRIEND */ unsigned long future[2] ; /* padding to 3-word block end */};/* DDE appears to ignore the DNTT_TYPE_MODIFIER record. * It could perhaps be used to give better "ptype" output in GDB; * otherwise it is probably safe for GDB to ignore it also. */struct dntt_type_modifier { unsigned int extension: 1; /* always zero */ unsigned int kind: 10; /* always DNTT_TYPE_MODIFIER */ unsigned int m_const: 1; /* const */ unsigned int m_static: 1; /* static */ unsigned int m_void: 1; /* void */ unsigned int m_volatile: 1; /* volatile */ unsigned int m_duplicate: 1; /* duplicate */ unsigned int unused: 16; dnttpointer type ; /* subtype */ unsigned long future ; /* padding to 3-word block end */};/* I'm not sure what this was intended for - DDE ignores it */struct dntt_type_object_id { unsigned int extension: 1; /* always zero */ unsigned int kind: 10; /* always DNTT_TYPE_OBJECT_ID */ unsigned int indirect: 1; /* Is object_ident addr of addr? */ unsigned int unused: 20; unsigned long object_ident ; /* object identifier */ unsigned long offset ; /* offset to start of base class */ dnttpointer next ; /* pointer to next K_OBJECT_ID */ unsigned long segoffset ; /* for linker fixup */ unsigned long future ; /* padding to 3-word block end */};/* No separate dntt_type_memfunc; same as dntt_type_func *//* Symbol records to support templates. These only get used * in DDE's "describe" output (like GDB's "ptype"). *//* The TEMPLATE record is the header for a template-class. * Like the CLASS record, a TEMPLATE record has a memberlist that * points to a list of template members. It also has an arglist * pointing to a list of TEMPLATE_ARG records. */struct dntt_type_template { unsigned int extension: 1; /* always zero */ unsigned int kind: 10; /* always DNTT_TYPE_TEMPLATE */ unsigned int abstract: 1; /* is this an abstract class? */ unsigned int class_decl: 2; /* 0=class,1=union,2=struct */ unsigned int unused: 18; dnttpointer memberlist ; /* ptr to chain of K_[GEN]FIELDs */ long unused2 ; /* offset in obj of ptr to vtbl */ dnttpointer parentlist ; /* ptr to K_INHERITANCE list */ unsigned long bitlength ; /* total at this level */ dnttpointer identlist ; /* ptr to chain of class ident's */ dnttpointer friendlist ; /* ptr to K_FRIEND list */ dnttpointer arglist ; /* ptr to argument list */ dnttpointer expansions ; /* ptr to expansion list */};/* Template-class arguments are a list of TEMPL_ARG records * chained together. The "name" field is the name of the formal. * E.g.: * template <class T> class q { ... }; * Then "T" is the name of the formal argument. */struct dntt_type_templ_arg { unsigned int extension: 1; /* always zero */ unsigned int kind: 10; /* always DNTT_TYPE_TEMPL_ARG */ unsigned int usagetype: 1; /* 0 type-name 1 expression */ unsigned int unused: 20; vtpointer name ; /* name of argument */ dnttpointer type ; /* for non type arguments */ dnttpointer nextarg ; /* Next argument if any */ long future[2] ; /* padding to 3-word block end */};/* FUNC_TEMPLATE records are sort of like FUNCTION, but are emitted * for template member functions. E.g., * template <class T> class q { ... void f(); ... }; * Within the list of FIELDs/GENFIELDs defining the member list * of the template "q", "f" would appear as a FUNC_TEMPLATE. * We'll also see instances of FUNCTION "f" records for each * instantiation of the template. */struct dntt_type_func_template { unsigned int extension: 1; /* always zero */ unsigned int kind: 10; /* always DNTT_TYPE_FUNC_TEMPLATE */ unsigned int public: 1; /* 1 => globally visible */ unsigned int language: 4; /* type of language */ unsigned int level: 5; /* nesting level (top level = 0)*/ unsigned int optimize: 2; /* level of optimization */ unsigned int varargs: 1; /* ellipses. Pascal/800 later */ unsigned int info: 4; /* lang-specific stuff; F_xxxx */ unsigned int inlined: 1; unsigned int localloc: 1; /* 0 at top, 1 at end of block */ unsigned int unused: 2; vtpointer name ; /* name of function */ vtpointer alias ; /* alternate name, if any */ dnttpointer firstparam ; /* first FPARAM, if any */ dnttpointer retval ; /* return type, if any */ dnttpointer arglist ; /* ptr to argument list */};/* LINK is apparently intended to link together function template * definitions with their instantiations. However, it is not clear * why this would be needed, except to provide the information on * a "ptype" command. And as far as I can tell, aCC does not * generate this record. */struct dntt_type_link { unsigned int extension: 1; /* always zero */ unsigned int kind: 10; /* always DNTT_TYPE_LINK */ unsigned int linkKind: 4; /* always LINK_UNKNOWN */ unsigned int unused: 17; long future1 ; /* expansion */ dnttpointer ptr1 ; /* link from template */ dnttpointer ptr2 ; /* to expansion */ long future[2] ; /* padding to 3-word block end */};/* end of C++ specific SOM's *//* DNTT_TYPE_DYN_ARRAY_DESC is unused by GDB *//* DNTT_TYPE_DESC_SUBRANGE is unused by GDB *//* DNTT_TYPE_BEGIN_EXT is unused by GDB *//* DNTT_TYPE_INLN is unused by GDB *//* DNTT_TYPE_INLN_LIST is unused by GDB *//* DNTT_TYPE_ALIAS is unused by GDB */struct dntt_type_doc_function { unsigned int extension: 1; /* always zero */ unsigned int kind: 10; /* K_DOC_FUNCTION or */ /* K_DOC_MEMFUNC */ unsigned int global: 1; /* 1 => globally visible */ unsigned int language: 4; /* type of language */ unsigned int level: 5; /* nesting level (top level = 0)*/ unsigned int optimize: 2; /* level of optimization */ unsigned int varargs: 1; /* ellipses. Pascal/800 later */ unsigned int info: 4; /* lang-specific stuff; F_xxxx */ unsigned int inlined: 1; unsigned int localloc: 1; /* 0 at top, 1 at end of block */ unsigned int expansion: 1; /* 1 = function expansion */ unsigned int doc_clone: 1; vtpointer name; /* name of function */ vtpointer alias; /* alternate name, if any */ dnttpointer firstparam; /* first FPARAM, if any */ sltpointer address; /* code and text locations */ CORE_ADDR entryaddr; /* address of entry point */ dnttpointer retval; /* return type, if any */ CORE_ADDR lowaddr; /* lowest address of function */ CORE_ADDR hiaddr; /* highest address of function */ dnttpointer inline_list; /* pointer to first inline */ ltpointer lt_offset; /* start of frag/cp line table */ ctxtpointer ctxt_offset; /* start of context table for this routine */};/* DNTT_TYPE_DOC_MEMFUNC is unused by GDB *//* DNTT_TYPE_GENERIC and DNTT_TYPE_BLOCK are convience structures so we can examine a DNTT entry in a generic fashion. */struct dntt_type_generic{ unsigned int word[9];};struct dntt_type_block{ unsigned int extension: 1; unsigned int kind: 10; unsigned int unused: 21; unsigned int word[2];};/* One entry in a DNTT (either the LNTT or GNTT). * This is a union of the above 60 or so structure definitions. */union dnttentry{ struct dntt_type_srcfile dsfile; struct dntt_type_module dmodule; struct dntt_type_function dfunc; struct dntt_type_function dentry; struct dntt_type_begin dbegin; struct dntt_type_end dend; struct dntt_type_fparam dfparam; struct dntt_type_svar dsvar; struct dntt_type_dvar ddvar; struct dntt_type_const dconst; struct dntt_type_type dtype; struct dntt_type_type dtag; struct dntt_type_pointer dptr; struct dntt_type_enum denum; struct dntt_type_memenum dmember; struct dntt_type_set dset; struct dntt_type_subrange dsubr; struct dntt_type_array darray; struct dntt_type_struct dstruct; struct dntt_type_union dunion; struct dntt_type_field dfield; struct dntt_type_functype dfunctype; struct dntt_type_with dwith; struct dntt_type_function dblockdata; struct dntt_type_class_scope dclass_scope; struct dntt_type_pointer dreference; struct dntt_type_ptrmem dptrmem; struct dntt_type_ptrmemfunc dptrmemfunc; struct dntt_type_class dclass; struct dntt_type_genfield dgenfield; struct dntt_type_vfunc dvfunc; struct dntt_type_memaccess dmemaccess; struct dntt_type_inheritance dinheritance; struct dntt_type_friend_class dfriend_class; struct dntt_type_friend_func dfriend_func; struct dntt_type_modifier dmodifier; struct dntt_type_object_id dobject_id; struct dntt_type_template dtemplate; struct dntt_type_templ_arg dtempl_arg; struct dntt_type_func_template dfunc_template; struct dntt_type_link dlink; struct dntt_type_doc_function ddocfunc; struct dntt_type_generic dgeneric; struct dntt_type_block dblock;};/* Source line entry types. */enum slttype{ SLT_NORMAL, SLT_SRCFILE, SLT_MODULE, SLT_FUNCTION, SLT_ENTRY, SLT_BEGIN, SLT_END, SLT_WITH, SLT_EXIT, SLT_ASSIST, SLT_MARKER, SLT_CLASS_SCOPE, SLT_INLN, SLT_NORMAL_OFFSET,};/* A normal source line entry. Simply provides a mapping of a source line number to a code address. SLTDESC will always be SLT_NORMAL or SLT_EXIT. */struct slt_normal{ unsigned int sltdesc: 4; unsigned int line: 28; CORE_ADDR address;};struct slt_normal_off{ unsigned int sltdesc: 4; unsigned int offset: 6; unsigned int line: 22; CORE_ADDR address;};/* A special source line entry. Provides a mapping of a declaration to a line number. These entries point back into the DNTT which references them. */struct slt_special{ unsigned int sltdesc: 4; unsigned int line: 28; dnttpointer backptr;};/* Used to describe nesting. For nested languages, an slt_assist entry must follow each SLT_FUNC entry in the SLT. The address field will point forward to the first slt_normal entry within the function's scope. */struct slt_assist{ unsigned int sltdesc: 4; unsigned int unused: 28; sltpointer address;};struct slt_generic{ unsigned int word[2];};union sltentry{ struct slt_normal snorm; struct slt_normal_off snormoff; struct slt_special sspec; struct slt_assist sasst; struct slt_generic sgeneric;};/* $LINES$ declarations * This is the line table used for optimized code, which is only present * in the new $PROGRAM_INFO$ debug space. */#define DST_LN_ESCAPE_FLAG1 15#define DST_LN_ESCAPE_FLAG2 14#define DST_LN_CTX_SPEC1 13 #define DST_LN_CTX_SPEC2 12/* Escape function codes:*/typedef enum { dst_ln_pad, /* pad byte */ dst_ln_escape_1, /* reserved */ dst_ln_dpc1_dln1, /* 1 byte line delta, 1 byte pc delta */ dst_ln_dpc2_dln2, /* 2 bytes line delta, 2 bytes pc delta */ dst_ln_pc4_ln4, /* 4 bytes ABSOLUTE line number, 4 bytes ABSOLUTE pc */ dst_ln_dpc0_dln1, /* 1 byte line delta, pc delta = 0 */ dst_ln_ln_off_1, /* statement escape, stmt # = 1 (2nd stmt on line) */ dst_ln_ln_off, /* statement escape, stmt # = next byte */ dst_ln_entry, /* entry escape, next byte is entry number */ dst_ln_exit, /* exit escape */ dst_ln_stmt_end, /* gap escape, 4 bytes pc delta */ dst_ln_stmt_cp, /* current stmt is a critical point */ dst_ln_escape_12, /* reserved */ dst_ln_escape_13, /* this is an exception site record */ dst_ln_nxt_byte, /* next byte contains the real escape code */ dst_ln_end, /* end escape, final entry follows */ dst_ln_escape1_END_OF_ENUM } dst_ln_escape1_t;typedef enum { dst_ln_ctx_1, /* next byte describes context switch with 5-bit */ /* index into the image table and 3-bit run length. */ /* If run length is 0, end with another cxt specifier or ctx_end */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -