Fix choice of version of Windows callback to use to consider not only the Visual...
authorStefanus Du Toit <stefanus.dutoit@rapidmind.com>
Tue, 28 Apr 2009 16:37:58 +0000 (16:37 +0000)
committerStefanus Du Toit <stefanus.dutoit@rapidmind.com>
Tue, 28 Apr 2009 16:37:58 +0000 (16:37 +0000)
Patch by Tareq Siraj.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70299 91177308-0d34-0410-b5e6-96231b3b80d8

lib/System/Win32/DynamicLibrary.inc

index 3c35e6c9695bfb1bb607331537324265e4548e43..1ddf6cea0b32fe00ce659631cc49bae9cc59918d 100644 (file)
  #include <dbghelp.h>
 #endif
 
+#ifdef _MSC_VER
+ #include <ntverp.h>
+#endif
+
 #ifdef __MINGW32__
  #if (HAVE_LIBIMAGEHLP != 1)
   #error "libimagehlp.a should be present"
@@ -44,7 +48,14 @@ static std::vector<HMODULE> OpenedHandles;
 #endif
 
 extern "C" {
-#if !defined(_MSC_VER) || _MSC_VER < 1500
+// Use old callback if:
+//  - Not using Visual Studio
+//  - Visual Studio 2005 or earlier but only if we are not using the Windows SDK 
+//    or Windows SDK version is older than 6.0
+// Use new callback if:
+//  - Newer Visual Studio (comes with newer SDK).
+//  - Visual Studio 2005 with Windows SDK 6.0+
+#if !defined(_MSC_VER) || _MSC_VER < 1500 && (!defined(VER_PRODUCTBUILD) || VER_PRODUCTBUILD < 6000)
   static BOOL CALLBACK ELM_Callback(PSTR  ModuleName,
                                     ModuleBaseType ModuleBase,
                                     ULONG ModuleSize,