Revert "[CodeView] Hook CodeViewRecordIO for reading/writing symbols."

This reverts commit r289978, which is failing due to some rebase/merge
issues.

llvm-svn: 289981
diff --git a/llvm/lib/DebugInfo/CodeView/CMakeLists.txt b/llvm/lib/DebugInfo/CodeView/CMakeLists.txt
index be22b9f..12675c3 100644
--- a/llvm/lib/DebugInfo/CodeView/CMakeLists.txt
+++ b/llvm/lib/DebugInfo/CodeView/CMakeLists.txt
@@ -8,9 +8,7 @@
   ModuleSubstream.cpp
   ModuleSubstreamVisitor.cpp
   RecordSerialization.cpp
-  SymbolRecordMapping.cpp
   SymbolDumper.cpp
-  SymbolSerializer.cpp
   TypeDumper.cpp
   TypeRecord.cpp
   TypeRecordMapping.cpp
diff --git a/llvm/lib/DebugInfo/CodeView/CodeViewRecordIO.cpp b/llvm/lib/DebugInfo/CodeView/CodeViewRecordIO.cpp
index 9bd85cf..19facae 100644
--- a/llvm/lib/DebugInfo/CodeView/CodeViewRecordIO.cpp
+++ b/llvm/lib/DebugInfo/CodeView/CodeViewRecordIO.cpp
@@ -75,16 +75,6 @@
   return Error::success();
 }
 
-Error CodeViewRecordIO::mapByteVectorTail(std::vector<uint8_t> &Bytes) {
-  ArrayRef<uint8_t> BytesRef(Bytes);
-  if (auto EC = mapByteVectorTail(BytesRef))
-    return EC;
-  if (!isWriting())
-    Bytes.assign(BytesRef.begin(), BytesRef.end());
-
-  return Error::success();
-}
-
 Error CodeViewRecordIO::mapInteger(TypeIndex &TypeInd) {
   if (isWriting()) {
     if (auto EC = Writer->writeInteger(TypeInd.getIndex()))
@@ -170,27 +160,6 @@
   return Error::success();
 }
 
-Error CodeViewRecordIO::mapStringZVectorZ(std::vector<StringRef> &Value) {
-  if (isWriting()) {
-    for (auto V : Value) {
-      if (auto EC = mapStringZ(V))
-        return EC;
-    }
-    if (auto EC = Writer->writeInteger(uint8_t(0)))
-      return EC;
-  } else {
-    StringRef S;
-    if (auto EC = mapStringZ(S))
-      return EC;
-    while (!S.empty()) {
-      Value.push_back(S);
-      if (auto EC = mapStringZ(S))
-        return EC;
-    };
-  }
-  return Error::success();
-}
-
 Error CodeViewRecordIO::writeEncodedSignedInteger(const int64_t &Value) {
   assert(Value < 0 && "Encoded integer is not signed!");
   if (Value >= std::numeric_limits<int8_t>::min()) {
diff --git a/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp b/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp
index 326e1f5..19a2552 100644
--- a/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp
+++ b/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp
@@ -94,14 +94,14 @@
   DictScope S(W, "BlockStart");
 
   StringRef LinkageName;
-  W.printHex("PtrParent", Block.Parent);
-  W.printHex("PtrEnd", Block.End);
-  W.printHex("CodeSize", Block.CodeSize);
+  W.printHex("PtrParent", Block.Header.PtrParent);
+  W.printHex("PtrEnd", Block.Header.PtrEnd);
+  W.printHex("CodeSize", Block.Header.CodeSize);
   if (ObjDelegate) {
     ObjDelegate->printRelocatedField("CodeOffset", Block.getRelocationOffset(),
-                                     Block.CodeOffset, &LinkageName);
+                                     Block.Header.CodeOffset, &LinkageName);
   }
-  W.printHex("Segment", Block.Segment);
+  W.printHex("Segment", Block.Header.Segment);
   W.printString("BlockName", Block.Name);
   W.printString("LinkageName", LinkageName);
   return Error::success();
@@ -109,35 +109,36 @@
 
 Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, Thunk32Sym &Thunk) {
   DictScope S(W, "Thunk32");
-  W.printNumber("Parent", Thunk.Parent);
-  W.printNumber("End", Thunk.End);
-  W.printNumber("Next", Thunk.Next);
-  W.printNumber("Off", Thunk.Offset);
-  W.printNumber("Seg", Thunk.Segment);
-  W.printNumber("Len", Thunk.Length);
-  W.printEnum("Ordinal", uint8_t(Thunk.Thunk), getThunkOrdinalNames());
+  W.printNumber("Parent", Thunk.Header.Parent);
+  W.printNumber("End", Thunk.Header.End);
+  W.printNumber("Next", Thunk.Header.Next);
+  W.printNumber("Off", Thunk.Header.Off);
+  W.printNumber("Seg", Thunk.Header.Seg);
+  W.printNumber("Len", Thunk.Header.Len);
+  W.printEnum("Ordinal", Thunk.Header.Ord, getThunkOrdinalNames());
   return Error::success();
 }
 
 Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,
                                            TrampolineSym &Tramp) {
   DictScope S(W, "Trampoline");
-  W.printEnum("Type", uint16_t(Tramp.Type), getTrampolineNames());
-  W.printNumber("Size", Tramp.Size);
-  W.printNumber("ThunkOff", Tramp.ThunkOffset);
-  W.printNumber("TargetOff", Tramp.TargetOffset);
-  W.printNumber("ThunkSection", Tramp.ThunkSection);
-  W.printNumber("TargetSection", Tramp.TargetSection);
+  W.printEnum("Type", Tramp.Header.Type, getTrampolineNames());
+  W.printNumber("Size", Tramp.Header.Size);
+  W.printNumber("ThunkOff", Tramp.Header.ThunkOff);
+  W.printNumber("TargetOff", Tramp.Header.TargetOff);
+  W.printNumber("ThunkSection", Tramp.Header.ThunkSection);
+  W.printNumber("TargetSection", Tramp.Header.TargetSection);
   return Error::success();
 }
 
 Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, SectionSym &Section) {
   DictScope S(W, "Section");
-  W.printNumber("SectionNumber", Section.SectionNumber);
-  W.printNumber("Alignment", Section.Alignment);
-  W.printNumber("Rva", Section.Rva);
-  W.printNumber("Length", Section.Length);
-  W.printFlags("Characteristics", Section.Characteristics,
+  W.printNumber("SectionNumber", Section.Header.SectionNumber);
+  W.printNumber("Alignment", Section.Header.Alignment);
+  W.printNumber("Reserved", Section.Header.Reserved);
+  W.printNumber("Rva", Section.Header.Rva);
+  W.printNumber("Length", Section.Header.Length);
+  W.printFlags("Characteristics", Section.Header.Characteristics,
                getImageSectionCharacteristicNames(),
                COFF::SectionCharacteristics(0x00F00000));
 
@@ -148,12 +149,12 @@
 Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,
                                            CoffGroupSym &CoffGroup) {
   DictScope S(W, "COFF Group");
-  W.printNumber("Size", CoffGroup.Size);
-  W.printFlags("Characteristics", CoffGroup.Characteristics,
+  W.printNumber("Size", CoffGroup.Header.Size);
+  W.printFlags("Characteristics", CoffGroup.Header.Characteristics,
                getImageSectionCharacteristicNames(),
                COFF::SectionCharacteristics(0x00F00000));
-  W.printNumber("Offset", CoffGroup.Offset);
-  W.printNumber("Segment", CoffGroup.Segment);
+  W.printNumber("Offset", CoffGroup.Header.Offset);
+  W.printNumber("Segment", CoffGroup.Header.Segment);
   W.printString("Name", CoffGroup.Name);
   return Error::success();
 }
@@ -162,8 +163,8 @@
                                            BPRelativeSym &BPRel) {
   DictScope S(W, "BPRelativeSym");
 
-  W.printNumber("Offset", BPRel.Offset);
-  CVTD.printTypeIndex("Type", BPRel.Type);
+  W.printNumber("Offset", BPRel.Header.Offset);
+  CVTD.printTypeIndex("Type", BPRel.Header.Type);
   W.printString("VarName", BPRel.Name);
   return Error::success();
 }
@@ -172,7 +173,7 @@
                                            BuildInfoSym &BuildInfo) {
   DictScope S(W, "BuildInfo");
 
-  W.printNumber("BuildId", BuildInfo.BuildId);
+  W.printNumber("BuildId", BuildInfo.Header.BuildId);
   return Error::success();
 }
 
@@ -182,12 +183,13 @@
 
   StringRef LinkageName;
   if (ObjDelegate) {
-    ObjDelegate->printRelocatedField("CodeOffset",
-                                     CallSiteInfo.getRelocationOffset(),
-                                     CallSiteInfo.CodeOffset, &LinkageName);
+    ObjDelegate->printRelocatedField(
+        "CodeOffset", CallSiteInfo.getRelocationOffset(),
+        CallSiteInfo.Header.CodeOffset, &LinkageName);
   }
-  W.printHex("Segment", CallSiteInfo.Segment);
-  CVTD.printTypeIndex("Type", CallSiteInfo.Type);
+  W.printHex("Segment", CallSiteInfo.Header.Segment);
+  W.printHex("Reserved", CallSiteInfo.Header.Reserved);
+  CVTD.printTypeIndex("Type", CallSiteInfo.Header.Type);
   if (!LinkageName.empty())
     W.printString("LinkageName", LinkageName);
   return Error::success();
@@ -197,6 +199,7 @@
                                            EnvBlockSym &EnvBlock) {
   DictScope S(W, "EnvBlock");
 
+  W.printNumber("Reserved", EnvBlock.Header.Reserved);
   ListScope L(W, "Entries");
   for (auto Entry : EnvBlock.Fields) {
     W.printString(Entry);
@@ -207,17 +210,17 @@
 Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,
                                            FileStaticSym &FileStatic) {
   DictScope S(W, "FileStatic");
-  W.printNumber("Index", FileStatic.Index);
-  W.printNumber("ModFilenameOffset", FileStatic.ModFilenameOffset);
-  W.printFlags("Flags", uint16_t(FileStatic.Flags), getLocalFlagNames());
+  W.printNumber("Index", FileStatic.Header.Index);
+  W.printNumber("ModFilenameOffset", FileStatic.Header.ModFilenameOffset);
+  W.printFlags("Flags", uint16_t(FileStatic.Header.Flags), getLocalFlagNames());
   W.printString("Name", FileStatic.Name);
   return Error::success();
 }
 
 Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, ExportSym &Export) {
   DictScope S(W, "Export");
-  W.printNumber("Ordinal", Export.Ordinal);
-  W.printFlags("Flags", uint16_t(Export.Flags), getExportSymFlagNames());
+  W.printNumber("Ordinal", Export.Header.Ordinal);
+  W.printFlags("Flags", Export.Header.Flags, getExportSymFlagNames());
   W.printString("Name", Export.Name);
   return Error::success();
 }
