  //
  //                     The LLVM Compiler Infrastructure
  //
-@@ -32,15 +32,9 @@
+@@ -11,6 +11,7 @@
+ //
+ //===----------------------------------------------------------------------===//
+ 
++#include "llvm/ADT/DenseSet.h"
+ #include "Windows.h"
+ 
+ #ifdef __MINGW32__
+@@ -32,15 +33,9 @@
  #endif
  
  namespace llvm {

+
 #define EXPLICIT_SYMBOL(SYM)                    \
-  extern "C" { extern void *SYM; }
-#define EXPLICIT_SYMBOL2(SYMFROM, SYMTO) EXPLICIT_SYMBOL(SYMTO)
+  extern "C" void *SYM; symMap[#SYM] = &SYM;
+#define EXPLICIT_SYMBOL2(SYMFROM, SYMTO)        \
+  symMap[#SYMFROM] = &SYMTO;
 
 #include "explicit_symbols.inc"
 

+      DynamicLibrary::SearchForAddressOfSymbol(symbolName);
+    }
+  }
+  return (void *)(intptr_t) GetProcAddress((HMODULE)dlHandle, symbolName);
 }
 
-// Stack probing routines are in the support library (e.g. libgcc), but we don't
