[llvm-dev] Compilation error with MinGW

Slycelote via llvm-dev llvm-dev at lists.llvm.org
Sat Aug 29 14:46:53 PDT 2015

Hi all,

I'm hitting the same problem as in this[1] thread. I use release_37
branch on 64-bit Windows 7.
The problem is here:

#ifdef __MINGW32__
 #include <imagehlp.h>
 #include <dbghelp.h>


typedef BOOL (WINAPI

imagehlp.h doesn't define PENUMLOADED_MODULES_CALLBACK64 type.
I fixed it on my side by the patch in the bottom of this email, but I
don't know if it's the right approach in general.

[1] http://comments.gmane.org/gmane.comp.compilers.clang.user/709

-- Sly.

diff --git a/lib/Support/Windows/DynamicLibrary.inc
index d38f197..b4c8f1b 100644
--- a/lib/Support/Windows/DynamicLibrary.inc
+++ b/lib/Support/Windows/DynamicLibrary.inc
@@ -31,7 +31,16 @@ using namespace sys;
 //===          and must not be UNIX code.
+#if defined(__MINGW32__) and !defined(_WIN64)
+typedef BOOL (WINAPI
+static const char* sEnumerateLoadedModules = "EnumerateLoadedModules";
+typedef DWORD ModuleOffset;
 typedef BOOL (WINAPI
+static const char* sEnumerateLoadedModules = "EnumerateLoadedModules64";
+typedef DWORD64 ModuleOffset;
 static fpEnumerateLoadedModules fEnumerateLoadedModules;
 static DenseSet<HMODULE> *OpenedHandles;
@@ -39,13 +48,13 @@ static bool loadDebugHelp(void) {
   HMODULE hLib = ::LoadLibraryW(L"Dbghelp.dll");
   if (hLib) {
     fEnumerateLoadedModules = (fpEnumerateLoadedModules)
-      ::GetProcAddress(hLib, "EnumerateLoadedModules64");
+      ::GetProcAddress(hLib, sEnumerateLoadedModules);
   return fEnumerateLoadedModules != 0;
-ELM_Callback(WIN32_ELMCB_PCSTR ModuleName, DWORD64 ModuleBase,
+ELM_Callback(WIN32_ELMCB_PCSTR ModuleName, ModuleOffset ModuleBase,
              ULONG ModuleSize, PVOID UserContext) {
   return TRUE;

More information about the llvm-dev mailing list