@@ -18,6 +18,7 @@ class DuplicateLibcallImplWithPrefix<RuntimeLibcallImpl Impl, string prefix>
18
18
/// Libcall Predicates
19
19
def isOSDarwin : RuntimeLibcallPredicate<"TT.isOSDarwin()">;
20
20
def isOSOpenBSD : RuntimeLibcallPredicate<"TT.isOSOpenBSD()">;
21
+ def isNotOSOpenBSD : RuntimeLibcallPredicate<"!TT.isOSOpenBSD()">;
21
22
def isOSWindows : RuntimeLibcallPredicate<"TT.isOSWindows()">;
22
23
def isNotOSWindows : RuntimeLibcallPredicate<"!TT.isOSWindows()">;
23
24
def isNotOSMSVCRT : RuntimeLibcallPredicate<"!TT.isOSMSVCRT()">;
@@ -698,9 +699,6 @@ foreach lc = LibCalls__atomic in {
698
699
def __#!tolower(!cast<string>(lc)) : RuntimeLibcallImpl<lc>;
699
700
}
700
701
701
- // Stack Protector Fail
702
- def __stack_chk_fail : RuntimeLibcallImpl<STACKPROTECTOR_CHECK_FAIL>;
703
-
704
702
// Deoptimization
705
703
def __llvm_deoptimize : RuntimeLibcallImpl<DEOPTIMIZE>;
706
704
@@ -945,6 +943,9 @@ def exp10l_f80 : RuntimeLibcallImpl<EXP10_F80, "exp10l">;
945
943
def exp10l_f128 : RuntimeLibcallImpl<EXP10_F128, "exp10l">;
946
944
def exp10l_ppcf128 : RuntimeLibcallImpl<EXP10_PPCF128, "exp10l">;
947
945
946
+ // Stack Protector Fail
947
+ def __stack_chk_fail : RuntimeLibcallImpl<STACKPROTECTOR_CHECK_FAIL>;
948
+
948
949
//--------------------------------------------------------------------
949
950
// compiler-rt/libgcc but 64-bit only, not available by default
950
951
//--------------------------------------------------------------------
@@ -1128,6 +1129,7 @@ defvar LibmHasLdexpF80 = LibcallImpls<(add ldexp_f80), isNotOSWindowsOrIsCygwinM
1128
1129
defvar LibmHasFrexpF128 = LibcallImpls<(add frexp_f128), isNotOSWindowsOrIsCygwinMinGW>;
1129
1130
defvar LibmHasLdexpF128 = LibcallImpls<(add ldexp_f128), isNotOSWindowsOrIsCygwinMinGW>;
1130
1131
1132
+ defvar has__stack_chk_fail = LibcallImpls<(add __stack_chk_fail), isNotOSOpenBSD>;
1131
1133
1132
1134
//===----------------------------------------------------------------------===//
1133
1135
// Objective-C Runtime Libcalls
@@ -1205,7 +1207,8 @@ def AArch64SystemLibrary : SystemRuntimeLibrary<
1205
1207
LibcallImpls<(add bzero), isOSDarwin>,
1206
1208
DarwinExp10, DarwinSinCosStret,
1207
1209
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
1208
- LibmHasExp10F32, LibmHasExp10F64, LibmHasExp10F128)
1210
+ LibmHasExp10F32, LibmHasExp10F64, LibmHasExp10F128,
1211
+ has__stack_chk_fail)
1209
1212
>;
1210
1213
1211
1214
// Prepend a # to every name
@@ -1221,7 +1224,7 @@ defset list<RuntimeLibcallImpl> WinArm64ECDefaultRuntimeLibcallImpls = {
1221
1224
1222
1225
def WindowsARM64ECSystemLibrary
1223
1226
: SystemRuntimeLibrary<isWindowsArm64EC,
1224
- (add WinArm64ECDefaultRuntimeLibcallImpls)>;
1227
+ (add WinArm64ECDefaultRuntimeLibcallImpls, __stack_chk_fail )>;
1225
1228
1226
1229
//===----------------------------------------------------------------------===//
1227
1230
// AMDGPU Runtime Libcalls
@@ -1481,7 +1484,8 @@ def ARMSystemLibrary
1481
1484
// Use divmod compiler-rt calls for iOS 5.0 and later.
1482
1485
LibcallImpls<(add __divmodsi4, __udivmodsi4),
1483
1486
RuntimeLibcallPredicate<[{TT.isOSBinFormatMachO() &&
1484
- (!TT.isiOS() || !TT.isOSVersionLT(5, 0))}]>>)> {
1487
+ (!TT.isiOS() || !TT.isOSVersionLT(5, 0))}]>>,
1488
+ has__stack_chk_fail)> {
1485
1489
let DefaultLibcallCallingConv = LibcallCallingConv<[{
1486
1490
(!TT.isOSDarwin() && !TT.isiOS() && !TT.isWatchOS() && !TT.isDriverKit()) ?
1487
1491
(FloatABI == FloatABI::Hard ? CallingConv::ARM_AAPCS_VFP
@@ -1583,7 +1587,7 @@ def HexagonSystemLibrary
1583
1587
__umoddi3, __divdf3, __muldf3, __divsi3, __subdf3, sqrtf,
1584
1588
__divdi3, __umodsi3, __moddi3, __modsi3), HexagonLibcalls,
1585
1589
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
1586
- exp10f, exp10, exp10l_f128)>;
1590
+ exp10f, exp10, exp10l_f128, __stack_chk_fail )>;
1587
1591
1588
1592
//===----------------------------------------------------------------------===//
1589
1593
// Lanai Runtime Libcalls
@@ -1593,7 +1597,8 @@ def isLanai : RuntimeLibcallPredicate<"TT.getArch() == Triple::lanai">;
1593
1597
1594
1598
// Use fast calling convention for library functions.
1595
1599
def LanaiSystemLibrary
1596
- : SystemRuntimeLibrary<isLanai, (add DefaultRuntimeLibcallImpls)> {
1600
+ : SystemRuntimeLibrary<isLanai, (add DefaultRuntimeLibcallImpls,
1601
+ __stack_chk_fail)> {
1597
1602
let DefaultLibcallCallingConv = FASTCC;
1598
1603
}
1599
1604
@@ -1884,8 +1889,10 @@ def MSP430SystemLibrary
1884
1889
// TODO: __mspabi_[srli/srai/slli] ARE implemented in libgcc
1885
1890
__mspabi_srll,
1886
1891
__mspabi_sral,
1887
- __mspabi_slll
1892
+ __mspabi_slll,
1888
1893
// __mspabi_[srlll/srall/sllll/rlli/rlll] are NOT implemented in libgcc
1894
+
1895
+ __stack_chk_fail
1889
1896
)
1890
1897
>;
1891
1898
@@ -1976,7 +1983,8 @@ def PPCSystemLibrary
1976
1983
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
1977
1984
LibmHasSinCosPPCF128,
1978
1985
AvailableIf<memcpy, isNotAIX>,
1979
- LibcallImpls<(add Int128RTLibcalls), isPPC64>)>;
1986
+ LibcallImpls<(add Int128RTLibcalls), isPPC64>,
1987
+ has__stack_chk_fail)>;
1980
1988
1981
1989
//===----------------------------------------------------------------------===//
1982
1990
// RISCV Runtime Libcalls
@@ -1990,7 +1998,8 @@ def RISCVSystemLibrary
1990
1998
(add DefaultRuntimeLibcallImpls,
1991
1999
exp10f, exp10, exp10l_f128,
1992
2000
__riscv_flush_icache,
1993
- LibcallImpls<(add Int128RTLibcalls), isRISCV64>)>;
2001
+ LibcallImpls<(add Int128RTLibcalls), isRISCV64>,
2002
+ has__stack_chk_fail)>;
1994
2003
1995
2004
//===----------------------------------------------------------------------===//
1996
2005
// SPARC Runtime Libcalls
@@ -2057,7 +2066,8 @@ def SPARCSystemLibrary
2057
2066
sparc_umul, sparc_div, sparc_udiv, sparc_rem, sparc_urem,
2058
2067
LibcallImpls<(add _Q_qtoll, _Q_qtoull, _Q_lltoq, _Q_ulltoq), isSPARC32>,
2059
2068
LibcallImpls<(add SPARC64_MulDivCalls, Int128RTLibcalls), isSPARC64>,
2060
- LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128)
2069
+ LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
2070
+ has__stack_chk_fail)
2061
2071
>;
2062
2072
2063
2073
//===----------------------------------------------------------------------===//
@@ -2106,7 +2116,8 @@ defvar X86CommonLibcalls =
2106
2116
LibcallImpls<(add MostPowI), isNotOSMSVCRT>,
2107
2117
// FIXME: MSVCRT doesn't have powi. The f128 case is added as a
2108
2118
// hack for one test relying on it.
2109
- __powitf2_f128
2119
+ __powitf2_f128,
2120
+ has__stack_chk_fail
2110
2121
);
2111
2122
2112
2123
defvar Windows32DivRemMulCalls =
@@ -2251,7 +2262,8 @@ def WasmSystemLibrary
2251
2262
(add DefaultRuntimeLibcallImpls, Int128RTLibcalls,
2252
2263
CompilerRTOnlyInt64Libcalls, CompilerRTOnlyInt128Libcalls,
2253
2264
exp10f, exp10,
2254
- emscripten_return_address)>;
2265
+ emscripten_return_address,
2266
+ __stack_chk_fail)>;
2255
2267
2256
2268
//===----------------------------------------------------------------------===//
2257
2269
// Legacy Default Runtime Libcalls
@@ -2274,5 +2286,6 @@ def LegacyDefaultSystemLibrary
2274
2286
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
2275
2287
exp10f, exp10, exp10l_f128,
2276
2288
__powisf2, __powidf2, __powitf2_f128,
2277
- LibcallImpls<(add Int128RTLibcalls), isArch64Bit>
2289
+ LibcallImpls<(add Int128RTLibcalls), isArch64Bit>,
2290
+ has__stack_chk_fail
2278
2291
)>;
0 commit comments