[llvm] r313207 - llvm-dwarfdump: automatically dump both regular and .dwo variant of sections

Adrian Prantl via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 13 15:09:02 PDT 2017


Author: adrian
Date: Wed Sep 13 15:09:01 2017
New Revision: 313207

URL: http://llvm.org/viewvc/llvm-project?rev=313207&view=rev
Log:
llvm-dwarfdump: automatically dump both regular and .dwo variant of sections

Since users typically don't really care about the .dwo / non.dwo
distinction, this patch makes it so dwarfdump --debug-<info,...> dumps
.debug_info and (if available) also .debug_info.dwo. This simplifies
the command line interface (I've removed all dwo-specific dump
options) and makes the tool friendlier to use.

Differential Revision: https://reviews.llvm.org/D37771

Modified:
    llvm/trunk/include/llvm/BinaryFormat/Dwarf.def
    llvm/trunk/include/llvm/DebugInfo/DIContext.h
    llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFContext.h
    llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugAbbrev.h
    llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h
    llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h
    llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h
    llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFUnitIndex.h
    llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp
    llvm/trunk/test/DebugInfo/Inputs/gmlt.ll
    llvm/trunk/test/DebugInfo/X86/fission-inline.ll
    llvm/trunk/test/DebugInfo/X86/fission-no-inlining.ll
    llvm/trunk/test/DebugInfo/X86/fission-ranges.ll
    llvm/trunk/test/DebugInfo/X86/generate-odr-hash.ll
    llvm/trunk/test/DebugInfo/X86/gnu-public-names-gmlt.ll
    llvm/trunk/test/DebugInfo/X86/split-dwarf-cross-unit-reference.ll
    llvm/trunk/test/DebugInfo/X86/split-dwarf-multiple-cu-hash.ll
    llvm/trunk/test/DebugInfo/X86/split-dwarf-omit-empty.ll
    llvm/trunk/test/DebugInfo/dwarfdump-dump-flags.test
    llvm/trunk/test/DebugInfo/dwarfdump-dwp.test
    llvm/trunk/test/MC/ARM/dwarf-asm-multiple-sections-dwarf-2.s
    llvm/trunk/test/MC/ARM/dwarf-asm-no-code.s
    llvm/trunk/test/MC/ARM/dwarf-asm-nonstandard-section.s
    llvm/trunk/test/MC/ARM/dwarf-asm-single-section.s
    llvm/trunk/test/tools/dsymutil/X86/basic-linking-x86.test
    llvm/trunk/test/tools/llvm-dwp/X86/empty.test
    llvm/trunk/test/tools/llvm-dwp/X86/simple.test
    llvm/trunk/tools/llvm-dwarfdump/llvm-dwarfdump.cpp

Modified: llvm/trunk/include/llvm/BinaryFormat/Dwarf.def
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/BinaryFormat/Dwarf.def?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/include/llvm/BinaryFormat/Dwarf.def (original)
+++ llvm/trunk/include/llvm/BinaryFormat/Dwarf.def Wed Sep 13 15:09:01 2017
@@ -823,21 +823,16 @@ HANDLE_DW_UT(0x04, skeleton)
 HANDLE_DW_UT(0x05, split_compile)
 HANDLE_DW_UT(0x06, split_type)
 
-// DWARF section types. (enum name, ELF name, cmdline name)
+// DWARF section types. (enum name, ELF name, ELF DWO name, cmdline name)
 // Note that these IDs don't mean anything.
 // TODO: Add Mach-O and COFF names.
 // Official DWARF sections.
 HANDLE_DWARF_SECTION(DebugAbbrev, ".debug_abbrev", "debug-abbrev")
-HANDLE_DWARF_SECTION(DebugAbbrevDwo, ".debug_abbrev.dwo", "debug-abbrev-dwo")
 HANDLE_DWARF_SECTION(DebugAranges, ".debug_aranges", "debug-aranges")
 HANDLE_DWARF_SECTION(DebugInfo, ".debug_info", "debug-info")
-HANDLE_DWARF_SECTION(DebugInfoDwo, ".debug_info.dwo", "debug-info-dwo")
 HANDLE_DWARF_SECTION(DebugTypes, ".debug_types", "debug-types")
-HANDLE_DWARF_SECTION(DebugTypesDwo, ".debug_types.dwo", "debug-types-dwo")
 HANDLE_DWARF_SECTION(DebugLine, ".debug_line", "debug-line")
-HANDLE_DWARF_SECTION(DebugLineDwo, ".debug_line.dwo", "debug-line-dwo")
 HANDLE_DWARF_SECTION(DebugLoc, ".debug_loc", "debug-loc")
-HANDLE_DWARF_SECTION(DebugLocDwo, ".debug_loc.dwo", "debug-loc-dwo")
 HANDLE_DWARF_SECTION(DebugFrames, ".debug_frames", "debug-frames")
 HANDLE_DWARF_SECTION(DebugMacro, ".debug_macro", "debug-macro")
 HANDLE_DWARF_SECTION(DebugRanges, ".debug_ranges", "debug-ranges")
@@ -847,8 +842,6 @@ HANDLE_DWARF_SECTION(DebugGnuPubnames, "
 HANDLE_DWARF_SECTION(DebugGnuPubtypes, ".debug_gnu_pubtypes", "debug-gnu-pubtypes")
 HANDLE_DWARF_SECTION(DebugStr, ".debug_str", "debug-str")
 HANDLE_DWARF_SECTION(DebugStrOffsets, ".debug_str_offsets", "debug-str-offsets")
-HANDLE_DWARF_SECTION(DebugStrDwo, ".debug_str.dwo", "debug-str-dwo")
-HANDLE_DWARF_SECTION(DebugStrOffsetsDwo, ".debug_str_offsets.dwo", "debug-str-offsets-dwo")
 HANDLE_DWARF_SECTION(DebugCUIndex, ".debug_cu_index", "debug-cu-index")
 HANDLE_DWARF_SECTION(DebugTUIndex, ".debug_tu_index", "debug-tu-index")
 // Vendor extensions.

Modified: llvm/trunk/include/llvm/DebugInfo/DIContext.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DIContext.h?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/include/llvm/DebugInfo/DIContext.h (original)
+++ llvm/trunk/include/llvm/DebugInfo/DIContext.h Wed Sep 13 15:09:01 2017
@@ -122,14 +122,14 @@ enum DIDumpTypeCounter {
   DIDT_ID_UUID,
   DIDT_ID_Count
 };
-static_assert(DIDT_ID_Count <= 64, "section types overflow storage");
+static_assert(DIDT_ID_Count <= 32, "section types overflow storage");
 
 /// Selects which debug sections get dumped.
-enum DIDumpType : uint64_t {
+enum DIDumpType : unsigned {
   DIDT_Null,
-  DIDT_All             = ~0ULL,
+  DIDT_All             = ~0U,
 #define HANDLE_DWARF_SECTION(ENUM_NAME, ELF_NAME, CMDLINE_NAME) \
-  DIDT_##ENUM_NAME = 1 << (DIDT_ID_##ENUM_NAME - 1),
+  DIDT_##ENUM_NAME = 1U << (DIDT_ID_##ENUM_NAME - 1),
 #include "llvm/BinaryFormat/Dwarf.def"
 #undef HANDLE_DWARF_SECTION
   DIDT_UUID = 1 << (DIDT_ID_UUID - 1),
@@ -138,7 +138,7 @@ enum DIDumpType : uint64_t {
 /// Container for dump options that control which debug information will be
 /// dumped.
 struct DIDumpOptions {
-    uint64_t DumpType = DIDT_All;
+    unsigned DumpType = DIDT_All;
     bool DumpEH = false;
     bool SummarizeTypes = false;
     bool Verbose = false;
@@ -158,7 +158,7 @@ public:
 
   virtual void dump(raw_ostream &OS, DIDumpOptions DumpOpts) = 0;
 
-  virtual bool verify(raw_ostream &OS, uint64_t DumpType = DIDT_All,
+  virtual bool verify(raw_ostream &OS, unsigned DumpType = DIDT_All,
                       DIDumpOptions DumpOpts = {}) {
     // No verifier? Just say things went well.
     return true;

Modified: llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFContext.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFContext.h?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFContext.h (original)
+++ llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFContext.h Wed Sep 13 15:09:01 2017
@@ -123,7 +123,7 @@ public:
 
   void dump(raw_ostream &OS, DIDumpOptions DumpOpts) override;
 
-  bool verify(raw_ostream &OS, uint64_t DumpType = DIDT_All,
+  bool verify(raw_ostream &OS, unsigned DumpType = DIDT_All,
               DIDumpOptions DumpOpts = {}) override;
 
   using cu_iterator_range = DWARFUnitSection<DWARFCompileUnit>::iterator_range;

Modified: llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugAbbrev.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugAbbrev.h?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugAbbrev.h (original)
+++ llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugAbbrev.h Wed Sep 13 15:09:01 2017
@@ -67,6 +67,7 @@ public:
 
   void dump(raw_ostream &OS) const;
   void extract(DataExtractor Data);
+  bool empty() const { return begin() == end(); }
 
   DWARFAbbreviationDeclarationSetMap::const_iterator begin() const {
     return AbbrDeclSets.begin();

Modified: llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h (original)
+++ llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h Wed Sep 13 15:09:01 2017
@@ -36,6 +36,9 @@ public:
   /// data is assumed to be pointing to the beginning of the section.
   void parse(DataExtractor Data);
 
+  /// Return whether the section has any entries.
+  bool empty() const { return Entries.empty(); }
+
 private:
   std::vector<std::unique_ptr<FrameEntry>> Entries;
 };

Modified: llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h (original)
+++ llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h Wed Sep 13 15:09:01 2017
@@ -63,7 +63,7 @@ public:
   /// Parse the debug_loc section accessible via the 'data' parameter using the
   /// address size also given in 'data' to interpret the address ranges.
   void parse(const DWARFDataExtractor &data);
-
+  
   Optional<LocationList> parseOneLocationList(DWARFDataExtractor Data,
                                               uint32_t *Offset);
 };

Modified: llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h (original)
+++ llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h Wed Sep 13 15:09:01 2017
@@ -53,6 +53,9 @@ public:
 
   /// Parse the debug_macinfo section accessible via the 'data' parameter.
   void parse(DataExtractor data);
+
+  /// Return whether the section has any entries.
+  bool empty() const { return Macros.empty(); }
 };
 
 } // end namespace llvm

Modified: llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFUnitIndex.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFUnitIndex.h?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFUnitIndex.h (original)
+++ llvm/trunk/include/llvm/DebugInfo/DWARF/DWARFUnitIndex.h Wed Sep 13 15:09:01 2017
@@ -87,6 +87,7 @@ public:
 
   bool parse(DataExtractor IndexData);
   void dump(raw_ostream &OS) const;
+
   const Entry *getFromOffset(uint32_t Offset) const;
   const Entry *getFromHash(uint64_t Offset) const;
 

Modified: llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp (original)
+++ llvm/trunk/lib/DebugInfo/DWARF/DWARFContext.cpp Wed Sep 13 15:09:01 2017
@@ -41,6 +41,7 @@
 #include "llvm/Support/Error.h"
 #include "llvm/Support/Format.h"
 #include "llvm/Support/MemoryBuffer.h"
+#include "llvm/Support/Path.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/raw_ostream.h"
 #include <algorithm>
@@ -224,6 +225,10 @@ void DWARFContext::dump(raw_ostream &OS,
   uint64_t DumpType = DumpOpts.DumpType;
   bool DumpEH = DumpOpts.DumpEH;
 
+  StringRef Extension = sys::path::extension(DObj->getFileName());
+  bool IsDWO = (Extension == ".dwo") || (Extension == ".dwp");
+
+  // Print UUID header.
   const auto *ObjFile = DObj->getFile();
   if (!(DumpType & DIDT_UUID) || DumpType == DIDT_All)
     outs() << ObjFile->getFileName() << ":\tfile format "
@@ -231,72 +236,82 @@ void DWARFContext::dump(raw_ostream &OS,
   if (DumpType & DIDT_UUID)
     dumpUUID(OS, *ObjFile);
 
-  if (DumpType & DIDT_DebugAbbrev) {
-    OS << ".debug_abbrev contents:\n";
+  // Print a header for each explicitly-requested section.
+  // Otherwise just print one for non-empty sections.
+  bool Explicit = DumpType != DIDT_All && !IsDWO;
+  auto shouldDump = [&](unsigned DIDT_Section, StringRef Section) {
+    return (DumpType & DIDT_Section) && (Explicit || !Section.empty());
+  };
+  // Only print empty .dwo section headers when dumping a .dwo file.
+  bool ExplicitDWO = Explicit && IsDWO;
+  auto shouldDumpDWO = [&](unsigned DIDT_Section, StringRef Section) {
+    return (DumpType & DIDT_Section) && (ExplicitDWO || !Section.empty());
+  };
+
+  // Dump individual sections.
+  if (shouldDump(DIDT_DebugAbbrev, DObj->getAbbrevSection())) {
+    OS << "\n.debug_abbrev contents:\n";
     getDebugAbbrev()->dump(OS);
   }
+  if (shouldDumpDWO(DIDT_DebugAbbrev, DObj->getAbbrevDWOSection())) {
+    OS << "\n.debug_abbrev.dwo contents:\n";
+    getDebugAbbrevDWO()->dump(OS);
+  }
 
-  if (DumpType & DIDT_DebugAbbrevDwo)
-    if (const DWARFDebugAbbrev *D = getDebugAbbrevDWO()) {
-      OS << "\n.debug_abbrev.dwo contents:\n";
-      D->dump(OS);
-    }
-
-  if (DumpType & DIDT_DebugInfo) {
+  if (shouldDump(DIDT_DebugInfo, DObj->getInfoSection().Data)) {
     OS << "\n.debug_info contents:\n";
     for (const auto &CU : compile_units())
       CU->dump(OS, DumpOpts);
   }
-
-  if ((DumpType & DIDT_DebugInfoDwo) &&
-      getNumDWOCompileUnits()) {
+  if (shouldDumpDWO(DIDT_DebugInfo, DObj->getInfoDWOSection().Data)) {
     OS << "\n.debug_info.dwo contents:\n";
     for (const auto &DWOCU : dwo_compile_units())
       DWOCU->dump(OS, DumpOpts);
   }
 
-  if ((DumpType & DIDT_DebugTypes) && getNumTypeUnits()) {
-    OS << "\n.debug_types contents:\n";
-    for (const auto &TUS : type_unit_sections())
-      for (const auto &TU : TUS)
-        TU->dump(OS, DumpOpts);
-  }
-
-  if ((DumpType & DIDT_DebugTypesDwo) &&
-      getNumDWOTypeUnits()) {
-    OS << "\n.debug_types.dwo contents:\n";
-    for (const auto &DWOTUS : dwo_type_unit_sections())
-      for (const auto &DWOTU : DWOTUS)
-        DWOTU->dump(OS, DumpOpts);
+  if ((DumpType & DIDT_DebugTypes)) {
+    if (Explicit || getNumTypeUnits()) {
+      OS << "\n.debug_types contents:\n";
+      for (const auto &TUS : type_unit_sections())
+        for (const auto &TU : TUS)
+          TU->dump(OS, DumpOpts);
+    }
+    if (ExplicitDWO || getNumDWOTypeUnits()) {
+      OS << "\n.debug_types.dwo contents:\n";
+      for (const auto &DWOTUS : dwo_type_unit_sections())
+        for (const auto &DWOTU : DWOTUS)
+          DWOTU->dump(OS, DumpOpts);
+    }
   }
 
-  if (DumpType & DIDT_DebugLoc) {
+  if (shouldDump(DIDT_DebugLoc, DObj->getLocSection().Data)) {
     OS << "\n.debug_loc contents:\n";
     getDebugLoc()->dump(OS, getRegisterInfo());
   }
-
-  if (DumpType & DIDT_DebugLocDwo) {
+  if (shouldDumpDWO(DIDT_DebugLoc, DObj->getLocDWOSection().Data)) {
     OS << "\n.debug_loc.dwo contents:\n";
     getDebugLocDWO()->dump(OS, getRegisterInfo());
   }
 
-  if (DumpType & DIDT_DebugFrames) {
+  if (shouldDump(DIDT_DebugFrames, DObj->getDebugFrameSection())) {
     OS << "\n.debug_frame contents:\n";
     getDebugFrame()->dump(OS);
-    if (DumpEH) {
-      OS << "\n.eh_frame contents:\n";
-      getEHFrame()->dump(OS);
-    }
+  }
+  if (DumpEH && !getEHFrame()->empty()) {
+    OS << "\n.eh_frame contents:\n";
+    getEHFrame()->dump(OS);
   }
 
   if (DumpType & DIDT_DebugMacro) {
-    OS << "\n.debug_macinfo contents:\n";
-    getDebugMacro()->dump(OS);
+    if (Explicit || !getDebugMacro()->empty()) {
+      OS << "\n.debug_macinfo contents:\n";
+      getDebugMacro()->dump(OS);
+    }
   }
 
-  uint32_t offset = 0;
-  if (DumpType & DIDT_DebugAranges) {
+  if (shouldDump(DIDT_DebugAranges, DObj->getARangeSection())) {
     OS << "\n.debug_aranges contents:\n";
+    uint32_t offset = 0;
     DataExtractor arangesData(DObj->getARangeSection(), isLittleEndian(), 0);
     DWARFDebugArangeSet set;
     while (set.extract(arangesData, &offset))
@@ -304,7 +319,7 @@ void DWARFContext::dump(raw_ostream &OS,
   }
 
   uint8_t savedAddressByteSize = 0;
-  if (DumpType & DIDT_DebugLine) {
+  if (shouldDump(DIDT_DebugLine, DObj->getLineSection().Data)) {
     OS << "\n.debug_line contents:\n";
     for (const auto &CU : compile_units()) {
       savedAddressByteSize = CU->getAddressByteSize();
@@ -322,17 +337,12 @@ void DWARFContext::dump(raw_ostream &OS,
     }
   }
 
-  if (DumpType & DIDT_DebugCUIndex) {
-    OS << "\n.debug_cu_index contents:\n";
-    getCUIndex().dump(OS);
-  }
-
-  if (DumpType & DIDT_DebugTUIndex) {
-    OS << "\n.debug_tu_index contents:\n";
-    getTUIndex().dump(OS);
+  // FIXME: This seems sketchy.
+  for (const auto &CU : compile_units()) {
+    savedAddressByteSize = CU->getAddressByteSize();
+    break;
   }
-
-  if (DumpType & DIDT_DebugLineDwo) {
+  if (shouldDumpDWO(DIDT_DebugLine, DObj->getLineDWOSection().Data)) {
     OS << "\n.debug_line.dwo contents:\n";
     unsigned stmtOffset = 0;
     DWARFDataExtractor lineData(*DObj, DObj->getLineDWOSection(),
@@ -344,22 +354,30 @@ void DWARFContext::dump(raw_ostream &OS,
     }
   }
 
-  if (DumpType & DIDT_DebugStr) {
+  if (shouldDump(DIDT_DebugCUIndex, DObj->getCUIndexSection())) {
+    OS << "\n.debug_cu_index contents:\n";
+    getCUIndex().dump(OS);
+  }
+
+  if (shouldDump(DIDT_DebugTUIndex, DObj->getTUIndexSection())) {
+    OS << "\n.debug_tu_index contents:\n";
+    getTUIndex().dump(OS);
+  }
+
+  if (shouldDump(DIDT_DebugStr, DObj->getStringSection())) {
     OS << "\n.debug_str contents:\n";
     DataExtractor strData(DObj->getStringSection(), isLittleEndian(), 0);
-    offset = 0;
+    uint32_t offset = 0;
     uint32_t strOffset = 0;
     while (const char *s = strData.getCStr(&offset)) {
       OS << format("0x%8.8x: \"%s\"\n", strOffset, s);
       strOffset = offset;
     }
   }
-
-  if ((DumpType & DIDT_DebugStrDwo) &&
-      !DObj->getStringDWOSection().empty()) {
+  if (shouldDumpDWO(DIDT_DebugStr, DObj->getStringDWOSection())) {
     OS << "\n.debug_str.dwo contents:\n";
     DataExtractor strDWOData(DObj->getStringDWOSection(), isLittleEndian(), 0);
-    offset = 0;
+    uint32_t offset = 0;
     uint32_t strDWOOffset = 0;
     while (const char *s = strDWOData.getCStr(&offset)) {
       OS << format("0x%8.8x: \"%s\"\n", strDWOOffset, s);
@@ -367,69 +385,68 @@ void DWARFContext::dump(raw_ostream &OS,
     }
   }
 
-  if (DumpType & DIDT_DebugRanges) {
+  if (shouldDump(DIDT_DebugRanges, DObj->getRangeSection().Data)) {
     OS << "\n.debug_ranges contents:\n";
     // In fact, different compile units may have different address byte
-    // sizes, but for simplicity we just use the address byte size of the last
-    // compile unit (there is no easy and fast way to associate address range
-    // list and the compile unit it describes).
+    // sizes, but for simplicity we just use the address byte size of the
+    // last compile unit (there is no easy and fast way to associate address
+    // range list and the compile unit it describes).
+    // FIXME: savedAddressByteSize seems sketchy.
     DWARFDataExtractor rangesData(*DObj, DObj->getRangeSection(),
                                   isLittleEndian(), savedAddressByteSize);
-    offset = 0;
+    uint32_t offset = 0;
     DWARFDebugRangeList rangeList;
     while (rangeList.extract(rangesData, &offset))
       rangeList.dump(OS);
   }
 
-  if (DumpType & DIDT_DebugPubnames)
+  if (shouldDump(DIDT_DebugPubnames, DObj->getPubNamesSection()))
     DWARFDebugPubTable(DObj->getPubNamesSection(), isLittleEndian(), false)
         .dump("debug_pubnames", OS);
 
-  if (DumpType & DIDT_DebugPubtypes)
+  if (shouldDump(DIDT_DebugPubtypes, DObj->getPubTypesSection()))
     DWARFDebugPubTable(DObj->getPubTypesSection(), isLittleEndian(), false)
         .dump("debug_pubtypes", OS);
 
-  if (DumpType & DIDT_DebugGnuPubnames)
+  if (shouldDump(DIDT_DebugGnuPubnames, DObj->getGnuPubNamesSection()))
     DWARFDebugPubTable(DObj->getGnuPubNamesSection(), isLittleEndian(),
                        true /* GnuStyle */)
         .dump("debug_gnu_pubnames", OS);
 
-  if (DumpType & DIDT_DebugGnuPubtypes)
+  if (shouldDump(DIDT_DebugGnuPubtypes, DObj->getGnuPubTypesSection()))
     DWARFDebugPubTable(DObj->getGnuPubTypesSection(), isLittleEndian(),
                        true /* GnuStyle */)
         .dump("debug_gnu_pubtypes", OS);
 
-  if (DumpType & DIDT_DebugStrOffsets)
+  if (shouldDump(DIDT_DebugStrOffsets, DObj->getStringOffsetSection().Data))
     dumpStringOffsetsSection(
         OS, "debug_str_offsets", *DObj, DObj->getStringOffsetSection(),
         DObj->getStringSection(), isLittleEndian(), getMaxVersion());
-
-  if (DumpType & DIDT_DebugStrOffsetsDwo) {
+  if (shouldDumpDWO(DIDT_DebugStrOffsets,
+                    DObj->getStringOffsetDWOSection().Data))
     dumpStringOffsetsSection(
         OS, "debug_str_offsets.dwo", *DObj, DObj->getStringOffsetDWOSection(),
         DObj->getStringDWOSection(), isLittleEndian(), getMaxVersion());
-  }
 
-  if ((DumpType & DIDT_GdbIndex) &&
-      !DObj->getGdbIndexSection().empty()) {
+  if (shouldDump(DIDT_GdbIndex, DObj->getGdbIndexSection())) {
     OS << "\n.gnu_index contents:\n";
     getGdbIndex().dump(OS);
   }
 
-  if (DumpType & DIDT_AppleNames)
+  if (shouldDump(DIDT_AppleNames, DObj->getAppleNamesSection().Data))
     dumpAccelSection(OS, "apple_names", *DObj, DObj->getAppleNamesSection(),
                      DObj->getStringSection(), isLittleEndian());
 
-  if (DumpType & DIDT_AppleTypes)
+  if (shouldDump(DIDT_AppleTypes, DObj->getAppleTypesSection().Data))
     dumpAccelSection(OS, "apple_types", *DObj, DObj->getAppleTypesSection(),
                      DObj->getStringSection(), isLittleEndian());
 
-  if (DumpType & DIDT_AppleNamespaces)
+  if (shouldDump(DIDT_AppleNamespaces, DObj->getAppleNamespacesSection().Data))
     dumpAccelSection(OS, "apple_namespaces", *DObj,
                      DObj->getAppleNamespacesSection(),
                      DObj->getStringSection(), isLittleEndian());
 
-  if (DumpType & DIDT_AppleObjC)
+  if (shouldDump(DIDT_AppleObjC, DObj->getAppleObjCSection().Data))
     dumpAccelSection(OS, "apple_objc", *DObj, DObj->getAppleObjCSection(),
                      DObj->getStringSection(), isLittleEndian());
 }
@@ -461,7 +478,7 @@ DWARFDie DWARFContext::getDIEForOffset(u
   return DWARFDie();
 }
 
-bool DWARFContext::verify(raw_ostream &OS, uint64_t DumpType,
+bool DWARFContext::verify(raw_ostream &OS, unsigned DumpType,
                           DIDumpOptions DumpOpts) {
   bool Success = true;
   DWARFVerifier verifier(OS, *this, DumpOpts);

Modified: llvm/trunk/test/DebugInfo/Inputs/gmlt.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Inputs/gmlt.ll?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/Inputs/gmlt.ll (original)
+++ llvm/trunk/test/DebugInfo/Inputs/gmlt.ll Wed Sep 13 15:09:01 2017
@@ -87,12 +87,8 @@
 
 
 ; Check that we don't emit any pubnames or pubtypes under -gmlt
-; CHECK: .debug_pubnames contents:
-; CHECK-NOT: Offset
-
-; CHECK: .debug_pubtypes contents:
-; CHECK-NOT: Offset
-
+; CHECK-NOT: .debug_pubnames contents:
+; CHECK-NOT: .debug_pubtypes contents:
 ; CHECK: .apple{{.*}} contents:
 
 ; Function Attrs: nounwind uwtable

Modified: llvm/trunk/test/DebugInfo/X86/fission-inline.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/fission-inline.ll?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/fission-inline.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/fission-inline.ll Wed Sep 13 15:09:01 2017
@@ -71,6 +71,7 @@
 ; CHECK:     DW_AT_call_file
 ; CHECK-NEXT:     DW_AT_call_line {{.*}} (18)
 ; CHECK-NOT: DW_
+; CHECK: .debug_info.dwo contents:
 
 ; RELOCS-NOT: RELOCATION RECORDS FOR [.rela.debug_ranges]
 

Modified: llvm/trunk/test/DebugInfo/X86/fission-no-inlining.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/fission-no-inlining.ll?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/fission-no-inlining.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/fission-no-inlining.ll Wed Sep 13 15:09:01 2017
@@ -1,6 +1,8 @@
 ; RUN: llc -split-dwarf-file=foo.dwo -O0 < %s -mtriple=x86_64-unknown-linux-gnu -filetype=obj | llvm-dwarfdump -debug-info - | FileCheck %s
 
+; CHECK: .debug_info contents:
 ; CHECK-NOT: DW_TAG_subprogram
+; CHECK: contents:
 
 ; IR generated from the following source:
 ; void f1();

Modified: llvm/trunk/test/DebugInfo/X86/fission-ranges.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/fission-ranges.ll?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/fission-ranges.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/fission-ranges.ll Wed Sep 13 15:09:01 2017
@@ -17,7 +17,7 @@
 ; CHECK: DW_AT_location [DW_FORM_sec_offset]   ([[B:0x[0-9a-z]*]]
 ; CHECK: DW_AT_location [DW_FORM_sec_offset]   ([[D:0x[0-9a-z]*]]
 ; CHECK: DW_AT_ranges [DW_FORM_sec_offset]   (0x00000000
-; CHECK: .debug_loc contents:
+; CHECK-NOT: .debug_loc contents:
 ; CHECK-NOT: Beginning address offset
 ; CHECK: .debug_loc.dwo contents:
 

Modified: llvm/trunk/test/DebugInfo/X86/generate-odr-hash.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/generate-odr-hash.ll?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/generate-odr-hash.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/generate-odr-hash.ll Wed Sep 13 15:09:01 2017
@@ -74,8 +74,7 @@
 ; CHECK-NEXT: DW_AT_signature {{.*}} (0xfd756cee88f8a118)
 
 ; SINGLE-LABEL: .debug_types contents:
-; FISSION-NOT: .debug_types contents:
-; FISSION-LABEL: .debug_types.dwo contents:
+; FISSION: .debug_types.dwo contents:
 
 ; Check that we generate a hash for bar and the value.
 ; CHECK-NOT: type_signature
@@ -127,7 +126,8 @@
 ; CHECK: file_names{{.*}} bar.cpp
 ; CHECK-NOT: file_names[
 
-; CHECK-LABEL: .debug_line.dwo contents:
+; FISSION: .debug_line.dwo contents:
+; CHECK-NOT: .debug_line.dwo contents:
 ; FISSION: Line table prologue
 ; FISSION: opcode_base: 1
 ; FISSION-NOT: standard_opcode_lengths

Modified: llvm/trunk/test/DebugInfo/X86/gnu-public-names-gmlt.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/gnu-public-names-gmlt.ll?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/gnu-public-names-gmlt.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/gnu-public-names-gmlt.ll Wed Sep 13 15:09:01 2017
@@ -24,14 +24,10 @@
 ; GPUB-NEXT: length = 0x0000000e version = 0x0002 unit_offset = 0x00000000
 ; GPUB-NEXT: Name
 
-; NONE: .debug_pubnames contents:
-; NONE: {{^$}}
-; NONE: .debug_pubtypes contents:
-; NONE: {{^$}}
-; NONE: .debug_gnu_pubnames contents:
-; NONE: {{^$}}
-; NONE: .debug_gnu_pubtypes contents:
-; NONE: {{^$}}
+; NONE-NOT: .debug_pubnames contents:
+; NONE-NOT: .debug_pubtypes contents:
+; NONE-NOT: .debug_gnu_pubnames contents:
+; NONE-NOT: .debug_gnu_pubtypes contents:
 
 
 ; Function Attrs: noinline uwtable

Modified: llvm/trunk/test/DebugInfo/X86/split-dwarf-cross-unit-reference.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/split-dwarf-cross-unit-reference.ll?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/split-dwarf-cross-unit-reference.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/split-dwarf-cross-unit-reference.ll Wed Sep 13 15:09:01 2017
@@ -1,11 +1,11 @@
 ; RUN: llc -mtriple=x86_64-linux -split-dwarf-cross-cu-references -split-dwarf-file=foo.dwo -filetype=obj -o %t < %s
 ; RUN: llvm-objdump -r %t | FileCheck %s
-; RUN: llvm-dwarfdump -v -debug-info-dwo %t | FileCheck --check-prefix=ALL --check-prefix=INFO --check-prefix=DWO --check-prefix=CROSS %s
+; RUN: llvm-dwarfdump -v -debug-info %t | FileCheck --check-prefix=ALL --check-prefix=INFO --check-prefix=DWO --check-prefix=CROSS %s
 ; RUN: llvm-dwarfdump -v -debug-info %t | FileCheck --check-prefix=ALL --check-prefix=INFO %s
 
 ; RUN: llc -mtriple=x86_64-linux -split-dwarf-file=foo.dwo -filetype=obj -o %t < %s
 ; RUN: llvm-objdump -r %t | FileCheck %s
-; RUN: llvm-dwarfdump -v -debug-info-dwo %t | FileCheck --check-prefix=ALL --check-prefix=DWO --check-prefix=NOCROSS %s
+; RUN: llvm-dwarfdump -v -debug-info %t | FileCheck --check-prefix=ALL --check-prefix=DWO --check-prefix=NOCROSS %s
 ; RUN: llvm-dwarfdump -v -debug-info %t | FileCheck --check-prefix=ALL --check-prefix=INFO %s
 
 ; Testing cross-CU references for types, subprograms, and variables
@@ -42,6 +42,7 @@
 ; * debug_info.dwo contains duplicate types, abstract subprograms and abstract
 ;   variables otherwise to avoid the need for cross-cu references
 
+; DWO: .debug_info.dwo contents:
 ; CHECK-NOT: .rel{{a?}}.debug_info.dwo
 ; CHECK: RELOCATION RECORDS FOR [.rel{{a?}}.debug_info]:
 ; CHECK-NOT: RELOCATION RECORDS

Modified: llvm/trunk/test/DebugInfo/X86/split-dwarf-multiple-cu-hash.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/split-dwarf-multiple-cu-hash.ll?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/split-dwarf-multiple-cu-hash.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/split-dwarf-multiple-cu-hash.ll Wed Sep 13 15:09:01 2017
@@ -3,8 +3,10 @@
 ; RUN: %llc_dwarf -split-dwarf-file=bar.dwo  %s -filetype=obj -o %t/b.o
 ; RUN: llvm-dwarfdump -debug-info %t/a.o %t/b.o | FileCheck %s
 
+; CHECK: .debug_info contents:
 ; CHECK: dwo_id {{.*}}([[HASH:.*]])
 ; CHECK-NOT: dwo_id {{.*}}([[HASH]])
+; CHECK: .debug_info.dwo contents:
 
 target triple = "x86_64-pc-linux"
 

Modified: llvm/trunk/test/DebugInfo/X86/split-dwarf-omit-empty.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/split-dwarf-omit-empty.ll?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/split-dwarf-omit-empty.ll (original)
+++ llvm/trunk/test/DebugInfo/X86/split-dwarf-omit-empty.ll Wed Sep 13 15:09:01 2017
@@ -15,8 +15,10 @@
 ; will be emitted. This emulates something more like the available_externally
 ; import performed by ThinLTO.
 
+; CHECK: .debug_info contents:
 ; CHECK: Compile Unit
 ; CHECK-NOT: Compile Unit
+; CHECK: .debug_info.dwo contents:
 
 target triple = "x86_64-pc-linux"
 

Modified: llvm/trunk/test/DebugInfo/dwarfdump-dump-flags.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/dwarfdump-dump-flags.test?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/dwarfdump-dump-flags.test (original)
+++ llvm/trunk/test/DebugInfo/dwarfdump-dump-flags.test Wed Sep 13 15:09:01 2017
@@ -6,10 +6,11 @@
 ; RUN: llvm-dwarfdump %p/Inputs/dwarfdump-test.macho-i386.o --debug-ranges | FileCheck %s -check-prefix DUMP_RANGES
 
 ; DUMP_ALL: .debug_info
-; DUMP_ALL: .debug_ranges
+; DUMP_ALL: .debug_str
 
 ; DUMP_INFO: .debug_info
 ; DUMP_INFO-NOT: .debug_ranges
+; DUMP_INFO-NOT: .debug_str
 
 ; DUMP_RANGES-NOT: .debug_info
 ; DUMP_RANGES: .debug_ranges

Modified: llvm/trunk/test/DebugInfo/dwarfdump-dwp.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/dwarfdump-dwp.test?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/dwarfdump-dwp.test (original)
+++ llvm/trunk/test/DebugInfo/dwarfdump-dwp.test Wed Sep 13 15:09:01 2017
@@ -9,6 +9,7 @@ RUN: llvm-dwarfdump -v %p/Inputs/dwarfdu
 ;   bar b() {
 ;   }
 
+; CHECK-NOT: .debug_info contents:
 ; CHECK-LABEL: .debug_info.dwo contents:
 ; CHECK: Compile Unit
 

Modified: llvm/trunk/test/MC/ARM/dwarf-asm-multiple-sections-dwarf-2.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/dwarf-asm-multiple-sections-dwarf-2.s?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/MC/ARM/dwarf-asm-multiple-sections-dwarf-2.s (original)
+++ llvm/trunk/test/MC/ARM/dwarf-asm-multiple-sections-dwarf-2.s Wed Sep 13 15:09:01 2017
@@ -45,9 +45,8 @@ b:
 // DWARF-NEXT: 0x0000000000000004     11      0      1   0   0 is_stmt end_sequence
 
 
-// DWARF: .debug_ranges contents:
-// DWARF-NOT: {{0-9a-f}}
-// DWARF: .debug_pubnames contents:
+// DWARF-NOT: .debug_ranges contents:
+// DWARF-NOT: .debug_pubnames contents:
 
 
 // RELOC: RELOCATION RECORDS FOR [.rel.debug_info]:

Modified: llvm/trunk/test/MC/ARM/dwarf-asm-no-code.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/dwarf-asm-no-code.s?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/MC/ARM/dwarf-asm-no-code.s (original)
+++ llvm/trunk/test/MC/ARM/dwarf-asm-no-code.s Wed Sep 13 15:09:01 2017
@@ -8,18 +8,10 @@
 a:
 .long 42
 
-// DWARF: .debug_abbrev contents:
-// DWARF-NEXT: < EMPTY >
-
-// DWARF: .debug_info contents:
-
-// DWARF: .debug_aranges contents:
-
+// DWARF: ELF32-arm-little
+// DWARF-NOT: contents:
 // DWARF: .debug_line contents:
 
-// DWARF: .debug_ranges contents:
-
-
 // RELOC-NOT: RELOCATION RECORDS FOR [.rel.debug_info]:
 
 // RELOC-NOT: RELOCATION RECORDS FOR [.rel.debug_ranges]:

Modified: llvm/trunk/test/MC/ARM/dwarf-asm-nonstandard-section.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/dwarf-asm-nonstandard-section.s?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/MC/ARM/dwarf-asm-nonstandard-section.s (original)
+++ llvm/trunk/test/MC/ARM/dwarf-asm-nonstandard-section.s Wed Sep 13 15:09:01 2017
@@ -37,9 +37,8 @@ b:
 // DWARF-NEXT: 0x0000000000000004      7      0      1   0   0  is_stmt end_sequence
 
 
-// DWARF: .debug_ranges contents:
-// DWARF-NOT: {{0-9a-f}}
-// DWARF: .debug_pubnames contents:
+// DWARF-NOT: .debug_ranges contents:
+// DWARF-NOT: .debug_pubnames contents:
 
 
 

Modified: llvm/trunk/test/MC/ARM/dwarf-asm-single-section.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/dwarf-asm-single-section.s?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/MC/ARM/dwarf-asm-single-section.s (original)
+++ llvm/trunk/test/MC/ARM/dwarf-asm-single-section.s Wed Sep 13 15:09:01 2017
@@ -37,9 +37,8 @@ a:
 // DWARF-NEXT: 0x0000000000000004      7      0      1   0   0 is_stmt end_sequence
 
 
-// DWARF: .debug_ranges contents:
-// DWARF-NOT: {{0-9a-f}}
-// DWARF: .debug_pubnames contents:
+// DWARF-NOT: .debug_ranges contents:
+// DWARF-NOT: .debug_pubnames contents:
 
 
 // RELOC: RELOCATION RECORDS FOR [.rel.debug_info]:

Modified: llvm/trunk/test/tools/dsymutil/X86/basic-linking-x86.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/X86/basic-linking-x86.test?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/tools/dsymutil/X86/basic-linking-x86.test (original)
+++ llvm/trunk/test/tools/dsymutil/X86/basic-linking-x86.test Wed Sep 13 15:09:01 2017
@@ -140,8 +140,7 @@ CHECK:      DW_AT_frame_base [DW_FORM_bl
 
 CHECK:    NULL
 
-CHECK: .debug_loc contents
-CHECK-NOT: Location
+CHECK-NOT: .debug_loc contents
 
 CHECK:.debug_aranges contents:
 CHECK-NEXT:Address Range Header: length = 0x0000002c, version = 0x0002, cu_offset = 0x00000000, addr_size = 0x08, seg_size = 0x00

Modified: llvm/trunk/test/tools/llvm-dwp/X86/empty.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-dwp/X86/empty.test?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-dwp/X86/empty.test (original)
+++ llvm/trunk/test/tools/llvm-dwp/X86/empty.test Wed Sep 13 15:09:01 2017
@@ -1,8 +1,8 @@
 RUN: llvm-dwp %p/../Inputs/empty.dwo -o %t
 RUN: llvm-dwarfdump -v %t | FileCheck %s
 
-CHECK-LABEL: .debug_cu_index
+CHECK: file format
+CHECK-NOT: .debug_cu_index
 CHECK-NOT: version
-CHECK-LABEL: .debug_tu_index
+CHECK-NOT: .debug_tu_index
 CHECK-NOT: version
-CHECK: .debug_

Modified: llvm/trunk/test/tools/llvm-dwp/X86/simple.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-dwp/X86/simple.test?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-dwp/X86/simple.test (original)
+++ llvm/trunk/test/tools/llvm-dwp/X86/simple.test Wed Sep 13 15:09:01 2017
@@ -76,8 +76,7 @@ TYPES:     3 [[DWOB]]  {{\[}}[[BOFF]], [
 NOTYP:     3 [[DWOA]]  {{\[}}[[AOFF]], [[BOFF]]) [0x0000[[AAOFF]], 0x0000[[BAOFF]]) [0x00000000, 0x00000011) [0x00000000, 0x00000010)
 NOTYP:     4 [[DWOB]]  {{\[}}[[BOFF]], [[XOFF]]) [0x0000[[BAOFF]], 0x00000075)      [0x00000011, 0x00000022) [0x00000010, 0x00000024)
 
-CHECK-LABEL: .debug_tu_index contents:
-NOTYP-NOT: Index
+CHECK-NOT: .debug_tu_index contents:
 TYPES: Index Signature  TYPES                           ABBREV                             LINE                     STR_OFFSETS
 TYPES:     1 [[FOOSIG]] {{\[}}[[FOOUOFF]], [[BARUOFF]]) [0x0000[[AAOFF]], 0x0000[[BAOFF]]) [0x00000000, 0x0000001a) [0x00000000, 0x00000010)
 TYPES:     4 [[BARSIG]] {{\[}}[[BARUOFF]], [[XUOFF]])   [0x0000[[BAOFF]], 0x00000099)      [0x0000001a, 0x00000034) [0x00000010, 0x00000024)

Modified: llvm/trunk/tools/llvm-dwarfdump/llvm-dwarfdump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-dwarfdump/llvm-dwarfdump.cpp?rev=313207&r1=313206&r2=313207&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-dwarfdump/llvm-dwarfdump.cpp (original)
+++ llvm/trunk/tools/llvm-dwarfdump/llvm-dwarfdump.cpp Wed Sep 13 15:09:01 2017
@@ -53,7 +53,7 @@ static opt<bool> DumpAll("all", desc("Du
                          cat(SectionCategory));
 static alias DumpAllAlias("a", desc("Alias for -all"), aliasopt(DumpAll));
 
-static uint64_t DumpType = DIDT_Null;
+static unsigned DumpType = DIDT_Null;
 #define HANDLE_DWARF_SECTION(ENUM_NAME, ELF_NAME, CMDLINE_NAME)                \
   static opt<bool> Dump##ENUM_NAME(CMDLINE_NAME,                               \
                                    desc("Dump the " ELF_NAME " section"),      \
@@ -99,8 +99,7 @@ static void DumpObjectFile(ObjectFile &O
                         Filename.str() + ": ");
   // The UUID dump already contains all the same information.
   if (!(DumpType & DIDT_UUID) || DumpType == DIDT_All)
-    outs() << Filename << ":\tfile format " << Obj.getFileFormatName()
-           << "\n\n";
+    outs() << Filename << ":\tfile format " << Obj.getFileFormatName() << '\n';
 
   // Dump the complete DWARF structure.
   DICtx->dump(outs(), GetDumpOpts());




More information about the llvm-commits mailing list