Add -print_atoms options to DarwinLdDriver which dumps final state of all atoms in yaml

llvm-svn: 208813
diff --git a/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp b/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp
index 5bd9a5e..8be2d76 100644
--- a/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp
+++ b/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp
@@ -122,7 +122,8 @@
     : _outputFileType(MH_EXECUTE), _outputFileTypeStatic(false),
       _doNothing(false), _arch(arch_unknown), _os(OS::macOSX), _osMinVersion(0),
       _pageZeroSize(0), _pageSize(4096), _compatibilityVersion(0),
-      _currentVersion(0), _deadStrippableDylib(false), _kindHandler(nullptr) {}
+      _currentVersion(0), _deadStrippableDylib(false), _printAtoms(false),
+      _kindHandler(nullptr) {}
 
 MachOLinkingContext::~MachOLinkingContext() {}
 
diff --git a/lld/lib/ReaderWriter/MachO/WriterMachO.cpp b/lld/lib/ReaderWriter/MachO/WriterMachO.cpp
index e8eb3ff..504e8cd 100644
--- a/lld/lib/ReaderWriter/MachO/WriterMachO.cpp
+++ b/lld/lib/ReaderWriter/MachO/WriterMachO.cpp
@@ -39,8 +39,11 @@
     if (error_code ec = nFile.getError())
       return ec;
 
-    // For debugging, write out yaml form of normalized file.
-    //writeYaml(*nFile->get(), llvm::errs());
+    // For testing, write out yaml form of normalized file.
+    if (_context.printAtoms()) {
+      std::unique_ptr<Writer> yamlWriter = createWriterYAML(_context);
+      yamlWriter->writeFile(file, "-");
+    }
 
     // Write normalized file as mach-o binary.
     return writeBinary(*nFile->get(), path);