diff options
Diffstat (limited to 'lldb/source/Plugins')
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; |