aboutsummaryrefslogtreecommitdiff
path: root/source/Plugins/Platform/Kalimba
diff options
context:
space:
mode:
Diffstat (limited to 'source/Plugins/Platform/Kalimba')
-rw-r--r--source/Plugins/Platform/Kalimba/PlatformKalimba.cpp433
-rw-r--r--source/Plugins/Platform/Kalimba/PlatformKalimba.h99
2 files changed, 232 insertions, 300 deletions
diff --git a/source/Plugins/Platform/Kalimba/PlatformKalimba.cpp b/source/Plugins/Platform/Kalimba/PlatformKalimba.cpp
index 2f1e4d554320..ac3fe6eafd52 100644
--- a/source/Plugins/Platform/Kalimba/PlatformKalimba.cpp
+++ b/source/Plugins/Platform/Kalimba/PlatformKalimba.cpp
@@ -1,4 +1,5 @@
-//===-- PlatformKalimba.cpp ---------------------------------------*- C++ -*-===//
+//===-- PlatformKalimba.cpp ---------------------------------------*- C++
+//-*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -13,8 +14,8 @@
// C++ Includes
// Other libraries and framework includes
// Project includes
-#include "lldb/Core/Error.h"
#include "lldb/Core/Debugger.h"
+#include "lldb/Core/Error.h"
#include "lldb/Core/Module.h"
#include "lldb/Core/ModuleList.h"
#include "lldb/Core/ModuleSpec.h"
@@ -22,202 +23,171 @@
#include "lldb/Core/StreamString.h"
#include "lldb/Host/FileSpec.h"
#include "lldb/Host/HostInfo.h"
-#include "lldb/Target/Target.h"
#include "lldb/Target/Process.h"
+#include "lldb/Target/Target.h"
using namespace lldb;
using namespace lldb_private;
static uint32_t g_initialize_count = 0;
-PlatformSP
-PlatformKalimba::CreateInstance (bool force, const ArchSpec *arch)
-{
- bool create = force;
- if (create == false && arch && arch->IsValid())
- {
- const llvm::Triple &triple = arch->GetTriple();
- switch (triple.getVendor())
- {
- case llvm::Triple::CSR:
- create = true;
- break;
-
- default:
- break;
- }
+PlatformSP PlatformKalimba::CreateInstance(bool force, const ArchSpec *arch) {
+ bool create = force;
+ if (create == false && arch && arch->IsValid()) {
+ const llvm::Triple &triple = arch->GetTriple();
+ switch (triple.getVendor()) {
+ case llvm::Triple::CSR:
+ create = true;
+ break;
+
+ default:
+ break;
}
- if (create)
- return PlatformSP(new PlatformKalimba(false));
- return PlatformSP();
+ }
+ if (create)
+ return PlatformSP(new PlatformKalimba(false));
+ return PlatformSP();
}
lldb_private::ConstString
-PlatformKalimba::GetPluginNameStatic (bool /*is_host*/)
-{
- static ConstString g_remote_name("kalimba");
- return g_remote_name;
+PlatformKalimba::GetPluginNameStatic(bool /*is_host*/) {
+ static ConstString g_remote_name("kalimba");
+ return g_remote_name;
}
-const char *
-PlatformKalimba::GetPluginDescriptionStatic (bool /*is_host*/)
-{
- return "Kalimba user platform plug-in.";
+const char *PlatformKalimba::GetPluginDescriptionStatic(bool /*is_host*/) {
+ return "Kalimba user platform plug-in.";
}
-lldb_private::ConstString
-PlatformKalimba::GetPluginName()
-{
- return GetPluginNameStatic(false);
+lldb_private::ConstString PlatformKalimba::GetPluginName() {
+ return GetPluginNameStatic(false);
}
-void
-PlatformKalimba::Initialize ()
-{
- Platform::Initialize ();
+void PlatformKalimba::Initialize() {
+ Platform::Initialize();
- if (g_initialize_count++ == 0)
- {
- PluginManager::RegisterPlugin(PlatformKalimba::GetPluginNameStatic(false),
- PlatformKalimba::GetPluginDescriptionStatic(false),
- PlatformKalimba::CreateInstance);
- }
+ if (g_initialize_count++ == 0) {
+ PluginManager::RegisterPlugin(
+ PlatformKalimba::GetPluginNameStatic(false),
+ PlatformKalimba::GetPluginDescriptionStatic(false),
+ PlatformKalimba::CreateInstance);
+ }
}
-void
-PlatformKalimba::Terminate ()
-{
- if (g_initialize_count > 0)
- {
- if (--g_initialize_count == 0)
- {
- PluginManager::UnregisterPlugin (PlatformKalimba::CreateInstance);
- }
+void PlatformKalimba::Terminate() {
+ if (g_initialize_count > 0) {
+ if (--g_initialize_count == 0) {
+ PluginManager::UnregisterPlugin(PlatformKalimba::CreateInstance);
}
+ }
- Platform::Terminate ();
+ Platform::Terminate();
}
-Error
-PlatformKalimba::ResolveExecutable (const ModuleSpec &ms,
- lldb::ModuleSP &exe_module_sp,
- const FileSpecList *module_search_paths_ptr)
-{
- Error error;
- char exe_path[PATH_MAX];
- ModuleSpec resolved_module_spec(ms);
-
- if (!resolved_module_spec.GetFileSpec().Exists())
- {
- resolved_module_spec.GetFileSpec().GetPath(exe_path, sizeof(exe_path));
- error.SetErrorStringWithFormat("unable to find executable for '%s'", exe_path);
- }
+Error PlatformKalimba::ResolveExecutable(
+ const ModuleSpec &ms, lldb::ModuleSP &exe_module_sp,
+ const FileSpecList *module_search_paths_ptr) {
+ Error error;
+ char exe_path[PATH_MAX];
+ ModuleSpec resolved_module_spec(ms);
+
+ if (!resolved_module_spec.GetFileSpec().Exists()) {
+ resolved_module_spec.GetFileSpec().GetPath(exe_path, sizeof(exe_path));
+ error.SetErrorStringWithFormat("unable to find executable for '%s'",
+ exe_path);
+ }
+
+ if (error.Success()) {
+ if (resolved_module_spec.GetArchitecture().IsValid()) {
+ error = ModuleList::GetSharedModule(resolved_module_spec, exe_module_sp,
+ NULL, NULL, NULL);
+ if (error.Fail()) {
+ // If we failed, it may be because the vendor and os aren't known. If
+ // that is the
+ // case, try setting them to the host architecture and give it another
+ // try.
+ llvm::Triple &module_triple =
+ resolved_module_spec.GetArchitecture().GetTriple();
+ bool is_vendor_specified =
+ (module_triple.getVendor() != llvm::Triple::UnknownVendor);
+ bool is_os_specified =
+ (module_triple.getOS() != llvm::Triple::UnknownOS);
+ if (!is_vendor_specified || !is_os_specified) {
+ const llvm::Triple &host_triple =
+ HostInfo::GetArchitecture(HostInfo::eArchKindDefault).GetTriple();
+
+ if (!is_vendor_specified)
+ module_triple.setVendorName(host_triple.getVendorName());
+ if (!is_os_specified)
+ module_triple.setOSName(host_triple.getOSName());
- if (error.Success())
- {
- if (resolved_module_spec.GetArchitecture().IsValid())
- {
- error = ModuleList::GetSharedModule (resolved_module_spec,
- exe_module_sp,
- NULL,
- NULL,
- NULL);
- if (error.Fail())
- {
- // If we failed, it may be because the vendor and os aren't known. If that is the
- // case, try setting them to the host architecture and give it another try.
- llvm::Triple &module_triple = resolved_module_spec.GetArchitecture().GetTriple();
- bool is_vendor_specified = (module_triple.getVendor() != llvm::Triple::UnknownVendor);
- bool is_os_specified = (module_triple.getOS() != llvm::Triple::UnknownOS);
- if (!is_vendor_specified || !is_os_specified)
- {
- const llvm::Triple &host_triple = HostInfo::GetArchitecture(HostInfo::eArchKindDefault).GetTriple();
-
- if (!is_vendor_specified)
- module_triple.setVendorName (host_triple.getVendorName());
- if (!is_os_specified)
- module_triple.setOSName (host_triple.getOSName());
-
- error = ModuleList::GetSharedModule (resolved_module_spec,
- exe_module_sp,
- NULL,
- NULL,
- NULL);
- }
- }
-
- // TODO find out why exe_module_sp might be NULL
- if (!exe_module_sp || exe_module_sp->GetObjectFile() == NULL)
- {
- exe_module_sp.reset();
- error.SetErrorStringWithFormat ("'%s' doesn't contain the architecture %s",
- resolved_module_spec.GetFileSpec().GetPath().c_str(),
- resolved_module_spec.GetArchitecture().GetArchitectureName());
- }
+ error = ModuleList::GetSharedModule(resolved_module_spec,
+ exe_module_sp, NULL, NULL, NULL);
}
- else
- {
- // No valid architecture was specified, ask the platform for
- // the architectures that we should be using (in the correct order)
- // and see if we can find a match that way
- StreamString arch_names;
- for (uint32_t idx = 0; GetSupportedArchitectureAtIndex (idx, resolved_module_spec.GetArchitecture()); ++idx)
- {
- error = ModuleList::GetSharedModule (resolved_module_spec,
- exe_module_sp,
- NULL,
- NULL,
- NULL);
- // Did we find an executable using one of the
- if (error.Success())
- {
- if (exe_module_sp && exe_module_sp->GetObjectFile())
- break;
- else
- error.SetErrorToGenericError();
- }
-
- if (idx > 0)
- arch_names.PutCString (", ");
- arch_names.PutCString (resolved_module_spec.GetArchitecture().GetArchitectureName());
- }
-
- if (error.Fail() || !exe_module_sp)
- {
- if (resolved_module_spec.GetFileSpec().Readable())
- {
- error.SetErrorStringWithFormat ("'%s' doesn't contain any '%s' platform architectures: %s",
- resolved_module_spec.GetFileSpec().GetPath().c_str(),
- GetPluginName().GetCString(),
- arch_names.GetString().c_str());
- }
- else
- {
- error.SetErrorStringWithFormat("'%s' is not readable", resolved_module_spec.GetFileSpec().GetPath().c_str());
- }
- }
+ }
+
+ // TODO find out why exe_module_sp might be NULL
+ if (!exe_module_sp || exe_module_sp->GetObjectFile() == NULL) {
+ exe_module_sp.reset();
+ error.SetErrorStringWithFormat(
+ "'%s' doesn't contain the architecture %s",
+ resolved_module_spec.GetFileSpec().GetPath().c_str(),
+ resolved_module_spec.GetArchitecture().GetArchitectureName());
+ }
+ } else {
+ // No valid architecture was specified, ask the platform for
+ // the architectures that we should be using (in the correct order)
+ // and see if we can find a match that way
+ StreamString arch_names;
+ for (uint32_t idx = 0; GetSupportedArchitectureAtIndex(
+ idx, resolved_module_spec.GetArchitecture());
+ ++idx) {
+ error = ModuleList::GetSharedModule(resolved_module_spec, exe_module_sp,
+ NULL, NULL, NULL);
+ // Did we find an executable using one of the
+ if (error.Success()) {
+ if (exe_module_sp && exe_module_sp->GetObjectFile())
+ break;
+ else
+ error.SetErrorToGenericError();
+ }
+
+ if (idx > 0)
+ arch_names.PutCString(", ");
+ arch_names.PutCString(
+ resolved_module_spec.GetArchitecture().GetArchitectureName());
+ }
+
+ if (error.Fail() || !exe_module_sp) {
+ if (resolved_module_spec.GetFileSpec().Readable()) {
+ error.SetErrorStringWithFormat(
+ "'%s' doesn't contain any '%s' platform architectures: %s",
+ resolved_module_spec.GetFileSpec().GetPath().c_str(),
+ GetPluginName().GetCString(), arch_names.GetData());
+ } else {
+ error.SetErrorStringWithFormat(
+ "'%s' is not readable",
+ resolved_module_spec.GetFileSpec().GetPath().c_str());
}
+ }
}
+ }
- return error;
+ return error;
}
-Error
-PlatformKalimba::GetFileWithUUID (const FileSpec & /*platform_file*/,
- const UUID * /*uuid_ptr*/, FileSpec & /*local_file*/)
-{
- return Error();
+Error PlatformKalimba::GetFileWithUUID(const FileSpec & /*platform_file*/,
+ const UUID * /*uuid_ptr*/,
+ FileSpec & /*local_file*/) {
+ return Error();
}
-
//------------------------------------------------------------------
/// Default Constructor
//------------------------------------------------------------------
-PlatformKalimba::PlatformKalimba (bool is_host) :
- Platform(is_host), // This is the local host platform
- m_remote_platform_sp ()
-{
-}
+PlatformKalimba::PlatformKalimba(bool is_host)
+ : Platform(is_host), // This is the local host platform
+ m_remote_platform_sp() {}
//------------------------------------------------------------------
/// Destructor.
@@ -225,100 +195,73 @@ PlatformKalimba::PlatformKalimba (bool is_host) :
/// The destructor is virtual since this class is designed to be
/// inherited from by the plug-in instance.
//------------------------------------------------------------------
-PlatformKalimba::~PlatformKalimba()
-{
-}
+PlatformKalimba::~PlatformKalimba() {}
-bool
-PlatformKalimba::GetProcessInfo (lldb::pid_t pid, ProcessInstanceInfo &process_info)
-{
- bool success = false;
- if (IsHost())
- {
- success = false;
- }
- else
- {
- if (m_remote_platform_sp)
- success = m_remote_platform_sp->GetProcessInfo (pid, process_info);
- }
- return success;
+bool PlatformKalimba::GetProcessInfo(lldb::pid_t pid,
+ ProcessInstanceInfo &process_info) {
+ bool success = false;
+ if (IsHost()) {
+ success = false;
+ } else {
+ if (m_remote_platform_sp)
+ success = m_remote_platform_sp->GetProcessInfo(pid, process_info);
+ }
+ return success;
}
-bool
-PlatformKalimba::GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch)
-{
- if (idx == 0)
- {
- arch = ArchSpec("kalimba3-csr-unknown");
- return true;
- }
- if (idx == 1)
- {
- arch = ArchSpec("kalimba4-csr-unknown");
- return true;
- }
- if (idx == 2)
- {
- arch = ArchSpec("kalimba5-csr-unknown");
- return true;
- }
- return false;
+bool PlatformKalimba::GetSupportedArchitectureAtIndex(uint32_t idx,
+ ArchSpec &arch) {
+ if (idx == 0) {
+ arch = ArchSpec("kalimba3-csr-unknown");
+ return true;
+ }
+ if (idx == 1) {
+ arch = ArchSpec("kalimba4-csr-unknown");
+ return true;
+ }
+ if (idx == 2) {
+ arch = ArchSpec("kalimba5-csr-unknown");
+ return true;
+ }
+ return false;
}
-void
-PlatformKalimba::GetStatus (Stream &strm)
-{
- Platform::GetStatus(strm);
-}
+void PlatformKalimba::GetStatus(Stream &strm) { Platform::GetStatus(strm); }
size_t
-PlatformKalimba::GetSoftwareBreakpointTrapOpcode (Target & /*target*/,
- BreakpointSite * /*bp_site*/)
-{
- // the target hardware does not support software breakpoints
- return 0;
+PlatformKalimba::GetSoftwareBreakpointTrapOpcode(Target & /*target*/,
+ BreakpointSite * /*bp_site*/) {
+ // the target hardware does not support software breakpoints
+ return 0;
}
-Error
-PlatformKalimba::LaunchProcess (ProcessLaunchInfo &launch_info)
-{
- Error error;
-
- if (IsHost())
- {
- error.SetErrorString ("native execution is not possible");
- }
- else
- {
- error.SetErrorString ("the platform is not currently connected");
- }
- return error;
+Error PlatformKalimba::LaunchProcess(ProcessLaunchInfo &launch_info) {
+ Error error;
+
+ if (IsHost()) {
+ error.SetErrorString("native execution is not possible");
+ } else {
+ error.SetErrorString("the platform is not currently connected");
+ }
+ return error;
}
-lldb::ProcessSP
-PlatformKalimba::Attach(ProcessAttachInfo &attach_info,
- Debugger &debugger,
- Target *target,
- Error &error)
-{
- lldb::ProcessSP process_sp;
- if (IsHost())
- {
- error.SetErrorString ("native execution is not possible");
- }
+lldb::ProcessSP PlatformKalimba::Attach(ProcessAttachInfo &attach_info,
+ Debugger &debugger, Target *target,
+ Error &error) {
+ lldb::ProcessSP process_sp;
+ if (IsHost()) {
+ error.SetErrorString("native execution is not possible");
+ } else {
+ if (m_remote_platform_sp)
+ process_sp =
+ m_remote_platform_sp->Attach(attach_info, debugger, target, error);
else
- {
- if (m_remote_platform_sp)
- process_sp = m_remote_platform_sp->Attach (attach_info, debugger, target, error);
- else
- error.SetErrorString ("the platform is not currently connected");
- }
- return process_sp;
+ error.SetErrorString("the platform is not currently connected");
+ }
+ return process_sp;
}
-void
-PlatformKalimba::CalculateTrapHandlerSymbolNames ()
-{
- // TODO Research this sometime.
-}
+void PlatformKalimba::CalculateTrapHandlerSymbolNames() {
+ // TODO Research this sometime.
+}
diff --git a/source/Plugins/Platform/Kalimba/PlatformKalimba.h b/source/Plugins/Platform/Kalimba/PlatformKalimba.h
index dd68415838f0..76e6d41e8716 100644
--- a/source/Plugins/Platform/Kalimba/PlatformKalimba.h
+++ b/source/Plugins/Platform/Kalimba/PlatformKalimba.h
@@ -18,81 +18,70 @@
namespace lldb_private {
- class PlatformKalimba : public Platform
- {
- public:
- PlatformKalimba(bool is_host);
+class PlatformKalimba : public Platform {
+public:
+ PlatformKalimba(bool is_host);
- ~PlatformKalimba() override;
+ ~PlatformKalimba() override;
- static void
- Initialize ();
+ static void Initialize();
- static void
- Terminate ();
-
- //------------------------------------------------------------
- // lldb_private::PluginInterface functions
- //------------------------------------------------------------
- static lldb::PlatformSP
- CreateInstance (bool force, const lldb_private::ArchSpec *arch);
+ static void Terminate();
- static lldb_private::ConstString
- GetPluginNameStatic (bool is_host);
+ //------------------------------------------------------------
+ // lldb_private::PluginInterface functions
+ //------------------------------------------------------------
+ static lldb::PlatformSP CreateInstance(bool force,
+ const lldb_private::ArchSpec *arch);
- static const char *
- GetPluginDescriptionStatic (bool is_host);
+ static lldb_private::ConstString GetPluginNameStatic(bool is_host);
- lldb_private::ConstString GetPluginName() override;
+ static const char *GetPluginDescriptionStatic(bool is_host);
- uint32_t
- GetPluginVersion() override
- {
- return 1;
- }
+ lldb_private::ConstString GetPluginName() override;
- //------------------------------------------------------------
- // lldb_private::Platform functions
- //------------------------------------------------------------
- Error ResolveExecutable(const lldb_private::ModuleSpec &module_spec, lldb::ModuleSP &module_sp,
- const FileSpecList *module_search_paths_ptr) override;
+ uint32_t GetPluginVersion() override { return 1; }
- const char *
- GetDescription() override
- {
- return GetPluginDescriptionStatic(IsHost());
- }
+ //------------------------------------------------------------
+ // lldb_private::Platform functions
+ //------------------------------------------------------------
+ Error ResolveExecutable(const lldb_private::ModuleSpec &module_spec,
+ lldb::ModuleSP &module_sp,
+ const FileSpecList *module_search_paths_ptr) override;
- void GetStatus(Stream &strm) override;
+ const char *GetDescription() override {
+ return GetPluginDescriptionStatic(IsHost());
+ }
- Error GetFileWithUUID(const FileSpec &platform_file, const UUID *uuid, FileSpec &local_file) override;
+ void GetStatus(Stream &strm) override;
- bool GetProcessInfo(lldb::pid_t pid, ProcessInstanceInfo &proc_info) override;
+ Error GetFileWithUUID(const FileSpec &platform_file, const UUID *uuid,
+ FileSpec &local_file) override;
- bool GetSupportedArchitectureAtIndex(uint32_t idx, ArchSpec &arch) override;
+ bool GetProcessInfo(lldb::pid_t pid, ProcessInstanceInfo &proc_info) override;
- size_t GetSoftwareBreakpointTrapOpcode(Target &target, BreakpointSite *bp_site) override;
+ bool GetSupportedArchitectureAtIndex(uint32_t idx, ArchSpec &arch) override;
- lldb_private::Error LaunchProcess(lldb_private::ProcessLaunchInfo &launch_info) override;
+ size_t GetSoftwareBreakpointTrapOpcode(Target &target,
+ BreakpointSite *bp_site) override;
- lldb::ProcessSP Attach(ProcessAttachInfo &attach_info, Debugger &debugger, Target *target,
- Error &error) override;
+ lldb_private::Error
+ LaunchProcess(lldb_private::ProcessLaunchInfo &launch_info) override;
- // Kalimba processes can not be launched by spawning and attaching.
- bool
- CanDebugProcess() override
- {
- return false;
- }
+ lldb::ProcessSP Attach(ProcessAttachInfo &attach_info, Debugger &debugger,
+ Target *target, Error &error) override;
- void CalculateTrapHandlerSymbolNames() override;
+ // Kalimba processes can not be launched by spawning and attaching.
+ bool CanDebugProcess() override { return false; }
- protected:
- lldb::PlatformSP m_remote_platform_sp;
+ void CalculateTrapHandlerSymbolNames() override;
- private:
- DISALLOW_COPY_AND_ASSIGN (PlatformKalimba);
- };
+protected:
+ lldb::PlatformSP m_remote_platform_sp;
+
+private:
+ DISALLOW_COPY_AND_ASSIGN(PlatformKalimba);
+};
} // namespace lldb_private