@@ -226,20 +229,24 @@
                                            Compile2Sym &Compile2) {
   DictScope S(W, "CompilerFlags2");
 
-  W.printEnum("Language", Compile2.getLanguage(), getSourceLanguageNames());
-  W.printFlags("Flags", Compile2.getFlags(), getCompileSym2FlagNames());
-  W.printEnum("Machine", unsigned(Compile2.Machine), getCPUTypeNames());
+  W.printEnum("Language", Compile2.Header.getLanguage(),
+              getSourceLanguageNames());
+  W.printFlags("Flags", Compile2.Header.flags & ~0xff,
+               getCompileSym2FlagNames());
+  W.printEnum("Machine", unsigned(Compile2.Header.Machine), getCPUTypeNames());
   std::string FrontendVersion;
   {
     raw_string_ostream Out(FrontendVersion);
-    Out << Compile2.VersionFrontendMajor << '.' << Compile2.VersionFrontendMinor
-        << '.' << Compile2.VersionFrontendBuild;
+    Out << Compile2.Header.VersionFrontendMajor << '.'
+        << Compile2.Header.VersionFrontendMinor << '.'
+        << Compile2.Header.VersionFrontendBuild;
   }
   std::string BackendVersion;
   {
     raw_string_ostream Out(BackendVersion);
-    Out << Compile2.VersionBackendMajor << '.' << Compile2.VersionBackendMinor
-        << '.' << Compile2.VersionBackendBuild;
+    Out << Compile2.Header.VersionBackendMajor << '.'
+        << Compile2.Header.VersionBackendMinor << '.'
+        << Compile2.Header.VersionBackendBuild;
   }
   W.printString("FrontendVersion", FrontendVersion);
   W.printString("BackendVersion", BackendVersion);
@@ -251,22 +258,26 @@
                                            Compile3Sym &Compile3) {
   DictScope S(W, "CompilerFlags3");
 
-  W.printEnum("Language", Compile3.getLanguage(), getSourceLanguageNames());
-  W.printFlags("Flags", Compile3.getFlags(), getCompileSym3FlagNames());
-  W.printEnum("Machine", unsigned(Compile3.Machine), getCPUTypeNames());
+  W.printEnum("Language", Compile3.Header.getLanguage(),
+              getSourceLanguageNames());
+  W.printFlags("Flags", Compile3.Header.flags & ~0xff,
+               getCompileSym3FlagNames());
+  W.printEnum("Machine", unsigned(Compile3.Header.Machine), getCPUTypeNames());
   std::string FrontendVersion;
   {
     raw_string_ostream Out(FrontendVersion);
-    Out << Compile3.VersionFrontendMajor << '.' << Compile3.VersionFrontendMinor
-        << '.' << Compile3.VersionFrontendBuild << '.'
-        << Compile3.VersionFrontendQFE;
+    Out << Compile3.Header.VersionFrontendMajor << '.'
+        << Compile3.Header.VersionFrontendMinor << '.'
+        << Compile3.Header.VersionFrontendBuild << '.'
+        << Compile3.Header.VersionFrontendQFE;
   }
   std::string BackendVersion;
   {
     raw_string_ostream Out(BackendVersion);
-    Out << Compile3.VersionBackendMajor << '.' << Compile3.VersionBackendMinor
-        << '.' << Compile3.VersionBackendBuild << '.'
-        << Compile3.VersionBackendQFE;
+    Out << Compile3.Header.VersionBackendMajor << '.'
+        << Compile3.Header.VersionBackendMinor << '.'
+        << Compile3.Header.VersionBackendBuild << '.'
+        << Compile3.Header.VersionBackendQFE;
   }
   W.printString("FrontendVersion", FrontendVersion);
   W.printString("BackendVersion", BackendVersion);
@@ -278,7 +289,7 @@
                                            ConstantSym &Constant) {
   DictScope S(W, "Constant");
 
-  CVTD.printTypeIndex("Type", Constant.Type);
+  CVTD.printTypeIndex("Type", Constant.Header.Type);
   W.printNumber("Value", Constant.Value);
   W.printString("Name", Constant.Name);
   return Error::success();
@@ -291,9 +302,9 @@
   StringRef LinkageName;
   if (ObjDelegate) {
     ObjDelegate->printRelocatedField("DataOffset", Data.getRelocationOffset(),
-                                     Data.DataOffset, &LinkageName);
+                                     Data.Header.DataOffset, &LinkageName);
   }
-  CVTD.printTypeIndex("Type", Data.Type);
+  CVTD.printTypeIndex("Type", Data.Header.Type);
   W.printString("DisplayName", Data.Name);
   if (!LinkageName.empty())
     W.printString("LinkageName", LinkageName);
@@ -304,7 +315,7 @@
     CVSymbol &CVR,
     DefRangeFramePointerRelFullScopeSym &DefRangeFramePointerRelFullScope) {
   DictScope S(W, "DefRangeFramePointerRelFullScope");
-  W.printNumber("Offset", DefRangeFramePointerRelFullScope.Offset);
+  W.printNumber("Offset", DefRangeFramePointerRelFullScope.Header.Offset);
   return Error::success();
 }
 
