summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/Process/Linux/ProcessLinux.cpp')
-rw-r--r--lldb/source/Plugins/Process/Linux/ProcessLinux.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp b/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp
index 00bdda51036..d7fe1dae0a1 100644
--- a/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp
+++ b/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp
@@ -13,6 +13,7 @@
#include "lldb/Core/PluginManager.h"
#include "lldb/Host/Host.h"
#include "lldb/Symbol/ObjectFile.h"
+#include "lldb/Target/DynamicLoader.h"
#include "lldb/Target/Target.h"
#include "ProcessLinux.h"
@@ -102,6 +103,19 @@ ProcessLinux::DoAttachToProcessWithID(lldb::pid_t pid)
}
Error
+ProcessLinux::WillLaunch(Module* module)
+{
+ Error error;
+
+ m_dyld_ap.reset(DynamicLoader::FindPlugin(this, "dynamic-loader.linux-dyld"));
+ if (m_dyld_ap.get() == NULL)
+ error.SetErrorString("unable to find the dynamic loader named "
+ "'dynamic-loader.linux-dyld'");
+
+ return error;
+}
+
+Error
ProcessLinux::DoLaunch(Module *module,
char const *argv[],
char const *envp[],
@@ -128,6 +142,13 @@ ProcessLinux::DoLaunch(Module *module,
return error;
}
+void
+ProcessLinux::DidLaunch()
+{
+ if (m_dyld_ap.get() != NULL)
+ m_dyld_ap->DidLaunch();
+}
+
Error
ProcessLinux::DoResume()
{
@@ -371,6 +392,12 @@ ProcessLinux::GetByteOrder() const
return m_byte_order;
}
+DynamicLoader *
+ProcessLinux::GetDynamicLoader()
+{
+ return m_dyld_ap.get();
+}
+
//------------------------------------------------------------------------------
// ProcessInterface protocol.
OpenPOWER on IntegriCloud