[llvm-dev] Compilation error with MinGW
Yaron Keren via llvm-dev
llvm-dev at lists.llvm.org
Sat Aug 29 20:10:47 PDT 2015
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>
More information about the llvm-dev
mailing list