#include "llvm/ADT/STLExtras.h"
#include "llvm/Support/ConvertUTF.h"
+#include "llvm/Support/WindowsError.h"
#include <psapi.h>
HostProcessWindows::MonitorThread,
info);
} else {
- DWORD err = GetLastError();
- return llvm::errorCodeToError(std::error_code(err, std::system_category()));
+ return llvm::errorCodeToError(llvm::mapWindowsError(GetLastError()));
}
}
Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_PROCESS);
LLDB_LOG(log, "launching '{0}'", launch_info.GetExecutableFile().GetPath());
- Status error;
+ Status result;
DebugLaunchContext *context = new DebugLaunchContext(this, launch_info);
- HostThread slave_thread(ThreadLauncher::LaunchThread(
- "lldb.plugin.process-windows.slave[?]", DebuggerThreadLaunchRoutine,
- context, &error));
- if (!error.Success())
- LLDB_LOG(log, "couldn't launch debugger thread. {0}", error);
+ llvm::Expected<HostThread> slave_thread = ThreadLauncher::LaunchThread(
+ "lldb.plugin.process-windows.slave[?]", DebuggerThreadLaunchRoutine,
+ context);
+ if (!slave_thread) {
+ result = Status(slave_thread.takeError());
+ LLDB_LOG(log, "couldn't launch debugger thread. {0}", result);
+ }
- return error;
+ return result;
}
Status DebuggerThread::DebugAttach(lldb::pid_t pid,
Log *log = ProcessWindowsLog::GetLogIfAny(WINDOWS_LOG_PROCESS);
LLDB_LOG(log, "attaching to '{0}'", pid);
- Status error;
+ Status result;
DebugAttachContext *context = new DebugAttachContext(this, pid, attach_info);
- HostThread slave_thread(ThreadLauncher::LaunchThread(
- "lldb.plugin.process-windows.slave[?]", DebuggerThreadAttachRoutine,
- context, &error));
- if (!error.Success())
- LLDB_LOG(log, "couldn't attach to process '{0}'. {1}", pid, error);
+ llvm::Expected<HostThread> slave_thread = ThreadLauncher::LaunchThread(
+ "lldb.plugin.process-windows.slave[?]", DebuggerThreadAttachRoutine,
+ context);
+ if (!slave_thread) {
+ result = Status(slave_thread.takeError());
+ LLDB_LOG(log, "couldn't attach to process '{0}'. {1}", pid, result);
+ }
- return error;
+ return result;
}
lldb::thread_result_t DebuggerThread::DebuggerThreadLaunchRoutine(void *data) {