Skip to content

Commit

Permalink
Adopt new JIT permissions API
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=264694
rdar://116544588

Reviewed by Wenson Hsieh.

Adopt new JIT permissions API. This is more secure than the one we were
previously using.

* Source/JavaScriptCore/Configurations/JavaScriptCore.xcconfig:
* Source/WTF/wtf/PlatformUse.h:
* Source/WebCore/Configurations/WebCore.xcconfig:

Canonical link: https://commits.webkit.org/270693@main
  • Loading branch information
Justin Michaud committed Nov 14, 2023
1 parent 9bafc5f commit 7c5f5e8
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 3 deletions.
3 changes: 2 additions & 1 deletion Source/JavaScriptCore/Configurations/Base.xcconfig
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,9 @@ WK_PROCESSED_XCENT_FILE=$(TEMP_FILE_DIR)/$(FULL_PRODUCT_NAME).entitlements
WK_USE_RESTRICTED_ENTITLEMENTS = $(USE_INTERNAL_SDK);

// Shared variables used for dynamic or static linking of JavaScriptCore and jsc.
JSC_SEC_LD_FLAGS[sdk=iphoneos17.4*] = -weak_framework ServiceExtensionsCore

OTHER_LDFLAGS_JAVASCRIPTCORE_DEPS = -fobjc-link-runtime -licucore -framework Security;
OTHER_LDFLAGS_JAVASCRIPTCORE_DEPS = $(JSC_SEC_LD_FLAGS) -fobjc-link-runtime -licucore -framework Security;

WTF_ARCHIVE = $(BUILT_PRODUCTS_DIR)/libWTF.a;
WTF_ARCHIVE[config=Production] = $(SDK_DIR)$(WK_ALTERNATE_WEBKIT_SDK_PATH)$(WK_LIBRARY_INSTALL_PATH)/libWTF.a;
Expand Down
2 changes: 1 addition & 1 deletion Source/JavaScriptCore/jit/ExecutableAllocator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ static ALWAYS_INLINE JITReservation initializeJITPageReservation()
bool fastJITPermissionsIsSupported = false;
#if OS(DARWIN) && CPU(ARM64)
#if USE(INLINE_JIT_PERMISSIONS_API)
fastJITPermissionsIsSupported = !!se_memory_inline_jit_restrict_with_witness_supported();
fastJITPermissionsIsSupported = (se_memory_inline_jit_restrict_with_witness_supported != nullptr) && !!se_memory_inline_jit_restrict_with_witness_supported();
#elif USE(PTHREAD_JIT_PERMISSIONS_API)
fastJITPermissionsIsSupported = !!pthread_jit_write_protect_supported_np();
#elif USE(APPLE_INTERNAL_SDK)
Expand Down
4 changes: 4 additions & 0 deletions Source/WTF/wtf/PlatformUse.h
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,10 @@
#define USE_CORE_TEXT_VARIATIONS_CLAMPING_WORKAROUND 1
#endif

#if PLATFORM(IOS) && !PLATFORM(IOS_FAMILY_SIMULATOR) && __has_include(<ServiceExtensionsCore/SEMemory_Private.h>)
#define USE_INLINE_JIT_PERMISSIONS_API 1
#endif

#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 140000) \
|| ((PLATFORM(IOS) || PLATFORM(MACCATALYST)) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 170000) \
|| (PLATFORM(WATCHOS) && __WATCH_OS_VERSION_MIN_REQUIRED >= 100000) \
Expand Down
4 changes: 3 additions & 1 deletion Source/WebCore/Configurations/WebCore.xcconfig
Original file line number Diff line number Diff line change
Expand Up @@ -162,8 +162,10 @@ WK_DEBUG_LDFLAGS[config=Debug] = -Wl,-debug_variant
WK_APPLEJPEGXL_LDFLAGS = $(WK_APPLEJPEGXL_LDFLAGS_$(WK_USE_APPLEJPEGXL));
WK_APPLEJPEGXL_LDFLAGS_YES = -weak_framework AppleJPEGXL;

JSC_SEC_LD_FLAGS[sdk=iphoneos17.4*] = -weak_framework ServiceExtensionsCore

