@@ -18,6 +18,7 @@ class DuplicateLibcallImplWithPrefix<RuntimeLibcallImpl Impl, string prefix>
1818/// Libcall Predicates
1919def isOSDarwin : RuntimeLibcallPredicate<"TT.isOSDarwin()">;
2020def isOSOpenBSD : RuntimeLibcallPredicate<"TT.isOSOpenBSD()">;
21+ def isNotOSOpenBSD : RuntimeLibcallPredicate<"!TT.isOSOpenBSD()">;
2122def isOSWindows : RuntimeLibcallPredicate<"TT.isOSWindows()">;
2223def isNotOSWindows : RuntimeLibcallPredicate<"!TT.isOSWindows()">;
2324def isNotOSMSVCRT : RuntimeLibcallPredicate<"!TT.isOSMSVCRT()">;
@@ -698,9 +699,6 @@ foreach lc = LibCalls__atomic in {
698699 def __#!tolower(!cast<string>(lc)) : RuntimeLibcallImpl<lc>;
699700}
700701
701- // Stack Protector Fail
702- def __stack_chk_fail : RuntimeLibcallImpl<STACKPROTECTOR_CHECK_FAIL>;
703-
704702// Deoptimization
705703def __llvm_deoptimize : RuntimeLibcallImpl<DEOPTIMIZE>;
706704
@@ -945,6 +943,9 @@ def exp10l_f80 : RuntimeLibcallImpl<EXP10_F80, "exp10l">;
945943def exp10l_f128 : RuntimeLibcallImpl<EXP10_F128, "exp10l">;
946944def exp10l_ppcf128 : RuntimeLibcallImpl<EXP10_PPCF128, "exp10l">;
947945
946+ // Stack Protector Fail
947+ def __stack_chk_fail : RuntimeLibcallImpl<STACKPROTECTOR_CHECK_FAIL>;
948+
948949//--------------------------------------------------------------------
949950// compiler-rt/libgcc but 64-bit only, not available by default
950951//--------------------------------------------------------------------
@@ -1128,6 +1129,7 @@ defvar LibmHasLdexpF80 = LibcallImpls<(add ldexp_f80), isNotOSWindowsOrIsCygwinM
11281129defvar LibmHasFrexpF128 = LibcallImpls<(add frexp_f128), isNotOSWindowsOrIsCygwinMinGW>;
11291130defvar LibmHasLdexpF128 = LibcallImpls<(add ldexp_f128), isNotOSWindowsOrIsCygwinMinGW>;
11301131
1132+ defvar has__stack_chk_fail = LibcallImpls<(add __stack_chk_fail), isNotOSOpenBSD>;
11311133
11321134//===----------------------------------------------------------------------===//
11331135// Objective-C Runtime Libcalls
@@ -1205,7 +1207,8 @@ def AArch64SystemLibrary : SystemRuntimeLibrary<
12051207 LibcallImpls<(add bzero), isOSDarwin>,
12061208 DarwinExp10, DarwinSinCosStret,
12071209 LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
1208- LibmHasExp10F32, LibmHasExp10F64, LibmHasExp10F128)
1210+ LibmHasExp10F32, LibmHasExp10F64, LibmHasExp10F128,
1211+ has__stack_chk_fail)
12091212>;
12101213
12111214// Prepend a # to every name
@@ -1221,7 +1224,7 @@ defset list<RuntimeLibcallImpl> WinArm64ECDefaultRuntimeLibcallImpls = {
12211224
12221225def WindowsARM64ECSystemLibrary
12231226 : SystemRuntimeLibrary<isWindowsArm64EC,
1224- (add WinArm64ECDefaultRuntimeLibcallImpls)>;
1227+ (add WinArm64ECDefaultRuntimeLibcallImpls, __stack_chk_fail )>;
12251228
12261229//===----------------------------------------------------------------------===//
12271230// AMDGPU Runtime Libcalls
@@ -1481,7 +1484,8 @@ def ARMSystemLibrary
14811484 // Use divmod compiler-rt calls for iOS 5.0 and later.
14821485 LibcallImpls<(add __divmodsi4, __udivmodsi4),
14831486 RuntimeLibcallPredicate<[{TT.isOSBinFormatMachO() &&
1484- (!TT.isiOS() || !TT.isOSVersionLT(5, 0))}]>>)> {
1487+ (!TT.isiOS() || !TT.isOSVersionLT(5, 0))}]>>,
1488+ has__stack_chk_fail)> {
14851489 let DefaultLibcallCallingConv = LibcallCallingConv<[{
14861490 (!TT.isOSDarwin() && !TT.isiOS() && !TT.isWatchOS() && !TT.isDriverKit()) ?
14871491 (FloatABI == FloatABI::Hard ? CallingConv::ARM_AAPCS_VFP
@@ -1583,7 +1587,7 @@ def HexagonSystemLibrary
15831587 __umoddi3, __divdf3, __muldf3, __divsi3, __subdf3, sqrtf,
15841588 __divdi3, __umodsi3, __moddi3, __modsi3), HexagonLibcalls,
15851589 LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
1586- exp10f, exp10, exp10l_f128)>;
1590+ exp10f, exp10, exp10l_f128, __stack_chk_fail )>;
15871591
15881592//===----------------------------------------------------------------------===//
15891593// Lanai Runtime Libcalls
@@ -1593,7 +1597,8 @@ def isLanai : RuntimeLibcallPredicate<"TT.getArch() == Triple::lanai">;
15931597
15941598// Use fast calling convention for library functions.
15951599def LanaiSystemLibrary
1596- : SystemRuntimeLibrary<isLanai, (add DefaultRuntimeLibcallImpls)> {
1600+ : SystemRuntimeLibrary<isLanai, (add DefaultRuntimeLibcallImpls,
1601+ __stack_chk_fail)> {
15971602 let DefaultLibcallCallingConv = FASTCC;
15981603}
15991604
@@ -1884,8 +1889,10 @@ def MSP430SystemLibrary
18841889 // TODO: __mspabi_[srli/srai/slli] ARE implemented in libgcc
18851890 __mspabi_srll,
18861891 __mspabi_sral,
1887- __mspabi_slll
1892+ __mspabi_slll,
18881893 // __mspabi_[srlll/srall/sllll/rlli/rlll] are NOT implemented in libgcc
1894+
1895+ __stack_chk_fail
18891896 )
18901897>;
18911898
@@ -1976,7 +1983,8 @@ def PPCSystemLibrary
19761983 LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
19771984 LibmHasSinCosPPCF128,
19781985 AvailableIf<memcpy, isNotAIX>,
1979- LibcallImpls<(add Int128RTLibcalls), isPPC64>)>;
1986+ LibcallImpls<(add Int128RTLibcalls), isPPC64>,
1987+ has__stack_chk_fail)>;
19801988
19811989//===----------------------------------------------------------------------===//
19821990// RISCV Runtime Libcalls
@@ -1990,7 +1998,8 @@ def RISCVSystemLibrary
19901998 (add DefaultRuntimeLibcallImpls,
19911999 exp10f, exp10, exp10l_f128,
19922000 __riscv_flush_icache,
1993- LibcallImpls<(add Int128RTLibcalls), isRISCV64>)>;
2001+ LibcallImpls<(add Int128RTLibcalls), isRISCV64>,
2002+ has__stack_chk_fail)>;
19942003
19952004//===----------------------------------------------------------------------===//
19962005// SPARC Runtime Libcalls
@@ -2057,7 +2066,8 @@ def SPARCSystemLibrary
20572066 sparc_umul, sparc_div, sparc_udiv, sparc_rem, sparc_urem,
20582067 LibcallImpls<(add _Q_qtoll, _Q_qtoull, _Q_lltoq, _Q_ulltoq), isSPARC32>,
20592068 LibcallImpls<(add SPARC64_MulDivCalls, Int128RTLibcalls), isSPARC64>,
2060- LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128)
2069+ LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
2070+ has__stack_chk_fail)
20612071>;
20622072
20632073//===----------------------------------------------------------------------===//
@@ -2106,7 +2116,8 @@ defvar X86CommonLibcalls =
21062116 LibcallImpls<(add MostPowI), isNotOSMSVCRT>,
21072117 // FIXME: MSVCRT doesn't have powi. The f128 case is added as a
21082118 // hack for one test relying on it.
2109- __powitf2_f128
2119+ __powitf2_f128,
2120+ has__stack_chk_fail
21102121);
21112122
21122123defvar Windows32DivRemMulCalls =
@@ -2251,7 +2262,8 @@ def WasmSystemLibrary
22512262 (add DefaultRuntimeLibcallImpls, Int128RTLibcalls,
22522263 CompilerRTOnlyInt64Libcalls, CompilerRTOnlyInt128Libcalls,
22532264 exp10f, exp10,
2254- emscripten_return_address)>;
2265+ emscripten_return_address,
2266+ __stack_chk_fail)>;
22552267
22562268//===----------------------------------------------------------------------===//
22572269// Legacy Default Runtime Libcalls
@@ -2274,5 +2286,6 @@ def LegacyDefaultSystemLibrary
22742286 LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
22752287 exp10f, exp10, exp10l_f128,
22762288 __powisf2, __powidf2, __powitf2_f128,
2277- LibcallImpls<(add Int128RTLibcalls), isArch64Bit>
2289+ LibcallImpls<(add Int128RTLibcalls), isArch64Bit>,
2290+ has__stack_chk_fail
22782291)>;
0 commit comments