diff --git a/COFF/CMakeLists.txt b/COFF/CMakeLists.txt
index a30df7c..7c5e8b7 100644
--- a/COFF/CMakeLists.txt
+++ b/COFF/CMakeLists.txt
@@ -38,7 +38,6 @@
   Object
   Option
   Support
-  Symbolize
   WindowsManifest
 
   LINK_LIBS
diff --git a/COFF/Config.h b/COFF/Config.h
index cd597dd..309e1fb 100644
--- a/COFF/Config.h
+++ b/COFF/Config.h
@@ -18,12 +18,6 @@
 #include <set>
 #include <string>
 
-namespace llvm {
-namespace symbolize {
-class LLVMSymbolizer;
-}
-} // namespace llvm
-
 namespace lld {
 namespace coff {
 
@@ -232,8 +226,6 @@
   bool swaprunNet = false;
   bool thinLTOEmitImportsFiles;
   bool thinLTOIndexOnly;
-
-  llvm::symbolize::LLVMSymbolizer *symbolizer = nullptr;
 };
 
 extern Configuration *config;
diff --git a/COFF/InputFiles.cpp b/COFF/InputFiles.cpp
index 4097cda..faec3ba 100644
--- a/COFF/InputFiles.cpp
+++ b/COFF/InputFiles.cpp
@@ -807,6 +807,19 @@
   return std::make_pair(saver.save(ret->first), ret->second);
 }
 
+// Used only for DWARF debug info, which is not common (except in MinGW
+// environments).
+Optional<DILineInfo> ObjFile::getDILineInfo(uint32_t offset,
+                                            uint32_t sectionIndex) {
+  if (!dwarf) {
+    dwarf = make<DWARFCache>(DWARFContext::create(*getCOFFObj()));
+    if (!dwarf)
+      return None;
+  }
+
+  return dwarf->getDILineInfo(offset, sectionIndex);
+}
+
 StringRef ltrim1(StringRef s, const char *chars) {
   if (!s.empty() && strchr(chars, s[0]))
     return s.substr(1);
diff --git a/COFF/InputFiles.h b/COFF/InputFiles.h
index 6624971..1004432 100644
--- a/COFF/InputFiles.h
+++ b/COFF/InputFiles.h
@@ -26,6 +26,7 @@
 #include <vector>
 
 namespace llvm {
+struct DILineInfo;
 namespace pdb {
 class DbiModuleDescriptorBuilder;
 }
@@ -206,6 +207,9 @@
   llvm::Optional<std::pair<StringRef, uint32_t>>
   getVariableLocation(StringRef var);
 
+  llvm::Optional<llvm::DILineInfo> getDILineInfo(uint32_t offset,
+                                                 uint32_t sectionIndex);
+
 private:
   const coff_section* getSection(uint32_t i);
   const coff_section *getSection(COFFSymbolRef sym) {
diff --git a/COFF/SymbolTable.cpp b/COFF/SymbolTable.cpp
index 183761f..869dfc7 100644
--- a/COFF/SymbolTable.cpp
+++ b/COFF/SymbolTable.cpp
@@ -110,13 +110,11 @@
 
 static Optional<std::pair<StringRef, uint32_t>>
 getFileLineDwarf(const SectionChunk *c, uint32_t addr) {
-  if (!config->symbolizer)
-    config->symbolizer = make<symbolize::LLVMSymbolizer>();
-  Expected<DILineInfo> expectedLineInfo = config->symbolizer->symbolizeCode(
-      *c->file->getCOFFObj(), {addr, c->getSectionNumber() - 1});
-  if (!expectedLineInfo)
+  Optional<DILineInfo> optionalLineInfo =
+      c->file->getDILineInfo(addr, c->getSectionNumber() - 1);
+  if (!optionalLineInfo)
     return None;
-  const DILineInfo &lineInfo = *expectedLineInfo;
+  const DILineInfo &lineInfo = *optionalLineInfo;
   if (lineInfo.FileName == DILineInfo::BadString)
     return None;
   return std::make_pair(saver.save(lineInfo.FileName), lineInfo.Line);