@@ -312,8 +323,8 @@
     CVSymbol &CVR, DefRangeFramePointerRelSym &DefRangeFramePointerRel) {
   DictScope S(W, "DefRangeFramePointerRel");
 
-  W.printNumber("Offset", DefRangeFramePointerRel.Offset);
-  printLocalVariableAddrRange(DefRangeFramePointerRel.Range,
+  W.printNumber("Offset", DefRangeFramePointerRel.Header.Offset);
+  printLocalVariableAddrRange(DefRangeFramePointerRel.Header.Range,
                               DefRangeFramePointerRel.getRelocationOffset());
   printLocalVariableAddrGap(DefRangeFramePointerRel.Gaps);
   return Error::success();
@@ -323,12 +334,13 @@
     CVSymbol &CVR, DefRangeRegisterRelSym &DefRangeRegisterRel) {
   DictScope S(W, "DefRangeRegisterRel");
 
-  W.printNumber("BaseRegister", DefRangeRegisterRel.Hdr.Register);
+  W.printNumber("BaseRegister", DefRangeRegisterRel.Header.BaseRegister);
   W.printBoolean("HasSpilledUDTMember",
                  DefRangeRegisterRel.hasSpilledUDTMember());
   W.printNumber("OffsetInParent", DefRangeRegisterRel.offsetInParent());
-  W.printNumber("BasePointerOffset", DefRangeRegisterRel.Hdr.BasePointerOffset);
-  printLocalVariableAddrRange(DefRangeRegisterRel.Range,
+  W.printNumber("BasePointerOffset",
+                DefRangeRegisterRel.Header.BasePointerOffset);
+  printLocalVariableAddrRange(DefRangeRegisterRel.Header.Range,
                               DefRangeRegisterRel.getRelocationOffset());
   printLocalVariableAddrGap(DefRangeRegisterRel.Gaps);
   return Error::success();
@@ -338,9 +350,9 @@
     CVSymbol &CVR, DefRangeRegisterSym &DefRangeRegister) {
   DictScope S(W, "DefRangeRegister");
 
-  W.printNumber("Register", DefRangeRegister.Hdr.Register);
-  W.printNumber("MayHaveNoName", DefRangeRegister.Hdr.MayHaveNoName);
-  printLocalVariableAddrRange(DefRangeRegister.Range,
+  W.printNumber("Register", DefRangeRegister.Header.Register);
+  W.printNumber("MayHaveNoName", DefRangeRegister.Header.MayHaveNoName);
+  printLocalVariableAddrRange(DefRangeRegister.Header.Range,
                               DefRangeRegister.getRelocationOffset());
   printLocalVariableAddrGap(DefRangeRegister.Gaps);
   return Error::success();
@@ -350,10 +362,11 @@
     CVSymbol &CVR, DefRangeSubfieldRegisterSym &DefRangeSubfieldRegister) {
   DictScope S(W, "DefRangeSubfieldRegister");
 
-  W.printNumber("Register", DefRangeSubfieldRegister.Hdr.Register);
-  W.printNumber("MayHaveNoName", DefRangeSubfieldRegister.Hdr.MayHaveNoName);
-  W.printNumber("OffsetInParent", DefRangeSubfieldRegister.Hdr.OffsetInParent);
-  printLocalVariableAddrRange(DefRangeSubfieldRegister.Range,
+  W.printNumber("Register", DefRangeSubfieldRegister.Header.Register);
+  W.printNumber("MayHaveNoName", DefRangeSubfieldRegister.Header.MayHaveNoName);
+  W.printNumber("OffsetInParent",
+                DefRangeSubfieldRegister.Header.OffsetInParent);
+  printLocalVariableAddrRange(DefRangeSubfieldRegister.Header.Range,
                               DefRangeSubfieldRegister.getRelocationOffset());
   printLocalVariableAddrGap(DefRangeSubfieldRegister.Gaps);
   return Error::success();
@@ -365,7 +378,7 @@
 
   if (ObjDelegate) {
     StringRef StringTable = ObjDelegate->getStringTable();
-    auto ProgramStringTableOffset = DefRangeSubfield.Program;
+    auto ProgramStringTableOffset = DefRangeSubfield.Header.Program;
     if (ProgramStringTableOffset >= StringTable.size())
       return llvm::make_error<CodeViewError>(
           "String table offset outside of bounds of String Table!");
@@ -373,8 +386,8 @@
         StringTable.drop_front(ProgramStringTableOffset).split('\0').first;
     W.printString("Program", Program);
   }
-  W.printNumber("OffsetInParent", DefRangeSubfield.OffsetInParent);
-  printLocalVariableAddrRange(DefRangeSubfield.Range,
+  W.printNumber("OffsetInParent", DefRangeSubfield.Header.OffsetInParent);
+  printLocalVariableAddrRange(DefRangeSubfield.Header.Range,
                               DefRangeSubfield.getRelocationOffset());
   printLocalVariableAddrGap(DefRangeSubfield.Gaps);
   return Error::success();
@@ -386,7 +399,7 @@
 
   if (ObjDelegate) {
     StringRef StringTable = ObjDelegate->getStringTable();
-    auto ProgramStringTableOffset = DefRange.Program;
+    auto ProgramStringTableOffset = DefRange.Header.Program;
     if (ProgramStringTableOffset >= StringTable.size())
       return llvm::make_error<CodeViewError>(
           "String table offset outside of bounds of String Table!");
@@ -394,7 +407,8 @@
         StringTable.drop_front(ProgramStringTableOffset).split('\0').first;
     W.printString("Program", Program);
   }
-  printLocalVariableAddrRange(DefRange.Range, DefRange.getRelocationOffset());
+  printLocalVariableAddrRange(DefRange.Header.Range,
+                              DefRange.getRelocationOffset());
   printLocalVariableAddrGap(DefRange.Gaps);
   return Error::success();
 }
@@ -405,14 +419,14 @@
 
   StringRef LinkageName;
   if (ObjDelegate) {
-    ObjDelegate->printRelocatedField("CodeOffset",
-                                     FrameCookie.getRelocationOffset(),
-                                     FrameCookie.CodeOffset, &LinkageName);
+    ObjDelegate->printRelocatedField(
+        "CodeOffset", FrameCookie.getRelocationOffset(),
+        FrameCookie.Header.CodeOffset, &LinkageName);
   }
-  W.printHex("Register", FrameCookie.Register);
-  W.printEnum("CookieKind", uint16_t(FrameCookie.CookieKind),
+  W.printHex("Register", FrameCookie.Header.Register);
+  W.printEnum("CookieKind", uint16_t(FrameCookie.Header.CookieKind),
               getFrameCookieKindNames());
-  W.printHex("Flags", FrameCookie.Flags);
+  W.printHex("Flags", FrameCookie.Header.Flags);
   return Error::success();
 }
 
@@ -420,16 +434,16 @@
                                            FrameProcSym &FrameProc) {
   DictScope S(W, "FrameProc");
 
-  W.printHex("TotalFrameBytes", FrameProc.TotalFrameBytes);
-  W.printHex("PaddingFrameBytes", FrameProc.PaddingFrameBytes);
-  W.printHex("OffsetToPadding", FrameProc.OffsetToPadding);
+  W.printHex("TotalFrameBytes", FrameProc.Header.TotalFrameBytes);
+  W.printHex("PaddingFrameBytes", FrameProc.Header.PaddingFrameBytes);
+  W.printHex("OffsetToPadding", FrameProc.Header.OffsetToPadding);
   W.printHex("BytesOfCalleeSavedRegisters",
-             FrameProc.BytesOfCalleeSavedRegisters);
-  W.printHex("OffsetOfExceptionHandler", FrameProc.OffsetOfExceptionHandler);
+             FrameProc.Header.BytesOfCalleeSavedRegisters);
+  W.printHex("OffsetOfExceptionHandler",
+             FrameProc.Header.OffsetOfExceptionHandler);
   W.printHex("SectionIdOfExceptionHandler",
-             FrameProc.SectionIdOfExceptionHandler);
-  W.printFlags("Flags", static_cast<uint32_t>(FrameProc.Flags),
-               getFrameProcSymFlagNames());
+             FrameProc.Header.SectionIdOfExceptionHandler);
+  W.printFlags("Flags", FrameProc.Header.Flags, getFrameProcSymFlagNames());
   return Error::success();
 }
 
@@ -439,13 +453,13 @@
 
   StringRef LinkageName;
   if (ObjDelegate) {
-    ObjDelegate->printRelocatedField("CodeOffset",
-                                     HeapAllocSite.getRelocationOffset(),
-                                     HeapAllocSite.CodeOffset, &LinkageName);
+    ObjDelegate->printRelocatedField(
+        "CodeOffset", HeapAllocSite.getRelocationOffset(),
+        HeapAllocSite.Header.CodeOffset, &LinkageName);
   }
-  W.printHex("Segment", HeapAllocSite.Segment);
-  W.printHex("CallInstructionSize", HeapAllocSite.CallInstructionSize);
-  CVTD.printTypeIndex("Type", HeapAllocSite.Type);
+  W.printHex("Segment", HeapAllocSite.Header.Segment);
+  W.printHex("CallInstructionSize", HeapAllocSite.Header.CallInstructionSize);
+  CVTD.printTypeIndex("Type", HeapAllocSite.Header.Type);
   if (!LinkageName.empty())
     W.printString("LinkageName", LinkageName);
   return Error::success();
@@ -455,9 +469,9 @@
                                            InlineSiteSym &InlineSite) {
   DictScope S(W, "InlineSite");
 
-  W.printHex("PtrParent", InlineSite.Parent);
-  W.printHex("PtrEnd", InlineSite.End);
-  CVTD.printTypeIndex("Inlinee", InlineSite.Inlinee);
+  W.printHex("PtrParent", InlineSite.Header.PtrParent);
+  W.printHex("PtrEnd", InlineSite.Header.PtrEnd);
+  CVTD.printTypeIndex("Inlinee", InlineSite.Header.Inlinee);
 
   ListScope BinaryAnnotations(W, "BinaryAnnotations");
   for (auto &Annotation : InlineSite.annotations()) {
@@ -511,26 +525,26 @@
 Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR,
                                            RegisterSym &Register) {
   DictScope S(W, "RegisterSym");
-  W.printNumber("Type", Register.Index);
-  W.printEnum("Seg", uint16_t(Register.Register), getRegisterNames());
+  W.printNumber("Type", Register.Header.Index);
+  W.printEnum("Seg", uint16_t(Register.Header.Register), getRegisterNames());
   W.printString("Name", Register.Name);
   return Error::success();
 }
 
 Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, PublicSym32 &Public) {
   DictScope S(W, "PublicSym");
-  W.printNumber("Type", Public.Index);
-  W.printNumber("Seg", Public.Segment);
-  W.printNumber("Off", Public.Offset);
+  W.printNumber("Type", Public.Header.Index);
+  W.printNumber("Seg", Public.Header.Seg);
+  W.printNumber("Off", Public.Header.Off);
   W.printString("Name", Public.Name);
   return Error::success();
 }
 
 Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, ProcRefSym &ProcRef) {
   DictScope S(W, "ProcRef");
-  W.printNumber("SumName", ProcRef.SumName);
-  W.printNumber("SymOffset", ProcRef.SymOffset);
-  W.printNumber("Mod", ProcRef.Module);
+  W.printNumber("SumName", ProcRef.Header.SumName);
+  W.printNumber("SymOffset", ProcRef.Header.SymOffset);
+  W.printNumber("Mod", ProcRef.Header.Mod);
   W.printString("Name", ProcRef.Name);
   return Error::success();
 }
@@ -541,11 +555,11 @@
   StringRef LinkageName;
   if (ObjDelegate) {
     ObjDelegate->printRelocatedField("CodeOffset", Label.getRelocationOffset(),
-                                     Label.CodeOffset, &LinkageName);
+                                     Label.Header.CodeOffset, &LinkageName);
   }
-  W.printHex("Segment", Label.Segment);
-  W.printHex("Flags", uint8_t(Label.Flags));
-  W.printFlags("Flags", uint8_t(Label.Flags), getProcSymFlagNames());
+  W.printHex("Segment", Label.Header.Segment);
+  W.printHex("Flags", Label.Header.Flags);
+  W.printFlags("Flags", Label.Header.Flags, getProcSymFlagNames());
   W.printString("DisplayName", Label.Name);
   if (!LinkageName.empty())
     W.printString("LinkageName", LinkageName);
@@ -555,8 +569,8 @@
 Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, LocalSym &Local) {
   DictScope S(W, "Local");
 
-  CVTD.printTypeIndex("Type", Local.Type);
-  W.printFlags("Flags", uint16_t(Local.Flags), getLocalFlagNames());
+  CVTD.printTypeIndex("Type", Local.Header.Type);
+  W.printFlags("Flags", uint16_t(Local.Header.Flags), getLocalFlagNames());
   W.printString("VarName", Local.Name);
   return Error::success();
 }
@@ -564,7 +578,7 @@
 Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, ObjNameSym &ObjName) {
   DictScope S(W, "ObjectName");
 
-  W.printHex("Signature", ObjName.Signature);
+  W.printHex("Signature", ObjName.Header.Signature);
   W.printString("ObjectName", ObjName.Name);
   return Error::success();
 }
@@ -580,19 +594,19 @@
 
   StringRef LinkageName;
   W.printEnum("Kind", uint16_t(CVR.kind()), getSymbolTypeNames());
-  W.printHex("PtrParent", Proc.Parent);
-  W.printHex("PtrEnd", Proc.End);
-  W.printHex("PtrNext", Proc.Next);
-  W.printHex("CodeSize", Proc.CodeSize);
-  W.printHex("DbgStart", Proc.DbgStart);
-  W.printHex("DbgEnd", Proc.DbgEnd);
-  CVTD.printTypeIndex("FunctionType", Proc.FunctionType);
+  W.printHex("PtrParent", Proc.Header.PtrParent);
+  W.printHex("PtrEnd", Proc.Header.PtrEnd);
+  W.printHex("PtrNext", Proc.Header.PtrNext);
+  W.printHex("CodeSize", Proc.Header.CodeSize);
+  W.printHex("DbgStart", Proc.Header.DbgStart);
+  W.printHex("DbgEnd", Proc.Header.DbgEnd);
+  CVTD.printTypeIndex("FunctionType", Proc.Header.FunctionType);
   if (ObjDelegate) {
     ObjDelegate->printRelocatedField("CodeOffset", Proc.getRelocationOffset(),
-                                     Proc.CodeOffset, &LinkageName);
+                                     Proc.Header.CodeOffset, &LinkageName);
   }
-  W.printHex("Segment", Proc.Segment);
-  W.printFlags("Flags", static_cast<uint8_t>(Proc.Flags),
+  W.printHex("Segment", Proc.Header.Segment);
+  W.printFlags("Flags", static_cast<uint8_t>(Proc.Header.Flags),
                getProcSymFlagNames());
   W.printString("DisplayName", Proc.Name);
   if (!LinkageName.empty())
@@ -624,9 +638,9 @@
                                            RegRelativeSym &RegRel) {
   DictScope S(W, "RegRelativeSym");
 
-  W.printHex("Offset", RegRel.Offset);
-  CVTD.printTypeIndex("Type", RegRel.Type);
-  W.printHex("Register", RegRel.Register);
+  W.printHex("Offset", RegRel.Header.Offset);
+  CVTD.printTypeIndex("Type", RegRel.Header.Type);
+  W.printHex("Register", RegRel.Header.Register);
   W.printString("VarName", RegRel.Name);
   return Error::success();
 }
@@ -638,9 +652,9 @@
   StringRef LinkageName;
   if (ObjDelegate) {
     ObjDelegate->printRelocatedField("DataOffset", Data.getRelocationOffset(),
-                                     Data.DataOffset, &LinkageName);
+                                     Data.Header.DataOffset, &LinkageName);
   }
-  CVTD.printTypeIndex("Type", Data.Type);
+  CVTD.printTypeIndex("Type", Data.Header.Type);
   W.printString("DisplayName", Data.Name);
   if (!LinkageName.empty())
     W.printString("LinkageName", LinkageName);
@@ -649,7 +663,7 @@
 
 Error CVSymbolDumperImpl::visitKnownRecord(CVSymbol &CVR, UDTSym &UDT) {
   DictScope S(W, "UDT");
-  CVTD.printTypeIndex("Type", UDT.Type);
+  CVTD.printTypeIndex("Type", UDT.Header.Type);
   W.printString("UDTName", UDT.Name);
   return Error::success();
 }
diff --git a/llvm/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp b/llvm/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp
deleted file mode 100644
index bb17314..0000000
--- a/llvm/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp
+++ /dev/null
@@ -1,464 +0,0 @@
-//===- SymbolRecordMapping.cpp -----------------------------------*- C++-*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/DebugInfo/CodeView/SymbolRecordMapping.h"
-
-using namespace llvm;
-using namespace llvm::codeview;
-
-#define error(X)                                                               \
-  if (auto EC = X)                                                             \
-    return EC;
-
-namespace {
-struct MapGap {
-  Error operator()(CodeViewRecordIO &IO, LocalVariableAddrGap &Gap) const {
-    error(IO.mapInteger(Gap.GapStartOffset));
-    error(IO.mapInteger(Gap.Range));
-    return Error::success();
-  }
-};
-}
-
-static Error mapLocalVariableAddrRange(CodeViewRecordIO &IO,
-                                       LocalVariableAddrRange &Range) {
-  error(IO.mapInteger(Range.OffsetStart));
-  error(IO.mapInteger(Range.ISectStart));
-  error(IO.mapInteger(Range.Range));
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitSymbolBegin(CVSymbol &Record) {
-  error(IO.beginRecord(MaxRecordLength - sizeof(RecordPrefix)));
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitSymbolEnd(CVSymbol &Record) {
-  error(IO.endRecord());
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, BlockSym &Block) {
-
-  error(IO.mapInteger(Block.Parent));
-  error(IO.mapInteger(Block.End));
-  error(IO.mapInteger(Block.CodeSize));
-  error(IO.mapInteger(Block.CodeOffset));
-  error(IO.mapInteger(Block.Segment));
-  error(IO.mapStringZ(Block.Name));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, Thunk32Sym &Thunk) {
-
-  error(IO.mapInteger(Thunk.Parent));
-  error(IO.mapInteger(Thunk.End));
-  error(IO.mapInteger(Thunk.Next));
-  error(IO.mapInteger(Thunk.Offset));
-  error(IO.mapInteger(Thunk.Segment));
-  error(IO.mapInteger(Thunk.Length));
-  error(IO.mapEnum(Thunk.Thunk));
-  error(IO.mapStringZ(Thunk.Name));
-  error(IO.mapByteVectorTail(Thunk.VariantData));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            TrampolineSym &Tramp) {
-
-  error(IO.mapEnum(Tramp.Type));
-  error(IO.mapInteger(Tramp.Size));
-  error(IO.mapInteger(Tramp.ThunkOffset));
-  error(IO.mapInteger(Tramp.TargetOffset));
-  error(IO.mapInteger(Tramp.ThunkSection));
-  error(IO.mapInteger(Tramp.TargetSection));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            SectionSym &Section) {
-  uint8_t Padding = 0;
-
-  error(IO.mapInteger(Section.SectionNumber));
-  error(IO.mapInteger(Section.Alignment));
-  error(IO.mapInteger(Padding));
-  error(IO.mapInteger(Section.Rva));
-  error(IO.mapInteger(Section.Length));
-  error(IO.mapInteger(Section.Characteristics));
-  error(IO.mapStringZ(Section.Name));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            CoffGroupSym &CoffGroup) {
-
-  error(IO.mapInteger(CoffGroup.Size));
-  error(IO.mapInteger(CoffGroup.Characteristics));
-  error(IO.mapInteger(CoffGroup.Offset));
-  error(IO.mapInteger(CoffGroup.Segment));
-  error(IO.mapStringZ(CoffGroup.Name));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            BPRelativeSym &BPRel) {
-
-  error(IO.mapInteger(BPRel.Offset));
-  error(IO.mapInteger(BPRel.Type));
-  error(IO.mapStringZ(BPRel.Name));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            BuildInfoSym &BuildInfo) {
-
-  error(IO.mapInteger(BuildInfo.BuildId));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            CallSiteInfoSym &CallSiteInfo) {
-  uint16_t Padding = 0;
-
-  error(IO.mapInteger(CallSiteInfo.CodeOffset));
-  error(IO.mapInteger(CallSiteInfo.Segment));
-  error(IO.mapInteger(Padding));
-  error(IO.mapInteger(CallSiteInfo.Type));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            EnvBlockSym &EnvBlock) {
-
-  uint8_t Reserved = 0;
-  error(IO.mapInteger(Reserved));
-  error(IO.mapStringZVectorZ(EnvBlock.Fields));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            FileStaticSym &FileStatic) {
-
-  error(IO.mapInteger(FileStatic.Index));
-  error(IO.mapInteger(FileStatic.ModFilenameOffset));
-  error(IO.mapEnum(FileStatic.Flags));
-  error(IO.mapStringZ(FileStatic.Name));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, ExportSym &Export) {
-
-  error(IO.mapInteger(Export.Ordinal));
-  error(IO.mapEnum(Export.Flags));
-  error(IO.mapStringZ(Export.Name));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            Compile2Sym &Compile2) {
-
-  error(IO.mapEnum(Compile2.Flags));
-  error(IO.mapEnum(Compile2.Machine));
-  error(IO.mapInteger(Compile2.VersionFrontendMajor));
-  error(IO.mapInteger(Compile2.VersionFrontendMinor));
-  error(IO.mapInteger(Compile2.VersionFrontendBuild));
-  error(IO.mapInteger(Compile2.VersionBackendMajor));
-  error(IO.mapInteger(Compile2.VersionBackendMinor));
-  error(IO.mapInteger(Compile2.VersionBackendBuild));
-  error(IO.mapStringZ(Compile2.Version));
-  error(IO.mapStringZVectorZ(Compile2.ExtraStrings));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            Compile3Sym &Compile3) {
-
-  error(IO.mapEnum(Compile3.Flags));
-  error(IO.mapEnum(Compile3.Machine));
-  error(IO.mapInteger(Compile3.VersionFrontendMajor));
-  error(IO.mapInteger(Compile3.VersionFrontendMinor));
-  error(IO.mapInteger(Compile3.VersionFrontendBuild));
-  error(IO.mapInteger(Compile3.VersionFrontendQFE));
-  error(IO.mapInteger(Compile3.VersionBackendMajor));
-  error(IO.mapInteger(Compile3.VersionBackendMinor));
-  error(IO.mapInteger(Compile3.VersionBackendBuild));
-  error(IO.mapInteger(Compile3.VersionBackendQFE));
-  error(IO.mapStringZ(Compile3.Version));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            ConstantSym &Constant) {
-
-  error(IO.mapInteger(Constant.Type));
-  error(IO.mapEncodedInteger(Constant.Value));
-  error(IO.mapStringZ(Constant.Name));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, DataSym &Data) {
-
-  error(IO.mapInteger(Data.Type));
-  error(IO.mapInteger(Data.DataOffset));
-  error(IO.mapInteger(Data.Segment));
-  error(IO.mapStringZ(Data.Name));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(
-    CVSymbol &CVR, DefRangeFramePointerRelSym &DefRangeFramePointerRel) {
-
-  error(IO.mapInteger(DefRangeFramePointerRel.Offset));
-  error(mapLocalVariableAddrRange(IO, DefRangeFramePointerRel.Range));
-  error(IO.mapVectorTail(DefRangeFramePointerRel.Gaps, MapGap()));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(
-    CVSymbol &CVR,
-    DefRangeFramePointerRelFullScopeSym &DefRangeFramePointerRelFullScope) {
-
-  error(IO.mapInteger(DefRangeFramePointerRelFullScope.Offset));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(
-    CVSymbol &CVR, DefRangeRegisterRelSym &DefRangeRegisterRel) {
-
-  error(IO.mapObject(DefRangeRegisterRel.Hdr.Register));
-  error(IO.mapObject(DefRangeRegisterRel.Hdr.Flags));
-  error(IO.mapObject(DefRangeRegisterRel.Hdr.BasePointerOffset));
-  error(mapLocalVariableAddrRange(IO, DefRangeRegisterRel.Range));
-  error(IO.mapVectorTail(DefRangeRegisterRel.Gaps, MapGap()));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(
-    CVSymbol &CVR, DefRangeRegisterSym &DefRangeRegister) {
-
-  error(IO.mapObject(DefRangeRegister.Hdr.Register));
-  error(IO.mapObject(DefRangeRegister.Hdr.MayHaveNoName));
-  error(mapLocalVariableAddrRange(IO, DefRangeRegister.Range));
-  error(IO.mapVectorTail(DefRangeRegister.Gaps, MapGap()));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(
-    CVSymbol &CVR, DefRangeSubfieldRegisterSym &DefRangeSubfieldRegister) {
-
-  error(IO.mapObject(DefRangeSubfieldRegister.Hdr.Register));
-  error(IO.mapObject(DefRangeSubfieldRegister.Hdr.MayHaveNoName));
-  error(IO.mapObject(DefRangeSubfieldRegister.Hdr.OffsetInParent));
-  error(mapLocalVariableAddrRange(IO, DefRangeSubfieldRegister.Range));
-  error(IO.mapVectorTail(DefRangeSubfieldRegister.Gaps, MapGap()));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(
-    CVSymbol &CVR, DefRangeSubfieldSym &DefRangeSubfield) {
-
-  error(IO.mapInteger(DefRangeSubfield.Program));
-  error(IO.mapInteger(DefRangeSubfield.OffsetInParent));
-  error(mapLocalVariableAddrRange(IO, DefRangeSubfield.Range));
-  error(IO.mapVectorTail(DefRangeSubfield.Gaps, MapGap()));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            DefRangeSym &DefRange) {
-
-  error(IO.mapInteger(DefRange.Program));
-  error(mapLocalVariableAddrRange(IO, DefRange.Range));
-  error(IO.mapVectorTail(DefRange.Gaps, MapGap()));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            FrameCookieSym &FrameCookie) {
-
-  error(IO.mapInteger(FrameCookie.CodeOffset));
-  error(IO.mapInteger(FrameCookie.Register));
-  error(IO.mapInteger(FrameCookie.CookieKind));
-  error(IO.mapInteger(FrameCookie.Flags));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            FrameProcSym &FrameProc) {
-  error(IO.mapInteger(FrameProc.TotalFrameBytes));
-  error(IO.mapInteger(FrameProc.PaddingFrameBytes));
-  error(IO.mapInteger(FrameProc.OffsetToPadding));
-  error(IO.mapInteger(FrameProc.BytesOfCalleeSavedRegisters));
-  error(IO.mapInteger(FrameProc.OffsetOfExceptionHandler));
-  error(IO.mapInteger(FrameProc.SectionIdOfExceptionHandler));
-  error(IO.mapEnum(FrameProc.Flags));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(
-    CVSymbol &CVR, HeapAllocationSiteSym &HeapAllocSite) {
-
-  error(IO.mapInteger(HeapAllocSite.CodeOffset));
-  error(IO.mapInteger(HeapAllocSite.Segment));
-  error(IO.mapInteger(HeapAllocSite.CallInstructionSize));
-  error(IO.mapInteger(HeapAllocSite.Type));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            InlineSiteSym &InlineSite) {
-
-  error(IO.mapInteger(InlineSite.Parent));
-  error(IO.mapInteger(InlineSite.End));
-  error(IO.mapInteger(InlineSite.Inlinee));
-  error(IO.mapByteVectorTail(InlineSite.AnnotationData));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            RegisterSym &Register) {
-
-  error(IO.mapInteger(Register.Index));
-  error(IO.mapEnum(Register.Register));
-  error(IO.mapStringZ(Register.Name));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            PublicSym32 &Public) {
-
-  error(IO.mapInteger(Public.Index));
-  error(IO.mapInteger(Public.Offset));
-  error(IO.mapInteger(Public.Segment));
-  error(IO.mapStringZ(Public.Name));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            ProcRefSym &ProcRef) {
-
-  error(IO.mapInteger(ProcRef.SumName));
-  error(IO.mapInteger(ProcRef.SymOffset));
-  error(IO.mapInteger(ProcRef.Module));
-  error(IO.mapStringZ(ProcRef.Name));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, LabelSym &Label) {
-
-  error(IO.mapInteger(Label.CodeOffset));
-  error(IO.mapInteger(Label.Segment));
-  error(IO.mapEnum(Label.Flags));
-  error(IO.mapStringZ(Label.Name));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, LocalSym &Local) {
-  error(IO.mapInteger(Local.Type));
-  error(IO.mapEnum(Local.Flags));
-  error(IO.mapStringZ(Local.Name));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            ObjNameSym &ObjName) {
-
-  error(IO.mapInteger(ObjName.Signature));
-  error(IO.mapStringZ(ObjName.Name));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, ProcSym &Proc) {
-  error(IO.mapInteger(Proc.Parent));
-  error(IO.mapInteger(Proc.End));
-  error(IO.mapInteger(Proc.Next));
-  error(IO.mapInteger(Proc.CodeSize));
-  error(IO.mapInteger(Proc.DbgStart));
-  error(IO.mapInteger(Proc.DbgEnd));
-  error(IO.mapInteger(Proc.FunctionType));
-  error(IO.mapInteger(Proc.CodeOffset));
-  error(IO.mapInteger(Proc.Segment));
-  error(IO.mapEnum(Proc.Flags));
-  error(IO.mapStringZ(Proc.Name));
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            ScopeEndSym &ScopeEnd) {
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, CallerSym &Caller) {
-  error(IO.mapVectorN<uint32_t>(
-      Caller.Indices,
-      [](CodeViewRecordIO &IO, TypeIndex &N) { return IO.mapInteger(N); }));
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            RegRelativeSym &RegRel) {
-
-  error(IO.mapInteger(RegRel.Offset));
-  error(IO.mapInteger(RegRel.Type));
-  error(IO.mapInteger(RegRel.Register));
-  error(IO.mapStringZ(RegRel.Name));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
-                                            ThreadLocalDataSym &Data) {
-
-  error(IO.mapInteger(Data.Type));
-  error(IO.mapInteger(Data.DataOffset));
-  error(IO.mapInteger(Data.Segment));
-  error(IO.mapStringZ(Data.Name));
-
-  return Error::success();
-}
-
-Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR, UDTSym &UDT) {
-
-  error(IO.mapInteger(UDT.Type));
-  error(IO.mapStringZ(UDT.Name));
-
-  return Error::success();
-}
diff --git a/llvm/lib/DebugInfo/CodeView/SymbolSerializer.cpp b/llvm/lib/DebugInfo/CodeView/SymbolSerializer.cpp
deleted file mode 100644
index 323838a..0000000
--- a/llvm/lib/DebugInfo/CodeView/SymbolSerializer.cpp
+++ /dev/null
@@ -1 +0,0 @@
-#include "llvm/DebugInfo/CodeView/SymbolSerializer.h"
\ No newline at end of file