Home | History | Annotate | Line # | Download | only in DWARF
      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_DWARF_DWARFATTRIBUTE_H
     10 #define LLVM_DEBUGINFO_DWARF_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_DWARF_DWARFATTRIBUTE_H
     50