Loading...
--- 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