forked from OSchip/llvm-project
Load dependent modules in the Linux dynamic loader.
This fixes a bug where the dynamic loader rendezvous was not updating its internal state when first initialized. llvm-svn: 123794
This commit is contained in:
parent
345c1bcb80
commit
88eb6d5725
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue