Loading...
--- dyld/dyld-1066.8/cache_builder/SubCache.cpp
+++ dyld/dyld-1122.1/cache_builder/SubCache.cpp
@@ -754,7 +754,6 @@
// All objc optimizations need to be contiguous, but that means if any need AUTH then all do
void SubCache::addObjCReadWriteChunk(const BuilderConfig& config, Chunk* chunk)
{
- // Add canonical objc protocols
if ( config.layout.hasAuthRegion ) {
addAuthChunk(chunk);
}
@@ -926,6 +925,17 @@
this->addObjCReadOnlyChunk(this->objcHeaderInfoRO.get());
}
+void SubCache::addObjCImageInfoChunk(ObjCOptimizer& objcOptimizer)
+{
+ this->objcImageInfo = std::make_unique<ObjCImageInfoChunk>();
+ this->objcImageInfo->cacheVMSize = CacheVMSize(objcOptimizer.imageInfoSize);
+ this->objcImageInfo->subCacheFileSize = CacheFileSize(objcOptimizer.imageInfoSize);
+
+ objcOptimizer.imageInfoChunk = this->objcImageInfo.get();
+
+ this->addObjCReadOnlyChunk(this->objcImageInfo.get());
+}
+
void SubCache::addObjCSelectorStringsChunk(ObjCSelectorOptimizer& objCSelectorOptimizer)
{
this->objcSelectorStrings = std::make_unique<ObjCStringsChunk>();
@@ -1003,6 +1013,19 @@
this->addObjCReadOnlyChunk(this->objcSwiftDemangledNameStrings.get());
}
+void SubCache::addObjCCanonicalProtocolsChunk(const BuilderConfig& config,
+ ObjCProtocolOptimizer& objcProtocolOptimizer)
+{
+ this->objcCanonicalProtocols = std::make_unique<ObjCCanonicalProtocolsChunk>();
+ this->objcCanonicalProtocols->cacheVMSize = CacheVMSize(objcProtocolOptimizer.canonicalProtocolsTotalByteSize);
+ this->objcCanonicalProtocols->subCacheFileSize = CacheFileSize(objcProtocolOptimizer.canonicalProtocolsTotalByteSize);
+
+ objcProtocolOptimizer.canonicalProtocolsChunk = this->objcCanonicalProtocols.get();
+
+ // Add canonical objc protocols
+ addObjCReadWriteChunk(config, this->objcCanonicalProtocols.get());
+}
+
void SubCache::addObjCIMPCachesChunk(ObjCIMPCachesOptimizer& objcIMPCachesOptimizer)
{
this->objcIMPCaches = std::make_unique<ObjCIMPCachesChunk>();
@@ -1014,17 +1037,17 @@
this->addLinkeditChunk(this->objcIMPCaches.get());
}
-void SubCache::addObjCCanonicalProtocolsChunk(const BuilderConfig& config,
- ObjCProtocolOptimizer& objcProtocolOptimizer)
-{
- this->objcCanonicalProtocols = std::make_unique<ObjCCanonicalProtocolsChunk>();
- this->objcCanonicalProtocols->cacheVMSize = CacheVMSize(objcProtocolOptimizer.canonicalProtocolsTotalByteSize);
- this->objcCanonicalProtocols->subCacheFileSize = CacheFileSize(objcProtocolOptimizer.canonicalProtocolsTotalByteSize);
-
- objcProtocolOptimizer.canonicalProtocolsChunk = this->objcCanonicalProtocols.get();
-
- // Add canonical objc protocols
- addObjCReadWriteChunk(config, this->objcCanonicalProtocols.get());
+void SubCache::addObjCCategoriesChunk(const BuilderConfig& config,
+ ObjCCategoryOptimizer& objcCategoryOptimizer)
+{
+ this->objcCategories = std::make_unique<ObjCPreAttachedCategoriesChunk>();
+ this->objcCategories->cacheVMSize = CacheVMSize(objcCategoryOptimizer.categoriesTotalByteSize);
+ this->objcCategories->subCacheFileSize = CacheFileSize(objcCategoryOptimizer.categoriesTotalByteSize);
+
+ objcCategoryOptimizer.categoriesChunk = this->objcCategories.get();
+
+ // Add objc categories
+ addObjCReadOnlyChunk(this->objcCategories.get());
}
void SubCache::addCacheTrieChunk(DylibTrieOptimizer& dylibTrieOptimizer)
@@ -1362,7 +1385,7 @@
dyldCacheHeader->platform = (uint8_t)options.platform;
dyldCacheHeader->formatVersion = 0; //dyld3::closure::kFormatVersion;
dyldCacheHeader->dylibsExpectedOnDisk = !options.dylibsRemovedFromDisk;
- dyldCacheHeader->simulator = options.isSimultor();
+ dyldCacheHeader->simulator = options.isSimulator();
dyldCacheHeader->locallyBuiltCache = options.isLocallyBuiltCache;
dyldCacheHeader->builtFromChainedFixups = false; // no longer used
dyldCacheHeader->sharedRegionStart = this->subCacheVMAddress.rawValue();