summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins')
-rw-r--r--lldb/source/Plugins/DynamicLoader/Linux-DYLD/DynamicLoaderLinuxDYLD.cpp14
-rw-r--r--lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp14
-rw-r--r--lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.h2
-rw-r--r--lldb/source/Plugins/Process/Linux/ProcessLinux.cpp14
-rw-r--r--lldb/source/Plugins/Process/Linux/ProcessLinux.h6
-rw-r--r--lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.cpp28
-rw-r--r--lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.h4
-rw-r--r--lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp25
-rw-r--r--lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h5
9 files changed, 29 insertions, 83 deletions
diff --git a/lldb/source/Plugins/DynamicLoader/Linux-DYLD/DynamicLoaderLinuxDYLD.cpp b/lldb/source/Plugins/DynamicLoader/Linux-DYLD/DynamicLoaderLinuxDYLD.cpp
index 0802ff65575..78ebe4db0ca 100644
--- a/lldb/source/Plugins/DynamicLoader/Linux-DYLD/DynamicLoaderLinuxDYLD.cpp
+++ b/lldb/source/Plugins/DynamicLoader/Linux-DYLD/DynamicLoaderLinuxDYLD.cpp
@@ -73,9 +73,19 @@ DynamicLoaderLinuxDYLD::GetPluginVersion()
}
DynamicLoader *
-DynamicLoaderLinuxDYLD::CreateInstance(Process *process)
+DynamicLoaderLinuxDYLD::CreateInstance(Process *process, bool force)
{
- return new DynamicLoaderLinuxDYLD(process);
+ bool create = force;
+ if (!create)
+ {
+ const llvm::Triple &triple_ref = process->GetTarget().GetArchitecture().GetTriple();
+ if (triple_ref.getOS() == llvm::Triple::Linux)
+ create = true;
+ }
+
+ if (create)
+ return new DynamicLoaderLinuxDYLD (process);
+ return NULL;
}
DynamicLoaderLinuxDYLD::DynamicLoaderLinuxDYLD(Process *process)
diff --git a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
index 003ed9a6493..67958c97d79 100644
--- a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
+++ b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
@@ -63,9 +63,19 @@ DynamicLoaderMacOSXDYLD::GetImageInfo (const FileSpec &file_spec, const lldb_pri
// allows the lldb to instantiate an instance of this class.
//----------------------------------------------------------------------
DynamicLoader *
-DynamicLoaderMacOSXDYLD::CreateInstance (Process* process)
+DynamicLoaderMacOSXDYLD::CreateInstance (Process* process, bool force)
{
- return new DynamicLoaderMacOSXDYLD (process);
+ bool create = force;
+ if (!create)
+ {
+ const llvm::Triple &triple_ref = process->GetTarget().GetArchitecture().GetTriple();
+ if (triple_ref.getOS() == llvm::Triple::Darwin && triple_ref.getVendor() == llvm::Triple::Apple)
+ create = true;
+ }
+
+ if (create)
+ return new DynamicLoaderMacOSXDYLD (process);
+ return NULL;
}
//----------------------------------------------------------------------
diff --git a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.h b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.h
index eee6bc1bacc..d5575101496 100644
--- a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.h
+++ b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.h
@@ -44,7 +44,7 @@ public:
GetPluginDescriptionStatic();
static lldb_private::DynamicLoader *
- CreateInstance (lldb_private::Process *process);
+ CreateInstance (lldb_private::Process *process, bool force);
DynamicLoaderMacOSXDYLD (lldb_private::Process *process);
diff --git a/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp b/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp
index fa5b5b70ec3..9939fe7d988 100644
--- a/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp
+++ b/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp
@@ -106,12 +106,6 @@ 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;
}
@@ -146,8 +140,6 @@ ProcessLinux::DoLaunch(Module *module,
void
ProcessLinux::DidLaunch()
{
- if (m_dyld_ap.get() != NULL)
- m_dyld_ap->DidLaunch();
}
Error
@@ -405,12 +397,6 @@ ProcessLinux::GetByteOrder() const
return m_byte_order;
}
-DynamicLoader *
-ProcessLinux::GetDynamicLoader()
-{
- return m_dyld_ap.get();
-}
-
//------------------------------------------------------------------------------
// ProcessInterface protocol.
diff --git a/lldb/source/Plugins/Process/Linux/ProcessLinux.h b/lldb/source/Plugins/Process/Linux/ProcessLinux.h
index 6fe05526647..18e5aa712d0 100644
--- a/lldb/source/Plugins/Process/Linux/ProcessLinux.h
+++ b/lldb/source/Plugins/Process/Linux/ProcessLinux.h
@@ -138,9 +138,6 @@ public:
virtual lldb::addr_t
GetImageInfoAddress();
- virtual lldb_private::DynamicLoader *
- GetDynamicLoader();
-
//------------------------------------------------------------------
// PluginInterface protocol
//------------------------------------------------------------------
@@ -186,9 +183,6 @@ private:
lldb_private::Mutex m_message_mutex;
std::queue<ProcessMessage> m_message_queue;
- /// Dynamic loader plugin associated with this process.
- std::auto_ptr<lldb_private::DynamicLoader> m_dyld_ap;
-
/// Updates the loaded sections provided by the executable.
///
/// FIXME: It would probably be better to delegate this task to the
diff --git a/lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.cpp b/lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.cpp
index 5318014d3a7..e4be2730584 100644
--- a/lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.cpp
+++ b/lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.cpp
@@ -234,8 +234,7 @@ ProcessMacOSX::ProcessMacOSX(Target& target, Listener &listener) :
m_stdout_data (),
m_exception_messages (),
m_exception_messages_mutex (Mutex::eMutexTypeRecursive),
- m_arch_spec (),
- m_dynamic_loader_ap ()
+ m_arch_spec ()
{
}
@@ -414,14 +413,7 @@ ProcessMacOSX::DoAttachToProcessWithID (lldb::pid_t attach_pid)
Error
ProcessMacOSX::WillLaunchOrAttach ()
{
- Error error;
- // TODO: this is hardcoded for macosx right now. We need this to be more dynamic
- m_dynamic_loader_ap.reset(DynamicLoader::FindPlugin(this, "dynamic-loader.macosx-dyld"));
-
- if (m_dynamic_loader_ap.get() == NULL)
- error.SetErrorString("unable to find the dynamic loader named 'dynamic-loader.macosx-dyld'");
-
- return error;
+ return Error();
}
@@ -434,11 +426,7 @@ ProcessMacOSX::WillLaunch (Module* module)
void
ProcessMacOSX::DidLaunchOrAttach ()
{
- if (GetID() == LLDB_INVALID_PROCESS_ID)
- {
- m_dynamic_loader_ap.reset();
- }
- else
+ if (GetID() != LLDB_INVALID_PROCESS_ID)
{
Module * exe_module = GetTarget().GetExecutableModule ().get();
assert (exe_module);
@@ -455,16 +443,12 @@ ProcessMacOSX::DidLaunch ()
{
ProcessMacOSXLog::LogIf (PD_LOG_PROCESS, "ProcessMacOSX::DidLaunch()");
DidLaunchOrAttach ();
- if (m_dynamic_loader_ap.get())
- m_dynamic_loader_ap->DidLaunch();
}
void
ProcessMacOSX::DidAttach ()
{
DidLaunchOrAttach ();
- if (m_dynamic_loader_ap.get())
- m_dynamic_loader_ap->DidAttach();
}
Error
@@ -870,12 +854,6 @@ ProcessMacOSX::GetImageInfoAddress()
return Task().GetDYLDAllImageInfosAddress();
}
-DynamicLoader *
-ProcessMacOSX::GetDynamicLoader()
-{
- return m_dynamic_loader_ap.get();
-}
-
//------------------------------------------------------------------
// Process Memory
//------------------------------------------------------------------
diff --git a/lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.h b/lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.h
index c0a80c58715..f2ab6cfcdd9 100644
--- a/lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.h
+++ b/lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.h
@@ -222,9 +222,6 @@ public:
virtual lldb_private::Error
DisableWatchpoint (lldb_private::WatchpointLocation *wp_loc);
- virtual lldb_private::DynamicLoader *
- GetDynamicLoader ();
-
static void
AddArchCreateCallback(const lldb_private::ArchSpec& arch_spec,
ProcessMacOSX::CreateArchCalback callback);
@@ -244,7 +241,6 @@ protected:
MachException::Message::collection m_exception_messages; // A collection of exception messages caught when listening to the exception port
lldb_private::Mutex m_exception_messages_mutex; // Multithreaded protection for m_exception_messages
lldb_private::ArchSpec m_arch_spec;
- std::auto_ptr<lldb_private::DynamicLoader> m_dynamic_loader_ap;
//----------------------------------------------------------------------
// Child process control
diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
index cba0ca162fe..df3e09a9988 100644
--- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
@@ -101,7 +101,6 @@ ProcessGDBRemote::CanDebug(Target &target)
//----------------------------------------------------------------------
ProcessGDBRemote::ProcessGDBRemote(Target& target, Listener &listener) :
Process (target, listener),
- m_dynamic_loader_ap (),
m_flags (0),
m_stdio_mutex (Mutex::eMutexTypeRecursive),
m_gdb_comm(),
@@ -132,8 +131,6 @@ ProcessGDBRemote::ProcessGDBRemote(Target& target, Listener &listener) :
//----------------------------------------------------------------------
ProcessGDBRemote::~ProcessGDBRemote()
{
- m_dynamic_loader_ap.reset();
-
if (IS_VALID_LLDB_HOST_THREAD(m_debugserver_thread))
{
Host::ThreadCancel (m_debugserver_thread, NULL);
@@ -410,13 +407,7 @@ Error
ProcessGDBRemote::WillLaunchOrAttach ()
{
Error error;
- // TODO: this is hardcoded for macosx right now. We need this to be more dynamic
- m_dynamic_loader_ap.reset(DynamicLoader::FindPlugin(this, "dynamic-loader.macosx-dyld"));
-
- if (m_dynamic_loader_ap.get() == NULL)
- error.SetErrorString("unable to find the dynamic loader named 'dynamic-loader.macosx-dyld'");
m_stdio_communication.Clear ();
-
return error;
}
@@ -628,11 +619,7 @@ ProcessGDBRemote::DidLaunchOrAttach ()
LogSP log (ProcessGDBRemoteLog::GetLogIfAllCategoriesSet (GDBR_LOG_PROCESS));
if (log)
log->Printf ("ProcessGDBRemote::DidLaunch()");
- if (GetID() == LLDB_INVALID_PROCESS_ID)
- {
- m_dynamic_loader_ap.reset();
- }
- else
+ if (GetID() != LLDB_INVALID_PROCESS_ID)
{
m_dispatch_queue_offsets_addr = LLDB_INVALID_ADDRESS;
@@ -673,8 +660,6 @@ void
ProcessGDBRemote::DidLaunch ()
{
DidLaunchOrAttach ();
- if (m_dynamic_loader_ap.get())
- m_dynamic_loader_ap->DidLaunch();
}
Error
@@ -816,8 +801,6 @@ void
ProcessGDBRemote::DidAttach ()
{
DidLaunchOrAttach ();
- if (m_dynamic_loader_ap.get())
- m_dynamic_loader_ap->DidAttach();
}
Error
@@ -1540,12 +1523,6 @@ ProcessGDBRemote::GetImageInfoAddress()
return LLDB_INVALID_ADDRESS;
}
-DynamicLoader *
-ProcessGDBRemote::GetDynamicLoader()
-{
- return m_dynamic_loader_ap.get();
-}
-
//------------------------------------------------------------------
// Process Memory
//------------------------------------------------------------------
diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
index 3e61ac6b840..7d5a361e98b 100644
--- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
+++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
@@ -219,9 +219,6 @@ public:
virtual lldb_private::Error
DisableWatchpoint (lldb_private::WatchpointLocation *wp_loc);
- virtual lldb_private::DynamicLoader *
- GetDynamicLoader ();
-
virtual bool
StartNoticingNewThreads();
@@ -328,8 +325,6 @@ protected:
eBroadcastBitAsyncThreadShouldExit = (1 << 1)
};
-
- std::auto_ptr<lldb_private::DynamicLoader> m_dynamic_loader_ap;
lldb_private::Flags m_flags; // Process specific flags (see eFlags enums)
lldb_private::Mutex m_stdio_mutex; // Multithreaded protection for stdio
GDBRemoteCommunication m_gdb_comm;
OpenPOWER on IntegriCloud