diff options
Diffstat (limited to 'lldb/source/Core/DynamicLoader.cpp')
-rw-r--r-- | lldb/source/Core/DynamicLoader.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/lldb/source/Core/DynamicLoader.cpp b/lldb/source/Core/DynamicLoader.cpp new file mode 100644 index 00000000000..b6b2f27caef --- /dev/null +++ b/lldb/source/Core/DynamicLoader.cpp @@ -0,0 +1,75 @@ +//===-- DynamicLoader.cpp ---------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "lldb/lldb-private.h" +#include "lldb/Target/DynamicLoader.h" +#include "lldb/Core/PluginManager.h" + +using namespace lldb; +using namespace lldb_private; + +DynamicLoader* +DynamicLoader::FindPlugin (Process *process, const char *plugin_name) +{ + DynamicLoaderCreateInstance create_callback = NULL; + if (plugin_name) + { + create_callback = PluginManager::GetDynamicLoaderCreateCallbackForPluginName (plugin_name); + if (create_callback) + { + std::auto_ptr<DynamicLoader> instance_ap(create_callback(process)); + if (instance_ap.get()) + return instance_ap.release(); + } + } + else + { + for (uint32_t idx = 0; (create_callback = PluginManager::GetDynamicLoaderCreateCallbackAtIndex(idx)) != NULL; ++idx) + { + std::auto_ptr<DynamicLoader> instance_ap(create_callback(process)); + if (instance_ap.get()) + return instance_ap.release(); + } + } + return NULL; +} + + +//---------------------------------------------------------------------- +// DynamicLoader constructor +//---------------------------------------------------------------------- +DynamicLoader::DynamicLoader(Process *process) : + m_process (process), + m_stop_when_images_change(false) // Stop the process by default when a process' images change +{ +} + +//---------------------------------------------------------------------- +// Destructor +//---------------------------------------------------------------------- +DynamicLoader::~DynamicLoader() +{ +} + +//---------------------------------------------------------------------- +// Accessosors to the global setting as to wether to stop at image +// (shared library) loading/unloading. +//---------------------------------------------------------------------- +bool +DynamicLoader::GetStopWhenImagesChange () const +{ + return m_stop_when_images_change; +} + +void +DynamicLoader::SetStopWhenImagesChange (bool stop) +{ + m_stop_when_images_change = stop; +} + |