File tree Expand file tree Collapse file tree 17 files changed +60
-5
lines changed
Expand file tree Collapse file tree 17 files changed +60
-5
lines changed Original file line number Diff line number Diff line change @@ -313,7 +313,7 @@ set(x86_80_BIT_SOURCES
313313 truncxfhf2.c
314314)
315315
316- if (NOT MSVC )
316+ if (NOT CMAKE_ASM_COMPILER_ID MATCHES " MSVC" )
317317 set (x86_64_SOURCES
318318 ${GENERIC_SOURCES}
319319 ${GENERIC_TF_SOURCES}
@@ -329,7 +329,7 @@ if (NOT MSVC)
329329 )
330330 endif ()
331331
332- if (NOT ANDROID)
332+ if (NOT ANDROID AND NOT MSVC )
333333 set (x86_64_SOURCES
334334 ${x86_64_SOURCES}
335335 ${x86_80_BIT_SOURCES}
@@ -370,7 +370,7 @@ if (NOT MSVC)
370370 i386/umoddi3.S
371371 )
372372
373- if (NOT ANDROID)
373+ if (NOT ANDROID AND NOT MSVC )
374374 set (i386_SOURCES
375375 ${i386_SOURCES}
376376 ${x86_80_BIT_SOURCES}
@@ -385,7 +385,7 @@ if (NOT MSVC)
385385 i386/chkstk.S
386386 )
387387 endif ()
388- else () # MSVC
388+ else () # MSVC assembler
389389 # Use C versions of functions when building on MSVC
390390 # MSVC's assembler takes Intel syntax, not AT&T syntax.
391391 # Also use only MSVC compilable builtin implementations.
@@ -396,7 +396,13 @@ else () # MSVC
396396 x86_64/floatdisf.c
397397 )
398398 set (i386_SOURCES ${GENERIC_SOURCES} ${x86_ARCH_SOURCES} )
399- endif () # if (NOT MSVC)
399+ endif ()
400+
401+ if (MSVC )
402+ set_source_files_properties (
403+ ${x86_64_SOURCES} ${i386_SOURCES}
404+ PROPERTIES COMPILE_FLAGS "/GS- /Zl" )
405+ endif ()
400406
401407
402408# builtin support for Targets that have Arm state or have Thumb2
Original file line number Diff line number Diff line change 33// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
44
55#include "../assembly.h"
6+ #include "safeseh.h"
67
78// di_int __ashldi3(di_int input, int count);
89
1718#ifdef __SSE2__
1819
1920.text
21+ WIN32_SAFE_SEH_HEADER
2022.balign 4
2123DEFINE_COMPILERRT_FUNCTION(__ashldi3)
2224 movd 12 (%esp ), %xmm2 // Load count
@@ -37,6 +39,7 @@ END_COMPILERRT_FUNCTION(__ashldi3)
3739#else // Use GPRs instead of SSE2 instructions, if they aren't available.
3840
3941.text
42+ WIN32_SAFE_SEH_HEADER
4043.balign 4
4144DEFINE_COMPILERRT_FUNCTION(__ashldi3)
4245 movl 12 (%esp ), %ecx // Load count
Original file line number Diff line number Diff line change 33// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
44
55#include "../assembly.h"
6+ #include "safeseh.h"
67
78// di_int __ashrdi3(di_int input, int count);
89
910#ifdef __i386__
1011#ifdef __SSE2__
1112
1213.text
14+ WIN32_SAFE_SEH_HEADER
1315.balign 4
1416DEFINE_COMPILERRT_FUNCTION(__ashrdi3)
1517 movd 12 (%esp ), %xmm2 // Load count
@@ -47,6 +49,7 @@ END_COMPILERRT_FUNCTION(__ashrdi3)
4749#else // Use GPRs instead of SSE2 instructions, if they aren't available.
4850
4951.text
52+ WIN32_SAFE_SEH_HEADER
5053.balign 4
5154DEFINE_COMPILERRT_FUNCTION(__ashrdi3)
5255 movl 12 (%esp ), %ecx // Load count
Original file line number Diff line number Diff line change 33// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
44
55#include "../assembly.h"
6+ #include "safeseh.h"
67
78#ifdef __i386__
89
1213// http://msdn.microsoft.com/en-us/library/ms648426.aspx
1314
1415.text
16+ WIN32_SAFE_SEH_HEADER
1517.balign 4
1618DEFINE_COMPILERRT_FUNCTION(_alloca) // _chkstk and _alloca are the same function
1719 push %ecx
Original file line number Diff line number Diff line change 33// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
44
55#include "../assembly.h"
6+ #include "safeseh.h"
67
78// di_int __divdi3(di_int a, di_int b);
89
2021#ifdef __i386__
2122
2223.text
24+ WIN32_SAFE_SEH_HEADER
2325.balign 4
2426DEFINE_COMPILERRT_FUNCTION(__divdi3)
2527
Original file line number Diff line number Diff line change 33// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
44
55#include "../assembly.h"
6+ #include "safeseh.h"
67
78// double __floatdidf(du_int a);
89
@@ -21,6 +22,7 @@ twop32:
2122#define REL_ADDR(_a) (_a)-0b(%eax )
2223
2324.text
25+ WIN32_SAFE_SEH_HEADER
2426.balign 4
2527DEFINE_COMPILERRT_FUNCTION(__floatdidf)
2628 cvtsi2sd 8 (%esp ), %xmm1
Original file line number Diff line number Diff line change 33// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
44
55#include "../assembly.h"
6+ #include "safeseh.h"
67
78// float __floatdisf(di_int a);
89
1617#ifdef __i386__
1718
1819.text
20+ WIN32_SAFE_SEH_HEADER
1921.balign 4
2022DEFINE_COMPILERRT_FUNCTION(__floatdisf)
2123#ifndef TRUST_CALLERS_USE_64_BIT_STORES
Original file line number Diff line number Diff line change 33// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
44
55#include "../assembly.h"
6+ #include "safeseh.h"
67
78// xf_float __floatdixf(di_int a);
89
1617// It can be turned off by defining the TRUST_CALLERS_USE_64_BIT_STORES macro.
1718
1819.text
20+ WIN32_SAFE_SEH_HEADER
1921.balign 4
2022DEFINE_COMPILERRT_FUNCTION(__floatdixf)
2123#ifndef TRUST_CALLERS_USE_64_BIT_STORES
Original file line number Diff line number Diff line change 1111//===----------------------------------------------------------------------===//
1212
1313#include "../assembly.h"
14+ #include "safeseh.h"
1415
1516// double __floatundidf(du_int a);
1617
@@ -33,6 +34,7 @@ twop84:
3334#define REL_ADDR(_a) (_a)-0b(%eax )
3435
3536.text
37+ WIN32_SAFE_SEH_HEADER
3638.balign 4
3739DEFINE_COMPILERRT_FUNCTION(__floatundidf)
3840 movss 8 (%esp ), %xmm1 // high 32 bits of a
Original file line number Diff line number Diff line change 33// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
44
55#include "../assembly.h"
6+ #include "safeseh.h"
67
78// float __floatundisf(du_int a);
89
@@ -28,6 +29,7 @@ twop64: .quad 0x0000000000000000
2829#define TWOp64 twop64-0b(%ecx,%eax,8)
2930
3031.text
32+ WIN32_SAFE_SEH_HEADER
3133.balign 4
3234DEFINE_COMPILERRT_FUNCTION(__floatundisf)
3335 movl 8(%esp), %eax
@@ -73,6 +75,7 @@ twelve:
7375#define STICKY sticky-0b(%ecx ,%eax ,8 )
7476
7577.text
78+ WIN32_SAFE_SEH_HEADER
7679.balign 4
7780DEFINE_COMPILERRT_FUNCTION(__floatundisf)
7881 movl 8 (%esp ), %eax
You can’t perform that action at this time.
0 commit comments