1254721Semaste//===-- DWARFDefines.h ------------------------------------------*- C++ -*-===//
2254721Semaste//
3254721Semaste//                     The LLVM Compiler Infrastructure
4254721Semaste//
5254721Semaste// This file is distributed under the University of Illinois Open Source
6254721Semaste// License. See LICENSE.TXT for details.
7254721Semaste//
8254721Semaste//===----------------------------------------------------------------------===//
9254721Semaste
10254721Semaste#ifndef SymbolFileDWARF_DWARFDefines_h_
11254721Semaste#define SymbolFileDWARF_DWARFDefines_h_
12254721Semaste
13254721Semaste#include <stdint.h>
14254721Semaste#include <stdbool.h>
15254721Semaste#include "lldb/Core/dwarf.h"
16254721Semaste
17254721Semastenamespace lldb_private {
18254721Semaste
19254721Semastetypedef uint32_t DRC_class;          // Holds DRC_* class bitfields
20254721Semaste
21254721Semasteenum DW_TAG_Category
22254721Semaste{
23254721Semaste    TagCategoryVariable,
24254721Semaste    TagCategoryType,
25254721Semaste    TagCategoryProgram,
26254721Semaste    kNumTagCategories
27254721Semaste};
28254721Semaste
29254721Semastetypedef enum DW_TAG_Category DW_TAG_CategoryEnum;
30254721Semaste
31254721Semasteconst char *DW_TAG_value_to_name (uint32_t val);
32254721Semaste
33254721SemasteDW_TAG_CategoryEnum get_tag_category (uint16_t tag);
34254721Semaste
35254721Semasteconst char *DW_CHILDREN_value_to_name (uint8_t val);
36254721Semaste
37254721Semasteconst char *DW_AT_value_to_name (uint32_t val);
38254721Semaste
39254721Semasteconst char *DW_FORM_value_to_name (uint32_t val);
40254721Semaste
41254721Semasteconst char *DW_OP_value_to_name (uint32_t val);
42254721Semaste
43254721SemasteDRC_class DW_OP_value_to_class (uint32_t val);
44254721Semaste
45254721Semasteconst char *DW_ATE_value_to_name (uint32_t val);
46254721Semaste
47254721Semasteconst char *DW_ACCESS_value_to_name (uint32_t val);
48254721Semaste
49254721Semasteconst char *DW_VIS_value_to_name (uint32_t val);
50254721Semaste
51254721Semasteconst char *DW_VIRTUALITY_value_to_name (uint32_t val);
52254721Semaste
53254721Semasteconst char *DW_LANG_value_to_name (uint32_t val);
54254721Semaste
55254721Semasteconst char *DW_ID_value_to_name (uint32_t val);
56254721Semaste
57254721Semasteconst char *DW_CC_value_to_name (uint32_t val);
58254721Semaste
59254721Semasteconst char *DW_INL_value_to_name (uint32_t val);
60254721Semaste
61254721Semasteconst char *DW_ORD_value_to_name (uint32_t val);
62254721Semaste
63254721Semasteconst char *DW_DSC_value_to_name (uint32_t val);
64254721Semaste
65254721Semasteconst char *DW_LNS_value_to_name (uint32_t val);
66254721Semaste
67254721Semasteconst char *DW_LNE_value_to_name (uint32_t val);
68254721Semaste
69254721Semasteconst char *DW_MACINFO_value_to_name (uint32_t val);
70254721Semaste
71254721Semasteconst char *DW_CFA_value_to_name (uint32_t val);
72254721Semaste
73254721Semasteconst char *DW_GNU_EH_PE_value_to_name (uint32_t val);
74254721Semaste
75254721Semaste/* These DRC are entirely our own construction,
76254721Semaste    although they are derived from various comments in the DWARF standard.
77254721Semaste    Most of these are not useful to the parser, but the DW_AT and DW_FORM
78254721Semaste    classes should prove to be usable in some fashion.  */
79254721Semaste
80254721Semaste#define DRC_0x65                               0x1
81254721Semaste#define DRC_ADDRESS                            0x2
82254721Semaste#define DRC_BLOCK                              0x4
83254721Semaste#define DRC_CONSTANT                           0x8
84254721Semaste#define DRC_DWARFv3                           0x10
85254721Semaste#define DRC_FLAG                              0x20
86254721Semaste#define DRC_INDIRECT_SPECIAL                  0x40
87254721Semaste#define DRC_LINEPTR                           0x80
88254721Semaste#define DRC_LOCEXPR                          0x100
89254721Semaste#define DRC_LOCLISTPTR                       0x200
90254721Semaste#define DRC_MACPTR                           0x400
91254721Semaste#define DRC_ONEOPERAND                       0x800
92254721Semaste#define DRC_OPERANDONE_1BYTE_DELTA          0x1000
93254721Semaste#define DRC_OPERANDONE_2BYTE_DELTA          0x2000
94254721Semaste#define DRC_OPERANDONE_4BYTE_DELTA          0x4000
95254721Semaste#define DRC_OPERANDONE_ADDRESS              0x8000
96254721Semaste#define DRC_OPERANDONE_BLOCK               0x10000
97254721Semaste#define DRC_OPERANDONE_SLEB128_OFFSET      0x20000
98254721Semaste#define DRC_OPERANDONE_ULEB128_OFFSET      0x40000
99254721Semaste#define DRC_OPERANDONE_ULEB128_REGISTER    0x80000
100254721Semaste#define DRC_OPERANDTWO_BLOCK              0x100000
101254721Semaste#define DRC_OPERANDTWO_SLEB128_OFFSET     0x200000
102254721Semaste#define DRC_OPERANDTWO_ULEB128_OFFSET     0x400000
103254721Semaste#define DRC_OPERANDTWO_ULEB128_REGISTER   0x800000
104254721Semaste#define DRC_OPERNADONE_ULEB128_REGISTER  0x1000000
105254721Semaste#define DRC_RANGELISTPTR                 0x2000000
106254721Semaste#define DRC_REFERENCE                    0x4000000
107254721Semaste#define DRC_STRING                       0x8000000
108254721Semaste#define DRC_TWOOPERANDS                 0x10000000
109254721Semaste#define DRC_VENDOR_GNU                  0x20000000
110254721Semaste#define DRC_VENDOR_MIPS                 0x40000000
111254721Semaste#define DRC_ZEROOPERANDS                0x80000000
112254721Semaste
113254721Semaste} // namespace lldb_private
114254721Semaste
115254721Semaste
116254721Semaste#endif  // SymbolFileDWARF_DWARFDefines_h_
117