ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

dwarf2.h
Go to the documentation of this file.
00001 /* Declarations and definitions of codes relating to the DWARF2 symbolic
00002    debugging information format.
00003    Copyright (C) 1992, 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002,
00004    2003, 2004 Free Software Foundation, Inc.
00005 
00006    Written by Gary Funck (gary@intrepid.com) The Ada Joint Program
00007    Office (AJPO), Florida State University and Silicon Graphics Inc.
00008    provided support for this effort -- June 21, 1995.
00009 
00010    Derived from the DWARF 1 implementation written by Ron Guilmette
00011    (rfg@netcom.com), November 1990.
00012 
00013    This file is part of GCC.
00014 
00015    GCC is free software; you can redistribute it and/or modify it under
00016    the terms of the GNU General Public License as published by the Free
00017    Software Foundation; either version 2, or (at your option) any later
00018    version.
00019 
00020    GCC is distributed in the hope that it will be useful, but WITHOUT
00021    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
00022    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
00023    License for more details.
00024 
00025    You should have received a copy of the GNU General Public License along
00026    with this program; if not, write to the Free Software Foundation, Inc.,
00027    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
00028 */
00029 
00030 /* This file is derived from the DWARF specification (a public document)
00031    Revision 2.0.0 (July 27, 1993) developed by the UNIX International
00032    Programming Languages Special Interest Group (UI/PLSIG) and distributed
00033    by UNIX International.  Copies of this specification are available from
00034    UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054.
00035 
00036    This file also now contains definitions from the DWARF 3 specification.  */
00037 
00038 /* This file is shared between GCC and GDB, and should not contain
00039    prototypes.  */
00040 
00041 #pragma once
00042 
00043 //#include "list.h"
00044 
00045 #include <pshpack1.h>
00046 /* Structure found in the .debug_line section.  */
00047 typedef struct
00048 {
00049   unsigned char li_length          [4];
00050   unsigned char li_version         [2];
00051   unsigned char li_prologue_length [4];
00052   unsigned char li_min_insn_length [1];
00053   unsigned char li_default_is_stmt [1];
00054   unsigned char li_line_base       [1];
00055   unsigned char li_line_range      [1];
00056   unsigned char li_opcode_base     [1];
00057 }
00058 DWARF2_External_LineInfo;
00059 
00060 typedef struct
00061 {
00062   unsigned long  li_length;
00063   unsigned short li_version;
00064   unsigned int   li_prologue_length;
00065   unsigned char  li_min_insn_length;
00066   unsigned char  li_default_is_stmt;
00067   int            li_line_base;
00068   unsigned char  li_line_range;
00069   unsigned char  li_opcode_base;
00070 }
00071 DWARF2_Internal_LineInfo;
00072 
00073 /* Structure found in .debug_pubnames section.  */
00074 typedef struct
00075 {
00076   unsigned char pn_length  [4];
00077   unsigned char pn_version [2];
00078   unsigned char pn_offset  [4];
00079   unsigned char pn_size    [4];
00080 }
00081 DWARF2_External_PubNames;
00082 
00083 typedef struct
00084 {
00085   unsigned long  pn_length;
00086   unsigned short pn_version;
00087   unsigned long  pn_offset;
00088   unsigned long  pn_size;
00089 }
00090 DWARF2_Internal_PubNames;
00091 
00092 /* Structure found in .debug_info section.  */
00093 typedef struct
00094 {
00095   unsigned char  cu_length        [4];
00096   unsigned char  cu_version       [2];
00097   unsigned char  cu_abbrev_offset [4];
00098   unsigned char  cu_pointer_size  [1];
00099 }
00100 DWARF2_External_CompUnit;
00101 
00102 typedef struct
00103 {
00104   unsigned long  cu_length;
00105   unsigned short cu_version;
00106   unsigned long  cu_abbrev_offset;
00107   unsigned char  cu_pointer_size;
00108 }
00109 DWARF2_Internal_CompUnit;
00110 
00111 typedef struct
00112 {
00113   unsigned char  ar_length       [4];
00114   unsigned char  ar_version      [2];
00115   unsigned char  ar_info_offset  [4];
00116   unsigned char  ar_pointer_size [1];
00117   unsigned char  ar_segment_size [1];
00118 }
00119 DWARF2_External_ARange;
00120 
00121 typedef struct
00122 {
00123   unsigned long  ar_length;
00124   unsigned short ar_version;
00125   unsigned long  ar_info_offset;
00126   unsigned char  ar_pointer_size;
00127   unsigned char  ar_segment_size;
00128 }
00129 DWARF2_Internal_ARange;
00130 #include <poppack.h>
00131 
00132 /* Tag names and codes.  */
00133 enum dwarf_tag
00134   {
00135     DW_TAG_padding = 0x00,
00136     DW_TAG_array_type = 0x01,
00137     DW_TAG_class_type = 0x02,
00138     DW_TAG_entry_point = 0x03,
00139     DW_TAG_enumeration_type = 0x04,
00140     DW_TAG_formal_parameter = 0x05,
00141     DW_TAG_imported_declaration = 0x08,
00142     DW_TAG_label = 0x0a,
00143     DW_TAG_lexical_block = 0x0b,
00144     DW_TAG_member = 0x0d,
00145     DW_TAG_pointer_type = 0x0f,
00146     DW_TAG_reference_type = 0x10,
00147     DW_TAG_compile_unit = 0x11,
00148     DW_TAG_string_type = 0x12,
00149     DW_TAG_structure_type = 0x13,
00150     DW_TAG_subroutine_type = 0x15,
00151     DW_TAG_typedef = 0x16,
00152     DW_TAG_union_type = 0x17,
00153     DW_TAG_unspecified_parameters = 0x18,
00154     DW_TAG_variant = 0x19,
00155     DW_TAG_common_block = 0x1a,
00156     DW_TAG_common_inclusion = 0x1b,
00157     DW_TAG_inheritance = 0x1c,
00158     DW_TAG_inlined_subroutine = 0x1d,
00159     DW_TAG_module = 0x1e,
00160     DW_TAG_ptr_to_member_type = 0x1f,
00161     DW_TAG_set_type = 0x20,
00162     DW_TAG_subrange_type = 0x21,
00163     DW_TAG_with_stmt = 0x22,
00164     DW_TAG_access_declaration = 0x23,
00165     DW_TAG_base_type = 0x24,
00166     DW_TAG_catch_block = 0x25,
00167     DW_TAG_const_type = 0x26,
00168     DW_TAG_constant = 0x27,
00169     DW_TAG_enumerator = 0x28,
00170     DW_TAG_file_type = 0x29,
00171     DW_TAG_friend = 0x2a,
00172     DW_TAG_namelist = 0x2b,
00173     DW_TAG_namelist_item = 0x2c,
00174     DW_TAG_packed_type = 0x2d,
00175     DW_TAG_subprogram = 0x2e,
00176     DW_TAG_template_type_param = 0x2f,
00177     DW_TAG_template_value_param = 0x30,
00178     DW_TAG_thrown_type = 0x31,
00179     DW_TAG_try_block = 0x32,
00180     DW_TAG_variant_part = 0x33,
00181     DW_TAG_variable = 0x34,
00182     DW_TAG_volatile_type = 0x35,
00183     /* DWARF 3.  */
00184     DW_TAG_dwarf_procedure = 0x36,
00185     DW_TAG_restrict_type = 0x37,
00186     DW_TAG_interface_type = 0x38,
00187     DW_TAG_namespace = 0x39,
00188     DW_TAG_imported_module = 0x3a,
00189     DW_TAG_unspecified_type = 0x3b,
00190     DW_TAG_partial_unit = 0x3c,
00191     DW_TAG_imported_unit = 0x3d,
00192     /* SGI/MIPS Extensions.  */
00193     DW_TAG_MIPS_loop = 0x4081,
00194     /* HP extensions.  See: ftp://ftp.hp.com/pub/lang/tools/WDB/wdb-4.0.tar.gz .  */
00195     DW_TAG_HP_array_descriptor = 0x4090,
00196     /* GNU extensions.  */
00197     DW_TAG_format_label = 0x4101,   /* For FORTRAN 77 and Fortran 90.  */
00198     DW_TAG_function_template = 0x4102,  /* For C++.  */
00199     DW_TAG_class_template = 0x4103, /* For C++.  */
00200     DW_TAG_GNU_BINCL = 0x4104,
00201     DW_TAG_GNU_EINCL = 0x4105,
00202     /* Extensions for UPC.  See: http://upc.gwu.edu/~upc.  */
00203     DW_TAG_upc_shared_type = 0x8765,
00204     DW_TAG_upc_strict_type = 0x8766,
00205     DW_TAG_upc_relaxed_type = 0x8767,
00206     /* PGI (STMicroelectronics) extensions.  No documentation available.  */
00207     DW_TAG_PGI_kanji_type      = 0xA000,
00208     DW_TAG_PGI_interface_block = 0xA020
00209   };
00210 
00211 #define DW_TAG_lo_user  0x4080
00212 #define DW_TAG_hi_user  0xffff
00213 
00214 /* Flag that tells whether entry has a child or not.  */
00215 #define DW_children_no   0
00216 #define DW_children_yes  1
00217 
00218 /* Form names and codes.  */
00219 enum dwarf_form
00220   {
00221     DW_FORM_addr = 0x01,
00222     DW_FORM_block2 = 0x03,
00223     DW_FORM_block4 = 0x04,
00224     DW_FORM_data2 = 0x05,
00225     DW_FORM_data4 = 0x06,
00226     DW_FORM_data8 = 0x07,
00227     DW_FORM_string = 0x08,
00228     DW_FORM_block = 0x09,
00229     DW_FORM_block1 = 0x0a,
00230     DW_FORM_data1 = 0x0b,
00231     DW_FORM_flag = 0x0c,
00232     DW_FORM_sdata = 0x0d,
00233     DW_FORM_strp = 0x0e,
00234     DW_FORM_udata = 0x0f,
00235     DW_FORM_ref_addr = 0x10,
00236     DW_FORM_ref1 = 0x11,
00237     DW_FORM_ref2 = 0x12,
00238     DW_FORM_ref4 = 0x13,
00239     DW_FORM_ref8 = 0x14,
00240     DW_FORM_ref_udata = 0x15,
00241     DW_FORM_indirect = 0x16
00242   };
00243 
00244 /* Attribute names and codes.  */
00245 enum dwarf_attribute
00246   {
00247     DW_AT_sibling = 0x01,
00248     DW_AT_location = 0x02,
00249     DW_AT_name = 0x03,
00250     DW_AT_ordering = 0x09,
00251     DW_AT_subscr_data = 0x0a,
00252     DW_AT_byte_size = 0x0b,
00253     DW_AT_bit_offset = 0x0c,
00254     DW_AT_bit_size = 0x0d,
00255     DW_AT_element_list = 0x0f,
00256     DW_AT_stmt_list = 0x10,
00257     DW_AT_low_pc = 0x11,
00258     DW_AT_high_pc = 0x12,
00259     DW_AT_language = 0x13,
00260     DW_AT_member = 0x14,
00261     DW_AT_discr = 0x15,
00262     DW_AT_discr_value = 0x16,
00263     DW_AT_visibility = 0x17,
00264     DW_AT_import = 0x18,
00265     DW_AT_string_length = 0x19,
00266     DW_AT_common_reference = 0x1a,
00267     DW_AT_comp_dir = 0x1b,
00268     DW_AT_const_value = 0x1c,
00269     DW_AT_containing_type = 0x1d,
00270     DW_AT_default_value = 0x1e,
00271     DW_AT_inline = 0x20,
00272     DW_AT_is_optional = 0x21,
00273     DW_AT_lower_bound = 0x22,
00274     DW_AT_producer = 0x25,
00275     DW_AT_prototyped = 0x27,
00276     DW_AT_return_addr = 0x2a,
00277     DW_AT_start_scope = 0x2c,
00278     DW_AT_stride_size = 0x2e,
00279     DW_AT_upper_bound = 0x2f,
00280     DW_AT_abstract_origin = 0x31,
00281     DW_AT_accessibility = 0x32,
00282     DW_AT_address_class = 0x33,
00283     DW_AT_artificial = 0x34,
00284     DW_AT_base_types = 0x35,
00285     DW_AT_calling_convention = 0x36,
00286     DW_AT_count = 0x37,
00287     DW_AT_data_member_location = 0x38,
00288     DW_AT_decl_column = 0x39,
00289     DW_AT_decl_file = 0x3a,
00290     DW_AT_decl_line = 0x3b,
00291     DW_AT_declaration = 0x3c,
00292     DW_AT_discr_list = 0x3d,
00293     DW_AT_encoding = 0x3e,
00294     DW_AT_external = 0x3f,
00295     DW_AT_frame_base = 0x40,
00296     DW_AT_friend = 0x41,
00297     DW_AT_identifier_case = 0x42,
00298     DW_AT_macro_info = 0x43,
00299     DW_AT_namelist_items = 0x44,
00300     DW_AT_priority = 0x45,
00301     DW_AT_segment = 0x46,
00302     DW_AT_specification = 0x47,
00303     DW_AT_static_link = 0x48,
00304     DW_AT_type = 0x49,
00305     DW_AT_use_location = 0x4a,
00306     DW_AT_variable_parameter = 0x4b,
00307     DW_AT_virtuality = 0x4c,
00308     DW_AT_vtable_elem_location = 0x4d,
00309     /* DWARF 3 values.  */
00310     DW_AT_allocated     = 0x4e,
00311     DW_AT_associated    = 0x4f,
00312     DW_AT_data_location = 0x50,
00313     DW_AT_stride        = 0x51,
00314     DW_AT_entry_pc      = 0x52,
00315     DW_AT_use_UTF8      = 0x53,
00316     DW_AT_extension     = 0x54,
00317     DW_AT_ranges        = 0x55,
00318     DW_AT_trampoline    = 0x56,
00319     DW_AT_call_column   = 0x57,
00320     DW_AT_call_file     = 0x58,
00321     DW_AT_call_line     = 0x59,
00322     /* SGI/MIPS extensions.  */
00323     DW_AT_MIPS_fde = 0x2001,
00324     DW_AT_MIPS_loop_begin = 0x2002,
00325     DW_AT_MIPS_tail_loop_begin = 0x2003,
00326     DW_AT_MIPS_epilog_begin = 0x2004,
00327     DW_AT_MIPS_loop_unroll_factor = 0x2005,
00328     DW_AT_MIPS_software_pipeline_depth = 0x2006,
00329     DW_AT_MIPS_linkage_name = 0x2007,
00330     DW_AT_MIPS_stride = 0x2008,
00331     DW_AT_MIPS_abstract_name = 0x2009,
00332     DW_AT_MIPS_clone_origin = 0x200a,
00333     DW_AT_MIPS_has_inlines = 0x200b,
00334     /* HP extensions.  */
00335     DW_AT_HP_block_index         = 0x2000,
00336     DW_AT_HP_unmodifiable        = 0x2001, /* Same as DW_AT_MIPS_fde.  */
00337     DW_AT_HP_actuals_stmt_list   = 0x2010,
00338     DW_AT_HP_proc_per_section    = 0x2011,
00339     DW_AT_HP_raw_data_ptr        = 0x2012,
00340     DW_AT_HP_pass_by_reference   = 0x2013,
00341     DW_AT_HP_opt_level           = 0x2014,
00342     DW_AT_HP_prof_version_id     = 0x2015,
00343     DW_AT_HP_opt_flags           = 0x2016,
00344     DW_AT_HP_cold_region_low_pc  = 0x2017,
00345     DW_AT_HP_cold_region_high_pc = 0x2018,
00346     DW_AT_HP_all_variables_modifiable = 0x2019,
00347     DW_AT_HP_linkage_name        = 0x201a,
00348     DW_AT_HP_prof_flags          = 0x201b,  /* In comp unit of procs_info for -g.  */
00349     /* GNU extensions.  */
00350     DW_AT_sf_names   = 0x2101,
00351     DW_AT_src_info   = 0x2102,
00352     DW_AT_mac_info   = 0x2103,
00353     DW_AT_src_coords = 0x2104,
00354     DW_AT_body_begin = 0x2105,
00355     DW_AT_body_end   = 0x2106,
00356     DW_AT_GNU_vector = 0x2107,
00357     /* VMS extensions.  */
00358     DW_AT_VMS_rtnbeg_pd_address = 0x2201,
00359     /* UPC extension.  */
00360     DW_AT_upc_threads_scaled = 0x3210,
00361     /* PGI (STMicroelectronics) extensions.  */
00362     DW_AT_PGI_lbase    = 0x3a00,
00363     DW_AT_PGI_soffset  = 0x3a01,
00364     DW_AT_PGI_lstride  = 0x3a02
00365   };
00366 
00367 #define DW_AT_lo_user   0x2000  /* Implementation-defined range start.  */
00368 #define DW_AT_hi_user   0x3ff0  /* Implementation-defined range end.  */
00369 
00370 /* Location atom names and codes.  */
00371 enum dwarf_location_atom
00372   {
00373     DW_OP_addr = 0x03,
00374     DW_OP_deref = 0x06,
00375     DW_OP_const1u = 0x08,
00376     DW_OP_const1s = 0x09,
00377     DW_OP_const2u = 0x0a,
00378     DW_OP_const2s = 0x0b,
00379     DW_OP_const4u = 0x0c,
00380     DW_OP_const4s = 0x0d,
00381     DW_OP_const8u = 0x0e,
00382     DW_OP_const8s = 0x0f,
00383     DW_OP_constu = 0x10,
00384     DW_OP_consts = 0x11,
00385     DW_OP_dup = 0x12,
00386     DW_OP_drop = 0x13,
00387     DW_OP_over = 0x14,
00388     DW_OP_pick = 0x15,
00389     DW_OP_swap = 0x16,
00390     DW_OP_rot = 0x17,
00391     DW_OP_xderef = 0x18,
00392     DW_OP_abs = 0x19,
00393     DW_OP_and = 0x1a,
00394     DW_OP_div = 0x1b,
00395     DW_OP_minus = 0x1c,
00396     DW_OP_mod = 0x1d,
00397     DW_OP_mul = 0x1e,
00398     DW_OP_neg = 0x1f,
00399     DW_OP_not = 0x20,
00400     DW_OP_or = 0x21,
00401     DW_OP_plus = 0x22,
00402     DW_OP_plus_uconst = 0x23,
00403     DW_OP_shl = 0x24,
00404     DW_OP_shr = 0x25,
00405     DW_OP_shra = 0x26,
00406     DW_OP_xor = 0x27,
00407     DW_OP_bra = 0x28,
00408     DW_OP_eq = 0x29,
00409     DW_OP_ge = 0x2a,
00410     DW_OP_gt = 0x2b,
00411     DW_OP_le = 0x2c,
00412     DW_OP_lt = 0x2d,
00413     DW_OP_ne = 0x2e,
00414     DW_OP_skip = 0x2f,
00415     DW_OP_lit0 = 0x30,
00416     DW_OP_lit1 = 0x31,
00417     DW_OP_lit2 = 0x32,
00418     DW_OP_lit3 = 0x33,
00419     DW_OP_lit4 = 0x34,
00420     DW_OP_lit5 = 0x35,
00421     DW_OP_lit6 = 0x36,
00422     DW_OP_lit7 = 0x37,
00423     DW_OP_lit8 = 0x38,
00424     DW_OP_lit9 = 0x39,
00425     DW_OP_lit10 = 0x3a,
00426     DW_OP_lit11 = 0x3b,
00427     DW_OP_lit12 = 0x3c,
00428     DW_OP_lit13 = 0x3d,
00429     DW_OP_lit14 = 0x3e,
00430     DW_OP_lit15 = 0x3f,
00431     DW_OP_lit16 = 0x40,
00432     DW_OP_lit17 = 0x41,
00433     DW_OP_lit18 = 0x42,
00434     DW_OP_lit19 = 0x43,
00435     DW_OP_lit20 = 0x44,
00436     DW_OP_lit21 = 0x45,
00437     DW_OP_lit22 = 0x46,
00438     DW_OP_lit23 = 0x47,
00439     DW_OP_lit24 = 0x48,
00440     DW_OP_lit25 = 0x49,
00441     DW_OP_lit26 = 0x4a,
00442     DW_OP_lit27 = 0x4b,
00443     DW_OP_lit28 = 0x4c,
00444     DW_OP_lit29 = 0x4d,
00445     DW_OP_lit30 = 0x4e,
00446     DW_OP_lit31 = 0x4f,
00447     DW_OP_reg0 = 0x50,
00448     DW_OP_reg1 = 0x51,
00449     DW_OP_reg2 = 0x52,
00450     DW_OP_reg3 = 0x53,
00451     DW_OP_reg4 = 0x54,
00452     DW_OP_reg5 = 0x55,
00453     DW_OP_reg6 = 0x56,
00454     DW_OP_reg7 = 0x57,
00455     DW_OP_reg8 = 0x58,
00456     DW_OP_reg9 = 0x59,
00457     DW_OP_reg10 = 0x5a,
00458     DW_OP_reg11 = 0x5b,
00459     DW_OP_reg12 = 0x5c,
00460     DW_OP_reg13 = 0x5d,
00461     DW_OP_reg14 = 0x5e,
00462     DW_OP_reg15 = 0x5f,
00463     DW_OP_reg16 = 0x60,
00464     DW_OP_reg17 = 0x61,
00465     DW_OP_reg18 = 0x62,
00466     DW_OP_reg19 = 0x63,
00467     DW_OP_reg20 = 0x64,
00468     DW_OP_reg21 = 0x65,
00469     DW_OP_reg22 = 0x66,
00470     DW_OP_reg23 = 0x67,
00471     DW_OP_reg24 = 0x68,
00472     DW_OP_reg25 = 0x69,
00473     DW_OP_reg26 = 0x6a,
00474     DW_OP_reg27 = 0x6b,
00475     DW_OP_reg28 = 0x6c,
00476     DW_OP_reg29 = 0x6d,
00477     DW_OP_reg30 = 0x6e,
00478     DW_OP_reg31 = 0x6f,
00479     DW_OP_breg0 = 0x70,
00480     DW_OP_breg1 = 0x71,
00481     DW_OP_breg2 = 0x72,
00482     DW_OP_breg3 = 0x73,
00483     DW_OP_breg4 = 0x74,
00484     DW_OP_breg5 = 0x75,
00485     DW_OP_breg6 = 0x76,
00486     DW_OP_breg7 = 0x77,
00487     DW_OP_breg8 = 0x78,
00488     DW_OP_breg9 = 0x79,
00489     DW_OP_breg10 = 0x7a,
00490     DW_OP_breg11 = 0x7b,
00491     DW_OP_breg12 = 0x7c,
00492     DW_OP_breg13 = 0x7d,
00493     DW_OP_breg14 = 0x7e,
00494     DW_OP_breg15 = 0x7f,
00495     DW_OP_breg16 = 0x80,
00496     DW_OP_breg17 = 0x81,
00497     DW_OP_breg18 = 0x82,
00498     DW_OP_breg19 = 0x83,
00499     DW_OP_breg20 = 0x84,
00500     DW_OP_breg21 = 0x85,
00501     DW_OP_breg22 = 0x86,
00502     DW_OP_breg23 = 0x87,
00503     DW_OP_breg24 = 0x88,
00504     DW_OP_breg25 = 0x89,
00505     DW_OP_breg26 = 0x8a,
00506     DW_OP_breg27 = 0x8b,
00507     DW_OP_breg28 = 0x8c,
00508     DW_OP_breg29 = 0x8d,
00509     DW_OP_breg30 = 0x8e,
00510     DW_OP_breg31 = 0x8f,
00511     DW_OP_regx = 0x90,
00512     DW_OP_fbreg = 0x91,
00513     DW_OP_bregx = 0x92,
00514     DW_OP_piece = 0x93,
00515     DW_OP_deref_size = 0x94,
00516     DW_OP_xderef_size = 0x95,
00517     DW_OP_nop = 0x96,
00518     /* DWARF 3 extensions.  */
00519     DW_OP_push_object_address = 0x97,
00520     DW_OP_call2 = 0x98,
00521     DW_OP_call4 = 0x99,
00522     DW_OP_call_ref = 0x9a,
00523     /* GNU extensions.  */
00524     DW_OP_GNU_push_tls_address = 0xe0,
00525     /* HP extensions.  */
00526     DW_OP_HP_unknown     = 0xe0, /* Ouch, the same as GNU_push_tls_address.  */
00527     DW_OP_HP_is_value    = 0xe1,
00528     DW_OP_HP_fltconst4   = 0xe2,
00529     DW_OP_HP_fltconst8   = 0xe3,
00530     DW_OP_HP_mod_range   = 0xe4,
00531     DW_OP_HP_unmod_range = 0xe5,
00532     DW_OP_HP_tls         = 0xe6
00533   };
00534 
00535 #define DW_OP_lo_user   0xe0    /* Implementation-defined range start.  */
00536 #define DW_OP_hi_user   0xff    /* Implementation-defined range end.  */
00537 
00538 /* Type encodings.  */
00539 enum dwarf_type
00540   {
00541     DW_ATE_void = 0x0,
00542     DW_ATE_address = 0x1,
00543     DW_ATE_boolean = 0x2,
00544     DW_ATE_complex_float = 0x3,
00545     DW_ATE_float = 0x4,
00546     DW_ATE_signed = 0x5,
00547     DW_ATE_signed_char = 0x6,
00548     DW_ATE_unsigned = 0x7,
00549     DW_ATE_unsigned_char = 0x8,
00550     /* DWARF 3.  */
00551     DW_ATE_imaginary_float = 0x9,
00552     /* HP extensions.  */
00553     DW_ATE_HP_float80            = 0x80, /* Floating-point (80 bit).  */
00554     DW_ATE_HP_complex_float80    = 0x81, /* Complex floating-point (80 bit).  */
00555     DW_ATE_HP_float128           = 0x82, /* Floating-point (128 bit).  */
00556     DW_ATE_HP_complex_float128   = 0x83, /* Complex floating-point (128 bit).  */
00557     DW_ATE_HP_floathpintel       = 0x84, /* Floating-point (82 bit IA64).  */
00558     DW_ATE_HP_imaginary_float80  = 0x85,
00559     DW_ATE_HP_imaginary_float128 = 0x86
00560   };
00561 
00562 #define DW_ATE_lo_user 0x80
00563 #define DW_ATE_hi_user 0xff
00564 
00565 /* Array ordering names and codes.  */
00566 enum dwarf_array_dim_ordering
00567   {
00568     DW_ORD_row_major = 0,
00569     DW_ORD_col_major = 1
00570   };
00571 
00572 /* Access attribute.  */
00573 enum dwarf_access_attribute
00574   {
00575     DW_ACCESS_public = 1,
00576     DW_ACCESS_protected = 2,
00577     DW_ACCESS_private = 3
00578   };
00579 
00580 /* Visibility.  */
00581 enum dwarf_visibility_attribute
00582   {
00583     DW_VIS_local = 1,
00584     DW_VIS_exported = 2,
00585     DW_VIS_qualified = 3
00586   };
00587 
00588 /* Virtuality.  */
00589 enum dwarf_virtuality_attribute
00590   {
00591     DW_VIRTUALITY_none = 0,
00592     DW_VIRTUALITY_virtual = 1,
00593     DW_VIRTUALITY_pure_virtual = 2
00594   };
00595 
00596 /* Case sensitivity.  */
00597 enum dwarf_id_case
00598   {
00599     DW_ID_case_sensitive = 0,
00600     DW_ID_up_case = 1,
00601     DW_ID_down_case = 2,
00602     DW_ID_case_insensitive = 3
00603   };
00604 
00605 /* Calling convention.  */
00606 enum dwarf_calling_convention
00607   {
00608     DW_CC_normal = 0x1,
00609     DW_CC_program = 0x2,
00610     DW_CC_nocall = 0x3,
00611     DW_CC_GNU_renesas_sh = 0x40
00612   };
00613 
00614 #define DW_CC_lo_user 0x40
00615 #define DW_CC_hi_user 0xff
00616 
00617 /* Inline attribute.  */
00618 enum dwarf_inline_attribute
00619   {
00620     DW_INL_not_inlined = 0,
00621     DW_INL_inlined = 1,
00622     DW_INL_declared_not_inlined = 2,
00623     DW_INL_declared_inlined = 3
00624   };
00625 
00626 /* Discriminant lists.  */
00627 enum dwarf_discrim_list
00628   {
00629     DW_DSC_label = 0,
00630     DW_DSC_range = 1
00631   };
00632 
00633 /* Line number opcodes.  */
00634 enum dwarf_line_number_ops
00635   {
00636     DW_LNS_extended_op = 0,
00637     DW_LNS_copy = 1,
00638     DW_LNS_advance_pc = 2,
00639     DW_LNS_advance_line = 3,
00640     DW_LNS_set_file = 4,
00641     DW_LNS_set_column = 5,
00642     DW_LNS_negate_stmt = 6,
00643     DW_LNS_set_basic_block = 7,
00644     DW_LNS_const_add_pc = 8,
00645     DW_LNS_fixed_advance_pc = 9,
00646     /* DWARF 3.  */
00647     DW_LNS_set_prologue_end = 10,
00648     DW_LNS_set_epilogue_begin = 11,
00649     DW_LNS_set_isa = 12
00650   };
00651 
00652 /* Line number extended opcodes.  */
00653 enum dwarf_line_number_x_ops
00654   {
00655     DW_LNE_end_sequence = 1,
00656     DW_LNE_set_address = 2,
00657     DW_LNE_define_file = 3,
00658     /* HP extensions.  */
00659     DW_LNE_HP_negate_is_UV_update      = 0x11,
00660     DW_LNE_HP_push_context             = 0x12,
00661     DW_LNE_HP_pop_context              = 0x13,
00662     DW_LNE_HP_set_file_line_column     = 0x14,
00663     DW_LNE_HP_set_routine_name         = 0x15,
00664     DW_LNE_HP_set_sequence             = 0x16,
00665     DW_LNE_HP_negate_post_semantics    = 0x17,
00666     DW_LNE_HP_negate_function_exit     = 0x18,
00667     DW_LNE_HP_negate_front_end_logical = 0x19,
00668     DW_LNE_HP_define_proc              = 0x20
00669   };
00670 
00671 /* Call frame information.  */
00672 enum dwarf_call_frame_info
00673   {
00674     DW_CFA_advance_loc = 0x40,
00675     DW_CFA_offset = 0x80,
00676     DW_CFA_restore = 0xc0,
00677     DW_CFA_nop = 0x00,
00678     DW_CFA_set_loc = 0x01,
00679     DW_CFA_advance_loc1 = 0x02,
00680     DW_CFA_advance_loc2 = 0x03,
00681     DW_CFA_advance_loc4 = 0x04,
00682     DW_CFA_offset_extended = 0x05,
00683     DW_CFA_restore_extended = 0x06,
00684     DW_CFA_undefined = 0x07,
00685     DW_CFA_same_value = 0x08,
00686     DW_CFA_register = 0x09,
00687     DW_CFA_remember_state = 0x0a,
00688     DW_CFA_restore_state = 0x0b,
00689     DW_CFA_def_cfa = 0x0c,
00690     DW_CFA_def_cfa_register = 0x0d,
00691     DW_CFA_def_cfa_offset = 0x0e,
00692     /* DWARF 3.  */
00693     DW_CFA_def_cfa_expression = 0x0f,
00694     DW_CFA_expression = 0x10,
00695     DW_CFA_offset_extended_sf = 0x11,
00696     DW_CFA_def_cfa_sf = 0x12,
00697     DW_CFA_def_cfa_offset_sf = 0x13,
00698     /* SGI/MIPS specific.  */
00699     DW_CFA_MIPS_advance_loc8 = 0x1d,
00700     /* GNU extensions.  */
00701     DW_CFA_GNU_window_save = 0x2d,
00702     DW_CFA_GNU_args_size = 0x2e,
00703     DW_CFA_GNU_negative_offset_extended = 0x2f
00704   };
00705 
00706 #define DW_CIE_ID     0xffffffff
00707 #define DW_CIE_VERSION    1
00708 
00709 #define DW_CFA_extended   0
00710 #define DW_CFA_lo_user    0x1c
00711 #define DW_CFA_hi_user    0x3f
00712 
00713 #define DW_CHILDREN_no           0x00
00714 #define DW_CHILDREN_yes          0x01
00715 
00716 #define DW_ADDR_none        0
00717 
00718 /* Source language names and codes.  */
00719 enum dwarf_source_language
00720   {
00721     DW_LANG_C89 = 0x0001,
00722     DW_LANG_C = 0x0002,
00723     DW_LANG_Ada83 = 0x0003,
00724     DW_LANG_C_plus_plus = 0x0004,
00725     DW_LANG_Cobol74 = 0x0005,
00726     DW_LANG_Cobol85 = 0x0006,
00727     DW_LANG_Fortran77 = 0x0007,
00728     DW_LANG_Fortran90 = 0x0008,
00729     DW_LANG_Pascal83 = 0x0009,
00730     DW_LANG_Modula2 = 0x000a,
00731     DW_LANG_Java = 0x000b,
00732     /* DWARF 3.  */
00733     DW_LANG_C99 = 0x000c,
00734     DW_LANG_Ada95 = 0x000d,
00735     DW_LANG_Fortran95 = 0x000e,
00736     /* MIPS.  */
00737     DW_LANG_Mips_Assembler = 0x8001,
00738     /* UPC.  */
00739     DW_LANG_Upc = 0x8765
00740   };
00741 
00742 #define DW_LANG_lo_user 0x8000  /* Implementation-defined range start.  */
00743 #define DW_LANG_hi_user 0xffff  /* Implementation-defined range start.  */
00744 
00745 /* Names and codes for macro information.  */
00746 enum dwarf_macinfo_record_type
00747   {
00748     DW_MACINFO_define = 1,
00749     DW_MACINFO_undef = 2,
00750     DW_MACINFO_start_file = 3,
00751     DW_MACINFO_end_file = 4,
00752     DW_MACINFO_vendor_ext = 255
00753   };
00754 
00755 /* @@@ For use with GNU frame unwind information.  */
00756 
00757 #define DW_EH_PE_absptr     0x00
00758 #define DW_EH_PE_omit       0xff
00759 
00760 #define DW_EH_PE_uleb128    0x01
00761 #define DW_EH_PE_udata2     0x02
00762 #define DW_EH_PE_udata4     0x03
00763 #define DW_EH_PE_udata8     0x04
00764 #define DW_EH_PE_sleb128    0x09
00765 #define DW_EH_PE_sdata2     0x0A
00766 #define DW_EH_PE_sdata4     0x0B
00767 #define DW_EH_PE_sdata8     0x0C
00768 #define DW_EH_PE_signed     0x08
00769 
00770 #define DW_EH_PE_pcrel      0x10
00771 #define DW_EH_PE_textrel    0x20
00772 #define DW_EH_PE_datarel    0x30
00773 #define DW_EH_PE_funcrel    0x40
00774 #define DW_EH_PE_aligned    0x50
00775 
00776 #define DW_EH_PE_indirect   0x80
00777 
00780 typedef struct
00781 {
00782     ULONG Length;
00783     ULONG CiePointer;
00784 } DW2CIEFDE;
00785 
00786 typedef struct
00787 {
00788     ULONG Length;
00789     char *Next;
00790     ULONG CieId;
00791     char Version;
00792     ULONG ReturnAddressRegister;
00793     ULONG AugStringLength;
00794     char *AugString;
00795     ULONG AugLength;
00796     char *AugData;
00797     ULONG CodeAlign;
00798     LONG DataAlign;
00799     char *Instructions;
00800 } DW2CIE, *PDW2CIE;
00801 
00802 typedef struct
00803 {
00804     unsigned long Length;
00805     char *Next;
00806     char *CiePointer;
00807     unsigned long PcBegin;
00808     unsigned long PcRange;
00809     unsigned long AugLength;
00810     char *AugData;
00811     char *Instructions;
00812 } DW2FDE, *PDW2FDE;
00813 
00814 typedef struct _SEHBLOCK
00815 {
00816     unsigned long BeginTry;
00817     unsigned long EndTry;
00818     unsigned long Target;
00819     unsigned long Handler;
00820     unsigned long End;
00821 } SEHBLOCK, *PSEHBLOCK;
00822 
00823 typedef struct _CFSTATE
00824 {
00825     unsigned long Location;
00826     unsigned long Code;
00827     unsigned long Reg;
00828     unsigned long Reg2;
00829     long FramePtr;
00830     long FramePtrDiff;
00831     long Offset;
00832     unsigned long IsUwop;
00833     unsigned long Scope;
00834     unsigned long cScopes;
00835     unsigned long TryLevel;
00836     SEHBLOCK SehBlock[20];
00837 } DW2CFSTATE, *PDW2CFSTATE;
00838 
00839 #define NextCIE(p) ((void*)((char*)p + p->Length + 4))

Generated on Sat May 26 2012 04:36:37 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.