Summary: This commit avoids the Platform instance when spawning or attaching to a process in lldb-server. Instead, I have the server call a (static) method of NativeProcessProtocol directly. The reason for this is that I believe that NativeProcessProtocol should be decoupled from the Platform (after all, it always knows which platform it is running on, unlike the rest of lldb). Additionally, the kind of platform actions a NativeProcessProtocol instance is likely to differ greatly from the platform actions of the lldb client, so I think the separation makes sense. After this, the only dependency NativeProcessLinux has on PlatformLinux is the ResolveExecutable method, which needs additional refactoring. This is a resubmit of r241672, after it was reverted due to build failueres on non-linux platforms. Reviewers: ovyalov, clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D10996 llvm-svn: 241796
122 lines
3.3 KiB
C++
122 lines
3.3 KiB
C++
//===-- PlatformLinux.h -----------------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef liblldb_PlatformLinux_h_
|
|
#define liblldb_PlatformLinux_h_
|
|
|
|
// C Includes
|
|
// C++ Includes
|
|
// Other libraries and framework includes
|
|
// Project includes
|
|
#include "Plugins/Platform/POSIX/PlatformPOSIX.h"
|
|
|
|
namespace lldb_private {
|
|
namespace platform_linux {
|
|
|
|
class PlatformLinux : public PlatformPOSIX
|
|
{
|
|
public:
|
|
|
|
static void
|
|
DebuggerInitialize (Debugger &debugger);
|
|
|
|
static void
|
|
Initialize ();
|
|
|
|
static void
|
|
Terminate ();
|
|
|
|
PlatformLinux (bool is_host);
|
|
|
|
virtual
|
|
~PlatformLinux();
|
|
|
|
//------------------------------------------------------------
|
|
// lldb_private::PluginInterface functions
|
|
//------------------------------------------------------------
|
|
static lldb::PlatformSP
|
|
CreateInstance (bool force, const ArchSpec *arch);
|
|
|
|
static ConstString
|
|
GetPluginNameStatic (bool is_host);
|
|
|
|
static const char *
|
|
GetPluginDescriptionStatic (bool is_host);
|
|
|
|
ConstString
|
|
GetPluginName() override;
|
|
|
|
uint32_t
|
|
GetPluginVersion() override
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
//------------------------------------------------------------
|
|
// lldb_private::Platform functions
|
|
//------------------------------------------------------------
|
|
Error
|
|
ResolveExecutable (const ModuleSpec &module_spec,
|
|
lldb::ModuleSP &module_sp,
|
|
const FileSpecList *module_search_paths_ptr) override;
|
|
|
|
const char *
|
|
GetDescription () override
|
|
{
|
|
return GetPluginDescriptionStatic(IsHost());
|
|
}
|
|
|
|
void
|
|
GetStatus (Stream &strm) override;
|
|
|
|
Error
|
|
GetFileWithUUID (const FileSpec &platform_file,
|
|
const UUID* uuid, FileSpec &local_file) override;
|
|
|
|
bool
|
|
GetProcessInfo (lldb::pid_t pid, ProcessInstanceInfo &proc_info) override;
|
|
|
|
uint32_t
|
|
FindProcesses (const ProcessInstanceInfoMatch &match_info,
|
|
ProcessInstanceInfoList &process_infos) override;
|
|
|
|
bool
|
|
GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch) override;
|
|
|
|
size_t
|
|
GetSoftwareBreakpointTrapOpcode (Target &target,
|
|
BreakpointSite *bp_site) override;
|
|
|
|
int32_t
|
|
GetResumeCountForLaunchInfo (ProcessLaunchInfo &launch_info) override;
|
|
|
|
bool
|
|
CanDebugProcess () override;
|
|
|
|
lldb::ProcessSP
|
|
DebugProcess (ProcessLaunchInfo &launch_info,
|
|
Debugger &debugger,
|
|
Target *target,
|
|
Error &error) override;
|
|
|
|
void
|
|
CalculateTrapHandlerSymbolNames () override;
|
|
|
|
uint64_t
|
|
ConvertMmapFlagsToPlatform(const ArchSpec &arch, unsigned flags) override;
|
|
|
|
private:
|
|
DISALLOW_COPY_AND_ASSIGN (PlatformLinux);
|
|
};
|
|
|
|
} // namespace platform_linux
|
|
} // namespace lldb_private
|
|
|
|
#endif // liblldb_PlatformLinux_h_
|