REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1089
This is for the upcoming upgrade to OpenSSL_1_1_1b
Compiler optimization(Visual Studio) may automatically use _ftol2
instead of some type conversion. For example:
OpensslLib.lib(drbg_lib.obj) : error LNK2001:
unresolved external symbol __ftol2
This patch add _ftol2 function for the compiler intrinsic.
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Ting Ye <ting.ye@intel.com>
Signed-off-by: Xiaoyu Lu <xiaoyux.lu@intel.com>
Tested-by: Gary Lin <glin@suse.com>
Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
--- /dev/null
+/** @file\r
+ 64-bit Math Worker Function.\r
+ The 32-bit versions of C compiler generate calls to library routines\r
+ to handle 64-bit math. These functions use non-standard calling conventions.\r
+\r
+Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+/*\r
+ * Floating point to integer conversion.\r
+ */\r
+__declspec(naked) void _ftol2 (void)\r
+{\r
+ _asm {\r
+ fistp qword ptr [esp-8]\r
+ mov edx, [esp-4]\r
+ mov eax, [esp-8]\r
+ ret\r
+ }\r
+}\r
## @file\r
# Intrinsic Routines Wrapper Library Instance.\r
#\r
## @file\r
# Intrinsic Routines Wrapper Library Instance.\r
#\r
-# Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.<BR>\r
# SPDX-License-Identifier: BSD-2-Clause-Patent\r
#\r
##\r
# SPDX-License-Identifier: BSD-2-Clause-Patent\r
#\r
##\r
\r
Ia32/MathLShiftS64.c | MSFT\r
Ia32/MathRShiftU64.c | MSFT\r
\r
Ia32/MathLShiftS64.c | MSFT\r
Ia32/MathRShiftU64.c | MSFT\r
+ Ia32/MathFtol.c | MSFT\r
\r
Ia32/MathLShiftS64.c | INTEL\r
Ia32/MathRShiftU64.c | INTEL\r
\r
Ia32/MathLShiftS64.c | INTEL\r
Ia32/MathRShiftU64.c | INTEL\r
+ Ia32/MathFtol.c | INTEL\r
\r
Ia32/MathLShiftS64.nasm | GCC\r
Ia32/MathRShiftU64.nasm | GCC\r
\r
Ia32/MathLShiftS64.nasm | GCC\r
Ia32/MathRShiftU64.nasm | GCC\r