commit 0bd918c828feb599b278c1876a33caa9c295be6a
Author: Petr Hosek <phosek@google.com>
Date:   Fri Jul 31 01:12:38 2020 -0700

    Revert "[ELF] Add --dependency-file option"
    
    This reverts commit b4c7657ba602acde1c2ea5391c973949b9c3ce09 which
    seems to be breaking certain bots with assertion error.

diff --git a/lld/ELF/Config.h b/lld/ELF/Config.h
index 8eebecf3eb0..e74a4a0c5b2 100644
--- a/lld/ELF/Config.h
+++ b/lld/ELF/Config.h
@@ -11,7 +11,6 @@
 
 #include "lld/Common/ErrorHandler.h"
 #include "llvm/ADT/MapVector.h"
-#include "llvm/ADT/SetVector.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/ADT/StringSet.h"
 #include "llvm/BinaryFormat/ELF.h"
@@ -91,13 +90,11 @@ struct Configuration {
   uint8_t osabi = 0;
   uint32_t andFeatures = 0;
   llvm::CachePruningPolicy thinLTOCachePolicy;
-  llvm::SetVector<StringRef> dependencyFiles; // for --dependency-file
   llvm::StringMap<uint64_t> sectionStartMap;
   llvm::StringRef bfdname;
   llvm::StringRef chroot;
-  llvm::StringRef dependencyFile;
-  llvm::StringRef dwoDir;
   llvm::StringRef dynamicLinker;
+  llvm::StringRef dwoDir;
   llvm::StringRef entry;
   llvm::StringRef emulation;
   llvm::StringRef fini;
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp
index 75aa89ff3c8..64a41ba77ba 100644
--- a/lld/ELF/Driver.cpp
+++ b/lld/ELF/Driver.cpp
@@ -918,7 +918,6 @@ static void readConfigs(opt::InputArgList &args) {
   config->optimizeBBJumps =
       args.hasFlag(OPT_optimize_bb_jumps, OPT_no_optimize_bb_jumps, false);
   config->demangle = args.hasFlag(OPT_demangle, OPT_no_demangle, true);
-  config->dependencyFile = args.getLastArgValue(OPT_dependency_file);
   config->dependentLibraries = args.hasFlag(OPT_dependent_libraries, OPT_no_dependent_libraries, true);
   config->disableVerify = args.hasArg(OPT_disable_verify);
   config->discard = getDiscard(args);
@@ -1565,75 +1564,6 @@ static void handleLibcall(StringRef name) {
     sym->fetch();
 }
 
-// Handle --dependency-file=<path>. If that option is given, lld creates a
-// file at a given path with the following contents:
-//
-//   <output-file>: <input-file> ...
-//
-//   <input-file>:
-//
-// where <output-file> is a pathname of an output file and <input-file>
-// ... is a list of pathnames of all input files. `make` command can read a
-// file in the above format and interpret it as a dependency info. We write
-// phony targets for every <input-file> to avoid an error when that file is
-// removed.
-//
-// This option is useful if you want to make your final executable to depend
-// on all input files including system libraries. Here is why.
-//
-// When you write a Makefile, you usually write it so that the final
-// executable depends on all user-generated object files. Normally, you
-// don't make your executable to depend on system libraries (such as libc)
-// because you don't know the exact paths of libraries, even though system
-// libraries that are linked to your executable statically are technically a
-// part of your program. By using --dependency-file option, you can make
-// lld to dump dependency info so that you can maintain exact dependencies
-// easily.
-static void writeDependencyFile() {
-  std::error_code ec;
-  raw_fd_ostream os(config->dependencyFile, ec, sys::fs::F_None);
-  if (ec) {
-    error("cannot open " + config->dependencyFile + ": " + ec.message());
-    return;
-  }
-
-  // We use the same escape rules as Clang/GCC which are accepted by Make/Ninja:
-  // * A space is escaped by a backslash which itself must be escaped.
-  // * A hash sign is escaped by a single backslash.
-  // * $ is escapes as $$.
-  auto printFilename = [](raw_fd_ostream &os, StringRef filename) {
-    llvm::SmallString<256> nativePath;
-    llvm::sys::path::native(filename.str(), nativePath);
-    llvm::sys::path::remove_dots(nativePath, /*remove_dot_dot=*/true);
-    for (unsigned i = 0, e = nativePath.size(); i != e; ++i) {
-      if (nativePath[i] == '#') {
-        os << '\\';
-      } else if (nativePath[i] == ' ') {
-        os << '\\';
-        unsigned j = i;
-        while (j > 0 && nativePath[--j] == '\\')
-          os << '\\';
-      } else if (nativePath[i] == '$') {
-        os << '$';
-      }
-      os << nativePath[i];
-    }
-  };
-
-  os << config->outputFile << ":";
-  for (StringRef path : config->dependencyFiles) {
-    os << " \\\n ";
-    printFilename(os, path);
-  }
-  os << "\n";
-
-  for (StringRef path : config->dependencyFiles) {
-    os << "\n";
-    printFilename(os, path);
-    os << ":\n";
-  }
-}
-
 // Replaces common symbols with defined symbols reside in .bss sections.
 // This function is called after all symbol names are resolved. As a
 // result, the passes after the symbol resolution won't see any
@@ -2134,11 +2064,6 @@ template <class ELFT> void LinkerDriver::link(opt::InputArgList &args) {
     return false;
   });
 
-  // Since we now have a complete set of input files, we can create
-  // a .d file to record build dependencies.
-  if (!config->dependencyFile.empty())
-    writeDependencyFile();
-
   // Now that the number of partitions is fixed, save a pointer to the main
   // partition.
   mainPart = &partitions[0];
diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp
index 79cc3c00cb2..c142c00517c 100644
--- a/lld/ELF/InputFiles.cpp
+++ b/lld/ELF/InputFiles.cpp
@@ -110,7 +110,6 @@ Optional<MemoryBufferRef> elf::readFile(StringRef path) {
     path = saver.save(config->chroot + path);
 
   log(path);
-  config->dependencyFiles.insert(path);
 
   auto mbOrErr = MemoryBuffer::getFile(path, -1, false);
   if (auto ec = mbOrErr.getError()) {
diff --git a/lld/ELF/Options.td b/lld/ELF/Options.td
index 3a8c9e83b08..c3c1309aca1 100644
--- a/lld/ELF/Options.td
+++ b/lld/ELF/Options.td
@@ -132,9 +132,6 @@ defm demangle: B<"demangle",
     "Demangle symbol names (default)",
     "Do not demangle symbol names">;
 
-defm dependency_file: EEq<"dependency-file", "Write a dependency file">,
-  MetaVarName<"<path>">;
-
 def disable_new_dtags: F<"disable-new-dtags">,
   HelpText<"Disable new dynamic tags">;
 
diff --git a/lld/test/ELF/dependency-file.s b/lld/test/ELF/dependency-file.s
deleted file mode 100644
index e7dbf9c7695..00000000000
--- a/lld/test/ELF/dependency-file.s
+++ /dev/null
@@ -1,21 +0,0 @@
-# REQUIRES: x86
-# RUN: mkdir -p %t
-# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t/foo.o
-# RUN: llvm-mc -filetype=obj -triple=x86_64 /dev/null -o "%t/bar baz.o"
-# RUN: llvm-mc -filetype=obj -triple=x86_64 /dev/null -o "%t/#quux$.o"
-# RUN: ld.lld -o %t/foo.exe %t/foo.o %t/"bar baz.o" "%t/#quux$.o" --dependency-file=%t/foo.d
-# RUN: FileCheck --match-full-lines -DFILE=%t %s < %t/foo.d
-
-# CHECK:      [[FILE]]{{/|(\\)+}}foo.exe: \
-# CHECK-NEXT:   [[FILE]]{{/|(\\)+}}foo.o \
-# CHECK-NEXT:   [[FILE]]{{/|(\\)+}}bar\ baz.o \
-# CHECK-NEXT:   [[FILE]]{{/|(\\)+}}\#quux$$.o
-# CHECK-EMPTY:
-# CHECK-NEXT: [[FILE]]{{/|(\\)+}}foo.o:
-# CHECK-EMPTY:
-# CHECK-NEXT: [[FILE]]{{/|(\\)+}}bar\ baz.o:
-# CHECK-EMPTY:
-# CHECK-NEXT: [[FILE]]{{/|(\\)+}}\#quux$$.o:
-
-.global _start
-_start:
