Skip to content

Commit

Permalink
ProcessLaunchInfo: remove Debugger reference
Browse files Browse the repository at this point in the history
Summary:
The Debuffer object was being used in "GetListenerForProcess" to provide
a default listener object if one was not specified in the launch_info
object.

Since all the callers of this function immediately passed the result to
Target::CreateProcess, it was easy to move this logic there instead.

This brings us one step closer towards being able to move the LaunchInfo
classes to the Host layer (which is there the launching code that
consumes them lives).

Reviewers: zturner, jingham, teemperor

Subscribers: lldb-commits

Differential Revision: https://reviews.llvm.org/D56174

llvm-svn: 350510
  • Loading branch information
labath committed Jan 7, 2019
1 parent 90c0923 commit cb8c699
Show file tree
Hide file tree
Showing 8 changed files with 14 additions and 22 deletions.
2 changes: 0 additions & 2 deletions lldb/include/lldb/Target/ProcessLaunchInfo.h
Expand Up @@ -131,8 +131,6 @@ class ProcessLaunchInfo : public ProcessInfo {
m_listener_sp = listener_sp;
}

lldb::ListenerSP GetListenerForProcess(Debugger &debugger);

lldb::ListenerSP GetHijackListener() const { return m_hijack_listener_sp; }

void SetHijackListener(const lldb::ListenerSP &listener_sp) {
Expand Down
4 changes: 3 additions & 1 deletion lldb/include/lldb/Target/Target.h
Expand Up @@ -533,7 +533,9 @@ class Target : public std::enable_shared_from_this<Target>,
//------------------------------------------------------------------
void Dump(Stream *s, lldb::DescriptionLevel description_level);

const lldb::ProcessSP &CreateProcess(lldb::ListenerSP listener,
// If listener_sp is null, the listener of the owning Debugger object will be
// used.
const lldb::ProcessSP &CreateProcess(lldb::ListenerSP listener_sp,
llvm::StringRef plugin_name,
const FileSpec *crash_file);

Expand Down
4 changes: 2 additions & 2 deletions lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp
Expand Up @@ -318,8 +318,8 @@ PlatformLinux::DebugProcess(ProcessLaunchInfo &launch_info, Debugger &debugger,

// Now create the gdb-remote process.
LLDB_LOG(log, "having target create process with gdb-remote plugin");
process_sp = target->CreateProcess(
launch_info.GetListenerForProcess(debugger), "gdb-remote", nullptr);
process_sp =
target->CreateProcess(launch_info.GetListener(), "gdb-remote", nullptr);

if (!process_sp) {
error.SetErrorString("CreateProcess() failed for gdb-remote process");
Expand Down
4 changes: 2 additions & 2 deletions lldb/source/Plugins/Platform/NetBSD/PlatformNetBSD.cpp
Expand Up @@ -287,8 +287,8 @@ PlatformNetBSD::DebugProcess(ProcessLaunchInfo &launch_info, Debugger &debugger,

// Now create the gdb-remote process.
LLDB_LOG(log, "having target create process with gdb-remote plugin");
process_sp = target->CreateProcess(
launch_info.GetListenerForProcess(debugger), "gdb-remote", nullptr);
process_sp =
target->CreateProcess(launch_info.GetListener(), "gdb-remote", nullptr);

if (!process_sp) {
error.SetErrorString("CreateProcess() failed for gdb-remote process");
Expand Down
5 changes: 2 additions & 3 deletions lldb/source/Plugins/Platform/Windows/PlatformWindows.cpp
Expand Up @@ -437,9 +437,8 @@ ProcessSP PlatformWindows::DebugProcess(ProcessLaunchInfo &launch_info,
ProcessAttachInfo attach_info(launch_info);
return Attach(attach_info, debugger, target, error);
} else {
ProcessSP process_sp =
target->CreateProcess(launch_info.GetListenerForProcess(debugger),
launch_info.GetProcessPluginName(), nullptr);
ProcessSP process_sp = target->CreateProcess(
launch_info.GetListener(), launch_info.GetProcessPluginName(), nullptr);

// We need to launch and attach to the process.
launch_info.GetFlags().Set(eLaunchFlagDebug);
Expand Down
Expand Up @@ -496,8 +496,8 @@ lldb::ProcessSP PlatformRemoteGDBServer::DebugProcess(

// The darwin always currently uses the GDB remote debugger plug-in
// so even when debugging locally we are debugging remotely!
process_sp = target->CreateProcess(
launch_info.GetListenerForProcess(debugger), "gdb-remote", NULL);
process_sp = target->CreateProcess(launch_info.GetListener(),
"gdb-remote", NULL);

if (process_sp) {
error = process_sp->ConnectRemote(nullptr, connect_url.c_str());
Expand Down
8 changes: 0 additions & 8 deletions lldb/source/Target/ProcessLaunchInfo.cpp
Expand Up @@ -9,7 +9,6 @@

#include <climits>

#include "lldb/Core/Debugger.h"
#include "lldb/Host/Config.h"
#include "lldb/Host/FileSystem.h"
#include "lldb/Host/HostInfo.h"
Expand Down Expand Up @@ -433,10 +432,3 @@ bool ProcessLaunchInfo::ConvertArgumentsForLaunchingInShell(
}
return false;
}

ListenerSP ProcessLaunchInfo::GetListenerForProcess(Debugger &debugger) {
if (m_listener_sp)
return m_listener_sp;
else
return debugger.GetListener();
}
5 changes: 3 additions & 2 deletions lldb/source/Target/Target.cpp
Expand Up @@ -194,6 +194,8 @@ void Target::DeleteCurrentProcess() {
const lldb::ProcessSP &Target::CreateProcess(ListenerSP listener_sp,
llvm::StringRef plugin_name,
const FileSpec *crash_file) {
if (!listener_sp)
listener_sp = GetDebugger().GetListener();
DeleteCurrentProcess();
m_process_sp = Process::FindPlugin(shared_from_this(), plugin_name,
listener_sp, crash_file);
Expand Down Expand Up @@ -2884,8 +2886,7 @@ Status Target::Launch(ProcessLaunchInfo &launch_info, Stream *stream) {
} else {
// Use a Process plugin to construct the process.
const char *plugin_name = launch_info.GetProcessPluginName();
CreateProcess(launch_info.GetListenerForProcess(debugger), plugin_name,
nullptr);
CreateProcess(launch_info.GetListener(), plugin_name, nullptr);
}

// Since we didn't have a platform launch the process, launch it here.
Expand Down

0 comments on commit cb8c699

Please sign in to comment.