@@ -25,7 +25,8 @@ def isNotOSMSVCRT : RuntimeLibcallPredicate<"!TT.isOSMSVCRT()">;
2525def isPS : RuntimeLibcallPredicate<"TT.isPS()">;
2626def isNotOSWindowsOrIsCygwinMinGW
2727 : RuntimeLibcallPredicate<"!TT.isOSWindows() || TT.isOSCygMing()">;
28-
28+ def isWindowsMSVCEnvironment : RuntimeLibcallPredicate<
29+ [{TT.isWindowsMSVCEnvironment()}]>;
2930
3031def isGNUEnvironment : RuntimeLibcallPredicate<"TT.isGNUEnvironment()">;
3132def darwinHasSinCosStret : RuntimeLibcallPredicate<"darwinHasSinCosStret(TT)">;
@@ -369,6 +370,8 @@ def STACK_SMASH_HANDLER : RuntimeLibcall;
369370// Safe stack
370371def SAFESTACK_POINTER_ADDRESS : RuntimeLibcall;
371372
373+ def SECURITY_CHECK_COOKIE : RuntimeLibcall;
374+
372375// Deoptimization
373376def DEOPTIMIZE : RuntimeLibcall;
374377
@@ -1009,6 +1012,10 @@ def __stack_smash_handler : RuntimeLibcallImpl<STACK_SMASH_HANDLER>;
10091012
10101013def __riscv_flush_icache : RuntimeLibcallImpl<RISCV_FLUSH_ICACHE>;
10111014
1015+ def __security_check_cookie : RuntimeLibcallImpl<SECURITY_CHECK_COOKIE>;
1016+ def __security_check_cookie_arm64ec : RuntimeLibcallImpl<SECURITY_CHECK_COOKIE,
1017+ "#__security_check_cookie_arm64ec">;
1018+
10121019//===----------------------------------------------------------------------===//
10131020// F128 libm Runtime Libcalls
10141021//===----------------------------------------------------------------------===//
@@ -1111,6 +1118,9 @@ defvar DarwinSinCosStret = LibcallImpls<(add __sincosf_stret, __sincos_stret),
11111118 darwinHasSinCosStret>;
11121119defvar DarwinExp10 = LibcallImpls<(add __exp10f, __exp10), darwinHasExp10>;
11131120
1121+ defvar SecurityCheckCookieIfWinMSVC =
1122+ LibcallImpls<(add __security_check_cookie), isWindowsMSVCEnvironment>;
1123+
11141124defvar LibmHasSinCosF32 = LibcallImpls<(add sincosf), hasSinCos>;
11151125defvar LibmHasSinCosF64 = LibcallImpls<(add sincos), hasSinCos>;
11161126defvar LibmHasSinCosF80 = LibcallImpls<(add sincos_f80), hasSinCos>;
@@ -1233,7 +1243,8 @@ def AArch64SystemLibrary : SystemRuntimeLibrary<
12331243 DarwinExp10, DarwinSinCosStret,
12341244 LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
12351245 DefaultLibmExp10,
1236- DefaultStackProtector)
1246+ DefaultStackProtector,
1247+ SecurityCheckCookieIfWinMSVC)
12371248>;
12381249
12391250// Prepend a # to every name
@@ -1252,7 +1263,9 @@ def arm64ec___stack_chk_fail : DuplicateLibcallImplWithPrefix<__stack_chk_fail,
12521263def WindowsARM64ECSystemLibrary
12531264 : SystemRuntimeLibrary<isWindowsArm64EC,
12541265 (add WinArm64ECDefaultRuntimeLibcallImpls,
1255- arm64ec___stack_chk_fail)>;
1266+ arm64ec___stack_chk_fail,
1267+ LibcallImpls<(add __security_check_cookie_arm64ec),
1268+ isWindowsMSVCEnvironment>)>;
12561269
12571270//===----------------------------------------------------------------------===//
12581271// AMDGPU Runtime Libcalls
@@ -1500,6 +1513,7 @@ def ARMSystemLibrary
15001513 LibmHasFrexpF128, LibmHasLdexpF128,
15011514 WindowARMDivRemCalls,
15021515 WindowARMFPIntCasts,
1516+ SecurityCheckCookieIfWinMSVC,
15031517 AEABIDivRemCalls,
15041518 DarwinSinCosStret, DarwinExp10,
15051519 LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
@@ -2158,6 +2172,7 @@ defvar X86CommonLibcalls =
21582172 DefaultRuntimeLibcallImpls_f80,
21592173 LibmHasExp10F32, LibmHasExp10F64, LibmHasExp10F80,
21602174 LibcallImpls<(add MostPowI), isNotOSMSVCRT>,
2175+ SecurityCheckCookieIfWinMSVC,
21612176 // FIXME: MSVCRT doesn't have powi. The f128 case is added as a
21622177 // hack for one test relying on it.
21632178 __powitf2_f128,
0 commit comments