📄 hp-symtab.h
字号:
ADDRESS points to an SLT entry from which line number and code locations may be determined. ENTRYADDR is the memory address corresponding the the function's entry point RETVAL points to a LNTT entry describing the function's return value. LOWADDR is the lowest memory address associated with this function. HIADDR is the highest memory address associated with this function. */struct dntt_type_function{ unsigned int extension: 1; unsigned int kind: 10; /* DNTT_TYPE_FUNCTION, DNTT_TYPE_ENTRY, DNTT_TYPE_BLOCKDATA or DNTT_TYPE_MEMFUNC */ unsigned int global: 1; unsigned int language: 4; unsigned int nest_level: 5; unsigned int opt_level: 2; unsigned int varargs: 1; unsigned int lang_info: 4; unsigned int inlined: 1; unsigned int localalloc: 1; unsigned int expansion: 1; unsigned int unused: 1; vtpointer name; vtpointer alias; dnttpointer firstparam; sltpointer address; CORE_ADDR entryaddr; dnttpointer retval; CORE_ADDR lowaddr; CORE_ADDR hiaddr;};/* DNTT_TYPE_BEGIN: A DNTT_TYPE_BEGIN symbol is emitted to begin a new nested scope. Every DNTT_TYPE_BEGIN symbol must have a matching DNTT_TYPE_END symbol. CLASSFLAG is nonzero if this is the beginning of a c++ class definition. ADDRESS points to an SLT entry from which line number and code locations may be determined. */struct dntt_type_begin{ unsigned int extension: 1; unsigned int kind: 10; unsigned int classflag: 1; unsigned int unused: 20; sltpointer address;};/* DNTT_TYPE_END: A DNTT_TYPE_END symbol is emitted when closing a scope started by a DNTT_TYPE_MODULE, DNTT_TYPE_FUNCTION, DNTT_TYPE_WITH, DNTT_TYPE_COMMON, DNTT_TYPE_BEGIN, and DNTT_TYPE_CLASS_SCOPE symbols. ENDKIND describes what type of scope the DNTT_TYPE_END is closing (one of the above 6 kinds). CLASSFLAG is nonzero if this is the end of a c++ class definition. ADDRESS points to an SLT entry from which line number and code locations may be determined. BEGINSCOPE points to the LNTT entry which opened the scope. */struct dntt_type_end{ unsigned int extension: 1; unsigned int kind: 10; unsigned int endkind: 10; unsigned int classflag: 1; unsigned int unused: 10; sltpointer address; dnttpointer beginscope;};/* DNTT_TYPE_IMPORT is unused by GDB. *//* DNTT_TYPE_LABEL is unused by GDB. *//* DNTT_TYPE_FPARAM: A DNTT_TYPE_FPARAM symbol is emitted for a function argument. When chained together the symbols represent an argument list for a function. REGPARAM is nonzero if this parameter was passed in a register. INDIRECT is nonzero if this parameter is a pointer to the parameter (pass by reference or pass by value for large items). LONGADDR is nonzero if the parameter is a 64bit pointer. NAME is a pointer into the VT for the parameter's name. LOCATION describes where the parameter is stored. Depending on the parameter type LOCATION could be a register number, or an offset from the stack pointer. TYPE points to a NTT entry describing the type of this parameter. NEXTPARAM points to the LNTT entry describing the next parameter. */struct dntt_type_fparam{ unsigned int extension: 1; unsigned int kind: 10; unsigned int regparam: 1; unsigned int indirect: 1; unsigned int longaddr: 1; unsigned int copyparam: 1; unsigned int dflt: 1; unsigned int doc_ranges: 1; unsigned int misc_kind: 1; unsigned int unused: 14; vtpointer name; CORE_ADDR location; dnttpointer type; dnttpointer nextparam; int misc;};/* DNTT_TYPE_SVAR: A DNTT_TYPE_SVAR is emitted to describe a variable in static storage. GLOBAL is nonzero if the variable has global scope. INDIRECT is nonzero if the variable is a pointer to an object. LONGADDR is nonzero if the variable is in long pointer space. STATICMEM is nonzero if the variable is a member of a class. A_UNION is nonzero if the variable is an anonymous union member. NAME is a pointer into the VT for the variable's name. LOCATION provides the memory address for the variable. TYPE is a pointer into either the GNTT or LNTT which describes the type of this variable. */struct dntt_type_svar{ unsigned int extension: 1; unsigned int kind: 10; unsigned int global: 1; unsigned int indirect: 1; unsigned int longaddr: 1; unsigned int staticmem: 1; unsigned int a_union: 1; unsigned int unused1: 1; unsigned int thread_specific: 1; unsigned int unused2: 14; vtpointer name; CORE_ADDR location; dnttpointer type; unsigned int offset; unsigned int displacement;};/* DNTT_TYPE_DVAR: A DNTT_TYPE_DVAR is emitted to describe automatic variables and variables held in registers. GLOBAL is nonzero if the variable has global scope. INDIRECT is nonzero if the variable is a pointer to an object. REGVAR is nonzero if the variable is in a register. A_UNION is nonzero if the variable is an anonymous union member. NAME is a pointer into the VT for the variable's name. LOCATION provides the memory address or register number for the variable. TYPE is a pointer into either the GNTT or LNTT which describes the type of this variable. */struct dntt_type_dvar{ unsigned int extension: 1; unsigned int kind: 10; unsigned int global: 1; unsigned int indirect: 1; unsigned int regvar: 1; unsigned int a_union: 1; unsigned int unused: 17; vtpointer name; int location; dnttpointer type; unsigned int offset;};/* DNTT_TYPE_CONST: A DNTT_TYPE_CONST symbol is emitted for program constants. GLOBAL is nonzero if the constant has global scope. INDIRECT is nonzero if the constant is a pointer to an object. LOCATION_TYPE describes where to find the constant's value (in the VT, memory, or embedded in an instruction). CLASSMEM is nonzero if the constant is a member of a class. NAME is a pointer into the VT for the constant's name. LOCATION provides the memory address, register number or pointer into the VT for the constant's value. TYPE is a pointer into either the GNTT or LNTT which describes the type of this variable. */struct dntt_type_const{ unsigned int extension: 1; unsigned int kind: 10; unsigned int global: 1; unsigned int indirect: 1; unsigned int location_type: 3; unsigned int classmem: 1; unsigned int unused: 15; vtpointer name; CORE_ADDR location; dnttpointer type; unsigned int offset; unsigned int displacement;};/* DNTT_TYPE_TYPEDEF and DNTT_TYPE_TAGDEF: The same structure is used to describe typedefs and tagdefs. DNTT_TYPE_TYPEDEFS are associated with C "typedefs". DNTT_TYPE_TAGDEFs are associated with C "struct", "union", and "enum" tags, which may have the same name as a typedef in the same scope. Also they are associated with C++ "class" tags, which implicitly have the same name as the class type. GLOBAL is nonzero if the typedef/tagdef has global scope. TYPEINFO is used to determine if full type information is available for a tag. (usually 1, but can be zero for opaque types in C). NAME is a pointer into the VT for the constant's name. TYPE points to the underlying type for the typedef/tagdef in the GNTT or LNTT. */struct dntt_type_type{ unsigned int extension: 1; unsigned int kind: 10; /* DNTT_TYPE_TYPEDEF or DNTT_TYPE_TAGDEF */ unsigned int global: 1; unsigned int typeinfo: 1; unsigned int unused: 19; vtpointer name; dnttpointer type; /* Underlying type, which for TAGDEF's may be * DNTT_TYPE_STRUCT, DNTT_TYPE_UNION, * DNTT_TYPE_ENUM, or DNTT_TYPE_CLASS. * For TYPEDEF's other underlying types * are also possible. */};/* DNTT_TYPE_POINTER: Used to describe a pointer to an underlying type. POINTSTO is a pointer into the GNTT or LNTT for the type which this pointer points to. BITLENGTH is the length of the pointer (not the underlying type). */struct dntt_type_pointer{ unsigned int extension: 1; unsigned int kind: 10; unsigned int unused: 21; dnttpointer pointsto; unsigned int bitlength;};/* DNTT_TYPE_ENUM: Used to describe enumerated types. FIRSTMEM is a pointer to a DNTT_TYPE_MEMENUM in the GNTT/LNTT which describes the first member (and contains a pointer to the chain of members). BITLENGTH is the number of bits used to hold the values of the enum's members. */struct dntt_type_enum{ unsigned int extension: 1; unsigned int kind: 10; unsigned int unused: 21; dnttpointer firstmem; unsigned int bitlength;};/* DNTT_TYPE_MEMENUM Used to describe members of an enumerated type. CLASSMEM is nonzero if this member is part of a class. NAME points into the VT for the name of this member. VALUE is the value of this enumeration member. NEXTMEM points to the next DNTT_TYPE_MEMENUM in the chain. */struct dntt_type_memenum{ unsigned int extension: 1; unsigned int kind: 10; unsigned int classmem: 1; unsigned int unused: 20; vtpointer name; unsigned int value; dnttpointer nextmem;};/* DNTT_TYPE_SET Used to describe PASCAL "set" type. DECLARATION describes the bitpacking of the set. SUBTYPE points to a DNTT entry describing the type of the members. BITLENGTH is the size of the set. */ struct dntt_type_set{ unsigned int extension: 1; unsigned int kind: 10; unsigned int declaration: 2; unsigned int unused: 19; dnttpointer subtype; unsigned int bitlength;};/* DNTT_TYPE_SUBRANGE Used to describe subrange type. DYN_LOW describes the lower bound of the subrange: 00 for a constant lower bound (found in LOWBOUND). 01 for a dynamic lower bound with the lower bound found in the the
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -