Revert "dwarfgen: Add support for generating the debug_str_offsets section, take 2"

This reverts commit r337933. The build error is fixed but the test now
fails on the darwin buildbots. Investigating...

llvm-svn: 337935
diff --git a/llvm/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp b/llvm/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp
index 60058be..6b26318 100644
--- a/llvm/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp
+++ b/llvm/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp
@@ -67,23 +67,12 @@
   const uint32_t Dwarf32Values[] = {1, 2, 3, 4, 5, 6, 7, 8};
   const char *StringValue = "Hello";
   const char *StrpValue = "World";
-  const char *StrxValue = "Indexed";
-  const char *Strx1Value = "Indexed1";
-  const char *Strx2Value = "Indexed2";
-  const char *Strx3Value = "Indexed3";
-  const char *Strx4Value = "Indexed4";
 
   auto ExpectedDG = dwarfgen::Generator::create(Triple, Version);
   ASSERT_THAT_EXPECTED(ExpectedDG, Succeeded());
   dwarfgen::Generator *DG = ExpectedDG.get().get();
   dwarfgen::CompileUnit &CU = DG->addCompileUnit();
   dwarfgen::DIE CUDie = CU.getUnitDIE();
-
-  if (Version >= 5)
-    CUDie.addAttribute(dwarf::DW_AT_str_offsets_base, dwarf::DW_FORM_sec_offset,
-                       *MCSymbolRefExpr::create(DG->getStringOffsetsStartSym(),
-                                                *DG->getMCContext()));
-
   uint16_t Attr = DW_AT_lo_user;
 
   //----------------------------------------------------------------------
@@ -133,19 +122,6 @@
   const auto Attr_DW_FORM_string = static_cast<dwarf::Attribute>(Attr++);
   CUDie.addAttribute(Attr_DW_FORM_string, DW_FORM_string, StringValue);
 
-  const auto Attr_DW_FORM_strx = static_cast<dwarf::Attribute>(Attr++);
-  const auto Attr_DW_FORM_strx1 = static_cast<dwarf::Attribute>(Attr++);
-  const auto Attr_DW_FORM_strx2 = static_cast<dwarf::Attribute>(Attr++);
-  const auto Attr_DW_FORM_strx3 = static_cast<dwarf::Attribute>(Attr++);
-  const auto Attr_DW_FORM_strx4 = static_cast<dwarf::Attribute>(Attr++);
-  if (Version >= 5) {
-    CUDie.addAttribute(Attr_DW_FORM_strx, DW_FORM_strx, StrxValue);
-    CUDie.addAttribute(Attr_DW_FORM_strx1, DW_FORM_strx1, Strx1Value);
-    CUDie.addAttribute(Attr_DW_FORM_strx2, DW_FORM_strx2, Strx2Value);
-    CUDie.addAttribute(Attr_DW_FORM_strx3, DW_FORM_strx3, Strx3Value);
-    CUDie.addAttribute(Attr_DW_FORM_strx4, DW_FORM_strx4, Strx4Value);
-  }
-
   const auto Attr_DW_FORM_strp = static_cast<dwarf::Attribute>(Attr++);
   CUDie.addAttribute(Attr_DW_FORM_strp, DW_FORM_strp, StrpValue);
 
@@ -305,33 +281,11 @@
   //----------------------------------------------------------------------
   auto ExtractedStringValue = toString(DieDG.find(Attr_DW_FORM_string));
   EXPECT_TRUE((bool)ExtractedStringValue);
-  EXPECT_STREQ(StringValue, *ExtractedStringValue);
-
-  if (Version >= 5) {
-    auto ExtractedStrxValue = toString(DieDG.find(Attr_DW_FORM_strx));
-    EXPECT_TRUE((bool)ExtractedStrxValue);
-    EXPECT_STREQ(StrxValue, *ExtractedStrxValue);
-
-    auto ExtractedStrx1Value = toString(DieDG.find(Attr_DW_FORM_strx1));
-    EXPECT_TRUE((bool)ExtractedStrx1Value);
-    EXPECT_STREQ(Strx1Value, *ExtractedStrx1Value);
-
-    auto ExtractedStrx2Value = toString(DieDG.find(Attr_DW_FORM_strx2));
-    EXPECT_TRUE((bool)ExtractedStrx2Value);
-    EXPECT_STREQ(Strx2Value, *ExtractedStrx2Value);
-
-    auto ExtractedStrx3Value = toString(DieDG.find(Attr_DW_FORM_strx3));
-    EXPECT_TRUE((bool)ExtractedStrx3Value);
-    EXPECT_STREQ(Strx3Value, *ExtractedStrx3Value);
-
-    auto ExtractedStrx4Value = toString(DieDG.find(Attr_DW_FORM_strx4));
-    EXPECT_TRUE((bool)ExtractedStrx4Value);
-    EXPECT_STREQ(Strx4Value, *ExtractedStrx4Value);
-  }
+  EXPECT_TRUE(strcmp(StringValue, *ExtractedStringValue) == 0);
 
   auto ExtractedStrpValue = toString(DieDG.find(Attr_DW_FORM_strp));
   EXPECT_TRUE((bool)ExtractedStrpValue);
-  EXPECT_STREQ(StrpValue, *ExtractedStrpValue);
+  EXPECT_TRUE(strcmp(StrpValue, *ExtractedStrpValue) == 0);
 
   //----------------------------------------------------------------------
   // Test reference forms
diff --git a/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp b/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp
index 7f9f03e..b93b0cc 100644
--- a/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp
+++ b/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp
@@ -54,36 +54,16 @@
 }
 
 void dwarfgen::DIE::addAttribute(uint16_t A, dwarf::Form Form,
-                                 const MCExpr &Expr) {
-  auto &DG = CU->getGenerator();
-  Die->addValue(DG.getAllocator(), static_cast<dwarf::Attribute>(A), Form,
-                DIEExpr(&Expr));
-}
-
-void dwarfgen::DIE::addAttribute(uint16_t A, dwarf::Form Form,
                                  StringRef String) {
   auto &DG = CU->getGenerator();
-  switch (Form) {
-  case DW_FORM_string:
+  if (Form == DW_FORM_string) {
     Die->addValue(DG.getAllocator(), static_cast<dwarf::Attribute>(A), Form,
                   new (DG.getAllocator())
                       DIEInlineString(String, DG.getAllocator()));
-    break;
-
-  case DW_FORM_strp:
-  case DW_FORM_GNU_str_index:
-  case DW_FORM_strx:
-  case DW_FORM_strx1:
-  case DW_FORM_strx2:
-  case DW_FORM_strx3:
-  case DW_FORM_strx4:
+  } else {
     Die->addValue(
         DG.getAllocator(), static_cast<dwarf::Attribute>(A), Form,
         DIEString(DG.getStringPool().getEntry(*DG.getAsmPrinter(), String)));
-    break;
-
-  default:
-    llvm_unreachable("Unhandled form!");
   }
 }
 
@@ -447,7 +427,6 @@
   Asm->setDwarfVersion(Version);
 
   StringPool = llvm::make_unique<DwarfStringPool>(Allocator, *Asm, StringRef());
-  StringOffsetsStartSym = Asm->createTempSymbol("str_offsets_base");
 
   return Error::success();
 }
@@ -469,12 +448,7 @@
     CU->setLength(CUOffset - 4);
   }
   Abbreviations.Emit(Asm.get(), MOFI->getDwarfAbbrevSection());
-
-  StringPool->emitStringOffsetsTableHeader(*Asm, MOFI->getDwarfStrOffSection(),
-                                           StringOffsetsStartSym);
-  StringPool->emit(*Asm, MOFI->getDwarfStrSection(),
-                   MOFI->getDwarfStrOffSection());
-
+  StringPool->emit(*Asm, MOFI->getDwarfStrSection());
   MS->SwitchSection(MOFI->getDwarfInfoSection());
   for (auto &CU : CompileUnits) {
     uint16_t Version = CU->getVersion();
diff --git a/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.h b/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.h
index aeee01a..6d41cb5 100644
--- a/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.h
+++ b/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.h
@@ -89,14 +89,6 @@
   /// \param U the unsigned integer to encode.
   void addAttribute(uint16_t Attr, dwarf::Form Form, uint64_t U);
 
-  /// Add an attribute value to be encoded as a DIEExpr
-  ///
-  /// \param Attr a dwarf::Attribute enumeration value or any uint16_t that
-  /// represents a user defined DWARF attribute.
-  /// \param Form the dwarf::Form to use when encoding the attribute.
-  /// \param Expr the MC expression used to compute the value
-  void addAttribute(uint16_t Attr, dwarf::Form Form, const MCExpr &Expr);
-
   /// Add an attribute value to be encoded as a DIEString or DIEInlinedString.
   ///
   /// \param Attr a dwarf::Attribute enumeration value or any uint16_t that
@@ -250,8 +242,6 @@
   std::vector<std::unique_ptr<LineTable>> LineTables;
   DIEAbbrevSet Abbreviations;
 
-  MCSymbol *StringOffsetsStartSym;
-
   SmallString<4096> FileBytes;
   /// The stream we use to generate the DWARF into as an ELF file.
   std::unique_ptr<raw_svector_ostream> Stream;
@@ -303,7 +293,6 @@
   MCContext *getMCContext() const { return MC.get(); }
   DIEAbbrevSet &getAbbrevSet() { return Abbreviations; }
   DwarfStringPool &getStringPool() { return *StringPool; }
-  MCSymbol *getStringOffsetsStartSym() const { return StringOffsetsStartSym; }
 
   /// Save the generated DWARF file to disk.
   ///