Loading...
// BUILD(macos): $CC main.c -o $BUILD_DIR/env-DYLD_FORCE_PLATFORM.exe -DENABLE_ALT_PLATFORMS=1 // BUILD(macos): $CC main.c -o $BUILD_DIR/env-DYLD_FORCE_PLATFORM-fail.exe // BUILD(macos): $TASK_FOR_PID_ENABLE $BUILD_DIR/env-DYLD_FORCE_PLATFORM.exe // BUILD(macos): $TASK_FOR_PID_ENABLE $BUILD_DIR/env-DYLD_FORCE_PLATFORM-fail.exe // BUILD(ios,tvos,watchos,bridgeos): // RUN: DYLD_FORCE_PLATFORM=6 ./env-DYLD_FORCE_PLATFORM.exe // RUN: DYLD_FORCE_PLATFORM=6 ./env-DYLD_FORCE_PLATFORM-fail.exe #include <mach-o/dyld_priv.h> #include <dlfcn.h> #include "test_support.h" #if ENABLE_ALT_PLATFORMS __attribute__((section("__DATA,__allow_alt_plat"))) uint64_t dummy; int main(int argc, const char* argv[], const char* envp[], const char* apple[]) { dyld_build_version_t ios12 = { .platform = PLATFORM_IOS, .version = 0x000c0000 }; if (dyld_get_active_platform() != PLATFORM_MACCATALYST) { FAIL("dyld_get_active_platform() should return PLATFORM_MACCATALYST"); } // libswiftUIKit.dylib exists in /System/iOSSupport/usr/lib/swift // We should be able to dlopen it only if we are correctly prepending the /System/iOSSupport root path #if 0 // FIXME: We don't want to bring in such large dylib graphs. We can repurpose root testing support for this if (!dlopen_preflight("/usr/lib/swift/libswiftUIKit.dylib")) { FAIL("Should be able to dlopen libswiftUIKit but %s", dlerror()); } #endif if (!dyld_program_minos_at_least(ios12)) { FAIL("DYLD_FORCE_PLATFORM should synthesize an iOS min version greater than 12.0"); } if (!dyld_program_sdk_at_least(ios12)) { FAIL("DYLD_FORCE_PLATFORM should synthesize an iOS sdk versio greater than 12.0"); } PASS("Success"); } #else int main(int argc, const char* argv[], const char* envp[], const char* apple[]) { if (dyld_get_active_platform() != PLATFORM_MACOS) { FAIL("dyld_get_active_platform() should return PLATFORM_MACOS"); } // libswiftUIKit.dylib exists in /System/iOSSupport/usr/lib/swift // We should not be able to dlopen this as we don't expect to find it in a macOS location. If it starts // being in a macOS location then we should update this test if(dlopen_preflight("/usr/lib/swift/libswiftUIKit.dylib")) { FAIL("Should not be able to dlopen libswiftUIKit"); } PASS("Success"); } #endif |