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