From d9a6e7b0b8a67392a57788d97634256546207a64 Mon Sep 17 00:00:00 2001 From: Nickle Wang Date: Thu, 15 Feb 2024 18:58:50 +0800 Subject: RedfishPkg/RedfishCrtLib: fix unresolved external symbol issue -Fix below compiler error reported in edk2 CI. ERROR - Linker #2001 from JsonLib.lib(load.obj) : unresolved external symbol __ftol2 -The file MathFtol.c is copied from IntrinsicLib in CryptoPkg. -Add MathFtol.c to EccCheck IgnoreFiles. Signed-off-by: Nickle Wang Cc: Abner Chang Cc: Igor Kulchytskyy Cc: Nick Ramirez Reviewed-by: Abner Chang Reviewed-by: Igor Kulchytskyy --- .../PrivateLibrary/RedfishCrtLib/Ia32/MathFtol.c | 37 ++++++++++++++++++++++ .../PrivateLibrary/RedfishCrtLib/RedfishCrtLib.inf | 7 +++- RedfishPkg/RedfishPkg.ci.yaml | 2 ++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 RedfishPkg/PrivateLibrary/RedfishCrtLib/Ia32/MathFtol.c diff --git a/RedfishPkg/PrivateLibrary/RedfishCrtLib/Ia32/MathFtol.c b/RedfishPkg/PrivateLibrary/RedfishCrtLib/Ia32/MathFtol.c new file mode 100644 index 0000000000..e49f00eaf5 --- /dev/null +++ b/RedfishPkg/PrivateLibrary/RedfishCrtLib/Ia32/MathFtol.c @@ -0,0 +1,37 @@ +/** @file This file is copied from CryptoPkg/Library/IntrinsicLib/Ia32/MathFtol.c + 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.
+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 + } +} + +__declspec(naked) void +_ftol2_sse ( + void + ) +{ + _asm { + fistp dword ptr [esp-4] + mov eax,[esp-4] + ret + } +} diff --git a/RedfishPkg/PrivateLibrary/RedfishCrtLib/RedfishCrtLib.inf b/RedfishPkg/PrivateLibrary/RedfishCrtLib/RedfishCrtLib.inf index 6ff5dba75c..3a5e309d1a 100644 --- a/RedfishPkg/PrivateLibrary/RedfishCrtLib/RedfishCrtLib.inf +++ b/RedfishPkg/PrivateLibrary/RedfishCrtLib/RedfishCrtLib.inf @@ -3,6 +3,7 @@ # # Copyright (c) 2019, Intel Corporation. All rights reserved.
# (C) Copyright 2020 Hewlett Packard Enterprise Development LP
+# Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -23,6 +24,9 @@ [Sources] RedfishCrtLib.c +[Sources.IA32] + Ia32/MathFtol.c | MSFT + [LibraryClasses] BaseLib SortLib @@ -35,4 +39,5 @@ MdeModulePkg/MdeModulePkg.dec RedfishPkg/RedfishPkg.dec - +[BuildOptions] + MSFT:*_*_IA32_CC_FLAGS = /GL- diff --git a/RedfishPkg/RedfishPkg.ci.yaml b/RedfishPkg/RedfishPkg.ci.yaml index 69b6bf39f5..b95e8bfdc7 100644 --- a/RedfishPkg/RedfishPkg.ci.yaml +++ b/RedfishPkg/RedfishPkg.ci.yaml @@ -2,6 +2,7 @@ # CI configuration for NetworkPkg # # (C) Copyright 2021 Hewlett Packard Enterprise Development LP
+# Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: BSD-2-Clause-Patent ## { @@ -38,6 +39,7 @@ "PrivateInclude/Crt/string.h", "PrivateInclude/Crt/time.h", "PrivateLibrary/RedfishCrtLib/RedfishCrtLib.c", + "PrivateLibrary/RedfishCrtLib/Ia32/MathFtol.c", "Include/Library/RedfishCrtLib.h", ## ## For jansson library open source -- cgit v1.2.3