Loading...
--- dyld/dyld-1235.2/cache_builder/Chunk.cpp
+++ dyld/dyld-1330/cache_builder/Chunk.cpp
@@ -68,6 +68,9 @@
// FIXME: Not sure why this is 16. Seems like 8 would be sufficient.
nlist = 16,
+ // This chunk points to data which contains a uint128_t or similar, so needs 128-bit alignment
+ struct128 = 16,
+
// Inside the cache there is minimal overhead for 16K alignment even on 4K hardware
page = 16*1024,
};
@@ -132,11 +135,6 @@
return nullptr;
}
-UniquedGOTsChunk* Chunk::isUniquedGOTsChunk()
-{
- return nullptr;
-}
-
const DylibSegmentChunk* Chunk::isTPROChunk() const
{
return nullptr;
@@ -632,12 +630,37 @@
return "cache patch table";
}
+
+//
+// MARK: --- FunctionVariantsPatchTableChunk methods ---
+//
+
+FunctionVariantsPatchTableChunk::FunctionVariantsPatchTableChunk()
+: Chunk(Kind::cacheFunctionVariantsPatchTable, Alignment::struct64)
+{
+}
+
+FunctionVariantsPatchTableChunk::~FunctionVariantsPatchTableChunk()
+{
+}
+
+void FunctionVariantsPatchTableChunk::dump() const
+{
+ printf("FunctionVariantsPatchTableChunk\n");
+}
+
+const char* FunctionVariantsPatchTableChunk::name() const
+{
+ return "function variants table";
+}
+
+
//
// MARK: --- PrebuiltLoaderChunk methods ---
//
PrebuiltLoaderChunk::PrebuiltLoaderChunk(Kind kind)
- : Chunk(kind, Alignment::struct64)
+ : Chunk(kind, Alignment::struct128)
{
}
@@ -752,7 +775,10 @@
chunkName = "linkedit function starts";
break;
case Chunk::Kind::linkeditDataInCode:
- chunkName = "linkedit Mr Data (in code)";
+ chunkName = "linkedit data-in-code";
+ break;
+ case Chunk::Kind::linkeditFunctionVariants :
+ chunkName = "linkedit function-variants-table";
break;
case Chunk::Kind::linkeditExportTrie:
chunkName = "linkedit export trie";
@@ -784,6 +810,12 @@
return this->kind == Chunk::Kind::linkeditSymbolStrings;
}
+bool LinkeditDataChunk::isFunctionVariantsTable() const
+{
+ return this->kind == Chunk::Kind::linkeditFunctionVariants;
+}
+
+
//
// MARK: --- NListChunk methods ---
//
@@ -854,11 +886,6 @@
const char* UniquedGOTsChunk::name() const
{
return "uniqued GOTs";
-}
-
-UniquedGOTsChunk* UniquedGOTsChunk::isUniquedGOTsChunk()
-{
- return this;
}
//
@@ -951,3 +978,27 @@
const AlignChunk* AlignChunk::isAlignChunk() const {
return this;
}
+
+//
+// MARK: --- PrewarmingChunk methods ---
+//
+
+PrewarmingChunk::PrewarmingChunk(Kind kind)
+ : Chunk(kind, Alignment::uleb)
+{
+}
+
+PrewarmingChunk::~PrewarmingChunk()
+{
+
+}
+
+void PrewarmingChunk::dump() const
+{
+ printf("PrewarmingChunk\n");
+}
+
+const char* PrewarmingChunk::name() const
+{
+ return "prewarming data";
+}