@@ -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,9 +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
709
// Safe stack.
712
710
def __safestack_pointer_address : RuntimeLibcallImpl<SAFESTACK_POINTER_ADDRESS>;
713
711
@@ -955,6 +953,9 @@ def exp10l_f80 : RuntimeLibcallImpl<EXP10_F80, "exp10l">;
955
953
def exp10l_f128 : RuntimeLibcallImpl<EXP10_F128, "exp10l">;
956
954
def exp10l_ppcf128 : RuntimeLibcallImpl<EXP10_PPCF128, "exp10l">;
957
955
956
+ // Stack Protector Fail
957
+ def __stack_chk_fail : RuntimeLibcallImpl<STACKPROTECTOR_CHECK_FAIL>;
958
+
958
959
//--------------------------------------------------------------------
959
960
// compiler-rt/libgcc but 64-bit only, not available by default
960
961
//--------------------------------------------------------------------
@@ -1149,6 +1150,8 @@ defvar LibmHasLdexpF80 = LibcallImpls<(add ldexp_f80), isNotOSWindowsOrIsCygwinM
1149
1150
defvar LibmHasFrexpF128 = LibcallImpls<(add frexp_f128), isNotOSWindowsOrIsCygwinMinGW>;
1150
1151
defvar LibmHasLdexpF128 = LibcallImpls<(add ldexp_f128), isNotOSWindowsOrIsCygwinMinGW>;
1151
1152
1153
+ defvar has__stack_chk_fail = LibcallImpls<(add __stack_chk_fail), isNotOSOpenBSD>;
1154
+
1152
1155
//===----------------------------------------------------------------------===//
1153
1156
// Objective-C Runtime Libcalls
1154
1157
//===----------------------------------------------------------------------===//
@@ -1225,7 +1228,8 @@ def AArch64SystemLibrary : SystemRuntimeLibrary<
1225
1228
LibcallImpls<(add bzero), isOSDarwin>,
1226
1229
DarwinExp10, DarwinSinCosStret,
1227
1230
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
1228
- DefaultLibmExp10)
1231
+ DefaultLibmExp10,
1232
+ has__stack_chk_fail)
1229
1233
>;
1230
1234
1231
1235
// Prepend a # to every name
@@ -1241,7 +1245,7 @@ defset list<RuntimeLibcallImpl> WinArm64ECDefaultRuntimeLibcallImpls = {
1241
1245
1242
1246
def WindowsARM64ECSystemLibrary
1243
1247
: SystemRuntimeLibrary<isWindowsArm64EC,
1244
- (add WinArm64ECDefaultRuntimeLibcallImpls)>;
1248
+ (add WinArm64ECDefaultRuntimeLibcallImpls, __stack_chk_fail )>;
1245
1249
1246
1250
//===----------------------------------------------------------------------===//
1247
1251
// AMDGPU Runtime Libcalls
@@ -1501,7 +1505,8 @@ def ARMSystemLibrary
1501
1505
// Use divmod compiler-rt calls for iOS 5.0 and later.
1502
1506
LibcallImpls<(add __divmodsi4, __udivmodsi4),
1503
1507
RuntimeLibcallPredicate<[{TT.isOSBinFormatMachO() &&
1504
- (!TT.isiOS() || !TT.isOSVersionLT(5, 0))}]>>)> {
1508
+ (!TT.isiOS() || !TT.isOSVersionLT(5, 0))}]>>,
1509
+ has__stack_chk_fail)> {
1505
1510
let DefaultLibcallCallingConv = LibcallCallingConv<[{
1506
1511
(!TT.isOSDarwin() && !TT.isiOS() && !TT.isWatchOS() && !TT.isDriverKit()) ?
1507
1512
(FloatABI == FloatABI::Hard ? CallingConv::ARM_AAPCS_VFP
@@ -1612,7 +1617,7 @@ def HexagonSystemLibrary
1612
1617
__umoddi3, __divdf3, __muldf3, __divsi3, __subdf3, sqrtf,
1613
1618
__divdi3, __umodsi3, __moddi3, __modsi3), HexagonLibcalls,
1614
1619
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
1615
- exp10f, exp10, exp10l_f128)>;
1620
+ exp10f, exp10, exp10l_f128, __stack_chk_fail )>;
1616
1621
1617
1622
//===----------------------------------------------------------------------===//
1618
1623
// Lanai Runtime Libcalls
@@ -1622,7 +1627,8 @@ def isLanai : RuntimeLibcallPredicate<"TT.getArch() == Triple::lanai">;
1622
1627
1623
1628
// Use fast calling convention for library functions.
1624
1629
def LanaiSystemLibrary
1625
- : SystemRuntimeLibrary<isLanai, (add DefaultRuntimeLibcallImpls)> {
1630
+ : SystemRuntimeLibrary<isLanai, (add DefaultRuntimeLibcallImpls,
1631
+ __stack_chk_fail)> {
1626
1632
let DefaultLibcallCallingConv = FASTCC;
1627
1633
}
1628
1634
@@ -1914,8 +1920,10 @@ def MSP430SystemLibrary
1914
1920
// TODO: __mspabi_[srli/srai/slli] ARE implemented in libgcc
1915
1921
__mspabi_srll,
1916
1922
__mspabi_sral,
1917
- __mspabi_slll
1923
+ __mspabi_slll,
1918
1924
// __mspabi_[srlll/srall/sllll/rlli/rlll] are NOT implemented in libgcc
1925
+
1926
+ __stack_chk_fail
1919
1927
)
1920
1928
>;
1921
1929
@@ -2006,7 +2014,8 @@ def PPCSystemLibrary
2006
2014
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
2007
2015
LibmHasSinCosPPCF128,
2008
2016
AvailableIf<memcpy, isNotAIX>,
2009
- LibcallImpls<(add Int128RTLibcalls), isPPC64>)>;
2017
+ LibcallImpls<(add Int128RTLibcalls), isPPC64>,
2018
+ has__stack_chk_fail)>;
2010
2019
2011
2020
//===----------------------------------------------------------------------===//
2012
2021
// RISCV Runtime Libcalls
@@ -2020,7 +2029,8 @@ def RISCVSystemLibrary
2020
2029
(add DefaultRuntimeLibcallImpls,
2021
2030
exp10f, exp10, exp10l_f128,
2022
2031
__riscv_flush_icache,
2023
- LibcallImpls<(add Int128RTLibcalls), isRISCV64>)>;
2032
+ LibcallImpls<(add Int128RTLibcalls), isRISCV64>,
2033
+ has__stack_chk_fail)>;
2024
2034
2025
2035
//===----------------------------------------------------------------------===//
2026
2036
// SPARC Runtime Libcalls
@@ -2087,7 +2097,8 @@ def SPARCSystemLibrary
2087
2097
sparc_umul, sparc_div, sparc_udiv, sparc_rem, sparc_urem,
2088
2098
LibcallImpls<(add _Q_qtoll, _Q_qtoull, _Q_lltoq, _Q_ulltoq), isSPARC32>,
2089
2099
LibcallImpls<(add SPARC64_MulDivCalls, Int128RTLibcalls), isSPARC64>,
2090
- LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128)
2100
+ LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
2101
+ has__stack_chk_fail)
2091
2102
>;
2092
2103
2093
2104
//===----------------------------------------------------------------------===//
@@ -2147,7 +2158,8 @@ defvar X86CommonLibcalls =
2147
2158
LibcallImpls<(add MostPowI), isNotOSMSVCRT>,
2148
2159
// FIXME: MSVCRT doesn't have powi. The f128 case is added as a
2149
2160
// hack for one test relying on it.
2150
- __powitf2_f128
2161
+ __powitf2_f128,
2162
+ has__stack_chk_fail
2151
2163
);
2152
2164
2153
2165
defvar Windows32DivRemMulCalls =
@@ -2292,7 +2304,8 @@ def WasmSystemLibrary
2292
2304
(add DefaultRuntimeLibcallImpls, Int128RTLibcalls,
2293
2305
CompilerRTOnlyInt64Libcalls, CompilerRTOnlyInt128Libcalls,
2294
2306
exp10f, exp10,
2295
- emscripten_return_address)>;
2307
+ emscripten_return_address,
2308
+ __stack_chk_fail)>;
2296
2309
2297
2310
//===----------------------------------------------------------------------===//
2298
2311
// Legacy Default Runtime Libcalls
@@ -2314,5 +2327,6 @@ def LegacyDefaultSystemLibrary
2314
2327
LibmHasSinCosF32, LibmHasSinCosF64, LibmHasSinCosF128,
2315
2328
exp10f, exp10, exp10l_f128,
2316
2329
__powisf2, __powidf2, __powitf2_f128,
2317
- LibcallImpls<(add Int128RTLibcalls), isArch64Bit>
2330
+ LibcallImpls<(add Int128RTLibcalls), isArch64Bit>,
2331
+ has__stack_chk_fail
2318
2332
)>;
0 commit comments