I may miss some discussions. I remember the original discussion output was to create a compiler stub for x86. Why now we trend to move to BaseLib?
> -----Original Message----- > From: Gao, Liming <liming....@intel.com> > Sent: Sunday, April 26, 2020 11:33 PM > To: Jiang, Guomin <guomin.ji...@intel.com>; devel@edk2.groups.io; Ni, Ray > <ray...@intel.com>; Kinney, Michael D <michael.d.kin...@intel.com>; > ard.biesheu...@linaro.org > Cc: ler...@redhat.com; mac...@microsoft.com > Subject: RE: [edk2-devel] [PATCH] CryptoPkg/FltUsedLib: Add FltUsedLib for > float. > > Guomin: > The size impact is small. This solution that moves _fltused to BaseLib is > OK to > me. > > Thanks > Liming > > -----Original Message----- > > From: Jiang, Guomin <guomin.ji...@intel.com> > > Sent: Friday, April 24, 2020 1:08 PM > > To: Gao, Liming <liming....@intel.com>; devel@edk2.groups.io; Ni, Ray > <ray...@intel.com>; Kinney, Michael D > > <michael.d.kin...@intel.com>; ard.biesheu...@linaro.org > > Cc: ler...@redhat.com; mac...@microsoft.com > > Subject: RE: [edk2-devel] [PATCH] CryptoPkg/FltUsedLib: Add FltUsedLib for > float. > > > > I have compare the Image different, the are two image size will be affect > before and after move _fltused to BaseLib. > > > > One is TcgPei, another is SecurityStubDxe, the detail as below table > > TcgPei | SecurityStubDxe > > Before move: 22688(decimal) | 30624(decimal) > > After move 22656(decimal) | 30592(decimal) > > > > The size of reducation is 32 or 0x20 bytes > > Those component is located the boundary, so it will occupy more size to meet > the alignment. > > > > Another question is that some component will fail in CI result when move > _fltused to BaseLib. > > I am checking it. > > > > > -----Original Message----- > > > From: Gao, Liming <liming....@intel.com> > > > Sent: Thursday, April 23, 2020 1:49 PM > > > To: devel@edk2.groups.io; Jiang, Guomin <guomin.ji...@intel.com>; Ni, > Ray > > > <ray...@intel.com>; Kinney, Michael D <michael.d.kin...@intel.com>; > > > ard.biesheu...@linaro.org > > > Cc: ler...@redhat.com; mac...@microsoft.com > > > Subject: RE: [edk2-devel] [PATCH] CryptoPkg/FltUsedLib: Add FltUsedLib for > > > float. > > > > > > Guomin: > > > You can count the size of all generated EFI images for IA32 and X64, > > > then > > > compare them between two builds. This change should impact EFI image > > > only. Based on this data, we can know the image size impact. > > > > > > Thanks > > > Liming > > > > -----Original Message----- > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of > > > Guomin > > > > Jiang > > > > Sent: Thursday, April 23, 2020 12:04 PM > > > > To: Ni, Ray <ray...@intel.com>; devel@edk2.groups.io; Kinney, Michael > > > > D <michael.d.kin...@intel.com>; ard.biesheu...@linaro.org > > > > Cc: ler...@redhat.com; mac...@microsoft.com > > > > Subject: Re: [edk2-devel] [PATCH] CryptoPkg/FltUsedLib: Add FltUsedLib > > > for float. > > > > > > > > I guess the key point is /GL option. IntrinsicLib omit the /GL option > > > > to avoid the build error, but it abandon the optimization meanwhile. > > > > I will do a test: create a simplest application and just depend > > > > IntrinsicLib and add /GL option to compare the different with and > > > > without > > > /GL. > > > > > > > > > -----Original Message----- > > > > > From: Ni, Ray <ray...@intel.com> > > > > > Sent: Thursday, April 23, 2020 11:32 AM > > > > > To: Jiang, Guomin <guomin.ji...@intel.com>; devel@edk2.groups.io; > > > > > Kinney, Michael D <michael.d.kin...@intel.com>; > > > > > ard.biesheu...@linaro.org > > > > > Cc: ler...@redhat.com; mac...@microsoft.com > > > > > Subject: RE: [edk2-devel] [PATCH] CryptoPkg/FltUsedLib: Add > > > > > FltUsedLib for float. > > > > > > > > > > Guomin, > > > > > Can you investigate why moving _fltused from CryptoPkg/IntrinsicLib > > > > > to MdePkg/BaseLib saves size? > > > > > > > > > > Thanks, > > > > > Ray > > > > > > > > > > > -----Original Message----- > > > > > > From: Jiang, Guomin <guomin.ji...@intel.com> > > > > > > Sent: Thursday, April 23, 2020 9:34 AM > > > > > > To: devel@edk2.groups.io; Jiang, Guomin <guomin.ji...@intel.com>; > > > > > > Ni, Ray <ray...@intel.com>; Kinney, Michael D > > > > > > <michael.d.kin...@intel.com>; ard.biesheu...@linaro.org > > > > > > Cc: ler...@redhat.com; mac...@microsoft.com > > > > > > Subject: RE: [edk2-devel] [PATCH] CryptoPkg/FltUsedLib: Add > > > > > > FltUsedLib > > > > > for float. > > > > > > > > > > > > The size comparation between with _fltused and without _fltused, > > > > > > use > > > > > OvmfPkgX64 as build target > > > > > > OvmfX64 EFI_FV_TAKEN_SIZE | Without _fltused | With > > > > > > _fltused > > > > > > DXEFV | 0x46bbe0 > > > > > > | 0x46bbc0 > > > > > > FVMAIN_COMPACT | 0x12c8a0 > > > > > > | 0x12c7f0 > > > > > > PEIFV | 0x4cae8 > > > > > > | 0x4ca68 > > > > > > From the result, it will occupy less size rather than more size. > > > > > > > > > > > > Code Change as below and build command is ```build -p > > > > > > OvmfPkg/OvmfPkgX64 -b DEBUG -t VS2019 -a X64 - > > > DTPM_ENABLE=TRUE``` > > > > > > > > > > > > diff --git a/CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c > > > > > > b/CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c > > > > > > index 94fe341bec..c4136916d0 100644 > > > > > > --- a/CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c > > > > > > +++ b/CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c > > > > > > @@ -2,7 +2,7 @@ > > > > > > Intrinsic Memory Routines Wrapper Implementation for OpenSSL- > > > based > > > > > > Cryptographic Library. > > > > > > > > > > > > -Copyright (c) 2010 - 2019, Intel Corporation. All rights > > > > > > reserved.<BR> > > > > > > +Copyright (c) 2010 - 2020, Intel Corporation. All rights > > > > > > +reserved.<BR> > > > > > > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > > > **/ > > > > > > @@ -13,16 +13,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > > > typedef UINTN size_t; > > > > > > > > > > > > -#if defined(__GNUC__) || defined(__clang__) > > > > > > - #define GLOBAL_USED __attribute__((used)) -#else > > > > > > - #define GLOBAL_USED > > > > > > -#endif > > > > > > - > > > > > > -/* OpenSSL will use floating point support, and C compiler > > > > > > produces the > > > > > _fltused > > > > > > - symbol by default. Simply define this symbol here to satisfy the > linker. > > > */ > > > > > > -int GLOBAL_USED _fltused = 1; > > > > > > - > > > > > > /* Sets buffers to a specified character */ void * memset (void > > > > > > *dest, int ch, size_t count) { diff --git > > > > > > a/MdePkg/Library/BaseLib/BaseLib.inf > > > > > > b/MdePkg/Library/BaseLib/BaseLib.inf > > > > > > index 3586beb0ab..bab31c07c7 100644 > > > > > > --- a/MdePkg/Library/BaseLib/BaseLib.inf > > > > > > +++ b/MdePkg/Library/BaseLib/BaseLib.inf > > > > > > @@ -1,7 +1,7 @@ > > > > > > ## @file > > > > > > # Base Library implementation. > > > > > > # > > > > > > -# Copyright (c) 2007 - 2019, Intel Corporation. All rights > > > > > > reserved.<BR> > > > > > > +# Copyright (c) 2007 - 2020, Intel Corporation. All rights > > > > > > +reserved.<BR> > > > > > > # Portions copyright (c) 2008 - 2009, Apple Inc. All rights > > > > > > reserved.<BR> # Portions copyright (c) 2011 - 2013, ARM Ltd. All > > > > > > rights reserved.<BR> # @@ -60,6 +60,7 @@ > > > > > > String.c > > > > > > FilePaths.c > > > > > > BaseLibInternals.h > > > > > > + FltUsed.c | MSFT > > > > > > > > > > > > [Sources.Ia32] > > > > > > Ia32/WriteTr.nasm > > > > > > diff --git a/MdePkg/Library/BaseLib/FltUsed.c > > > > > > b/MdePkg/Library/BaseLib/FltUsed.c > > > > > > new file mode 100644 > > > > > > index 0000000000..c065594266 > > > > > > --- /dev/null > > > > > > +++ b/MdePkg/Library/BaseLib/FltUsed.c > > > > > > @@ -0,0 +1,14 @@ > > > > > > +/** @file > > > > > > + Declare _fltused symbol for MSVC > > > > > > + > > > > > > + MSVC need this symbol for float, andd it here to feed MSVC. it > > > > > > + may remove if MSVC not need it any more. > > > > > > + > > > > > > + Copyright (c) 2020 - 2020, Intel Corporation. All rights > > > > > > +reserved.<BR> > > > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent **/ > > > > > > + > > > > > > +// > > > > > > +// Just for MSVC float > > > > > > +// > > > > > > +int _fltused = 0x1; > > > > > > > > > > > > > -----Original Message----- > > > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of > > > > > > > Guomin Jiang > > > > > > > Sent: Tuesday, April 14, 2020 3:01 PM > > > > > > > To: devel@edk2.groups.io; Ni, Ray <ray...@intel.com>; Kinney, > > > > > > > Michael D <michael.d.kin...@intel.com>; > > > > > > > ard.biesheu...@linaro.org > > > > > > > Cc: ler...@redhat.com; mac...@microsoft.com > > > > > > > Subject: Re: [edk2-devel] [PATCH] CryptoPkg/FltUsedLib: Add > > > > > > > FltUsedLib for float. > > > > > > > > > > > > > > Summarize current status: > > > > > > > > > > > > > > Problem Statement: > > > > > > > Openssl require _fltused to be defined as a constant anywhere > > > > > > > floating point is used. > > > > > > > It may use float out of edk2 tree and need _fltused, for > > > > > > > example, Microsoft’s OnScreenKeyboard and UiToolKit. > > > > > > > > > > > > > > Current Proposal as below: > > > > > > > > > > > > > > Proposal 1: Add FltUsed.c into exist library > > > > > > > Detail: Add FltUsed.c into EntryPointLib(PEIM, DXE). > > > > > > > Recommend: Ard Biesheuvel <ard.biesheu...@linaro.org> > > > > > > > Approve: Laszlo Ersek ler...@redhat.com > > > > > > > Netual: Michael D Kinney <michael.d.kin...@intel.com> > > > > > > > Benefit: Doesn’t need modify every .dsc description file. > > > > > > > Defection: I test that it will fail because of /GL option, the > > > > > > > error show fatal error LNK1237: during code generation, compiler > > > > > > > introduced reference to symbol '_fltused' defined in module > > > > > > > 'UefiApplicationEntryPoint.lib(FltUsed.obj)' compiled with /GL > > > > > > > > > > > > > > Proposal 2: Define NULL library > > > > > > > Recommend: Michael D Kinney michael.d.kin...@intel.com > > > > > > > Oppose: Sean sean.brogan=microsoft....@groups.io , Ard > > > > > > > Biesheuvel <ard.biesheu...@linaro.org> > > > > > > > Benefit: I test it and prove that it is executable. > > > > > > > Defection: It is required that modify every description file. > > > > > > > Defection: It need be very careful that it should only apply > > > > > > > some module type(PEIM, DXE_DRIVER, UEFI_APPLICATION) rather > > > than all. > > > > > > > Defection: Build break up. > > > > > > > Action Required: Need evaluate the affection on size. > > > > > > > Consideration: Add PCD to control the feature > > > > > > > > > > > > > > Proposal 3: Define FltUsedLib > > > > > > > Detail: Define FltUsedLib and add dependence > > > > > > > Oppose: Ard Biesheuvel <ard.biesheu...@linaro.org> > > > > > > > Benefit: Doesn’t need care that which module will use it, we > > > > > > > will explicitly point it in component file. > > > > > > > Defection: More complex, It is required that modify every > > > > > > > description file and modify component meanwhile. > > > > > > > Defection: Build breakup > > > > > > > > > > > > > > Thanks > > > > > > > guomin > > > > > > > > > > > > > > > -----Original Message----- > > > > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf > Of > > > > > > > > Ni, > > > > > > > Ray > > > > > > > > Sent: Tuesday, April 14, 2020 1:03 PM > > > > > > > > To: devel@edk2.groups.io; Kinney, Michael D > > > > > > > > <michael.d.kin...@intel.com>; ard.biesheu...@linaro.org; > > > > > > > > Kinney, Michael D <michael.d.kin...@intel.com> > > > > > > > > Cc: ler...@redhat.com; mac...@microsoft.com > > > > > > > > Subject: Re: [edk2-devel] [PATCH] CryptoPkg/FltUsedLib: Add > > > > > > > > FltUsedLib for float. > > > > > > > > > > > > > > > > UEFI spec allows using float operation so asking module > > > > > > > > developers avoid using float may not make sense. Even > > > > > > > > UefiCpuPkg\Library\BaseUefiCpuLib\ > > > > > > > > provides routine to initialize float support for X86. > > > > > > > > > > > > > > > > Given ARM already uses NULL library class mechanism to supply > > > > > > > > the compiler stub, I prefer X86 aligns to the ARM style. > > > > > > > > > > > > > > > > The only unsure thing is the size impact when a module is not > > > > > > > > using float. We expect there is no size impact when a module > > > > > > > > is not > > > > > using float. > > > > > > > > > > > > > > > > Thanks, > > > > > > > > Ray > > > > > > > > > > > > > > > > > -----Original Message----- > > > > > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf > > > > > > > > > Of > > > > > > > > Michael > > > > > > > > > D Kinney > > > > > > > > > Sent: Thursday, April 2, 2020 12:38 AM > > > > > > > > > To: devel@edk2.groups.io; ard.biesheu...@linaro.org; Kinney, > > > > > > > > > Michael D <michael.d.kin...@intel.com> > > > > > > > > > Cc: ler...@redhat.com; mac...@microsoft.com > > > > > > > > > Subject: Re: [edk2-devel] [PATCH] CryptoPkg/FltUsedLib: Add > > > > > > > > > FltUsedLib for float. > > > > > > > > > > > > > > > > > > Hi Ard, > > > > > > > > > > > > > > > > > > I think adding a dependency in the module entry point libs > > > > > > > > > is also good way to guarantee an intrinsic lib is available. > > > > > > > > > I agree that it can provide module type and arch specific > > > > > > > > > mappings. The NULL lib instance can do the same if the NULL > > > > > > > > > instance is listed in the module/arch specific library > > > > > > > > > classes sections. a few example section names. > > > > > > > > > > > > > > > > > > [LibraryClasses.ARM.PEIM, LibraryClasses.AARCH64.PEIM] > > > > > > > > > > > > > > > > > > [LibraryClasses.IA32.UEFI_DRIVER] > > > > > > > > > > > > > > > > > > [LibraryClasses.X64.DXE_DRIVER] > > > > > > > > > > > > > > > > > > So either way, the DSC files need to provide the library > > > > > > > > > mapping. > > > > > > > > > The only difference between these > > > > > > > > > 2 approaches is that adding a dependency to the module entry > > > > > > > > > point libs uses a formally defined library class name for > > > > > > > > > the intrinsic functions vs. > > > > > > > > > the un-named NULL library instance. A formally defined > > > > > > > > > library class name is better supported for things like unit > > > > > > > > > tests from the UnitTestFrameworkPkg. > > > > > > > > > > > > > > > > > > The fltused issue would not go away of we removed the float > > > > > > > > > usage for OpenSSL. One or more other libs or the module > > > > > > > > > could use float/double types and this issue would pop up > > > > > > > > > again. I do agree it would be cleaner if we could use > > > > > > > > > OpenSSL without floating > > > > > point. > > > > > > > > > > > > > > > > > > I think adding an intrinsic lib for IA32/X64 for VS20xx > > > > > > > > > generation of intrinsic functions would address fltused and > > > > > > > > > other common C implementation styles that generate intrinsic > > > > > > > > > functions (e.g. 64-bit int math on 32-bit, structure > > > > > > > > > variable assignments, and loops that fill a buffer with a > > > > > > > > > const value) by VS20xx compilers. An intrinsic lib for GCC > > > > > > > > > would also help with these same common C implementation > > > > > > > > > styles that generate intrinsic > > > > > functions. > > > > > > > > > > > > > > > > > > Mike > > > > > > > > > > > > > > > > > > > -----Original Message----- > > > > > > > > > > From: devel@edk2.groups.io <devel@edk2.groups.io> On > > > > > > > > > > Behalf Of > > > > > > > Ard > > > > > > > > > > Biesheuvel > > > > > > > > > > Sent: Tuesday, March 31, 2020 11:43 PM > > > > > > > > > > To: Kinney, Michael D <michael.d.kin...@intel.com> > > > > > > > > > > Cc: devel@edk2.groups.io; ler...@redhat.com; > > > > > > > > > > mac...@microsoft.com > > > > > > > > > > Subject: Re: [edk2-devel] [PATCH] CryptoPkg/FltUsedLib: > > > > > > > > > > Add FltUsedLib for float. > > > > > > > > > > > > > > > > > > > > On Tue, 31 Mar 2020 at 16:36, Kinney, Michael D > > > > > > > > > > <michael.d.kin...@intel.com> wrote: > > > > > > > > > > > > > > > > > > > > > > ARM and AARCH64 have a compiler intrinsic lib that is > > > > > > > > > > linked against all modules. > > > > > > > > > > > > > > > > > > > > > > [LibraryClasses.ARM, LibraryClasses.AARCH64] > > > > > > > > > > > # > > > > > > > > > > > # It is not possible to prevent ARM compiler calls to > > > > > > > > > > generic intrinsic functions. > > > > > > > > > > > # This library provides the instrinsic functions > > > > > > > > > > generated by a given compiler. > > > > > > > > > > > # [LibraryClasses.ARM] and NULL mean link this > > > > > > > > > > library into all ARM images. > > > > > > > > > > > # > > > > > > > > > > > > > > > > > > > > > NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrins > > > > > > > > > > icsLib.inf > > > > > > > > > > > > > > > > > > > > > > Can we use this same technique for IA32/X64 VS builds? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > In my opinion, having these intrinsics libraries added via > > > > > > > > > > NULL library class resolution was a mistake to begin with. > > > > > > > > > > > > > > > > > > > > Every component that we build incorporates some kind of > > > > > > > > > > startup code library that defines the _ModuleEntryPoint > > > > > > > > > > symbol, and it would be much better to make those > > > > > > > > > > libraries include an IntrinsicsLibrary dependency that can > > > > > > > > > > be satisfied by arch specific versions that also > > > > > > > > > > encapsulate the toolchain dependencies (such as this > > > > > > > > > > _fltused symbol, or memcpy/memset > > > > > on ARM/GCC). > > > > > > > > > > > > > > > > > > > > On another note, it is still deeply disappointing that we > > > > > > > > > > need to jump through all of these hoops because the *only* > > > > > > > > > > single use of floating point in OpenSSL is the entropy > > > > > > > > > > estimate of an RNG, which is in the range of 0..1023 to > > > > > > > > > > begin > > > with [IIRC). > > > > > > > > > > Remember that we also have a softfloat submodule for > > > > > > > > > > 32-bit ARM, for the same stupid reason. If we could stop > > > > > > > > > > pulling in that part of the code (or replace it with an > > > > > > > > > > UINT16 when building for the UEFI target), the whole > > > > > > > > > > floating point issue would mostly go away AFAICT. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#58159): https://edk2.groups.io/g/devel/message/58159 Mute This Topic: https://groups.io/mt/72648022/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-