@@ -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()">;
@@ -705,12 +706,6 @@ foreach lc = LibCalls__atomic in {
705
706
def __#!tolower(!cast<string>(lc)) : RuntimeLibcallImpl<lc>;
706
707
}
707
708
708
- // Stack Protector Fail
709
- def __stack_chk_fail : RuntimeLibcallImpl<STACKPROTECTOR_CHECK_FAIL>;
710
-
711
- // Safe stack.
712
- def __safestack_pointer_address : RuntimeLibcallImpl<SAFESTACK_POINTER_ADDRESS>;
713
-
714
709
// Deoptimization
715
710
def __llvm_deoptimize : RuntimeLibcallImpl<DEOPTIMIZE>;
716
711
@@ -955,6 +950,12 @@ def exp10l_f80 : RuntimeLibcallImpl<EXP10_F80, "exp10l">;
955
950
def exp10l_f128 : RuntimeLibcallImpl<EXP10_F128, "exp10l">;
956
951
def exp10l_ppcf128 : RuntimeLibcallImpl<EXP10_PPCF128, "exp10l">;
957
952
953
+ // Stack Protector Fail
954
+ def __stack_chk_fail : RuntimeLibcallImpl<STACKPROTECTOR_CHECK_FAIL>;
955
+
956
+ // Safe stack.
957
+ def __safestack_pointer_address : RuntimeLibcallImpl<SAFESTACK_POINTER_ADDRESS>;
958
+
958
959
//--------------------------------------------------------------------
959
960
// compiler-rt/libgcc but 64-bit only, not available by default
960
961
//--------------------------------------------------------------------
@@ -1144,6 +1145,7 @@ defvar LibmHasLdexpF80 = LibcallImpls<(add ldexp_f80), isNotOSWindowsOrIsCygwinM
1144
1145
defvar LibmHasFrexpF128 = LibcallImpls<(add frexp_f128), isNotOSWindowsOrIsCygwinMinGW>;
1145
1146
defvar LibmHasLdexpF128 = LibcallImpls<(add ldexp_f128), isNotOSWindowsOrIsCygwinMinGW>;
1146
1147
1148
+ defvar has__stack_chk_fail = LibcallImpls<(add __stack_chk_fail), isNotOSOpenBSD>;
1147
1149
1148
1150
//===----------------------------------------------------------------------===//
1149
1151
// Objective-C Runtime Libcalls
@@ -1221,7 +1223,8 @@ def AArch64SystemLibrary : SystemRuntimeLibrary<
1221
1223
LibcallImpls<(add bzero), isOSDarwin>,
1222
1224
DarwinExp10, DarwinSinCosStret,
1223
1225
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
1224
- LibmHasExp10F32, LibmHasExp10F64, LibmHasExp10F128)
1226
+ LibmHasExp10F32, LibmHasExp10F64, LibmHasExp10F128,
1227
+ has__stack_chk_fail)
1225
1228
>;
1226
1229
1227
1230
// Prepend a # to every name
@@ -1237,7 +1240,7 @@ defset list<RuntimeLibcallImpl> WinArm64ECDefaultRuntimeLibcallImpls = {
1237
1240
1238
1241
def WindowsARM64ECSystemLibrary
1239
1242
: SystemRuntimeLibrary<isWindowsArm64EC,
1240
- (add WinArm64ECDefaultRuntimeLibcallImpls)>;
1243
+ (add WinArm64ECDefaultRuntimeLibcallImpls, __stack_chk_fail )>;
1241
1244
1242
1245
//===----------------------------------------------------------------------===//
1243
1246
// AMDGPU Runtime Libcalls
@@ -1497,7 +1500,8 @@ def ARMSystemLibrary
1497
1500
// Use divmod compiler-rt calls for iOS 5.0 and later.
1498
1501
LibcallImpls<(add __divmodsi4, __udivmodsi4),
1499
1502
RuntimeLibcallPredicate<[{TT.isOSBinFormatMachO() &&
1500
- (!TT.isiOS() || !TT.isOSVersionLT(5, 0))}]>>)> {
1503
+ (!TT.isiOS() || !TT.isOSVersionLT(5, 0))}]>>,
1504
+ has__stack_chk_fail)> {
1501
1505
let DefaultLibcallCallingConv = LibcallCallingConv<[{
1502
1506
(!TT.isOSDarwin() && !TT.isiOS() && !TT.isWatchOS() && !TT.isDriverKit()) ?
1503
1507
(FloatABI == FloatABI::Hard ? CallingConv::ARM_AAPCS_VFP
@@ -1608,7 +1612,7 @@ def HexagonSystemLibrary
1608
1612
__umoddi3, __divdf3, __muldf3, __divsi3, __subdf3, sqrtf,
1609
1613
__divdi3, __umodsi3, __moddi3, __modsi3), HexagonLibcalls,
1610
1614
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
1611
- exp10f, exp10, exp10l_f128)>;
1615
+ exp10f, exp10, exp10l_f128, __stack_chk_fail )>;
1612
1616
1613
1617
//===----------------------------------------------------------------------===//
1614
1618
// Lanai Runtime Libcalls
@@ -1618,7 +1622,8 @@ def isLanai : RuntimeLibcallPredicate<"TT.getArch() == Triple::lanai">;
1618
1622
1619
1623
// Use fast calling convention for library functions.
1620
1624
def LanaiSystemLibrary
1621
- : SystemRuntimeLibrary<isLanai, (add DefaultRuntimeLibcallImpls)> {
1625
+ : SystemRuntimeLibrary<isLanai, (add DefaultRuntimeLibcallImpls,
1626
+ __stack_chk_fail)> {
1622
1627
let DefaultLibcallCallingConv = FASTCC;
1623
1628
}
1624
1629
@@ -1910,8 +1915,10 @@ def MSP430SystemLibrary
1910
1915
// TODO: __mspabi_[srli/srai/slli] ARE implemented in libgcc
1911
1916
__mspabi_srll,
1912
1917
__mspabi_sral,
1913
- __mspabi_slll
1918
+ __mspabi_slll,
1914
1919
// __mspabi_[srlll/srall/sllll/rlli/rlll] are NOT implemented in libgcc
1920
+
1921
+ __stack_chk_fail
1915
1922
)
1916
1923
>;
1917
1924
@@ -2002,7 +2009,8 @@ def PPCSystemLibrary
2002
2009
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
2003
2010
LibmHasSinCosPPCF128,
2004
2011
AvailableIf<memcpy, isNotAIX>,
2005
- LibcallImpls<(add Int128RTLibcalls), isPPC64>)>;
2012
+ LibcallImpls<(add Int128RTLibcalls), isPPC64>,
2013
+ has__stack_chk_fail)>;
2006
2014
2007
2015
//===----------------------------------------------------------------------===//
2008
2016
// RISCV Runtime Libcalls
@@ -2016,7 +2024,8 @@ def RISCVSystemLibrary
2016
2024
(add DefaultRuntimeLibcallImpls,
2017
2025
exp10f, exp10, exp10l_f128,
2018
2026
__riscv_flush_icache,
2019
- LibcallImpls<(add Int128RTLibcalls), isRISCV64>)>;
2027
+ LibcallImpls<(add Int128RTLibcalls), isRISCV64>,
2028
+ has__stack_chk_fail)>;
2020
2029
2021
2030
//===----------------------------------------------------------------------===//
2022
2031
// SPARC Runtime Libcalls
@@ -2083,7 +2092,8 @@ def SPARCSystemLibrary
2083
2092
sparc_umul, sparc_div, sparc_udiv, sparc_rem, sparc_urem,
2084
2093
LibcallImpls<(add _Q_qtoll, _Q_qtoull, _Q_lltoq, _Q_ulltoq), isSPARC32>,
2085
2094
LibcallImpls<(add SPARC64_MulDivCalls, Int128RTLibcalls), isSPARC64>,
2086
- LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128)
2095
+ LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
2096
+ has__stack_chk_fail)
2087
2097
>;
2088
2098
2089
2099
//===----------------------------------------------------------------------===//
@@ -2143,7 +2153,8 @@ defvar X86CommonLibcalls =
2143
2153
LibcallImpls<(add MostPowI), isNotOSMSVCRT>,
2144
2154
// FIXME: MSVCRT doesn't have powi. The f128 case is added as a
2145
2155
// hack for one test relying on it.
2146
- __powitf2_f128
2156
+ __powitf2_f128,
2157
+ has__stack_chk_fail
2147
2158
);
2148
2159
2149
2160
defvar Windows32DivRemMulCalls =
@@ -2288,7 +2299,8 @@ def WasmSystemLibrary
2288
2299
(add DefaultRuntimeLibcallImpls, Int128RTLibcalls,
2289
2300
CompilerRTOnlyInt64Libcalls, CompilerRTOnlyInt128Libcalls,
2290
2301
exp10f, exp10,
2291
- emscripten_return_address)>;
2302
+ emscripten_return_address,
2303
+ __stack_chk_fail)>;
2292
2304
2293
2305
//===----------------------------------------------------------------------===//
2294
2306
// Legacy Default Runtime Libcalls
@@ -2310,5 +2322,6 @@ def LegacyDefaultSystemLibrary
2310
2322
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
2311
2323
exp10f, exp10, exp10l_f128,
2312
2324
__powisf2, __powidf2, __powitf2_f128,
2313
- LibcallImpls<(add Int128RTLibcalls), isArch64Bit>
2325
+ LibcallImpls<(add Int128RTLibcalls), isArch64Bit>,
2326
+ has__stack_chk_fail
2314
2327
)>;
0 commit comments