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> #else #include <dbghelp.h> #endif <skip> typedef BOOL (WINAPI *fpEnumerateLoadedModules)(HANDLE,PENUMLOADED_MODULES_CALLBACK64,PVOID); 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 b/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 *fpEnumerateLoadedModules)(HANDLE,PENUMLOADED_MODULES_CALLBACK,PVOID); +static const char* sEnumerateLoadedModules = "EnumerateLoadedModules"; +typedef DWORD ModuleOffset; +#else typedef BOOL (WINAPI *fpEnumerateLoadedModules)(HANDLE,PENUMLOADED_MODULES_CALLBACK64,PVOID); +static const char* sEnumerateLoadedModules = "EnumerateLoadedModules64"; +typedef DWORD64 ModuleOffset; +#endif + 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; } static BOOL CALLBACK -ELM_Callback(WIN32_ELMCB_PCSTR ModuleName, DWORD64 ModuleBase, +ELM_Callback(WIN32_ELMCB_PCSTR ModuleName, ModuleOffset ModuleBase, ULONG ModuleSize, PVOID UserContext) { OpenedHandles->insert((HMODULE)ModuleBase); return TRUE;
Which mingw distribution exactly do you use? 2015-08-30 0:46 GMT+03:00 Slycelote via llvm-dev <llvm-dev at lists.llvm.org>:> 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> > #else > #include <dbghelp.h> > #endif > > <skip> > > typedef BOOL (WINAPI > *fpEnumerateLoadedModules)(HANDLE,PENUMLOADED_MODULES_CALLBACK64,PVOID); > > 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 > b/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 > *fpEnumerateLoadedModules)(HANDLE,PENUMLOADED_MODULES_CALLBACK,PVOID); > +static const char* sEnumerateLoadedModules = "EnumerateLoadedModules"; > +typedef DWORD ModuleOffset; > +#else > typedef BOOL (WINAPI > *fpEnumerateLoadedModules)(HANDLE,PENUMLOADED_MODULES_CALLBACK64,PVOID); > +static const char* sEnumerateLoadedModules = "EnumerateLoadedModules64"; > +typedef DWORD64 ModuleOffset; > +#endif > + > 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; > } > > static BOOL CALLBACK > -ELM_Callback(WIN32_ELMCB_PCSTR ModuleName, DWORD64 ModuleBase, > +ELM_Callback(WIN32_ELMCB_PCSTR ModuleName, ModuleOffset ModuleBase, > ULONG ModuleSize, PVOID UserContext) { > OpenedHandles->insert((HMODULE)ModuleBase); > return TRUE; > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150830/c8f214c4/attachment.html>
I use the one from mingw.org, installed by the recommended way with mingw-get-setup.exe. Sly. On 30.08.2015 06:10, Yaron Keren wrote:> Which mingw distribution exactly do you use? > > 2015-08-30 0:46 GMT+03:00 Slycelote via llvm-dev <llvm-dev at lists.llvm.org>: > >> 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> >> #else >> #include <dbghelp.h> >> #endif >> >> <skip> >> >> typedef BOOL (WINAPI >> *fpEnumerateLoadedModules)(HANDLE,PENUMLOADED_MODULES_CALLBACK64,PVOID); >> >> 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 >> b/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 >> *fpEnumerateLoadedModules)(HANDLE,PENUMLOADED_MODULES_CALLBACK,PVOID); >> +static const char* sEnumerateLoadedModules = "EnumerateLoadedModules"; >> +typedef DWORD ModuleOffset; >> +#else >> typedef BOOL (WINAPI >> *fpEnumerateLoadedModules)(HANDLE,PENUMLOADED_MODULES_CALLBACK64,PVOID); >> +static const char* sEnumerateLoadedModules = "EnumerateLoadedModules64"; >> +typedef DWORD64 ModuleOffset; >> +#endif >> + >> 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; >> } >> >> static BOOL CALLBACK >> -ELM_Callback(WIN32_ELMCB_PCSTR ModuleName, DWORD64 ModuleBase, >> +ELM_Callback(WIN32_ELMCB_PCSTR ModuleName, ModuleOffset ModuleBase, >> ULONG ModuleSize, PVOID UserContext) { >> OpenedHandles->insert((HMODULE)ModuleBase); >> return TRUE; >> >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >>