diff --git a/Configurations/Sanitizers.xcconfig b/Configurations/Sanitizers.xcconfig index 25be668577000..accd7bf77cd6a 100644 --- a/Configurations/Sanitizers.xcconfig +++ b/Configurations/Sanitizers.xcconfig @@ -1,4 +1,4 @@ -// Copyright (C) 2023-2024 Apple Inc. All rights reserved. +// Copyright (C) 2023-2025 Apple Inc. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions @@ -26,6 +26,8 @@ // Requires SDKVariant.xcconfig. +#include "WebKitTargetConditionals.xcconfig" + WK_SANITIZER_GCC_OPTIMIZATION_LEVEL = $(WK_SANITIZER_GCC_OPTIMIZATION_LEVEL_$(CONFIGURATION)); WK_SANITIZER_GCC_OPTIMIZATION_LEVEL_Debug = 0; WK_SANITIZER_GCC_OPTIMIZATION_LEVEL_Production = 1; @@ -64,11 +66,17 @@ WK_ANY_SANITIZER_LDFLAGS_YES = -Wl,-rpath,@executable_path/Frameworks; // Address Sanitizer // Add -fsanitize-address-use-after-return=never to disable ASan's "fake stack" to fix JSC garbage collection. -WK_ADDRESS_SANITIZER_OTHER_CFLAGS_YES = -fsanitize-address-use-after-return=never; +WK_ADDRESS_SANITIZER_OTHER_CFLAGS_YES = -fsanitize-address-use-after-return=never $(WK_WORKAROUND_RDAR_145268301_ASAN_STACK_USE_AFTER_SCOPE); WK_ADDRESS_SANITIZER_OTHER_LDFLAGS_YES = -fsanitize-address-use-after-return=never; WK_ADDRESS_SANITIZER_OTHER_CPLUSPLUSFLAGS_YES = -U_LIBCPP_HAS_NO_ASAN; +// Workaround ASan stack-use-after-scope false positive in Xcode 16.3: . +WK_NEEDS_RDAR_145268301_ASAN_STACK_USE_AFTER_SCOPE_WORKAROUND = $(WK_NOT_$(WK_XCODE_BEFORE_16_3)); + +WK_WORKAROUND_RDAR_145268301_ASAN_STACK_USE_AFTER_SCOPE = $(WK_WORKAROUND_RDAR_145268301_ASAN_STACK_USE_AFTER_SCOPE_$(WK_NEEDS_RDAR_145268301_ASAN_STACK_USE_AFTER_SCOPE_WORKAROUND); +WK_WORKAROUND_RDAR_145268301_ASAN_STACK_USE_AFTER_SCOPE_YES = -DWK_WORKAROUND_RDAR_145268301_ASAN_STACK_USE_AFTER_SCOPE; + // Undefined Behavior Sanitizer // FIXME: Tune list of Undefined Behavior (UBSan) checkers diff --git a/Configurations/WebKitTargetConditionals.xcconfig b/Configurations/WebKitTargetConditionals.xcconfig index e7fba47e5a479..b8f7885e8067d 100644 --- a/Configurations/WebKitTargetConditionals.xcconfig +++ b/Configurations/WebKitTargetConditionals.xcconfig @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2024 Apple Inc. All rights reserved. +// Copyright (C) 2018-2025 Apple Inc. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions @@ -380,3 +380,14 @@ WK_XCODE_BEFORE_16_1500 = YES; WK_XCODE_16 = $(WK_XCODE_16_$(WK_XCODE_BEFORE_16)); WK_XCODE_16_ = _XCODE_SINCE_16; WK_XCODE_16_YES = _XCODE_BEFORE_16; + +WK_XCODE_BEFORE_16_3 = $(WK_XCODE_BEFORE_16_3$(WK_XCODE_16)); +WK_XCODE_BEFORE_16_3_XCODE_BEFORE_16 = YES; +WK_XCODE_BEFORE_16_3_XCODE_SINCE_16 = $(WK_XCODE_BEFORE_16_3_$(XCODE_VERSION_MINOR)); +WK_XCODE_BEFORE_16_3_1600 = YES; +WK_XCODE_BEFORE_16_3_1610 = YES; +WK_XCODE_BEFORE_16_3_1620 = YES; + +WK_XCODE_16_3 = $(WK_XCODE_16_3_$(WK_XCODE_BEFORE_16_3)); +WK_XCODE_16_3_ = _XCODE_SINCE_16_3; +WK_XCODE_16_3_YES = _XCODE_BEFORE_16_3; diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator/InfoSink.h b/Source/ThirdParty/ANGLE/src/compiler/translator/InfoSink.h index 8d3b1c0cf16e7..680e5cbb38886 100644 --- a/Source/ThirdParty/ANGLE/src/compiler/translator/InfoSink.h +++ b/Source/ThirdParty/ANGLE/src/compiler/translator/InfoSink.h @@ -21,6 +21,9 @@ class TSymbol; class TType; // Returns the fractional part of the given floating-point number. +#ifdef WK_WORKAROUND_RDAR_145268301_ASAN_STACK_USE_AFTER_SCOPE +__attribute__((no_sanitize_address)) +#endif inline float fractionalPart(float f) { float intPart = 0.0f;