15796c8dcSSimon Schubert /* Declarations and definitions of codes relating to the DWARF2 and 25796c8dcSSimon Schubert DWARF3 symbolic debugging information formats. 35796c8dcSSimon Schubert Copyright (C) 1992, 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 4*ef5ccd6cSJohn Marino 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 5cf7f2e2dSJohn Marino Free Software Foundation, Inc. 65796c8dcSSimon Schubert 75796c8dcSSimon Schubert Written by Gary Funck (gary@intrepid.com) The Ada Joint Program 85796c8dcSSimon Schubert Office (AJPO), Florida State University and Silicon Graphics Inc. 95796c8dcSSimon Schubert provided support for this effort -- June 21, 1995. 105796c8dcSSimon Schubert 115796c8dcSSimon Schubert Derived from the DWARF 1 implementation written by Ron Guilmette 125796c8dcSSimon Schubert (rfg@netcom.com), November 1990. 135796c8dcSSimon Schubert 145796c8dcSSimon Schubert This file is part of GCC. 155796c8dcSSimon Schubert 165796c8dcSSimon Schubert GCC is free software; you can redistribute it and/or modify it under 175796c8dcSSimon Schubert the terms of the GNU General Public License as published by the Free 185796c8dcSSimon Schubert Software Foundation; either version 3, or (at your option) any later 195796c8dcSSimon Schubert version. 205796c8dcSSimon Schubert 215796c8dcSSimon Schubert GCC is distributed in the hope that it will be useful, but WITHOUT 225796c8dcSSimon Schubert ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 235796c8dcSSimon Schubert or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 245796c8dcSSimon Schubert License for more details. 255796c8dcSSimon Schubert 265796c8dcSSimon Schubert Under Section 7 of GPL version 3, you are granted additional 275796c8dcSSimon Schubert permissions described in the GCC Runtime Library Exception, version 285796c8dcSSimon Schubert 3.1, as published by the Free Software Foundation. 295796c8dcSSimon Schubert 305796c8dcSSimon Schubert You should have received a copy of the GNU General Public License and 315796c8dcSSimon Schubert a copy of the GCC Runtime Library Exception along with this program; 325796c8dcSSimon Schubert see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 335796c8dcSSimon Schubert <http://www.gnu.org/licenses/>. */ 345796c8dcSSimon Schubert 355796c8dcSSimon Schubert /* This file is derived from the DWARF specification (a public document) 365796c8dcSSimon Schubert Revision 2.0.0 (July 27, 1993) developed by the UNIX International 375796c8dcSSimon Schubert Programming Languages Special Interest Group (UI/PLSIG) and distributed 385796c8dcSSimon Schubert by UNIX International. Copies of this specification are available from 395796c8dcSSimon Schubert UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054. 405796c8dcSSimon Schubert 415796c8dcSSimon Schubert This file also now contains definitions from the DWARF 3 specification 425796c8dcSSimon Schubert published Dec 20, 2005, available from: http://dwarf.freestandards.org. */ 435796c8dcSSimon Schubert 44c50c785cSJohn Marino #ifndef _DWARF2_H 45c50c785cSJohn Marino #define _DWARF2_H 465796c8dcSSimon Schubert 47*ef5ccd6cSJohn Marino #define DW_TAG(name, value) , name = value 48*ef5ccd6cSJohn Marino #define DW_TAG_DUP(name, value) , name = value 49*ef5ccd6cSJohn Marino #define DW_FORM(name, value) , name = value 50*ef5ccd6cSJohn Marino #define DW_AT(name, value) , name = value 51*ef5ccd6cSJohn Marino #define DW_AT_DUP(name, value) , name = value 52*ef5ccd6cSJohn Marino #define DW_OP(name, value) , name = value 53*ef5ccd6cSJohn Marino #define DW_OP_DUP(name, value) , name = value 54*ef5ccd6cSJohn Marino #define DW_ATE(name, value) , name = value 55*ef5ccd6cSJohn Marino #define DW_ATE_DUP(name, value) , name = value 56*ef5ccd6cSJohn Marino #define DW_CFA(name, value) , name = value 575796c8dcSSimon Schubert 58*ef5ccd6cSJohn Marino #define DW_FIRST_TAG(name, value) enum dwarf_tag { \ 59*ef5ccd6cSJohn Marino name = value 60*ef5ccd6cSJohn Marino #define DW_END_TAG }; 61*ef5ccd6cSJohn Marino #define DW_FIRST_FORM(name, value) enum dwarf_form { \ 62*ef5ccd6cSJohn Marino name = value 63*ef5ccd6cSJohn Marino #define DW_END_FORM }; 64*ef5ccd6cSJohn Marino #define DW_FIRST_AT(name, value) enum dwarf_attribute { \ 65*ef5ccd6cSJohn Marino name = value 66*ef5ccd6cSJohn Marino #define DW_END_AT }; 67*ef5ccd6cSJohn Marino #define DW_FIRST_OP(name, value) enum dwarf_location_atom { \ 68*ef5ccd6cSJohn Marino name = value 69*ef5ccd6cSJohn Marino #define DW_END_OP }; 70*ef5ccd6cSJohn Marino #define DW_FIRST_ATE(name, value) enum dwarf_type { \ 71*ef5ccd6cSJohn Marino name = value 72*ef5ccd6cSJohn Marino #define DW_END_ATE }; 73*ef5ccd6cSJohn Marino #define DW_FIRST_CFA(name, value) enum dwarf_call_frame_info { \ 74*ef5ccd6cSJohn Marino name = value 75*ef5ccd6cSJohn Marino #define DW_END_CFA }; 765796c8dcSSimon Schubert 77*ef5ccd6cSJohn Marino #include "dwarf2.def" 78cf7f2e2dSJohn Marino 79*ef5ccd6cSJohn Marino #undef DW_FIRST_TAG 80*ef5ccd6cSJohn Marino #undef DW_END_TAG 81*ef5ccd6cSJohn Marino #undef DW_FIRST_FORM 82*ef5ccd6cSJohn Marino #undef DW_END_FORM 83*ef5ccd6cSJohn Marino #undef DW_FIRST_AT 84*ef5ccd6cSJohn Marino #undef DW_END_AT 85*ef5ccd6cSJohn Marino #undef DW_FIRST_OP 86*ef5ccd6cSJohn Marino #undef DW_END_OP 87*ef5ccd6cSJohn Marino #undef DW_FIRST_ATE 88*ef5ccd6cSJohn Marino #undef DW_END_ATE 89*ef5ccd6cSJohn Marino #undef DW_FIRST_CFA 90*ef5ccd6cSJohn Marino #undef DW_END_CFA 91cf7f2e2dSJohn Marino 92*ef5ccd6cSJohn Marino #undef DW_TAG 93*ef5ccd6cSJohn Marino #undef DW_TAG_DUP 94*ef5ccd6cSJohn Marino #undef DW_FORM 95*ef5ccd6cSJohn Marino #undef DW_AT 96*ef5ccd6cSJohn Marino #undef DW_AT_DUP 97*ef5ccd6cSJohn Marino #undef DW_OP 98*ef5ccd6cSJohn Marino #undef DW_OP_DUP 99*ef5ccd6cSJohn Marino #undef DW_ATE 100*ef5ccd6cSJohn Marino #undef DW_ATE_DUP 101*ef5ccd6cSJohn Marino #undef DW_CFA 1025796c8dcSSimon Schubert 1035796c8dcSSimon Schubert /* Flag that tells whether entry has a child or not. */ 1045796c8dcSSimon Schubert #define DW_children_no 0 1055796c8dcSSimon Schubert #define DW_children_yes 1 1065796c8dcSSimon Schubert 1075796c8dcSSimon Schubert #define DW_AT_stride_size DW_AT_bit_stride /* Note: The use of DW_AT_stride_size is deprecated. */ 1085796c8dcSSimon Schubert #define DW_AT_stride DW_AT_byte_stride /* Note: The use of DW_AT_stride is deprecated. */ 1095796c8dcSSimon Schubert 1105796c8dcSSimon Schubert /* Decimal sign encodings. */ 1115796c8dcSSimon Schubert enum dwarf_decimal_sign_encoding 1125796c8dcSSimon Schubert { 1135796c8dcSSimon Schubert /* DWARF 3. */ 1145796c8dcSSimon Schubert DW_DS_unsigned = 0x01, 1155796c8dcSSimon Schubert DW_DS_leading_overpunch = 0x02, 1165796c8dcSSimon Schubert DW_DS_trailing_overpunch = 0x03, 1175796c8dcSSimon Schubert DW_DS_leading_separate = 0x04, 1185796c8dcSSimon Schubert DW_DS_trailing_separate = 0x05 1195796c8dcSSimon Schubert }; 1205796c8dcSSimon Schubert 1215796c8dcSSimon Schubert /* Endianity encodings. */ 1225796c8dcSSimon Schubert enum dwarf_endianity_encoding 1235796c8dcSSimon Schubert { 1245796c8dcSSimon Schubert /* DWARF 3. */ 1255796c8dcSSimon Schubert DW_END_default = 0x00, 1265796c8dcSSimon Schubert DW_END_big = 0x01, 1275796c8dcSSimon Schubert DW_END_little = 0x02, 1285796c8dcSSimon Schubert 1295796c8dcSSimon Schubert DW_END_lo_user = 0x40, 1305796c8dcSSimon Schubert DW_END_hi_user = 0xff 1315796c8dcSSimon Schubert }; 1325796c8dcSSimon Schubert 1335796c8dcSSimon Schubert /* Array ordering names and codes. */ 1345796c8dcSSimon Schubert enum dwarf_array_dim_ordering 1355796c8dcSSimon Schubert { 1365796c8dcSSimon Schubert DW_ORD_row_major = 0, 1375796c8dcSSimon Schubert DW_ORD_col_major = 1 1385796c8dcSSimon Schubert }; 1395796c8dcSSimon Schubert 1405796c8dcSSimon Schubert /* Access attribute. */ 1415796c8dcSSimon Schubert enum dwarf_access_attribute 1425796c8dcSSimon Schubert { 1435796c8dcSSimon Schubert DW_ACCESS_public = 1, 1445796c8dcSSimon Schubert DW_ACCESS_protected = 2, 1455796c8dcSSimon Schubert DW_ACCESS_private = 3 1465796c8dcSSimon Schubert }; 1475796c8dcSSimon Schubert 1485796c8dcSSimon Schubert /* Visibility. */ 1495796c8dcSSimon Schubert enum dwarf_visibility_attribute 1505796c8dcSSimon Schubert { 1515796c8dcSSimon Schubert DW_VIS_local = 1, 1525796c8dcSSimon Schubert DW_VIS_exported = 2, 1535796c8dcSSimon Schubert DW_VIS_qualified = 3 1545796c8dcSSimon Schubert }; 1555796c8dcSSimon Schubert 1565796c8dcSSimon Schubert /* Virtuality. */ 1575796c8dcSSimon Schubert enum dwarf_virtuality_attribute 1585796c8dcSSimon Schubert { 1595796c8dcSSimon Schubert DW_VIRTUALITY_none = 0, 1605796c8dcSSimon Schubert DW_VIRTUALITY_virtual = 1, 1615796c8dcSSimon Schubert DW_VIRTUALITY_pure_virtual = 2 1625796c8dcSSimon Schubert }; 1635796c8dcSSimon Schubert 1645796c8dcSSimon Schubert /* Case sensitivity. */ 1655796c8dcSSimon Schubert enum dwarf_id_case 1665796c8dcSSimon Schubert { 1675796c8dcSSimon Schubert DW_ID_case_sensitive = 0, 1685796c8dcSSimon Schubert DW_ID_up_case = 1, 1695796c8dcSSimon Schubert DW_ID_down_case = 2, 1705796c8dcSSimon Schubert DW_ID_case_insensitive = 3 1715796c8dcSSimon Schubert }; 1725796c8dcSSimon Schubert 1735796c8dcSSimon Schubert /* Calling convention. */ 1745796c8dcSSimon Schubert enum dwarf_calling_convention 1755796c8dcSSimon Schubert { 1765796c8dcSSimon Schubert DW_CC_normal = 0x1, 1775796c8dcSSimon Schubert DW_CC_program = 0x2, 1785796c8dcSSimon Schubert DW_CC_nocall = 0x3, 1795796c8dcSSimon Schubert 1805796c8dcSSimon Schubert DW_CC_lo_user = 0x40, 1815796c8dcSSimon Schubert DW_CC_hi_user = 0xff, 1825796c8dcSSimon Schubert 183cf7f2e2dSJohn Marino DW_CC_GNU_renesas_sh = 0x40, 184c50c785cSJohn Marino DW_CC_GNU_borland_fastcall_i386 = 0x41, 185c50c785cSJohn Marino 186c50c785cSJohn Marino /* This DW_CC_ value is not currently generated by any toolchain. It is 187c50c785cSJohn Marino used internally to GDB to indicate OpenCL C functions that have been 188c50c785cSJohn Marino compiled with the IBM XL C for OpenCL compiler and use a non-platform 189c50c785cSJohn Marino calling convention for passing OpenCL C vector types. This value may 190c50c785cSJohn Marino be changed freely as long as it does not conflict with any other DW_CC_ 191c50c785cSJohn Marino value defined here. */ 192c50c785cSJohn Marino DW_CC_GDB_IBM_OpenCL = 0xff 1935796c8dcSSimon Schubert }; 1945796c8dcSSimon Schubert 1955796c8dcSSimon Schubert /* Inline attribute. */ 1965796c8dcSSimon Schubert enum dwarf_inline_attribute 1975796c8dcSSimon Schubert { 1985796c8dcSSimon Schubert DW_INL_not_inlined = 0, 1995796c8dcSSimon Schubert DW_INL_inlined = 1, 2005796c8dcSSimon Schubert DW_INL_declared_not_inlined = 2, 2015796c8dcSSimon Schubert DW_INL_declared_inlined = 3 2025796c8dcSSimon Schubert }; 2035796c8dcSSimon Schubert 2045796c8dcSSimon Schubert /* Discriminant lists. */ 2055796c8dcSSimon Schubert enum dwarf_discrim_list 2065796c8dcSSimon Schubert { 2075796c8dcSSimon Schubert DW_DSC_label = 0, 2085796c8dcSSimon Schubert DW_DSC_range = 1 2095796c8dcSSimon Schubert }; 2105796c8dcSSimon Schubert 2115796c8dcSSimon Schubert /* Line number opcodes. */ 2125796c8dcSSimon Schubert enum dwarf_line_number_ops 2135796c8dcSSimon Schubert { 2145796c8dcSSimon Schubert DW_LNS_extended_op = 0, 2155796c8dcSSimon Schubert DW_LNS_copy = 1, 2165796c8dcSSimon Schubert DW_LNS_advance_pc = 2, 2175796c8dcSSimon Schubert DW_LNS_advance_line = 3, 2185796c8dcSSimon Schubert DW_LNS_set_file = 4, 2195796c8dcSSimon Schubert DW_LNS_set_column = 5, 2205796c8dcSSimon Schubert DW_LNS_negate_stmt = 6, 2215796c8dcSSimon Schubert DW_LNS_set_basic_block = 7, 2225796c8dcSSimon Schubert DW_LNS_const_add_pc = 8, 2235796c8dcSSimon Schubert DW_LNS_fixed_advance_pc = 9, 2245796c8dcSSimon Schubert /* DWARF 3. */ 2255796c8dcSSimon Schubert DW_LNS_set_prologue_end = 10, 2265796c8dcSSimon Schubert DW_LNS_set_epilogue_begin = 11, 2275796c8dcSSimon Schubert DW_LNS_set_isa = 12 2285796c8dcSSimon Schubert }; 2295796c8dcSSimon Schubert 2305796c8dcSSimon Schubert /* Line number extended opcodes. */ 2315796c8dcSSimon Schubert enum dwarf_line_number_x_ops 2325796c8dcSSimon Schubert { 2335796c8dcSSimon Schubert DW_LNE_end_sequence = 1, 2345796c8dcSSimon Schubert DW_LNE_set_address = 2, 2355796c8dcSSimon Schubert DW_LNE_define_file = 3, 2365796c8dcSSimon Schubert DW_LNE_set_discriminator = 4, 2375796c8dcSSimon Schubert /* HP extensions. */ 2385796c8dcSSimon Schubert DW_LNE_HP_negate_is_UV_update = 0x11, 2395796c8dcSSimon Schubert DW_LNE_HP_push_context = 0x12, 2405796c8dcSSimon Schubert DW_LNE_HP_pop_context = 0x13, 2415796c8dcSSimon Schubert DW_LNE_HP_set_file_line_column = 0x14, 2425796c8dcSSimon Schubert DW_LNE_HP_set_routine_name = 0x15, 2435796c8dcSSimon Schubert DW_LNE_HP_set_sequence = 0x16, 2445796c8dcSSimon Schubert DW_LNE_HP_negate_post_semantics = 0x17, 2455796c8dcSSimon Schubert DW_LNE_HP_negate_function_exit = 0x18, 2465796c8dcSSimon Schubert DW_LNE_HP_negate_front_end_logical = 0x19, 2475796c8dcSSimon Schubert DW_LNE_HP_define_proc = 0x20, 248cf7f2e2dSJohn Marino DW_LNE_HP_source_file_correlation = 0x80, 2495796c8dcSSimon Schubert 2505796c8dcSSimon Schubert DW_LNE_lo_user = 0x80, 2515796c8dcSSimon Schubert DW_LNE_hi_user = 0xff 2525796c8dcSSimon Schubert }; 2535796c8dcSSimon Schubert 254c50c785cSJohn Marino /* Sub-opcodes for DW_LNE_HP_source_file_correlation. */ 255c50c785cSJohn Marino enum dwarf_line_number_hp_sfc_ops 256c50c785cSJohn Marino { 257c50c785cSJohn Marino DW_LNE_HP_SFC_formfeed = 1, 258c50c785cSJohn Marino DW_LNE_HP_SFC_set_listing_line = 2, 259c50c785cSJohn Marino DW_LNE_HP_SFC_associate = 3 260c50c785cSJohn Marino }; 261c50c785cSJohn Marino 262*ef5ccd6cSJohn Marino /* Type codes for location list entries. 263*ef5ccd6cSJohn Marino Extension for Fission. See http://gcc.gnu.org/wiki/DebugFission. */ 264*ef5ccd6cSJohn Marino 265*ef5ccd6cSJohn Marino enum dwarf_location_list_entry_type 2665796c8dcSSimon Schubert { 267*ef5ccd6cSJohn Marino DW_LLE_GNU_end_of_list_entry = 0, 268*ef5ccd6cSJohn Marino DW_LLE_GNU_base_address_selection_entry = 1, 269*ef5ccd6cSJohn Marino DW_LLE_GNU_start_end_entry = 2, 270*ef5ccd6cSJohn Marino DW_LLE_GNU_start_length_entry = 3 2715796c8dcSSimon Schubert }; 2725796c8dcSSimon Schubert 2735796c8dcSSimon Schubert #define DW_CIE_ID 0xffffffff 2745796c8dcSSimon Schubert #define DW64_CIE_ID 0xffffffffffffffffULL 2755796c8dcSSimon Schubert #define DW_CIE_VERSION 1 2765796c8dcSSimon Schubert 2775796c8dcSSimon Schubert #define DW_CFA_extended 0 2785796c8dcSSimon Schubert 2795796c8dcSSimon Schubert #define DW_CHILDREN_no 0x00 2805796c8dcSSimon Schubert #define DW_CHILDREN_yes 0x01 2815796c8dcSSimon Schubert 2825796c8dcSSimon Schubert #define DW_ADDR_none 0 2835796c8dcSSimon Schubert 2845796c8dcSSimon Schubert /* Source language names and codes. */ 2855796c8dcSSimon Schubert enum dwarf_source_language 2865796c8dcSSimon Schubert { 2875796c8dcSSimon Schubert DW_LANG_C89 = 0x0001, 2885796c8dcSSimon Schubert DW_LANG_C = 0x0002, 2895796c8dcSSimon Schubert DW_LANG_Ada83 = 0x0003, 2905796c8dcSSimon Schubert DW_LANG_C_plus_plus = 0x0004, 2915796c8dcSSimon Schubert DW_LANG_Cobol74 = 0x0005, 2925796c8dcSSimon Schubert DW_LANG_Cobol85 = 0x0006, 2935796c8dcSSimon Schubert DW_LANG_Fortran77 = 0x0007, 2945796c8dcSSimon Schubert DW_LANG_Fortran90 = 0x0008, 2955796c8dcSSimon Schubert DW_LANG_Pascal83 = 0x0009, 2965796c8dcSSimon Schubert DW_LANG_Modula2 = 0x000a, 2975796c8dcSSimon Schubert /* DWARF 3. */ 2985796c8dcSSimon Schubert DW_LANG_Java = 0x000b, 2995796c8dcSSimon Schubert DW_LANG_C99 = 0x000c, 3005796c8dcSSimon Schubert DW_LANG_Ada95 = 0x000d, 3015796c8dcSSimon Schubert DW_LANG_Fortran95 = 0x000e, 3025796c8dcSSimon Schubert DW_LANG_PLI = 0x000f, 3035796c8dcSSimon Schubert DW_LANG_ObjC = 0x0010, 3045796c8dcSSimon Schubert DW_LANG_ObjC_plus_plus = 0x0011, 3055796c8dcSSimon Schubert DW_LANG_UPC = 0x0012, 3065796c8dcSSimon Schubert DW_LANG_D = 0x0013, 307cf7f2e2dSJohn Marino /* DWARF 4. */ 308cf7f2e2dSJohn Marino DW_LANG_Python = 0x0014, 309c50c785cSJohn Marino /* DWARF 5. */ 310c50c785cSJohn Marino DW_LANG_Go = 0x0016, 3115796c8dcSSimon Schubert 3125796c8dcSSimon Schubert DW_LANG_lo_user = 0x8000, /* Implementation-defined range start. */ 3135796c8dcSSimon Schubert DW_LANG_hi_user = 0xffff, /* Implementation-defined range start. */ 3145796c8dcSSimon Schubert 3155796c8dcSSimon Schubert /* MIPS. */ 3165796c8dcSSimon Schubert DW_LANG_Mips_Assembler = 0x8001, 3175796c8dcSSimon Schubert /* UPC. */ 318cf7f2e2dSJohn Marino DW_LANG_Upc = 0x8765, 319cf7f2e2dSJohn Marino /* HP extensions. */ 320cf7f2e2dSJohn Marino DW_LANG_HP_Bliss = 0x8003, 321cf7f2e2dSJohn Marino DW_LANG_HP_Basic91 = 0x8004, 322cf7f2e2dSJohn Marino DW_LANG_HP_Pascal91 = 0x8005, 323cf7f2e2dSJohn Marino DW_LANG_HP_IMacro = 0x8006, 324cf7f2e2dSJohn Marino DW_LANG_HP_Assembler = 0x8007 3255796c8dcSSimon Schubert }; 3265796c8dcSSimon Schubert 3275796c8dcSSimon Schubert /* Names and codes for macro information. */ 3285796c8dcSSimon Schubert enum dwarf_macinfo_record_type 3295796c8dcSSimon Schubert { 3305796c8dcSSimon Schubert DW_MACINFO_define = 1, 3315796c8dcSSimon Schubert DW_MACINFO_undef = 2, 3325796c8dcSSimon Schubert DW_MACINFO_start_file = 3, 3335796c8dcSSimon Schubert DW_MACINFO_end_file = 4, 3345796c8dcSSimon Schubert DW_MACINFO_vendor_ext = 255 3355796c8dcSSimon Schubert }; 336a45ae5f8SJohn Marino 337a45ae5f8SJohn Marino /* Names and codes for new style macro information. */ 338a45ae5f8SJohn Marino enum dwarf_macro_record_type 339a45ae5f8SJohn Marino { 340a45ae5f8SJohn Marino DW_MACRO_GNU_define = 1, 341a45ae5f8SJohn Marino DW_MACRO_GNU_undef = 2, 342a45ae5f8SJohn Marino DW_MACRO_GNU_start_file = 3, 343a45ae5f8SJohn Marino DW_MACRO_GNU_end_file = 4, 344a45ae5f8SJohn Marino DW_MACRO_GNU_define_indirect = 5, 345a45ae5f8SJohn Marino DW_MACRO_GNU_undef_indirect = 6, 346a45ae5f8SJohn Marino DW_MACRO_GNU_transparent_include = 7, 347*ef5ccd6cSJohn Marino /* Extensions for DWZ multifile. 348*ef5ccd6cSJohn Marino See http://www.dwarfstd.org/ShowIssue.php?issue=120604.1&type=open . */ 349*ef5ccd6cSJohn Marino DW_MACRO_GNU_define_indirect_alt = 8, 350*ef5ccd6cSJohn Marino DW_MACRO_GNU_undef_indirect_alt = 9, 351*ef5ccd6cSJohn Marino DW_MACRO_GNU_transparent_include_alt = 10, 352a45ae5f8SJohn Marino DW_MACRO_GNU_lo_user = 0xe0, 353a45ae5f8SJohn Marino DW_MACRO_GNU_hi_user = 0xff 354a45ae5f8SJohn Marino }; 3555796c8dcSSimon Schubert 3565796c8dcSSimon Schubert /* @@@ For use with GNU frame unwind information. */ 3575796c8dcSSimon Schubert 3585796c8dcSSimon Schubert #define DW_EH_PE_absptr 0x00 3595796c8dcSSimon Schubert #define DW_EH_PE_omit 0xff 3605796c8dcSSimon Schubert 3615796c8dcSSimon Schubert #define DW_EH_PE_uleb128 0x01 3625796c8dcSSimon Schubert #define DW_EH_PE_udata2 0x02 3635796c8dcSSimon Schubert #define DW_EH_PE_udata4 0x03 3645796c8dcSSimon Schubert #define DW_EH_PE_udata8 0x04 3655796c8dcSSimon Schubert #define DW_EH_PE_sleb128 0x09 3665796c8dcSSimon Schubert #define DW_EH_PE_sdata2 0x0A 3675796c8dcSSimon Schubert #define DW_EH_PE_sdata4 0x0B 3685796c8dcSSimon Schubert #define DW_EH_PE_sdata8 0x0C 3695796c8dcSSimon Schubert #define DW_EH_PE_signed 0x08 3705796c8dcSSimon Schubert 3715796c8dcSSimon Schubert #define DW_EH_PE_pcrel 0x10 3725796c8dcSSimon Schubert #define DW_EH_PE_textrel 0x20 3735796c8dcSSimon Schubert #define DW_EH_PE_datarel 0x30 3745796c8dcSSimon Schubert #define DW_EH_PE_funcrel 0x40 3755796c8dcSSimon Schubert #define DW_EH_PE_aligned 0x50 3765796c8dcSSimon Schubert 3775796c8dcSSimon Schubert #define DW_EH_PE_indirect 0x80 3785796c8dcSSimon Schubert 379*ef5ccd6cSJohn Marino /* Codes for the debug sections in a dwarf package (.dwp) file. 380*ef5ccd6cSJohn Marino Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFissionDWP. */ 381*ef5ccd6cSJohn Marino enum dwarf_sect 382*ef5ccd6cSJohn Marino { 383*ef5ccd6cSJohn Marino DW_SECT_INFO = 1, 384*ef5ccd6cSJohn Marino DW_SECT_TYPES = 2, 385*ef5ccd6cSJohn Marino DW_SECT_ABBREV = 3, 386*ef5ccd6cSJohn Marino DW_SECT_LINE = 4, 387*ef5ccd6cSJohn Marino DW_SECT_LOC = 5, 388*ef5ccd6cSJohn Marino DW_SECT_STR_OFFSETS = 6, 389*ef5ccd6cSJohn Marino DW_SECT_MACINFO = 7, 390*ef5ccd6cSJohn Marino DW_SECT_MACRO = 8, 391*ef5ccd6cSJohn Marino DW_SECT_MAX = 8 392*ef5ccd6cSJohn Marino }; 393*ef5ccd6cSJohn Marino 394*ef5ccd6cSJohn Marino #ifdef __cplusplus 395*ef5ccd6cSJohn Marino extern "C" { 396*ef5ccd6cSJohn Marino #endif /* __cplusplus */ 397*ef5ccd6cSJohn Marino 398*ef5ccd6cSJohn Marino /* Return the name of a DW_TAG_ constant, or NULL if the value is not 399*ef5ccd6cSJohn Marino recognized. */ 400*ef5ccd6cSJohn Marino extern const char *get_DW_TAG_name (unsigned int tag); 401*ef5ccd6cSJohn Marino 402*ef5ccd6cSJohn Marino /* Return the name of a DW_AT_ constant, or NULL if the value is not 403*ef5ccd6cSJohn Marino recognized. */ 404*ef5ccd6cSJohn Marino extern const char *get_DW_AT_name (unsigned int attr); 405*ef5ccd6cSJohn Marino 406*ef5ccd6cSJohn Marino /* Return the name of a DW_FORM_ constant, or NULL if the value is not 407*ef5ccd6cSJohn Marino recognized. */ 408*ef5ccd6cSJohn Marino extern const char *get_DW_FORM_name (unsigned int form); 409*ef5ccd6cSJohn Marino 410*ef5ccd6cSJohn Marino /* Return the name of a DW_OP_ constant, or NULL if the value is not 411*ef5ccd6cSJohn Marino recognized. */ 412*ef5ccd6cSJohn Marino extern const char *get_DW_OP_name (unsigned int op); 413*ef5ccd6cSJohn Marino 414*ef5ccd6cSJohn Marino /* Return the name of a DW_ATE_ constant, or NULL if the value is not 415*ef5ccd6cSJohn Marino recognized. */ 416*ef5ccd6cSJohn Marino extern const char *get_DW_ATE_name (unsigned int enc); 417*ef5ccd6cSJohn Marino 418*ef5ccd6cSJohn Marino /* Return the name of a DW_CFA_ constant, or NULL if the value is not 419*ef5ccd6cSJohn Marino recognized. */ 420*ef5ccd6cSJohn Marino extern const char *get_DW_CFA_name (unsigned int opc); 421*ef5ccd6cSJohn Marino 422*ef5ccd6cSJohn Marino #ifdef __cplusplus 423*ef5ccd6cSJohn Marino } 424*ef5ccd6cSJohn Marino #endif /* __cplusplus */ 425*ef5ccd6cSJohn Marino 426c50c785cSJohn Marino #endif /* _DWARF2_H */ 427