[Lldb-commits] [PATCH 1/9] Load dependent modules in the Linux dynamic loader.

Stephen Wilson wilsons at start.ca
Tue Jan 18 14:39:07 PST 2011


This fixes a bug where the dynamic loader rendezvous was not updating its
internal state when first initialized.

diff --git a/source/Plugins/DynamicLoader/Linux-DYLD/DYLDRendezvous.cpp b/source/Plugins/DynamicLoader/Linux-DYLD/DYLDRendezvous.cpp
index 8b4795d..f10aedb 100644
--- a/source/Plugins/DynamicLoader/Linux-DYLD/DYLDRendezvous.cpp
+++ b/source/Plugins/DynamicLoader/Linux-DYLD/DYLDRendezvous.cpp
@@ -117,6 +117,12 @@ DYLDRendezvous::UpdateSOEntries()
     if (m_current.map_addr == 0)
         return false;
 
+    // When the previous and current states are consistent this is the first
+    // time we have been asked to update.  Just take a snapshot of the currently
+    // loaded modules.
+    if (m_previous.state == eConsistent && m_current.state == eConsistent) 
+        return TakeSnapshot(m_soentries);
+
     // If we are about to add or remove a shared object clear out the current
     // state and take a snapshot of the currently loaded images.
     if (m_current.state == eAdd || m_current.state == eDelete)
@@ -127,6 +133,7 @@ DYLDRendezvous::UpdateSOEntries()
         m_removed_soentries.clear();
         return TakeSnapshot(m_soentries);
     }
+    assert(m_current.state == eConsistent);
 
     // Otherwise check the previous state to determine what to expect and update
     // accordingly.
-- 
1.7.3.5




More information about the lldb-commits mailing list