public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Kinney, Michael D" <michael.d.kinney@intel.com>
To: Ryszard Knop <ryszard.knop@linux.intel.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
	"Carsey, Jaben" <jaben.carsey@intel.com>,
	"Kinney, Michael D" <michael.d.kinney@intel.com>
Cc: "Kacperski, Kamil" <kamil.kacperski@intel.com>,
	"Jin, Eric" <eric.jin@intel.com>,
	"Orlowski, Pawel" <pawel.orlowski@intel.com>,
	"Hsiung, Harry L" <harry.l.hsiung@intel.com>
Subject: Re: [PATCH edk2-staging 10/20] IntelUndiPkg/XGigUndiDxe: drop StdLibC library class reference
Date: Wed, 30 Jan 2019 20:58:17 +0000	[thread overview]
Message-ID: <E92EE9817A31E24EB0585FDF735412F5B8B8D275@ORSMSX113.amr.corp.intel.com> (raw)
In-Reply-To: <5d96a29db8d2bc102e1765be3c52bc3cbab3e958.camel@linux.intel.com>

Hi Richard,

It is possible to update C code to prevent the use of compiler
intrinsic functions.  This is what we have done for EDK II modules
that are built for both IA32 and X64.

The one exception is the use of OpenSSL.  We prefer to use that
project "as is" as a git submodule, so modifying the OpenSSL
sources to prevent use of intrinsic functions was not practical.
The CryptoPkg has the minimum set of intrinsic functions required
For OpenSSL to build.

We do recognize that this issue is difficult for developers to
resolve because the techniques require generation of mixed C/asm
output files to track down the C statements that are generating
the intrinsic functions.

Similar to the ARM support for an intrinsic lib, it may be 
reasonable to add a small intrinsic lib for IA32 and X64 that
supports the intrinsic functions that are seen the most often.
May  require an intrinsic lib for each supported tool chain.

This would be a new feature that would take some effort to 
implement and validate.  Can you enter an Bugzilla for this
feature and list the specific intrinsic functions needed for
this driver?

Thanks,

Mike

