Add DWARFFormValue::getAsBlock() and add FC_Flag as an acceptable class for an unsign...
authorFrederic Riss <friss@apple.com>
Thu, 4 Sep 2014 06:14:35 +0000 (06:14 +0000)
committerFrederic Riss <friss@apple.com>
Thu, 4 Sep 2014 06:14:35 +0000 (06:14 +0000)
To be used in further patches that improve the dumpers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217129 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/DebugInfo/DWARFFormValue.h
lib/DebugInfo/DWARFFormValue.cpp

index d517a72d62e002c12500de43402ee971598be2bb..2dde8fe242a67e19dd3f788a23825dda6c999bab 100644 (file)
@@ -70,6 +70,7 @@ public:
   Optional<const char *> getAsCString(const DWARFUnit *U) const;
   Optional<uint64_t> getAsAddress(const DWARFUnit *U) const;
   Optional<uint64_t> getAsSectionOffset() const;
   Optional<const char *> getAsCString(const DWARFUnit *U) const;
   Optional<uint64_t> getAsAddress(const DWARFUnit *U) const;
   Optional<uint64_t> getAsSectionOffset() const;
+  Optional<ArrayRef<const uint8_t>> getAsBlock() const;
 
   bool skipValue(DataExtractor debug_info_data, uint32_t *offset_ptr,
                  const DWARFUnit *u) const;
 
   bool skipValue(DataExtractor debug_info_data, uint32_t *offset_ptr,
                  const DWARFUnit *u) const;
index 8d0f96620a49add96aeaac53b1c67300f2319822..2f8affc86239b0d20bf080ef100c30ef66b2cdc0 100644 (file)
@@ -543,7 +543,15 @@ Optional<uint64_t> DWARFFormValue::getAsSectionOffset() const {
 }
 
 Optional<uint64_t> DWARFFormValue::getAsUnsignedConstant() const {
 }
 
 Optional<uint64_t> DWARFFormValue::getAsUnsignedConstant() const {
-  if (!isFormClass(FC_Constant) || Form == DW_FORM_sdata)
+  if ((!isFormClass(FC_Constant) && !isFormClass(FC_Flag))
+      || Form == DW_FORM_sdata)
     return None;
   return Value.uval;
 }
     return None;
   return Value.uval;
 }
+
+Optional<ArrayRef<const uint8_t>> DWARFFormValue::getAsBlock() const {
+  if (!isFormClass(FC_Block) && !isFormClass(FC_Exprloc))
+    return None;
+  return ArrayRef<const uint8_t>(Value.data, Value.uval);
+}
+