@@ -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
@@ -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
@@ -1976,7 +1980,8 @@ def PPCSystemLibrary
1976
1980
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
1977
1981
LibmHasSinCosPPCF128,
1978
1982
AvailableIf<memcpy, isNotAIX>,
1979
- LibcallImpls<(add Int128RTLibcalls), isPPC64>)>;
1983
+ LibcallImpls<(add Int128RTLibcalls), isPPC64>,
1984
+ has__stack_chk_fail)>;
1980
1985
1981
1986
//===----------------------------------------------------------------------===//
1982
1987
// RISCV Runtime Libcalls
@@ -1990,7 +1995,8 @@ def RISCVSystemLibrary
1990
1995
(add DefaultRuntimeLibcallImpls,
1991
1996
exp10f, exp10, exp10l_f128,
1992
1997
__riscv_flush_icache,
1993
- LibcallImpls<(add Int128RTLibcalls), isRISCV64>)>;
1998
+ LibcallImpls<(add Int128RTLibcalls), isRISCV64>,
1999
+ has__stack_chk_fail)>;
1994
2000
1995
2001
//===----------------------------------------------------------------------===//
1996
2002
// SPARC Runtime Libcalls
@@ -2057,7 +2063,8 @@ def SPARCSystemLibrary
2057
2063
sparc_umul, sparc_div, sparc_udiv, sparc_rem, sparc_urem,
2058
2064
LibcallImpls<(add _Q_qtoll, _Q_qtoull, _Q_lltoq, _Q_ulltoq), isSPARC32>,
2059
2065
LibcallImpls<(add SPARC64_MulDivCalls, Int128RTLibcalls), isSPARC64>,
2060
- LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128)
2066
+ LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
2067
+ has__stack_chk_fail)
2061
2068
>;
2062
2069
2063
2070
//===----------------------------------------------------------------------===//
@@ -2106,7 +2113,8 @@ defvar X86CommonLibcalls =
2106
2113
LibcallImpls<(add MostPowI), isNotOSMSVCRT>,
2107
2114
// FIXME: MSVCRT doesn't have powi. The f128 case is added as a
2108
2115
// hack for one test relying on it.
2109
- __powitf2_f128
2116
+ __powitf2_f128,
2117
+ has__stack_chk_fail
2110
2118
);
2111
2119
2112
2120
defvar Windows32DivRemMulCalls =
@@ -2251,7 +2259,8 @@ def WasmSystemLibrary
2251
2259
(add DefaultRuntimeLibcallImpls, Int128RTLibcalls,
2252
2260
CompilerRTOnlyInt64Libcalls, CompilerRTOnlyInt128Libcalls,
2253
2261
exp10f, exp10,
2254
- emscripten_return_address)>;
2262
+ emscripten_return_address,
2263
+ __stack_chk_fail)>;
2255
2264
2256
2265
//===----------------------------------------------------------------------===//
2257
2266
// Legacy Default Runtime Libcalls
@@ -2274,5 +2283,6 @@ def LegacyDefaultSystemLibrary
2274
2283
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
2275
2284
exp10f, exp10, exp10l_f128,
2276
2285
__powisf2, __powidf2, __powitf2_f128,
2277
- LibcallImpls<(add Int128RTLibcalls), isArch64Bit>
2286
+ LibcallImpls<(add Int128RTLibcalls), isArch64Bit>,
2287
+ has__stack_chk_fail
2278
2288
)>;
0 commit comments