> -----Original Message-----
> From: Ryszard Knop
> [mailto:ryszard.knop@linux.intel.com]
> Sent: Wednesday, January 30, 2019 9:27 AM
> To: Ard Biesheuvel <ard.biesheuvel@linaro.org>; edk2-
> devel@lists.01.org; Carsey, Jaben
> <jaben.carsey@intel.com>
> Cc: Kacperski, Kamil <kamil.kacperski@intel.com>; Jin,
> Eric <eric.jin@intel.com>; Orlowski, Pawel
> <pawel.orlowski@intel.com>; Kinney, Michael D
> <michael.d.kinney@intel.com>; Hsiung, Harry L
> <harry.l.hsiung@intel.com>
> Subject: Re: [edk2] [PATCH edk2-staging 10/20]
> IntelUndiPkg/XGigUndiDxe: drop StdLibC library class
> reference
> 
> That's actually not quite correct - we need this
> package to build on
> IA32. It's named rather unfortunately, since it's not
> the EDK2 StdLibC,
> but rather a package in this repository - see
> IntelUndiPkg/LibC. It
> contains the bare minimum of functionality required to
> fix missing 64-
> bit math/shifts on IA32 and missing memcpy/memset
> intrinsics. We can't
> prevent MSVC from yielding memcpy/memset either, so
> this was the nasty
> solution for build issues. You have included
> CompilerIntrinsicsLib for
> the same reason, too :)
> 
> I'm not aware of any X64/IA32 equivalent of your
> CompilerIntrinsicsLib,
> but I'd be happy to be proven wrong here. I'm off for
> the rest of the
> week - I'll continue with reviews and merging early
> next week.
> 
> Thanks, Richard.
> 
> On Wed, 2018-11-14 at 18:33 -0800, ard.biesheuvela
> wrote:
> > StdLibc should not be used in drivers (it has
> dependencies on Shell
> > protocols), but in fact, we don't appear to rely on
> it in the first
> > place, so just drop the reference.
> >
> > Contributed-under: TianoCore Contribution Agreement
> 1.1
> > Signed-off-by: Ard Biesheuvel <ard.biesheuvel at
> linaro.org>
> > ---
> >  IntelUndiPkg/XGigUndiDxe/XGigUndiDxe.inf | 1 -
> >  1 file changed, 1 deletion(-)
> >
> > diff --git a/IntelUndiPkg/XGigUndiDxe/XGigUndiDxe.inf
> > b/IntelUndiPkg/XGigUndiDxe/XGigUndiDxe.inf
> > index beee8aa8134e..b5747565fbea 100644
> > --- a/IntelUndiPkg/XGigUndiDxe/XGigUndiDxe.inf
> > +++ b/IntelUndiPkg/XGigUndiDxe/XGigUndiDxe.inf
> > @@ -132,7 +132,6 @@ GCC:*_*_*_CC_FLAGS = -DEFI32
> >    PrintLib
> >    UefiLib
> >    HiiLib
> > -  StdLibC
> >
> >  [LibraryClasses.X64]
> >


  parent reply	other threads:[~2019-01-30 20:58 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-15  2:33 [PATCH edk2-staging 00/20] IntelUndiPkg/XGigUndiDxe: fix GCC / ARM build issues Ard Biesheuvel
2018-11-15  2:33 ` [PATCH edk2-staging 01/20] IntelUndiPkg/XGigUndiDxe: create GCC alternatives for MSFT build options Ard Biesheuvel
2019-01-30 15:41   ` Ryszard Knop
2018-11-15  2:33 ` [PATCH edk2-staging 02/20] IntelUndiPkg/XGigUndiDxe: move MSFT warning overrides to INF file Ard Biesheuvel
2019-01-30 15:44   ` Ryszard Knop
2018-11-15  2:33 ` [PATCH edk2-staging 03/20] IntelUndiPkg/XGigUndiDxe: consistently use forward slashes as path separators Ard Biesheuvel
2019-01-30 15:49   ` Ryszard Knop
2018-11-15  2:33 ` [PATCH edk2-staging 04/20] IntelUndiPkg/XGigUndiDxe: move BRAND_STRUCT declaration after type definition Ard Biesheuvel
2019-01-30 15:49   ` Ryszard Knop
2018-11-15  2:33 ` [PATCH edk2-staging 05/20] IntelUndiPkg/XGigUndiDxe: add missing VOID** cast Ard Biesheuvel
2019-01-30 15:51   ` Ryszard Knop
2018-11-15  2:33 ` [PATCH edk2-staging 06/20] IntelUndiPkg/XGigUndiDxe: add missing UINT8* cast Ard Biesheuvel
2019-01-30 15:51   ` Ryszard Knop
2018-11-15  2:33 ` [PATCH edk2-staging 07/20] IntelUndiPkg/XGigUndiDxe: drop definition of gImageHandle Ard Biesheuvel
2019-01-30 16:05   ` Ryszard Knop
2019-01-30 16:06     ` Ard Biesheuvel
2019-01-30 16:17       ` Ryszard Knop
2019-01-30 16:56     ` Andrew Fish
2018-11-15  2:33 ` [PATCH edk2-staging 08/20] IntelUndiPkg/XGigUndiDxe: add missing braces to GUID literals Ard Biesheuvel
2019-01-30 16:06   ` Ryszard Knop
2018-11-15  2:33 ` [PATCH edk2-staging 09/20] IntelUndiPkg/XGigUndiDxe: fix incorrect use of CPP token pasting Ard Biesheuvel
2019-01-30 16:06   ` Ryszard Knop
2018-11-15  2:33 ` [PATCH edk2-staging 10/20] IntelUndiPkg/XGigUndiDxe: drop StdLibC library class reference Ard Biesheuvel
2018-11-15 15:16   ` Carsey, Jaben
2019-01-30 17:26   ` Ryszard Knop
2019-01-30 18:34     ` Andrew Fish
2019-02-06  9:46       ` Ryszard Knop
2019-01-30 20:58     ` Kinney, Michael D [this message]
2019-02-06 10:14       ` Ryszard Knop
2018-11-15  2:33 ` [PATCH edk2-staging 11/20] IntelUndiPkg/XGigUndiDxe: cast XgbeMemCopy () args to correct pointer type Ard Biesheuvel
2019-01-30 16:20   ` Ryszard Knop
2018-11-15  2:33 ` [PATCH edk2-staging 12/20] IntelUndiPkg/XGigUndiDxe: don't take address of cast expression Ard Biesheuvel
2019-01-30 16:20   ` Ryszard Knop
2018-11-15  2:33 ` [PATCH edk2-staging 13/20] IntelUndiPkg/XGigUndiDxe: drop locally defined ASSERT() macro Ard Biesheuvel
2018-11-15  2:33 ` [PATCH edk2-staging 14/20] IntelUndiPkg/XGigUndiDxe: redefine UNREFERENCED_nPARAMETER macros for GCC Ard Biesheuvel
2019-01-30 16:22   ` Ryszard Knop
2018-11-15  2:33 ` [PATCH edk2-staging 15/20] IntelUndiPkg/XGigUndiDxe: use intermediate UINTN casts for pointers Ard Biesheuvel
2019-01-30 16:26   ` Ryszard Knop
2018-11-15  2:33 ` [PATCH edk2-staging 16/20] IntelUndiPkg/XGigUndiDxe: add missing EFIAPI modifiers Ard Biesheuvel
2019-01-30 16:27   ` Ryszard Knop
2018-11-15  2:33 ` [PATCH edk2-staging 17/20] IntelUndiPkg/XGigUndiDxe: drop unused variables Ard Biesheuvel
2019-01-30 16:39   ` Ryszard Knop
2018-11-15  2:33 ` [PATCH edk2-staging 18/20] IntelUndiPkg/XGigUndiDxe: set MDEPKG_NDEBUG only for RELEASE builds Ard Biesheuvel
2019-01-30 17:15   ` Ryszard Knop
2018-11-15  2:33 ` [PATCH edk2-staging 19/20] IntelUndiPkg/XGigUndiDxe: drop separate debug macros for DBG_LVL Ard Biesheuvel
2018-11-15  2:33 ` [PATCH edk2-staging 20/20] IntelUndiPkg/XGigUndiDxe: avoid unused var warnings for ERROR_REPORTn() Ard Biesheuvel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E92EE9817A31E24EB0585FDF735412F5B8B8D275@ORSMSX113.amr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox