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

📄 dwarf.h

📁 这个是LINUX下的GDB调度工具的源码
💻 H
字号:
/* Declarations and definitions of codes relating to the DWARF symbolic   debugging information format.   Written by Ron Guilmette (rfg@ncd.com)Copyright 1992, 1993, 1995, 1999 Free Software Foundation, Inc.This file is part of GNU CC.GNU CC 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, or (at your option)any later version.GNU CC 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 GNU CC; see the file COPYING.  If not, write tothe Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  *//* This file is derived from the DWARF specification (a public document)   Revision 1.0.1 (April 8, 1992) developed by the UNIX International   Programming Languages Special Interest Group (UI/PLSIG) and distributed   by UNIX International.  Copies of this specification are available from   UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054.*/#ifndef _ELF_DWARF_H#define _ELF_DWARF_H/* Tag names and codes.  */enum dwarf_tag {    TAG_padding			= 0x0000,    TAG_array_type		= 0x0001,    TAG_class_type		= 0x0002,    TAG_entry_point		= 0x0003,    TAG_enumeration_type	= 0x0004,    TAG_formal_parameter	= 0x0005,    TAG_global_subroutine	= 0x0006,    TAG_global_variable		= 0x0007,    				/* 0x0008 -- reserved */				/* 0x0009 -- reserved */    TAG_label			= 0x000a,    TAG_lexical_block		= 0x000b,    TAG_local_variable		= 0x000c,    TAG_member			= 0x000d,				/* 0x000e -- reserved */    TAG_pointer_type		= 0x000f,    TAG_reference_type		= 0x0010,    TAG_compile_unit		= 0x0011,    TAG_string_type		= 0x0012,    TAG_structure_type		= 0x0013,    TAG_subroutine		= 0x0014,    TAG_subroutine_type		= 0x0015,    TAG_typedef			= 0x0016,    TAG_union_type		= 0x0017,    TAG_unspecified_parameters	= 0x0018,    TAG_variant			= 0x0019,    TAG_common_block		= 0x001a,    TAG_common_inclusion	= 0x001b,    TAG_inheritance		= 0x001c,    TAG_inlined_subroutine	= 0x001d,    TAG_module			= 0x001e,    TAG_ptr_to_member_type	= 0x001f,    TAG_set_type		= 0x0020,    TAG_subrange_type		= 0x0021,    TAG_with_stmt		= 0x0022,    /* GNU extensions */    TAG_format_label		= 0x8000,  /* for FORTRAN 77 and Fortran 90 */    TAG_namelist		= 0x8001,  /* For Fortran 90 */    TAG_function_template	= 0x8002,  /* for C++ */    TAG_class_template		= 0x8003   /* for C++ */};#define TAG_lo_user	0x8000  /* implementation-defined range start */#define TAG_hi_user	0xffff  /* implementation-defined range end */#define TAG_source_file TAG_compile_unit  /* for backward compatibility *//* Form names and codes.  */enum dwarf_form {    FORM_ADDR	= 0x1,    FORM_REF	= 0x2,    FORM_BLOCK2	= 0x3,    FORM_BLOCK4	= 0x4,    FORM_DATA2	= 0x5,    FORM_DATA4	= 0x6,    FORM_DATA8	= 0x7,    FORM_STRING	= 0x8};/* Attribute names and codes.  */enum dwarf_attribute {    AT_sibling			= (0x0010|FORM_REF),    AT_location			= (0x0020|FORM_BLOCK2),    AT_name			= (0x0030|FORM_STRING),    AT_fund_type		= (0x0050|FORM_DATA2),    AT_mod_fund_type		= (0x0060|FORM_BLOCK2),    AT_user_def_type		= (0x0070|FORM_REF),    AT_mod_u_d_type		= (0x0080|FORM_BLOCK2),    AT_ordering			= (0x0090|FORM_DATA2),    AT_subscr_data		= (0x00a0|FORM_BLOCK2),    AT_byte_size		= (0x00b0|FORM_DATA4),    AT_bit_offset		= (0x00c0|FORM_DATA2),    AT_bit_size			= (0x00d0|FORM_DATA4),				/* (0x00e0|FORM_xxxx) -- reserved */    AT_element_list		= (0x00f0|FORM_BLOCK4),    AT_stmt_list		= (0x0100|FORM_DATA4),    AT_low_pc			= (0x0110|FORM_ADDR),    AT_high_pc			= (0x0120|FORM_ADDR),    AT_language			= (0x0130|FORM_DATA4),    AT_member			= (0x0140|FORM_REF),    AT_discr			= (0x0150|FORM_REF),    AT_discr_value		= (0x0160|FORM_BLOCK2),				/* (0x0170|FORM_xxxx) -- reserved */				/* (0x0180|FORM_xxxx) -- reserved */    AT_string_length		= (0x0190|FORM_BLOCK2),    AT_common_reference		= (0x01a0|FORM_REF),    AT_comp_dir			= (0x01b0|FORM_STRING),        AT_const_value_string	= (0x01c0|FORM_STRING),        AT_const_value_data2	= (0x01c0|FORM_DATA2),        AT_const_value_data4	= (0x01c0|FORM_DATA4),        AT_const_value_data8	= (0x01c0|FORM_DATA8),        AT_const_value_block2	= (0x01c0|FORM_BLOCK2),        AT_const_value_block4	= (0x01c0|FORM_BLOCK4),    AT_containing_type		= (0x01d0|FORM_REF),        AT_default_value_addr	= (0x01e0|FORM_ADDR),        AT_default_value_data2	= (0x01e0|FORM_DATA2),        AT_default_value_data4	= (0x01e0|FORM_DATA4),        AT_default_value_data8	= (0x01e0|FORM_DATA8),        AT_default_value_string	= (0x01e0|FORM_STRING),    AT_friends			= (0x01f0|FORM_BLOCK2),    AT_inline			= (0x0200|FORM_STRING),    AT_is_optional		= (0x0210|FORM_STRING),        AT_lower_bound_ref	= (0x0220|FORM_REF),        AT_lower_bound_data2	= (0x0220|FORM_DATA2),        AT_lower_bound_data4	= (0x0220|FORM_DATA4),        AT_lower_bound_data8	= (0x0220|FORM_DATA8),    AT_private			= (0x0240|FORM_STRING),    AT_producer			= (0x0250|FORM_STRING),    AT_program			= (0x0230|FORM_STRING),    AT_protected		= (0x0260|FORM_STRING),    AT_prototyped		= (0x0270|FORM_STRING),    AT_public			= (0x0280|FORM_STRING),    AT_pure_virtual		= (0x0290|FORM_STRING),    AT_return_addr		= (0x02a0|FORM_BLOCK2),    AT_abstract_origin		= (0x02b0|FORM_REF),    AT_start_scope		= (0x02c0|FORM_DATA4),    AT_stride_size		= (0x02e0|FORM_DATA4),        AT_upper_bound_ref	= (0x02f0|FORM_REF),        AT_upper_bound_data2	= (0x02f0|FORM_DATA2),        AT_upper_bound_data4	= (0x02f0|FORM_DATA4),        AT_upper_bound_data8	= (0x02f0|FORM_DATA8),    AT_virtual			= (0x0300|FORM_STRING),    /* GNU extensions.  */    AT_sf_names			= (0x8000|FORM_DATA4),    AT_src_info			= (0x8010|FORM_DATA4),    AT_mac_info			= (0x8020|FORM_DATA4),    AT_src_coords		= (0x8030|FORM_DATA4),    AT_body_begin		= (0x8040|FORM_ADDR),    AT_body_end			= (0x8050|FORM_ADDR)};#define AT_lo_user	0x8000  /* implementation-defined range start */#define AT_hi_user	0xffff  /* implementation-defined range end *//* Location atom names and codes.  */enum dwarf_location_atom {    OP_REG	= 0x01,    OP_BASEREG	= 0x02,    OP_ADDR	= 0x03,    OP_CONST	= 0x04,    OP_DEREF2	= 0x05,    OP_DEREF4	= 0x06,    OP_ADD	= 0x07};#define OP_LO_USER	0x80  /* implementation-defined range start */#define OP_HI_USER	0xff  /* implementation-defined range end *//* Fundamental type names and codes.  */enum dwarf_fundamental_type {    FT_char		= 0x0001,    FT_signed_char	= 0x0002,    FT_unsigned_char	= 0x0003,    FT_short		= 0x0004,    FT_signed_short	= 0x0005,    FT_unsigned_short	= 0x0006,    FT_integer		= 0x0007,    FT_signed_integer	= 0x0008,    FT_unsigned_integer	= 0x0009,    FT_long		= 0x000a,    FT_signed_long	= 0x000b,    FT_unsigned_long	= 0x000c,    FT_pointer		= 0x000d,  /* an alias for (void *) */    FT_float		= 0x000e,    FT_dbl_prec_float	= 0x000f,    FT_ext_prec_float	= 0x0010,  /* breaks "classic" svr4 SDB */    FT_complex		= 0x0011,  /* breaks "classic" svr4 SDB */    FT_dbl_prec_complex	= 0x0012,  /* breaks "classic" svr4 SDB */			/* 0x0013 -- reserved */    FT_void		= 0x0014,    FT_boolean		= 0x0015,  /* breaks "classic" svr4 SDB */    FT_ext_prec_complex	= 0x0016,  /* breaks "classic" svr4 SDB */    FT_label		= 0x0017,      /* GNU extensions       The low order byte must indicate the size (in bytes) for the type.       All of these types will probably break "classic" svr4 SDB */    FT_long_long	= 0x8008,    FT_signed_long_long	= 0x8108,    FT_unsigned_long_long = 0x8208,    FT_int8		= 0x9001,    FT_signed_int8	= 0x9101,    FT_unsigned_int8	= 0x9201,    FT_int16		= 0x9302,    FT_signed_int16	= 0x9402,    FT_unsigned_int16	= 0x9502,    FT_int32		= 0x9604,    FT_signed_int32	= 0x9704,    FT_unsigned_int32	= 0x9804,    FT_int64		= 0x9908,    FT_signed_int64	= 0x9a08,    FT_unsigned_int64	= 0x9b08,    FT_real32		= 0xa004,    FT_real64		= 0xa108,    FT_real96		= 0xa20c,    FT_real128		= 0xa310};#define FT_lo_user	0x8000  /* implementation-defined range start */#define FT_hi_user	0xffff  /* implementation defined range end *//* Type modifier names and codes.  */enum dwarf_type_modifier {    MOD_pointer_to	= 0x01,    MOD_reference_to	= 0x02,    MOD_const		= 0x03,    MOD_volatile	= 0x04};#define MOD_lo_user	0x80  /* implementation-defined range start */#define MOD_hi_user	0xff  /* implementation-defined range end *//* Array ordering names and codes.  */enum dwarf_array_dim_ordering {    ORD_row_major	= 0,    ORD_col_major	= 1};/* Array subscript format names and codes.  */enum dwarf_subscr_data_formats {    FMT_FT_C_C	= 0x0,    FMT_FT_C_X	= 0x1,    FMT_FT_X_C	= 0x2,    FMT_FT_X_X	= 0x3,    FMT_UT_C_C	= 0x4,    FMT_UT_C_X	= 0x5,    FMT_UT_X_C	= 0x6,    FMT_UT_X_X	= 0x7,    FMT_ET	= 0x8};/* Derived from above for ease of use.  */#define FMT_CODE(_FUNDAMENTAL_TYPE_P, _UB_CONST_P, _LB_CONST_P) \ (((_FUNDAMENTAL_TYPE_P) ? 0 : 4)	\  | ((_UB_CONST_P) ? 0 : 2)		\  | ((_LB_CONST_P) ? 0 : 1))/* Source language names and codes.  */enum dwarf_source_language {    LANG_C89		= 0x00000001,    LANG_C		= 0x00000002,    LANG_ADA83		= 0x00000003,    LANG_C_PLUS_PLUS	= 0x00000004,    LANG_COBOL74	= 0x00000005,    LANG_COBOL85	= 0x00000006,    LANG_FORTRAN77	= 0x00000007,    LANG_FORTRAN90	= 0x00000008,    LANG_PASCAL83	= 0x00000009,    LANG_MODULA2	= 0x0000000a,    /* GNU extensions */    LANG_CHILL		= 0x00009af3,	/* random value for GNU Chill */    LANG_JAVA		= 0x00009af4    /* random value + 1 for GNU Java */};#define LANG_lo_user	0x00008000  /* implementation-defined range start */#define LANG_hi_user	0x0000ffff  /* implementation-defined range end *//* Names and codes for GNU "macinfo" extension.  */enum dwarf_macinfo_record_type {    MACINFO_start	= 's',    MACINFO_resume	= 'r',    MACINFO_define	= 'd',    MACINFO_undef	= 'u'};#endif /* _ELF_DWARF_H */

⌨️ 快捷键说明

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