Hi Olivier & Liming,

Please help to review this patch, thanks.


Refine MdePkg: U BaseStackCheckLib library code to follow edkii coding style.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eric Dong <eric.d...@intel.com>


Thanks,
Eric
-----Original Message-----
From: Olivier Martin [mailto:olivier.mar...@arm.com] 
Sent: Thursday, August 21, 2014 5:27 PM
To: Gao, Liming; edk2-devel@lists.sourceforge.net; Kinney, Michael D
Subject: Re: [edk2] [PATCH v3 1/3] MdePkg: Introduced BaseStackCheckLib

Sorry, I committed the v3 patch without taking attention of its content.
The FixedPcdGet() works well in the NULL library because the library is linked 
to a module. So the FixedPcdGet behaves correctly in this case.
But the library cannot be built by itself with FixedPcdGet().

I think it was better to keep the PCD. But you are the maintainer.
So, I have just pushed SVN rev15866 that makes the changes you suggested (that 
removes the PCD).

Thanks,
Olivier

> -----Original Message-----
> From: Gao, Liming [mailto:liming....@intel.com]
> Sent: 21 August 2014 09:59
> To: Olivier Martin; edk2-devel@lists.sourceforge.net; Kinney, Michael 
> D
> Subject: RE: [edk2] [PATCH v3 1/3] MdePkg: Introduced 
> BaseStackCheckLib
> 
> Oliver:
>   I see your commit patch still includes FixedPcdGet() usage in 
> library. Does it pass build? If not, how about remove PCD first.
> 
>   And, another issue that new introduced PCD 
> gEfiMdePkgTokenSpaceGuid.PcdBaseStackCanary token number is same to 
> gEfiMdePkgTokenSpaceGuid.PcdValidateOrderedCollection. But, PCD token 
> number should be unique. So, its token number should be changed to 
> another value, such as 0x0000002b.
> 
> Thanks
> Liming
> -----Original Message-----
> From: Olivier Martin [mailto:olivier.mar...@arm.com]
> Sent: Wednesday, August 20, 2014 11:29 PM
> To: Gao, Liming; edk2-devel@lists.sourceforge.net; Kinney, Michael D
> Subject: RE: [edk2] [PATCH v3 1/3] MdePkg: Introduced 
> BaseStackCheckLib
> 
> Are you happy to add your "Reviewed-By" for this patch?
> If yes do you want me to commit it? Or you are happy to do it?
> 
> Thanks,
> Olivier
> 
> > -----Original Message-----
> > From: Gao, Liming [mailto:liming....@intel.com]
> > Sent: 20 August 2014 16:23
> > To: Olivier Martin; edk2-devel@lists.sourceforge.net; Kinney, 
> > Michael D
> > Subject: RE: [edk2] [PATCH v3 1/3] MdePkg: Introduced 
> > BaseStackCheckLib
> >
> > Oliver:
> >   Sorry for late response. Library can't use FixedPcdGet(), because
> it
> > may be linked to the different drivers those may configure this PCD 
> > with the different value. That may be the reason you don't do it 
> > before.
> >   Because this value is the recommended constant, it should be fine
> to
> > hard code it first without PCD.
> >
> > Thanks
> > Liming
> > -----Original Message-----
> > From: Olivier Martin [mailto:olivier.mar...@arm.com]
> > Sent: Wednesday, August 20, 2014 5:47 PM
> > To: edk2-devel@lists.sourceforge.net; Kinney, Michael D; Gao, Liming
> > Subject: RE: [edk2] [PATCH v3 1/3] MdePkg: Introduced 
> > BaseStackCheckLib
> >
> > Any feedback?
> > Thanks,
> > Olivier
> >
> > > -----Original Message-----
> > > From: Olivier Martin [mailto:olivier.mar...@arm.com]
> > > Sent: 06 August 2014 15:49
> > > To: edk2-devel@lists.sourceforge.net; Kinney, Michael D; 'Gao,
> > Liming'
> > > Subject: Re: [edk2] [PATCH v3 1/3] MdePkg: Introduced 
> > > BaseStackCheckLib
> > >
> > > I addressed your comment 1. into my local patch.
> > >
> > > But for comment 2., I had initially added BaseStackLib to
> MdePkg.dsc.
> > > But it was not building as the FixedPcd was not defined:
> > > -------
> > >
> >
> /home/olivier/tianocore/MdePkg/Library/BaseStackCheckLib/BaseStackChec
> > > k
> > > Gcc.c
> > > :26:34: error: "_PCD_VALUE_PcdBaseStackCanary" undeclared here 
> > > (not
> > in
> > > a
> > > function)
> > >  VOID *__stack_chk_guard = (VOID*)FixedPcdGet64 
> > > (PcdBaseStackCanary);
> > > -------
> > >
> > > _PCD_VALUE_* are only generated when a binary module is built. And 
> > > there is no Module in MdePkg so adding 
> > > 'NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf' to 
> > > [LibraryClasses] would not help neither.
> > > One solution would be to add
> > > 'NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf' to 
> > > MdeModulePkg.dsc
> > >
> > > Which solution would you suggested for your comment 2.?
> > >
> > > Thanks,
> > > Olivier
> > >
> > > > -----Original Message-----
> > > > From: Gao, Liming [mailto:liming....@intel.com]
> > > > Sent: 06 August 2014 04:00
> > > > To: edk2-devel@lists.sourceforge.net; Kinney, Michael D
> > > > Subject: Re: [edk2] [PATCH v3 1/3] MdePkg: Introduced
> > > BaseStackCheckLib
> > > >
> > > > Olivier:
> > > >   I have two minor comment.
> > > > 1. The declaration of __stack_chk_fail() misses the function
> > > comments.
> > > > 2. Add it into Mdepkg.dsc [Components.ARM, Components.AARCH64]
> > > section
> > > > to verify its build.
> > > >
> > > >   Other part is good to me.  Reviewed-by: Gao, Liming 
> > > > <liming....@intel.com>
> > > >
> > > > Thanks
> > > > Liming
> > > > -----Original Message-----
> > > > From: Olivier Martin [mailto:olivier.mar...@arm.com]
> > > > Sent: Tuesday, August 05, 2014 5:48 PM
> > > > To: Kinney, Michael D
> > > > Cc: edk2-devel@lists.sourceforge.net
> > > > Subject: [edk2] [PATCH v3 1/3] MdePkg: Introduced 
> > > > BaseStackCheckLib
> > > >
> > > > This library only support GCC, RVCT and XCode for now.
> > > >
> > > > Contributed-under: TianoCore Contribution Agreement 1.0
> > > > Signed-off-by: Andrew Fish <af...@apple.com>
> > > > Signed-off-by: Olivier Martin <olivier.mar...@arm.com>
> > > > ---
> > > >  .../Library/BaseStackCheckLib/BaseStackCheckGcc.c  | 61
> > > > ++++++++++++++++++++++
> > > >  .../BaseStackCheckLib/BaseStackCheckLib.inf        | 42
> > > > +++++++++++++++
> > > >  MdePkg/MdePkg.dec                                  |  4 ++
> > > >  3 files changed, 107 insertions(+)  create mode 100644 
> > > > MdePkg/Library/BaseStackCheckLib/BaseStackCheckGcc.c
> > > >  create mode 100644
> > > > MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf
> > > >
> > > > diff --git 
> > > > a/MdePkg/Library/BaseStackCheckLib/BaseStackCheckGcc.c
> > > > b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckGcc.c
> > > > new file mode 100644
> > > > index 0000000..4160aff
> > > > --- /dev/null
> > > > +++ b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckGcc.c
> > > > @@ -0,0 +1,61 @@
> > > > +/** @file
> > > > + Base Stack Check library for GCC/clang.
> > > > +
> > > > + Use -fstack-protector-all compiler flag to make the compiler 
> > > > + insert the __stack_chk_guard "canary" value into the stack and 
> > > > + check the value prior to exiting the function. If the "canary"
> > > > + is overwritten
> > > > + __stack_chk_fail() is called. This is GCC specific code.
> > > > +
> > > > + Copyright (c) 2012, Apple Inc. All rights reserved.<BR> This
> > > program
> > > > + and the accompanying materials are licensed and made available
> > > under
> > > > + the terms and conditions of the BSD License which accompanies
> > this
> > > > + distribution.  The full text of the license may be found at 
> > > > + http://opensource.org/licenses/bsd-license.php.
> > > > +
> > > > + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> > > BASIS,
> > > > + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER 
> > > > + EXPRESS
> > > OR
> > > > IMPLIED.
> > > > +
> > > > +**/
> > > > +
> > > > +#include <Base.h>
> > > > +#include <Library/BaseLib.h>
> > > > +#include <Library/DebugLib.h>
> > > > +#include <Library/PcdLib.h>
> > > > +
> > > > +VOID
> > > > +__stack_chk_fail (
> > > > + VOID
> > > > + );
> > > > +
> > > > +
> > > > +/// "canary" value that is inserted by the compiler into the 
> > > > +stack
> > > > frame.
> > > > +VOID *__stack_chk_guard = (VOID*)FixedPcdGet64 
> > > > +(PcdBaseStackCanary);
> > > > +
> > > > +// If ASLR was enabled we could use //void
> > > > +(*__stack_chk_guard)(void) = __stack_chk_fail;
> > > > +
> > > > +/**
> > > > + Error path for compiler generated stack "canary" value check
> > code.
> > > If
> > > > +the  stack canary has been overwritten this function gets 
> > > > +called
> > on
> > > > +exit of the  function.
> > > > +**/
> > > > +VOID
> > > > +__stack_chk_fail (
> > > > + VOID
> > > > + )
> > > > +{
> > > > +  UINT8 DebugPropertyMask;
> > > > +
> > > > +  DEBUG ((DEBUG_ERROR, "STACK FAULT: Buffer Overflow in 
> > > > + function %a.\n", __builtin_return_address(0)));
> > > > +
> > > > +  //
> > > > +  // Generate a Breakpoint, DeadLoop, or NOP based on PCD 
> > > > + settings
> > > > even
> > > > +if
> > > > +  // BaseDebugLibNull is in use.
> > > > +  //
> > > > +  DebugPropertyMask = PcdGet8 (PcdDebugPropertyMask);
> > > > +  if ((DebugPropertyMask &
> > > > +DEBUG_PROPERTY_ASSERT_BREAKPOINT_ENABLED)
> > > > != 0) {
> > > > +    CpuBreakpoint ();
> > > > +  } else if ((DebugPropertyMask &
> > > > DEBUG_PROPERTY_ASSERT_DEADLOOP_ENABLED) != 0) {
> > > > +   CpuDeadLoop ();
> > > > +  }
> > > > +}
> > > > diff --git
> > > > a/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf
> > > > b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf
> > > > new file mode 100644
> > > > index 0000000..3304284
> > > > --- /dev/null
> > > > +++ b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf
> > > > @@ -0,0 +1,42 @@
> > > > +## @file
> > > > +#  Stack Check Library
> > > > +#
> > > > +#  Copyright (c) 2014, ARM Ltd. All rights reserved.<BR> # # 
> > > > +This program and the accompanying materials #  are licensed and 
> > > > +made available under the terms and conditions of the BSD 
> > > > +License # which accompanies this distribution. The full text of 
> > > > +the license may be found at #  
> > > > +http://opensource.org/licenses/bsd-
> license.php.
> > > > +#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS
> IS"
> > > > +BASIS, #  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND,
> > EITHER
> > > > EXPRESS OR IMPLIED.
> > > > +#
> > > > +#
> > > > +##
> > > > +
> > > > +[Defines]
> > > > +  INF_VERSION                    = 0x00010005
> > > > +  BASE_NAME                      = BaseStackCheckLib
> > > > +  FILE_GUID                      = 5f6579f7-b648-4fdb-9f19-
> > > > 4c17e27e8eff
> > > > +  MODULE_TYPE                    = BASE
> > > > +  VERSION_STRING                 = 1.0
> > > > +  LIBRARY_CLASS                  = NULL
> > > > +
> > > > +
> > > > +#
> > > > +#  VALID_ARCHITECTURES           = ARM AARCH64
> > > > +#
> > > > +
> > > > +[Sources]
> > > > +  BaseStackCheckGcc.c | GCC
> > > > +  BaseStackCheckGcc.c | RVCT
> > > > +
> > > > +[Packages]
> > > > +  MdePkg/MdePkg.dec
> > > > +
> > > > +[LibraryClasses]
> > > > +  BaseLib
> > > > +  DebugLib
> > > > +
> > > > +[FixedPcd]
> > > > +  gEfiMdePkgTokenSpaceGuid.PcdBaseStackCanary
> > > > +  gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask
> > > > diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index 
> > > > 4daf3e6..fbb7d2b 100644
> > > > --- a/MdePkg/MdePkg.dec
> > > > +++ b/MdePkg/MdePkg.dec
> > > > @@ -1544,6 +1544,10 @@
> > > >    #  The required memory space is decided by the value of 
> > > > PcdMaximumGuidedExtractHandler.
> > > >
> > > >
> > >
> >
> gEfiMdePkgTokenSpaceGuid.PcdGuidedExtractHandlerTableAddress|0x1000000
> > > |
> > > > UINT64|0x30001015
> > > >
> > > > +  ## Canary value for the stack overflow protection. This PCD
> can
> > > > + be used by a firmware vendor  # or for debugging purposes to 
> > > > + change
> > > the
> > > > recommended value.
> > > > +
> > >
> gEfiMdePkgTokenSpaceGuid.PcdBaseStackCanary|0x0AFF|UINT64|0x0000002A
> > > > +
> > > >  [PcdsFixedAtBuild.IPF]
> > > >    ## The base address of IO port space for IA64 arch
> > > >
> > > >
> > >
> >
> gEfiMdePkgTokenSpaceGuid.PcdIoBlockBaseAddressForIpf|0x0ffffc000000|UI
> > > N
> > > > T64|0x0000000f
> > > > --
> > > > 1.8.5
> > > >
> > > >
> > > > ----------------------------------------------------------------
> > > > -
> -
> > > > -
> > -
> > > > -
> > > --
> > > > -------
> > > > Infragistics Professional
> > > > Build stunning WinForms apps today!
> > > > Reboot your WinForms applications with our WinForms controls.
> > > > Build a bridge from your legacy apps to the future.
> > > >
> > >
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.
> > > c
> > > > lktrk
> > > > _______________________________________________
> > > > edk2-devel mailing list
> > > > edk2-devel@lists.sourceforge.net 
> > > > https://lists.sourceforge.net/lists/listinfo/edk2-devel
> > > >
> > > > ----------------------------------------------------------------
> > > > -
> -
> > > > -
> > -
> > > > -
> > > --
> > > > -------
> > > > Infragistics Professional
> > > > Build stunning WinForms apps today!
> > > > Reboot your WinForms applications with our WinForms controls.
> > > > Build a bridge from your legacy apps to the future.
> > > >
> > >
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.
> > > c
> > > > lktrk
> > > > _______________________________________________
> > > > edk2-devel mailing list
> > > > edk2-devel@lists.sourceforge.net 
> > > > https://lists.sourceforge.net/lists/listinfo/edk2-devel
> > >
> > >
> > >
> > >
> > >
> > > ------------------------------------------------------------------
> > > -
> -
> > > -
> > -
> > > -
> > > -------
> > > Infragistics Professional
> > > Build stunning WinForms apps today!
> > > Reboot your WinForms applications with our WinForms controls.
> > > Build a bridge from your legacy apps to the future.
> > >
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.
> > > c
> > > lktrk
> > > _______________________________________________
> > > edk2-devel mailing list
> > > edk2-devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/edk2-devel
> >
> >
> >
> >
> 
> 
> 
> 





------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Attachment: BaseStackCheckGcc.c.patch
Description: BaseStackCheckGcc.c.patch

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to