From: Zachary Turner Date: Fri, 5 Dec 2014 18:45:53 +0000 (+0000) Subject: Implement an empty DynamicLoader plugin for Windows. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cfd3b1ae6fc3a7116a2d5484b8b4efd24c8bcf42;p=platform%2Fupstream%2Fllvm.git Implement an empty DynamicLoader plugin for Windows. llvm-svn: 223496 --- diff --git a/lldb/source/Plugins/Process/Windows/CMakeLists.txt b/lldb/source/Plugins/Process/Windows/CMakeLists.txt index f12ed79..e0110e3 100644 --- a/lldb/source/Plugins/Process/Windows/CMakeLists.txt +++ b/lldb/source/Plugins/Process/Windows/CMakeLists.txt @@ -5,6 +5,7 @@ include_directories(../Utility) add_lldb_library(lldbPluginProcessWindows DebuggerThread.cpp + DynamicLoaderWindows.cpp LocalDebugDelegate.cpp ProcessWindows.cpp RegisterContextWindows_x86.cpp diff --git a/lldb/source/Plugins/Process/Windows/DynamicLoaderWindows.cpp b/lldb/source/Plugins/Process/Windows/DynamicLoaderWindows.cpp new file mode 100644 index 0000000..bc59069 --- /dev/null +++ b/lldb/source/Plugins/Process/Windows/DynamicLoaderWindows.cpp @@ -0,0 +1,100 @@ +//===-- DynamicLoaderWindows.cpp --------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "DynamicLoaderWindows.h" + +#include "lldb/Core/PluginManager.h" +#include "lldb/Target/Process.h" +#include "lldb/Target/Target.h" + +#include "llvm/ADT/Triple.h" + +using namespace lldb; +using namespace lldb_private; + +DynamicLoaderWindows::DynamicLoaderWindows(Process *process) + : DynamicLoader(process) +{ + +} + +DynamicLoaderWindows::~DynamicLoaderWindows() +{ +} + +void DynamicLoaderWindows::Initialize() +{ + PluginManager::RegisterPlugin(GetPluginNameStatic(), + GetPluginDescriptionStatic(), + CreateInstance); +} + +void DynamicLoaderWindows::Terminate() +{ + +} + +ConstString DynamicLoaderWindows::GetPluginNameStatic() +{ + static ConstString g_plugin_name("windows-dyld"); + return g_plugin_name; +} + +const char *DynamicLoaderWindows::GetPluginDescriptionStatic() +{ + return "Dynamic loader plug-in that watches for shared library " + "loads/unloads in Windows processes."; +} + + +DynamicLoader *DynamicLoaderWindows::CreateInstance(Process *process, bool force) +{ + bool should_create = force; + if (!should_create) + { + const llvm::Triple &triple_ref = process->GetTarget().GetArchitecture().GetTriple(); + if (triple_ref.getOS() == llvm::Triple::Win32) + should_create = true; + } + + if (should_create) + return new DynamicLoaderWindows (process); + return nullptr; +} + +void DynamicLoaderWindows::DidAttach() +{ + +} + +void DynamicLoaderWindows::DidLaunch() +{ + +} + +Error DynamicLoaderWindows::CanLoadImage() +{ + return Error(); +} + +ConstString DynamicLoaderWindows::GetPluginName() +{ + return GetPluginNameStatic(); +} + +uint32_t DynamicLoaderWindows::GetPluginVersion() +{ + return 1; +} + +ThreadPlanSP +DynamicLoaderWindows::GetStepThroughTrampolinePlan(Thread &thread, bool stop) +{ + return ThreadPlanSP(); +} \ No newline at end of file diff --git a/lldb/source/Plugins/Process/Windows/DynamicLoaderWindows.h b/lldb/source/Plugins/Process/Windows/DynamicLoaderWindows.h new file mode 100644 index 0000000..b9cfb92 --- /dev/null +++ b/lldb/source/Plugins/Process/Windows/DynamicLoaderWindows.h @@ -0,0 +1,43 @@ +//===-- DynamicLoaderWindows.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_Plugins_Process_Windows_DynamicLoaderWindows_H_ +#define liblldb_Plugins_Process_Windows_DynamicLoaderWindows_H_ + +#include "lldb/lldb-forward.h" +#include "lldb/Target/DynamicLoader.h" + +namespace lldb_private +{ + +class DynamicLoaderWindows : public DynamicLoader +{ + public: + DynamicLoaderWindows(Process *process); + virtual ~DynamicLoaderWindows(); + + static void Initialize(); + static void Terminate(); + static ConstString GetPluginNameStatic(); + static const char *GetPluginDescriptionStatic(); + + static DynamicLoader *CreateInstance(Process *process, bool force); + + void DidAttach () override; + void DidLaunch () override; + Error CanLoadImage () override; + lldb::ThreadPlanSP GetStepThroughTrampolinePlan(Thread &thread, bool stop) override; + + virtual ConstString GetPluginName() override; + virtual uint32_t GetPluginVersion() override; +}; + +} + +#endif \ No newline at end of file diff --git a/lldb/source/lldb.cpp b/lldb/source/lldb.cpp index 69d8cef..2fa8acf 100644 --- a/lldb/source/lldb.cpp +++ b/lldb/source/lldb.cpp @@ -83,6 +83,7 @@ #endif #if defined (_WIN32) +#include "Plugins/Process/Windows/DynamicLoaderWindows.h" #include "Plugins/Process/Windows/ProcessWindows.h" #endif @@ -189,6 +190,7 @@ lldb_private::Initialize () ProcessLinux::Initialize(); #endif #if defined(_WIN32) + DynamicLoaderWindows::Initialize(); ProcessWindows::Initialize(); #endif #if defined (__FreeBSD__) @@ -276,6 +278,10 @@ lldb_private::Terminate () Debugger::SettingsTerminate (); +#if defined (_WIN32) + DynamicLoaderWindows::Terminate(); +#endif + #if defined (__linux__) ProcessLinux::Terminate(); #endif