- if ( (dependentImage != NULL) && !libIsUpward(i) ) {
- unsigned int d = dependentImage->recursiveUpdateDepth(maxDepth);
- if ( d < minDependentDepth )
- minDependentDepth = d;
+ if ( dependentImage != NULL ) {
+ if ( libIsUpward(i) ) {
+ if ( dependentImage->fDepth == 0) {
+ if ( !danglingUpwards.contains(dependentImage) )
+ danglingUpwards.push_back(dependentImage);
+ }
+ } else {
+ unsigned int d = dependentImage->recursiveUpdateDepth(maxDepth, danglingUpwards);
+ if ( d < minDependentDepth )
+ minDependentDepth = d;
+ }
+ }
+ // <rdar://problem/60878811> make sure need to re-bind propagates up
+ if ( dependentImage != NULL ) {
+ if ( fAllLibraryChecksumsAndLoadAddressesMatch && !dependentImage->fAllLibraryChecksumsAndLoadAddressesMatch ) {
+ fAllLibraryChecksumsAndLoadAddressesMatch = false;
+ }