]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/llvm/include/llvm/DebugInfo/DWARF/DWARFAttribute.h
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / llvm-project / llvm / include / llvm / DebugInfo / DWARF / DWARFAttribute.h
1 //===- DWARFAttribute.h -----------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 #ifndef LLVM_DEBUGINFO_DWARFATTRIBUTE_H
10 #define LLVM_DEBUGINFO_DWARFATTRIBUTE_H
11
12 #include "llvm/BinaryFormat/Dwarf.h"
13 #include "llvm/DebugInfo/DWARF/DWARFFormValue.h"
14 #include <cstdint>
15
16 namespace llvm {
17
18 //===----------------------------------------------------------------------===//
19 /// Encapsulates a DWARF attribute value and all of the data required to
20 /// describe the attribute value.
21 ///
22 /// This class is designed to be used by clients that want to iterate across all
23 /// attributes in a DWARFDie.
24 struct DWARFAttribute {
25   /// The debug info/types offset for this attribute.
26   uint64_t Offset = 0;
27   /// The debug info/types section byte size of the data for this attribute.
28   uint32_t ByteSize = 0;
29   /// The attribute enumeration of this attribute.
30   dwarf::Attribute Attr = dwarf::Attribute(0);
31   /// The form and value for this attribute.
32   DWARFFormValue Value;
33
34   bool isValid() const {
35     return Offset != 0 && Attr != dwarf::Attribute(0);
36   }
37
38   explicit operator bool() const {
39     return isValid();
40   }
41
42   /// Identifies DWARF attributes that may contain a reference to a
43   /// DWARF expression.
44   static bool mayHaveLocationDescription(dwarf::Attribute Attr);
45 };
46
47 } // end namespace llvm
48
49 #endif // LLVM_DEBUGINFO_DWARFATTRIBUTE_H