public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH] BaseTool/GenC: Fix build error when type is BASE or USER_DEFINED.
@ 2019-02-20 11:55 Jiewen Yao
  2019-02-20 14:14 ` Gao, Liming
  0 siblings, 1 reply; 3+ messages in thread
From: Jiewen Yao @ 2019-02-20 11:55 UTC (permalink / raw)
  To: edk2-devel; +Cc: Bob Feng, Liming Gao, Yonghong Zhu

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.feng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Jiewen Yao <jiewen.yao@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



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] BaseTool/GenC: Fix build error when type is BASE or USER_DEFINED.
  2019-02-20 11:55 [PATCH] BaseTool/GenC: Fix build error when type is BASE or USER_DEFINED Jiewen Yao
@ 2019-02-20 14:14 ` Gao, Liming
  2019-02-21  0:40   ` Yao, Jiewen
  0 siblings, 1 reply; 3+ messages in thread
From: Gao, Liming @ 2019-02-20 14:14 UTC (permalink / raw)
  To: Yao, Jiewen, edk2-devel@lists.01.org

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-bounces@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.gao@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.feng@intel.com>
> Cc: Liming Gao <liming.gao@intel.com>
> Cc: Yonghong Zhu <yonghong.zhu@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Jiewen Yao <jiewen.yao@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


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] BaseTool/GenC: Fix build error when type is BASE or USER_DEFINED.
  2019-02-20 14:14 ` Gao, Liming
@ 2019-02-21  0:40   ` Yao, Jiewen
  0 siblings, 0 replies; 3+ messages in thread
From: Yao, Jiewen @ 2019-02-21  0:40 UTC (permalink / raw)
  To: Gao, Liming, edk2-devel@lists.01.org

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.yao@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-bounces@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.gao@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.feng@intel.com>
> > Cc: Liming Gao <liming.gao@intel.com>
> > Cc: Yonghong Zhu <yonghong.zhu@intel.com>
> > Contributed-under: TianoCore Contribution Agreement 1.1
> > Signed-off-by: Jiewen Yao <jiewen.yao@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


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-02-21  0:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-02-20 11:55 [PATCH] BaseTool/GenC: Fix build error when type is BASE or USER_DEFINED Jiewen Yao
2019-02-20 14:14 ` Gao, Liming
2019-02-21  0:40   ` Yao, Jiewen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox