This fixes compilation failures in the 64-bit build of LLDB on Windows.
Patch by Aidan Dodds
Differential Revision: http://reviews.llvm.org/D6704
llvm-svn: 224528
using namespace lldb;
using namespace lldb_private;
+namespace
+{
+void __stdcall ExitThreadProxy(ULONG_PTR dwExitCode)
+{
+ ::ExitThread(dwExitCode);
+}
+}
+
HostThreadWindows::HostThreadWindows()
: HostNativeThreadBase()
, m_owns_handle(true)
{
Error error;
- DWORD result = ::QueueUserAPC(::ExitThread, m_thread, 0);
+ DWORD result = ::QueueUserAPC(::ExitThreadProxy, m_thread, 0);
error.SetError(result, eErrorTypeWin32);
return error;
}
set(LLVM_NO_RTTI 1)
+macro(add_process_windows_subdirectory group)
+ list(APPEND PROC_WINDOWS_SOURCES ${ARGN})
+ source_group(${group} FILES ${ARGN})
+endmacro()
+
include_directories(.)
include_directories(../Utility)
-add_lldb_library(lldbPluginProcessWindows
+add_process_windows_subdirectory(common
DebuggerThread.cpp
DynamicLoaderWindows.cpp
LocalDebugDelegate.cpp
ProcessWindows.cpp
- RegisterContextWindows_x86.cpp
TargetThreadWindows.cpp
)
+if (CMAKE_SIZEOF_VOID_P EQUAL 4)
+ add_process_windows_subdirectory(x86
+ x86/RegisterContextWindows_x86.cpp
+ )
+endif()
+
+add_lldb_library(lldbPluginProcessWindows
+ ${PROC_WINDOWS_SOURCES}
+ )
#include "TargetThreadWindows.h"
#include "ProcessWindows.h"
-#include "RegisterContextWindows_x86.h"
#include "UnwindLLDB.h"
+#if !defined(_WIN64)
+#include "x86/RegisterContextWindows_x86.h"
+#endif
+
using namespace lldb;
using namespace lldb_private;
switch (arch.GetMachine())
{
case llvm::Triple::x86:
+#if defined(_WIN64)
+ // FIXME: This is a Wow64 process, create a RegisterContextWindows_Wow64
+#else
m_reg_context_sp.reset(new RegisterContextWindows_x86(*this, idx));
+#endif
break;
+ case llvm::Triple::x86_64:
+#if defined(_WIN64)
+ // FIXME: This is a 64-bit process, create a RegisterContextWindows_x86_64
+#else
+ // LLDB is 32-bit, but the target process is 64-bit. We probably can't debug this.
+#endif
default:
- // FIXME: Support x64 by creating a RegisterContextWindows_x86_64
break;
}
}