@@ -32,6 +32,15 @@ def isWindowsMSVCEnvironment : RuntimeLibcallPredicate<
3232def isNotOSLinuxAndNotOSOpenBSD : RuntimeLibcallPredicate<
3333 [{!TT.isOSLinux() && !TT.isOSOpenBSD()}]>;
3434
35+ def isNotOSAIXAndNotOSOpenBSD : RuntimeLibcallPredicate<
36+ [{!TT.isOSAIX() && !TT.isOSOpenBSD()}]>;
37+
38+ // OpenBSD uses __guard_local. AIX uses __ssp_canary_word, MSVC/Windows
39+ // Itanium uses __security_cookie
40+ def hasStackChkFail : RuntimeLibcallPredicate<
41+ [{ !TT.isOSOpenBSD() && !TT.isWindowsMSVCEnvironment() &&
42+ !TT.isWindowsItaniumEnvironment()}]>;
43+
3544def isWindowsMSVCOrItaniumEnvironment : RuntimeLibcallPredicate<
3645 [{TT.isWindowsMSVCEnvironment() || TT.isWindowsItaniumEnvironment()}]>;
3746
@@ -1241,9 +1250,9 @@ defvar LibmHasLdexpF80 = LibcallImpls<(add ldexpl_f80), isNotOSWindowsOrIsCygwin
12411250defvar LibmHasFrexpF128 = LibcallImpls<(add frexpl_f128), isNotOSWindowsOrIsCygwinMinGW>;
12421251defvar LibmHasLdexpF128 = LibcallImpls<(add ldexpl_f128), isNotOSWindowsOrIsCygwinMinGW>;
12431252
1244- defvar has__stack_chk_fail = LibcallImpls<(add __stack_chk_fail), isNotOSOpenBSD >;
1253+ defvar has__stack_chk_fail = LibcallImpls<(add __stack_chk_fail), hasStackChkFail >;
12451254defvar has__stack_chk_guard =
1246- LibcallImpls<(add __stack_chk_guard), isNotOSOpenBSD >;
1255+ LibcallImpls<(add __stack_chk_guard), hasStackChkFail >;
12471256defvar has__stack_smash_handler = LibcallImpls<(add __stack_smash_handler), isOSOpenBSD>;
12481257defvar has___guard_local = LibcallImpls<(add __guard_local), isOSOpenBSD>;
12491258
@@ -1396,8 +1405,8 @@ defvar ExceptionModelCallsArm64EC = (add
13961405def WindowsARM64ECSystemLibrary
13971406 : SystemRuntimeLibrary<isWindowsArm64EC,
13981407 (add WinArm64ECDefaultRuntimeLibcallImpls,
1399- arm64ec___stack_chk_fail,
1400- __stack_chk_guard,
1408+ AvailableIf< arm64ec___stack_chk_fail, hasStackChkFail> ,
1409+ AvailableIf< __stack_chk_guard, hasStackChkFail> ,
14011410 LibcallImpls<(add __security_check_cookie_arm64ec,
14021411 __security_cookie),
14031412 isWindowsMSVCEnvironment>,
@@ -2316,11 +2325,11 @@ def PPCSystemLibrary
23162325 LibmHasSinCosPPCF128,
23172326 AvailableIf<memcpy, isNotAIX>,
23182327 LibcallImpls<(add Int128RTLibcalls), isPPC64>,
2319- has__stack_chk_fail,
23202328 has__stack_smash_handler,
23212329 has___guard_local,
23222330 AvailableIf<__ssp_canary_word, isAIX>,
2323- AvailableIf<__stack_chk_guard, isNotAIX>)>;
2331+ AvailableIf<__stack_chk_fail, isNotOSOpenBSD>,
2332+ AvailableIf<__stack_chk_guard, isNotOSAIXAndNotOSOpenBSD>)>;
23242333
23252334//===----------------------------------------------------------------------===//
23262335// RISCV Runtime Libcalls
0 commit comments