Loading...
dyld3/libdyldEntryVector.cpp dyld-750.6 dyld-851.27
--- dyld/dyld-750.6/dyld3/libdyldEntryVector.cpp
+++ dyld/dyld-851.27/dyld3/libdyldEntryVector.cpp
@@ -38,7 +38,8 @@
 
 VIS_HIDDEN const char** appleParams;
 
-extern bool gUseDyld3;
+extern void* __ptrauth_dyld_address_auth gUseDyld3;
+extern bool gEnableSharedCacheDataConst;
 
 namespace dyld3 {
 
@@ -57,7 +58,8 @@
         return argv0;
 }
 
-static void entry_setVars(const mach_header* mainMH, int argc, const char* argv[], const char* envp[], const char* apple[])
+static void entry_setVars(const mach_header* mainMH, int argc, const char* argv[], const char* envp[], const char* apple[],
+                          bool keysOff, bool platformBinariesOnly, bool enableSharedCacheDataConst)
 {
     NXArgc       = argc;
     NXArgv       = argv;
@@ -70,11 +72,13 @@
     sVars.NXArgvPtr     = &NXArgv;
     sVars.environPtr    = (const char***)&environ;
     sVars.__prognamePtr = &__progname;
-    gAllImages.setProgramVars(&sVars);
-
-    gUseDyld3 = true;
+    gAllImages.setProgramVars(&sVars, keysOff, platformBinariesOnly);
+
+    gUseDyld3 = (void*)1;
 
     setLoggingFromEnvs(envp);
+
+    gEnableSharedCacheDataConst = enableSharedCacheDataConst;
 }
 
 static void entry_setHaltFunction(void (*func)(const char* message) __attribute__((noreturn)) )
@@ -107,11 +111,12 @@
 }
 
 static void entry_setInitialImageList(const closure::LaunchClosure* closure,
-                                const DyldSharedCache* dyldCacheLoadAddress, const char* dyldCachePath,
-                                const Array<LoadedImage>& initialImages, LoadedImage& libSystem)
+                                      const DyldSharedCache* dyldCacheLoadAddress, const char* dyldCachePath,
+                                      const Array<LoadedImage>& initialImages, LoadedImage& libSystem,
+                                      mach_port_t mach_task_self)
 {
     gAllImages.init(closure, dyldCacheLoadAddress, dyldCachePath, initialImages);
-    gAllImages.applyInterposingToDyldCache(closure);
+    gAllImages.applyInterposingToDyldCache(closure, mach_task_self);
 
     // run initializer for libSytem.B.dylib
     // this calls back into _dyld_initializer which calls gAllIimages.addImages()
@@ -150,8 +155,20 @@
 
 static void entry_setProgramVars(ProgramVars* progVars)
 {
-    gAllImages.setProgramVars((AllImages::ProgramVars*)progVars);
-}
+    // this entry only called when running crt1.o based old macOS programs
+    gAllImages.setProgramVars((AllImages::ProgramVars*)progVars, false, false);
+}
+
+static void entry_setLaunchMode(uint32_t flags)
+{
+    gAllImages.setLaunchMode(flags);
+}
+
+static MainFunc entry_getDriverkitMain(void)
+{
+    return gAllImages.getDriverkitMain();
+}
+
 
 static_assert((closure::kFormatVersion & LibDyldEntryVector::kBinaryFormatVersionMask) == closure::kFormatVersion, "binary format version overflow");
 
@@ -171,6 +188,8 @@
     &entry_setNotifyMonitoringDyld,
     &entry_setHasCacheOverrides,
     &entry_setProgramVars,
+    &entry_setLaunchMode,
+    &entry_getDriverkitMain,
 };
 
 VIS_HIDDEN void _dyld_atfork_prepare()