Author: maskray Date: Mon Jul 8 00:07:05 2019 New Revision: 365295 URL: http://llvm.org/viewvc/llvm-project?rev=365295&view=rev Log: Change LaunchThread interface to return an Expected for non-Apple-non-Windows
Fixes Linux build errors after D64163/r365226 Modified: lldb/trunk/include/lldb/Host/Host.h lldb/trunk/include/lldb/Host/HostNativeProcessBase.h lldb/trunk/include/lldb/Host/HostProcess.h lldb/trunk/include/lldb/Host/posix/HostProcessPosix.h lldb/trunk/source/Host/common/Host.cpp lldb/trunk/source/Host/common/HostProcess.cpp lldb/trunk/source/Host/common/MonitoringProcessLauncher.cpp lldb/trunk/source/Host/common/ProcessLaunchInfo.cpp lldb/trunk/source/Host/posix/HostProcessPosix.cpp Modified: lldb/trunk/include/lldb/Host/Host.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/Host.h?rev=365295&r1=365294&r2=365295&view=diff ============================================================================== --- lldb/trunk/include/lldb/Host/Host.h (original) +++ lldb/trunk/include/lldb/Host/Host.h Mon Jul 8 00:07:05 2019 @@ -99,7 +99,7 @@ public: /// was spawned to monitor \a pid. /// /// \see static void Host::StopMonitoringChildProcess (uint32_t) - static HostThread + static llvm::Expected<HostThread> StartMonitoringChildProcess(const MonitorChildProcessCallback &callback, lldb::pid_t pid, bool monitor_signals); Modified: lldb/trunk/include/lldb/Host/HostNativeProcessBase.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/HostNativeProcessBase.h?rev=365295&r1=365294&r2=365295&view=diff ============================================================================== --- lldb/trunk/include/lldb/Host/HostNativeProcessBase.h (original) +++ lldb/trunk/include/lldb/Host/HostNativeProcessBase.h Mon Jul 8 00:07:05 2019 @@ -35,7 +35,7 @@ public: lldb::process_t GetSystemHandle() const { return m_process; } - virtual HostThread + virtual llvm::Expected<HostThread> StartMonitoring(const Host::MonitorChildProcessCallback &callback, bool monitor_signals) = 0; Modified: lldb/trunk/include/lldb/Host/HostProcess.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/HostProcess.h?rev=365295&r1=365294&r2=365295&view=diff ============================================================================== --- lldb/trunk/include/lldb/Host/HostProcess.h (original) +++ lldb/trunk/include/lldb/Host/HostProcess.h Mon Jul 8 00:07:05 2019 @@ -43,8 +43,9 @@ public: lldb::pid_t GetProcessId() const; bool IsRunning() const; - HostThread StartMonitoring(const Host::MonitorChildProcessCallback &callback, - bool monitor_signals); + llvm::Expected<HostThread> + StartMonitoring(const Host::MonitorChildProcessCallback &callback, + bool monitor_signals); HostNativeProcessBase &GetNativeProcess(); const HostNativeProcessBase &GetNativeProcess() const; Modified: lldb/trunk/include/lldb/Host/posix/HostProcessPosix.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/posix/HostProcessPosix.h?rev=365295&r1=365294&r2=365295&view=diff ============================================================================== --- lldb/trunk/include/lldb/Host/posix/HostProcessPosix.h (original) +++ lldb/trunk/include/lldb/Host/posix/HostProcessPosix.h Mon Jul 8 00:07:05 2019 @@ -32,8 +32,9 @@ public: lldb::pid_t GetProcessId() const override; bool IsRunning() const override; - HostThread StartMonitoring(const Host::MonitorChildProcessCallback &callback, - bool monitor_signals) override; + llvm::Expected<HostThread> + StartMonitoring(const Host::MonitorChildProcessCallback &callback, + bool monitor_signals) override; }; } // namespace lldb_private Modified: lldb/trunk/source/Host/common/Host.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/Host.cpp?rev=365295&r1=365294&r2=365295&view=diff ============================================================================== --- lldb/trunk/source/Host/common/Host.cpp (original) +++ lldb/trunk/source/Host/common/Host.cpp Mon Jul 8 00:07:05 2019 @@ -99,7 +99,7 @@ struct MonitorInfo { static thread_result_t MonitorChildProcessThreadFunction(void *arg); -HostThread Host::StartMonitoringChildProcess( +llvm::Expected<HostThread> Host::StartMonitoringChildProcess( const Host::MonitorChildProcessCallback &callback, lldb::pid_t pid, bool monitor_signals) { MonitorInfo *info_ptr = new MonitorInfo(); @@ -112,7 +112,7 @@ HostThread Host::StartMonitoringChildPro ::snprintf(thread_name, sizeof(thread_name), "<lldb.host.wait4(pid=%" PRIu64 ")>", pid); return ThreadLauncher::LaunchThread( - thread_name, MonitorChildProcessThreadFunction, info_ptr, nullptr); + thread_name, MonitorChildProcessThreadFunction, info_ptr, 0); } #ifndef __linux__ Modified: lldb/trunk/source/Host/common/HostProcess.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/HostProcess.cpp?rev=365295&r1=365294&r2=365295&view=diff ============================================================================== --- lldb/trunk/source/Host/common/HostProcess.cpp (original) +++ lldb/trunk/source/Host/common/HostProcess.cpp Mon Jul 8 00:07:05 2019 @@ -32,7 +32,7 @@ lldb::pid_t HostProcess::GetProcessId() bool HostProcess::IsRunning() const { return m_native_process->IsRunning(); } -HostThread +llvm::Expected<HostThread> HostProcess::StartMonitoring(const Host::MonitorChildProcessCallback &callback, bool monitor_signals) { return m_native_process->StartMonitoring(callback, monitor_signals); Modified: lldb/trunk/source/Host/common/MonitoringProcessLauncher.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/MonitoringProcessLauncher.cpp?rev=365295&r1=365294&r2=365295&view=diff ============================================================================== --- lldb/trunk/source/Host/common/MonitoringProcessLauncher.cpp (original) +++ lldb/trunk/source/Host/common/MonitoringProcessLauncher.cpp Mon Jul 8 00:07:05 2019 @@ -53,8 +53,12 @@ MonitoringProcessLauncher::LaunchProcess Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); assert(launch_info.GetMonitorProcessCallback()); - process.StartMonitoring(launch_info.GetMonitorProcessCallback(), - launch_info.GetMonitorSignals()); + llvm::Expected<HostThread> maybe_thread = + process.StartMonitoring(launch_info.GetMonitorProcessCallback(), + launch_info.GetMonitorSignals()); + if (!maybe_thread) + error.SetErrorStringWithFormatv("failed to launch host thread: {}", + llvm::toString(maybe_thread.takeError())); if (log) log->PutCString("started monitoring child process."); } else { Modified: lldb/trunk/source/Host/common/ProcessLaunchInfo.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/ProcessLaunchInfo.cpp?rev=365295&r1=365294&r2=365295&view=diff ============================================================================== --- lldb/trunk/source/Host/common/ProcessLaunchInfo.cpp (original) +++ lldb/trunk/source/Host/common/ProcessLaunchInfo.cpp Mon Jul 8 00:07:05 2019 @@ -188,8 +188,13 @@ bool ProcessLaunchInfo::NoOpMonitorCallb bool ProcessLaunchInfo::MonitorProcess() const { if (m_monitor_callback && ProcessIDIsValid()) { + llvm::Expected<HostThread> maybe_thread = Host::StartMonitoringChildProcess(m_monitor_callback, GetProcessID(), m_monitor_signals); + if (!maybe_thread) + LLDB_LOG(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST), + "failed to launch host thread: {}", + llvm::toString(maybe_thread.takeError())); return true; } return false; Modified: lldb/trunk/source/Host/posix/HostProcessPosix.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/posix/HostProcessPosix.cpp?rev=365295&r1=365294&r2=365295&view=diff ============================================================================== --- lldb/trunk/source/Host/posix/HostProcessPosix.cpp (original) +++ lldb/trunk/source/Host/posix/HostProcessPosix.cpp Mon Jul 8 00:07:05 2019 @@ -87,7 +87,7 @@ bool HostProcessPosix::IsRunning() const return error.Success(); } -HostThread HostProcessPosix::StartMonitoring( +llvm::Expected<HostThread> HostProcessPosix::StartMonitoring( const Host::MonitorChildProcessCallback &callback, bool monitor_signals) { return Host::StartMonitoringChildProcess(callback, m_process, monitor_signals); _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits