Loading...
other-tools/dsc_iterator.cpp dyld-1340 dyld-960
--- dyld/dyld-1340/other-tools/dsc_iterator.cpp
+++ dyld/dyld-960/other-tools/dsc_iterator.cpp
@@ -22,10 +22,6 @@
  * @APPLE_LICENSE_HEADER_END@
  */
 
-#include <TargetConditionals.h>
-
-#if !TARGET_OS_EXCLAVEKIT
-
 #include <stdlib.h>
 #include <stdio.h>
 #include <Availability.h>
@@ -34,9 +30,7 @@
 #include "dsc_iterator.h"
 #define NO_ULEB
 #include "DyldSharedCache.h"
-#include "Header.h"
-
-using mach_o::Header;
+#include "MachOAnalyzer.h"
 
 
 static void forEachDylibInCache(const void* shared_cache_file, void (^handler)(const dyld_cache_image_info* cachedDylibInfo, bool isAlias))
@@ -45,7 +39,7 @@
     const dyld_cache_mapping_info*  mappings    = (dyld_cache_mapping_info*)((char*)shared_cache_file + header->mappingOffset);
     dyld_cache_image_info*          images      = (dyld_cache_image_info*)((char*)shared_cache_file + header->imagesOffsetOld);
     uint32_t                        imagesCount = header->imagesCountOld;
-    if ( header->mappingOffset >= offsetof(dyld_cache_header, imagesCount) ) {
+    if ( header->mappingOffset >= __offsetof(dyld_cache_header, imagesCount) ) {
         images = (dyld_cache_image_info*)((char*)shared_cache_file + header->imagesOffset);
         imagesCount = header->imagesCount;
     }
@@ -71,38 +65,38 @@
     const dyld_cache_mapping_info* mappings           = (dyld_cache_mapping_info*)((char*)shared_cache_file + header->mappingOffset);
     const uint64_t                 unslideLoadAddress = mappings[0].address;
 
+    __block uint32_t index = 0;
     __block int      result = 0;
     forEachDylibInCache(shared_cache_file, ^(const dyld_cache_image_info* cachedDylibInfo, bool isAlias) {
         uint64_t                    imageCacheOffset = cachedDylibInfo->address - unslideLoadAddress;
-        const Header*               mh               = (Header*)((uint8_t*)shared_cache_file + imageCacheOffset);
+        const dyld3::MachOAnalyzer* ma               = (dyld3::MachOAnalyzer*)((uint8_t*)shared_cache_file + imageCacheOffset);
         const char*                 dylibPath        = (char*)shared_cache_file + cachedDylibInfo->pathFileOffset;
 
         dyld_shared_cache_dylib_info dylibInfo;
         uuid_t                       uuid;
         dylibInfo.version    = 2;
-        dylibInfo.machHeader = mh;
+        dylibInfo.machHeader = ma;
         dylibInfo.path       = dylibPath;
         dylibInfo.modTime    = cachedDylibInfo->modTime;
         dylibInfo.inode      = cachedDylibInfo->inode;
         dylibInfo.isAlias    = isAlias;
-        mh->getUuid(uuid);
+        ma->getUuid(uuid);
         dylibInfo.uuid       = &uuid;
-        mh->forEachSegment(^(const Header::SegmentInfo& info, bool& stop) {
-            if ( info.fileSize > info.vmsize ) {
+        ma->forEachSegment(^(const dyld3::MachOAnalyzer::SegmentInfo& info, bool& stop) {
+            if ( info.fileSize > info.vmSize ) {
                 stop = true;
                 return;
             }
             dyld_shared_cache_segment_info segInfo;
             segInfo.version       = 2;
-            segInfo.name          = info.segmentName.data(); // FIXME: Might not be null terminated
+            segInfo.name          = info.segName;
             segInfo.fileOffset    = info.fileOffset;
-            segInfo.fileSize      = info.vmsize;
-            segInfo.address       = info.vmaddr;
-            segInfo.addressOffset = info.vmaddr - unslideLoadAddress;
+            segInfo.fileSize      = info.vmSize;
+            segInfo.address       = info.vmAddr;
+            segInfo.addressOffset = info.vmAddr - unslideLoadAddress;
             callback(&dylibInfo, &segInfo);
         });
+        index++;
     });
     return result;
 }
-
-#endif // !TARGET_OS_EXCLAVEKIT