// FIXME: Reduce the number of allowable_clients <rdar://problem/31823969>
OTHER_LDFLAGS = $(inherited) $(WK_RELOCATABLE_FRAMEWORK_LDFLAGS) -weak-lxslt -lsqlite3 -lobjc -allowable_client WebCoreTestSupport -allowable_client WebKitLegacy -allowable_client WebKit -allowable_client TestIPC -allowable_client TestWebKitAPI -allowable_client DumpRenderTree -allowable_client WebKitTestRunner -force_load $(BUILT_PRODUCTS_DIR)/libPAL.a -framework CFNetwork -framework CoreAudio -framework CoreGraphics -framework CoreText -framework Foundation -framework IOSurface -framework ImageIO -framework Metal -framework Network -lFontParser $(OTHER_LDFLAGS_PLATFORM_$(WK_COCOA_TOUCH)) $(OTHER_LDFLAGS_PLATFORM_$(WK_PLATFORM_NAME)) $(WK_ANGLE_LDFLAGS) $(WK_WEBGPU_LDFLAGS) $(WK_APPKIT_LDFLAGS) $(WK_APPSUPPORT_LDFLAGS) $(WK_AUDIO_UNIT_LDFLAGS) $(WK_CARBON_LDFLAGS) $(WK_CORE_UI_LDFLAGS) $(WK_DATA_DETECTORS_CORE_LDFLAGS) $(WK_GRAPHICS_SERVICES_LDFLAGS) $(WK_IOSURFACE_ACCELERATOR_LDFLAGS) $(WK_LIBWEBRTC_LDFLAGS) $(WK_MOBILE_CORE_SERVICES_LDFLAGS) $(WK_MOBILE_GESTALT_LDFLAGS) $(WK_NETWORK_EXTENSION_LDFLAGS) $(WK_SYSTEM_CONFIGURATION_LDFLAGS) $(WK_CORE_IMAGE_LDFLAGS) $(WK_URL_FORMATTING_LDFLAGS) $(WK_UNIFORM_TYPE_IDENTIFIERS_LDFLAGS) $(WK_XR_RUNTIME_SUPPORT_LDFLAGS) $(WK_SCENEKIT_LDFLAGS) $(SOURCE_VERSION_LDFLAGS) $(PROFILE_GENERATE_OR_USE_LDFLAGS) $(WK_NO_STATIC_INITIALIZERS) $(WK_APPLEJPEGXL_LDFLAGS) $(WK_DEBUG_LDFLAGS);
OTHER_LDFLAGS = $(inherited) $(WK_RELOCATABLE_FRAMEWORK_LDFLAGS) $(JSC_SEC_LD_FLAGS) -weak-lxslt -lsqlite3 -lobjc -allowable_client WebCoreTestSupport -allowable_client WebKitLegacy -allowable_client WebKit -allowable_client TestIPC -allowable_client TestWebKitAPI -allowable_client DumpRenderTree -allowable_client WebKitTestRunner -force_load $(BUILT_PRODUCTS_DIR)/libPAL.a -framework CFNetwork -framework CoreAudio -framework CoreGraphics -framework CoreText -framework Foundation -framework IOSurface -framework ImageIO -framework Metal -framework Network -lFontParser $(OTHER_LDFLAGS_PLATFORM_$(WK_COCOA_TOUCH)) $(OTHER_LDFLAGS_PLATFORM_$(WK_PLATFORM_NAME)) $(WK_ANGLE_LDFLAGS) $(WK_WEBGPU_LDFLAGS) $(WK_APPKIT_LDFLAGS) $(WK_APPSUPPORT_LDFLAGS) $(WK_AUDIO_UNIT_LDFLAGS) $(WK_CARBON_LDFLAGS) $(WK_CORE_UI_LDFLAGS) $(WK_DATA_DETECTORS_CORE_LDFLAGS) $(WK_GRAPHICS_SERVICES_LDFLAGS) $(WK_IOSURFACE_ACCELERATOR_LDFLAGS) $(WK_LIBWEBRTC_LDFLAGS) $(WK_MOBILE_CORE_SERVICES_LDFLAGS) $(WK_MOBILE_GESTALT_LDFLAGS) $(WK_NETWORK_EXTENSION_LDFLAGS) $(WK_SYSTEM_CONFIGURATION_LDFLAGS) $(WK_CORE_IMAGE_LDFLAGS) $(WK_URL_FORMATTING_LDFLAGS) $(WK_UNIFORM_TYPE_IDENTIFIERS_LDFLAGS) $(WK_XR_RUNTIME_SUPPORT_LDFLAGS) $(WK_SCENEKIT_LDFLAGS) $(SOURCE_VERSION_LDFLAGS) $(PROFILE_GENERATE_OR_USE_LDFLAGS) $(WK_NO_STATIC_INITIALIZERS) $(WK_APPLEJPEGXL_LDFLAGS) $(WK_DEBUG_LDFLAGS);

OTHER_LDFLAGS_PLATFORM_cocoatouch = -allowable_client iTunesU -allowable_client Casablanca -allowable_client Remote -allowable_client TVBooks;
OTHER_LDFLAGS_PLATFORM_macosx = -sub_library libobjc $(PROFILE_GENERATE_OR_USE_LDFLAGS);
Expand Down

0 comments on commit 7c5f5e8

Please sign in to comment.