From nobody Sun Apr 28 13:47:19 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1521784627585470.65624939522536; Thu, 22 Mar 2018 22:57:07 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 5059D2264D233; Thu, 22 Mar 2018 22:50:32 -0700 (PDT) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 30F9622571B49 for ; Thu, 22 Mar 2018 22:50:30 -0700 (PDT) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Mar 2018 22:57:02 -0700 Received: from shwdeopenpsi168.ccr.corp.intel.com ([10.239.158.129]) by fmsmga004.fm.intel.com with ESMTP; 22 Mar 2018 22:57:02 -0700 X-Original-To: edk2-devel@lists.01.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.100; helo=mga07.intel.com; envelope-from=yonghong.zhu@intel.com; receiver=edk2-devel@lists.01.org X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,348,1517904000"; d="scan'208";a="39896208" From: Yonghong Zhu To: edk2-devel@lists.01.org Date: Fri, 23 Mar 2018 13:57:00 +0800 Message-Id: <1521784620-2376-1-git-send-email-yonghong.zhu@intel.com> X-Mailer: git-send-email 2.6.1.windows.1 Subject: [edk2] [Patch] BaseTools: Fix a bug for VOID* type Fixatbuild Pcd in Library X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" The case is a FixedAtBuild VOID* PCD is used from a lib, but is set to a different sized value in a module INF scope section. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Yonghong Zhu Reviewed-by: Liming Gao --- BaseTools/Source/Python/AutoGen/GenC.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/BaseTools/Source/Python/AutoGen/GenC.py b/BaseTools/Source/Pyt= hon/AutoGen/GenC.py index 481c4dd..fbf892f 100644 --- a/BaseTools/Source/Python/AutoGen/GenC.py +++ b/BaseTools/Source/Python/AutoGen/GenC.py @@ -913,10 +913,11 @@ def CreateModulePcdCode(Info, AutoGenC, AutoGenH, Pcd= ): break PcdTokenName =3D '_PCD_TOKEN_' + TokenCName PatchPcdSizeTokenName =3D '_PCD_PATCHABLE_' + TokenCName +'_SIZE' PatchPcdSizeVariableName =3D '_gPcd_BinaryPatch_Size_' + TokenCName FixPcdSizeTokenName =3D '_PCD_SIZE_' + TokenCName + FixedPcdSizeVariableName =3D '_gPcd_FixedAtBuild_Size_' + TokenCName =20 if Pcd.PcdValueFromComm: Pcd.DefaultValue =3D Pcd.PcdValueFromComm =20 if Pcd.Type in gDynamicExPcd: @@ -1152,11 +1153,11 @@ def CreateModulePcdCode(Info, AutoGenC, AutoGenH, P= cd): =20 PcdDataSize =3D GetPcdSize(Pcd) if Pcd.Type =3D=3D TAB_PCDS_FIXED_AT_BUILD: AutoGenH.Append('#define %s %s\n' % (FixPcdSizeTokenName, = PcdDataSize)) AutoGenH.Append('#define %s %s \n' % (GetModeSizeName,Fix= PcdSizeTokenName)) - =20 + AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED const UINTN= %s =3D %s;\n' % (FixedPcdSizeVariableName,PcdDataSize)) if Pcd.Type =3D=3D TAB_PCDS_PATCHABLE_IN_MODULE: AutoGenH.Append('#define %s %s\n' % (PatchPcdSizeTokenName= , Pcd.MaxDatumSize)) AutoGenH.Append('#define %s %s \n' % (GetModeSizeName,Pat= chPcdSizeVariableName)) AutoGenH.Append('extern UINTN %s; \n' % PatchPcdSizeVariab= leName) AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED UINTN %s = =3D %s;\n' % (PatchPcdSizeVariableName,PcdDataSize)) @@ -1209,10 +1210,11 @@ def CreateLibraryPcdCode(Info, AutoGenC, AutoGenH, = Pcd): break PcdTokenName =3D '_PCD_TOKEN_' + TokenCName FixPcdSizeTokenName =3D '_PCD_SIZE_' + TokenCName PatchPcdSizeTokenName =3D '_PCD_PATCHABLE_' + TokenCName +'_SIZE' PatchPcdSizeVariableName =3D '_gPcd_BinaryPatch_Size_' + TokenCName + FixedPcdSizeVariableName =3D '_gPcd_FixedAtBuild_Size_' + TokenCName =20 if Pcd.PcdValueFromComm: Pcd.DefaultValue =3D Pcd.PcdValueFromComm # # Write PCDs @@ -1349,20 +1351,30 @@ def CreateLibraryPcdCode(Info, AutoGenC, AutoGenH, = Pcd): DatumType =3D 'UINT8' AutoGenH.Append('extern const %s _gPcd_FixedAtBuild_%s%s;\n' %(Dat= umType, TokenCName, Array)) AutoGenH.Append('#define %s %s_gPcd_FixedAtBuild_%s\n' %(GetModeN= ame, Type, TokenCName)) AutoGenH.Append('//#define %s ASSERT(FALSE) // It is not allowed= to set value for a FIXED_AT_BUILD PCD\n' % SetModeName) =20 + ConstFixedPcd =3D False if PcdItemType =3D=3D TAB_PCDS_FIXED_AT_BUILD and (key in Info.Con= stPcd or (Info.IsLibrary and not Info._ReferenceModules)): + ConstFixedPcd =3D True if Pcd.DatumType not in ['UINT8', 'UINT16', 'UINT32', 'UINT64'= , 'BOOLEAN']: AutoGenH.Append('#define _PCD_VALUE_%s %s%s\n' %(TokenCNam= e, Type, PcdVariableName)) else: AutoGenH.Append('#define _PCD_VALUE_%s %s\n' %(TokenCName,= Pcd.DefaultValue)) - =20 + PcdDataSize =3D GetPcdSize(Pcd) if PcdItemType =3D=3D TAB_PCDS_FIXED_AT_BUILD: - PcdDataSize =3D GetPcdSize(Pcd) - AutoGenH.Append('#define %s %s\n' % (FixPcdSizeTokenName, PcdD= ataSize)) - AutoGenH.Append('#define %s %s\n' % (GetModeSizeName,FixPcdSiz= eTokenName)) + if Pcd.DatumType not in ['UINT8', 'UINT16', 'UINT32', 'UINT64'= , 'BOOLEAN']: + if ConstFixedPcd: + AutoGenH.Append('#define %s %s\n' % (FixPcdSizeTokenNa= me, PcdDataSize)) + AutoGenH.Append('#define %s %s\n' % (GetModeSizeName,F= ixPcdSizeTokenName)) + else: + AutoGenH.Append('#define %s %s\n' % (GetModeSizeName,F= ixedPcdSizeVariableName)) + AutoGenH.Append('#define %s %s\n' % (FixPcdSizeTokenNa= me,FixedPcdSizeVariableName)) + AutoGenH.Append('extern const UINTN %s; \n' % FixedPcd= SizeVariableName) + else: + AutoGenH.Append('#define %s %s\n' % (FixPcdSizeTokenName, = PcdDataSize)) + AutoGenH.Append('#define %s %s\n' % (GetModeSizeName,FixPc= dSizeTokenName)) =20 ## Create code for library constructor # # @param Info The ModuleAutoGen object # @param AutoGenC The TemplateString object for C code --=20 2.6.1.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel