Thanks.
Yes, I agree. I will add more filter for that.

Thank you
Yao Jiewen

> -----Original Message-----
> From: Gao, Liming
> Sent: Wednesday, February 20, 2019 10:14 PM
> To: Yao, Jiewen <jiewen....@intel.com>; edk2-devel@lists.01.org
> Subject: RE: [edk2] [PATCH] BaseTool/GenC: Fix build error when type is
> BASE or USER_DEFINED.
> 
> Jiewen:
>   This change causes NT32 SecMain build failure. For USER_DEFINED and
> BASE type, they only consumes Constructor() from the library instance with
> BASE type. They don't use PEIM or DXE type Constructor(), because they
> have no PeiService pointer or ImageHandle.
> 
> Thanks
> Liming
> > -----Original Message-----
> > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of
> Jiewen Yao
> > Sent: Wednesday, February 20, 2019 7:55 PM
> > To: edk2-devel@lists.01.org
> > Cc: Gao, Liming <liming....@intel.com>
> > Subject: [edk2] [PATCH] BaseTool/GenC: Fix build error when type is BASE
> or USER_DEFINED.
> >
> > https://bugzilla.tianocore.org/show_bug.cgi?id=1544
> >
> > 1) The GenC tool does not include the constructor/destructor for
> > USER_DEFINED module. It should be included.
> >
> > 2) The GenC tool includes the UnloadImage code for BASE module.
> > It should NOT be included.
> >
> > 3) The GenC tool uses EFI_STATUS and ASSERT_EFI_ERROR for BASE type.
> > It should use RETURN_STATUS and ASSERT_RETURN_ERROR.
> >
> > 4) The GenC tool miss DebugLib.h for BASE or USER_DEFINED module
> > AutoGen.c. Only Base.h is there. It should add Library/DebugLib.h.
> >
> > Cc: Bob Feng <bob.c.f...@intel.com>
> > Cc: Liming Gao <liming....@intel.com>
> > Cc: Yonghong Zhu <yonghong....@intel.com>
> > Contributed-under: TianoCore Contribution Agreement 1.1
> > Signed-off-by: Jiewen Yao <jiewen....@intel.com>
> > ---
> >  BaseTools/Source/Python/AutoGen/GenC.py | 14 +++++++-------
> >  1 file changed, 7 insertions(+), 7 deletions(-)
> >
> > diff --git a/BaseTools/Source/Python/AutoGen/GenC.py
> b/BaseTools/Source/Python/AutoGen/GenC.py
> > index 9700bf8527..c4bba8da17 100644
> > --- a/BaseTools/Source/Python/AutoGen/GenC.py
> > +++ b/BaseTools/Source/Python/AutoGen/GenC.py
> > @@ -684,7 +684,7 @@ ${Function} (
> >  gLibraryStructorCall = {
> >  SUP_MODULE_BASE  : TemplateString("""${BEGIN}
> >    Status = ${Function} ();
> > -  ASSERT_EFI_ERROR (Status);${END}
> > +  ASSERT_RETURN_ERROR (Status);${END}
> >  """),
> >
> >  'PEI'   : TemplateString("""${BEGIN}
> > @@ -714,7 +714,7 @@ ProcessLibrary${Type}List (
> >    VOID
> >    )
> >  {
> > -${BEGIN}  EFI_STATUS  Status;
> > +${BEGIN}  RETURN_STATUS  Status;
> >  ${FunctionCall}${END}
> >  }
> >  """),
> > @@ -768,7 +768,7 @@ ${FunctionCall}${END}
> >  gBasicHeaderFile = "Base.h"
> >
> >  gModuleTypeHeaderFile = {
> > -    SUP_MODULE_BASE              :   [gBasicHeaderFile],
> > +    SUP_MODULE_BASE              :   [gBasicHeaderFile,
> "Library/DebugLib.h"],
> >      SUP_MODULE_SEC               :   ["PiPei.h",
> "Library/DebugLib.h"],
> >      SUP_MODULE_PEI_CORE          :   ["PiPei.h",
> "Library/DebugLib.h", "Library/PeiCoreEntryPoint.h"],
> >      SUP_MODULE_PEIM              :   ["PiPei.h",
> "Library/DebugLib.h", "Library/PeimEntryPoint.h"],
> > @@ -782,7 +782,7 @@ gModuleTypeHeaderFile = {
> >      SUP_MODULE_SMM_CORE          :   ["PiDxe.h",
> "Library/BaseLib.h", "Library/DebugLib.h", "Library/UefiDriverEntryPoint.h"],
> >      SUP_MODULE_MM_STANDALONE     :   ["PiMm.h",
> "Library/BaseLib.h", "Library/DebugLib.h",
> > "Library/StandaloneMmDriverEntryPoint.h"],
> >      SUP_MODULE_MM_CORE_STANDALONE :  ["PiMm.h",
> "Library/BaseLib.h", "Library/DebugLib.h",
> > "Library/StandaloneMmCoreEntryPoint.h"],
> > -    SUP_MODULE_USER_DEFINED      :   [gBasicHeaderFile]
> > +    SUP_MODULE_USER_DEFINED      :   [gBasicHeaderFile,
> "Library/DebugLib.h"]
> >  }
> >
> >  ## Autogen internal worker macro to define DynamicEx PCD name
> includes both the TokenSpaceGuidName
> > @@ -1373,7 +1373,7 @@ def CreateLibraryConstructorCode(Info,
> AutoGenC, AutoGenH):
> >      if Info.IsLibrary:
> >          AutoGenH.Append("${BEGIN}${FunctionPrototype}${END}",
> Dict)
> >      else:
> > -        if Info.ModuleType in [SUP_MODULE_BASE,
> SUP_MODULE_SEC]:
> > +        if Info.ModuleType in [SUP_MODULE_BASE,
> SUP_MODULE_SEC, SUP_MODULE_USER_DEFINED]:
> >
> AutoGenC.Append(gLibraryString[SUP_MODULE_BASE].Replace(Dict))
> >          elif Info.ModuleType in SUP_MODULE_SET_PEI:
> >              AutoGenC.Append(gLibraryString['PEI'].Replace(Dict))
> > @@ -1435,7 +1435,7 @@ def CreateLibraryDestructorCode(Info,
> AutoGenC, AutoGenH):
> >      if Info.IsLibrary:
> >          AutoGenH.Append("${BEGIN}${FunctionPrototype}${END}",
> Dict)
> >      else:
> > -        if Info.ModuleType in [SUP_MODULE_BASE,
> SUP_MODULE_SEC]:
> > +        if Info.ModuleType in [SUP_MODULE_BASE,
> SUP_MODULE_SEC, SUP_MODULE_USER_DEFINED]:
> >
> AutoGenC.Append(gLibraryString[SUP_MODULE_BASE].Replace(Dict))
> >          elif Info.ModuleType in SUP_MODULE_SET_PEI:
> >              AutoGenC.Append(gLibraryString['PEI'].Replace(Dict))
> > @@ -1533,7 +1533,7 @@ def CreateModuleEntryPointCode(Info,
> AutoGenC, AutoGenH):
> >  #   @param      AutoGenH    The TemplateString object for
> header file
> >  #
> >  def CreateModuleUnloadImageCode(Info, AutoGenC, AutoGenH):
> > -    if Info.IsLibrary or Info.ModuleType in
> [SUP_MODULE_USER_DEFINED, SUP_MODULE_SEC]:
> > +    if Info.IsLibrary or Info.ModuleType in
> [SUP_MODULE_USER_DEFINED, SUP_MODULE_BASE, SUP_MODULE_SEC]:
> >          return
> >      #
> >      # Unload Image Handlers
> > --
> > 2.19.2.windows.1
> >
> > _______________________________________________
> > edk2-devel mailing list
> > edk2-devel@lists.01.org
> > https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to