CryptoPkg/IntrinsicLib: Fix possible unresolved external symbol issue

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>
This commit is contained in:
Xiaoyu Lu 2019-05-29 18:40:32 +00:00 committed by Jian J Wang
parent 7eee048894
commit 96dbfad9b0
2 changed files with 25 additions and 1 deletions

View File

@ -0,0 +1,22 @@
/** @file
64-bit Math Worker Function.
The 32-bit versions of C compiler generate calls to library routines
to handle 64-bit math. These functions use non-standard calling conventions.
Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
/*
* Floating point to integer conversion.
*/
__declspec(naked) void _ftol2 (void)
{
_asm {
fistp qword ptr [esp-8]
mov edx, [esp-4]
mov eax, [esp-8]
ret
}
}

View File

@ -1,7 +1,7 @@
## @file
# Intrinsic Routines Wrapper Library Instance.
#
# Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
# Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
@ -29,9 +29,11 @@
Ia32/MathLShiftS64.c | MSFT
Ia32/MathRShiftU64.c | MSFT
Ia32/MathFtol.c | MSFT
Ia32/MathLShiftS64.c | INTEL
Ia32/MathRShiftU64.c | INTEL
Ia32/MathFtol.c | INTEL
Ia32/MathLShiftS64.nasm | GCC
Ia32/MathRShiftU64.nasm | GCC