Files
clang-p2996/lldb/source/Plugins/Platform/Linux/PlatformLinux.h
Pavel Labath d5b310f2a3 Avoid going through Platform when creating a NativeProcessProtocol instance
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
2015-07-09 11:51:11 +00:00

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_