From nobody Mon Dec 23 05:50:50 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 1520005939971813.1581567555863; Fri, 2 Mar 2018 07:52:19 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 0F7CC2250EDD3; Fri, 2 Mar 2018 07:46:09 -0800 (PST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) (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 38A9B2250EDC4 for ; Fri, 2 Mar 2018 07:46:07 -0800 (PST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Mar 2018 07:52:16 -0800 Received: from shwdeopenpsi105.ccr.corp.intel.com ([10.239.9.129]) by orsmga002.jf.intel.com with ESMTP; 02 Mar 2018 07:52:15 -0800 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.65; helo=mga03.intel.com; envelope-from=bob.c.feng@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.47,412,1515484800"; d="scan'208";a="38774774" From: BobCF To: edk2-devel@lists.01.org Date: Fri, 2 Mar 2018 23:51:56 +0800 Message-Id: <20180302155156.11660-1-bob.c.feng@intel.com> X-Mailer: git-send-email 2.14.3.windows.1 Subject: [edk2] [Patch] BaseTools: Pcd Value override issue. 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: , Cc: Liming Gao 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" For the case that the structure PCD has no value assignment in DSC, but has value assignment in command line. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Bob Feng Cc: Liming Gao Reviewed-by: Liming Gao --- BaseTools/Source/Python/Workspace/DscBuildData.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py b/BaseTools/= Source/Python/Workspace/DscBuildData.py index cd633e964d..9d787702c2 100644 --- a/BaseTools/Source/Python/Workspace/DscBuildData.py +++ b/BaseTools/Source/Python/Workspace/DscBuildData.py @@ -1264,10 +1264,12 @@ class DscBuildData(PlatformBuildClassObject): else: MaxSize =3D max([len(Pcd.DefaultValue),MaxSize= ]) Pcd.MaxDatumSize =3D str(MaxSize) else: PcdInDec =3D self.DecPcds.get((Name,Guid)) + if isinstance(PcdInDec,StructurePcd): + PcdInDec.PcdValueFromComm =3D NoFiledValues[(Guid,Name= )][0] if PcdInDec: if PcdInDec.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_= FIXED_AT_BUILD], self._PCD_TYPE_STRING_[MODEL_PCD_P= ATCHABLE_IN_MODULE]]: self.Pcds[Name, Guid] =3D copy.deepcopy(PcdInDec) self.Pcds[Name, Guid].DefaultValue =3D NoFiledValu= es[( Guid,Name)][0] @@ -1667,30 +1669,30 @@ class DscBuildData(PlatformBuildClassObject): CApp =3D CApp + ' __FLEXIBLE_SIZE(*Size, = %s, %s, %d); // From %s Line %d Value %s \n' % (Pcd.DatumType, FieldName.st= rip("."), ArrayIndex + 1, FieldList[FieldName_ori][1], FieldList[FieldName_= ori][2], FieldList[FieldName_ori][0]) if Pcd.PcdFieldValueFromComm: CApp =3D CApp + "// From Command Line \n" for FieldName in Pcd.PcdFieldValueFromComm: FieldName =3D "." + FieldName - IsArray =3D self.IsFieldValueAnArray(FieldList[FieldName.strip= (".")][0]) - if IsArray and not (FieldList[FieldName.strip(".")][0].startsw= ith('{GUID') and FieldList[FieldName.strip(".")][0].endswith('}')): + IsArray =3D self.IsFieldValueAnArray(Pcd.PcdFieldValueFromComm= [FieldName.strip(".")][0]) + if IsArray and not (Pcd.PcdFieldValueFromComm[FieldName.strip(= ".")][0].startswith('{GUID') and Pcd.PcdFieldValueFromComm[FieldName.strip(= ".")][0].endswith('}')): try: - Value =3D ValueExpressionEx(FieldList[FieldName.strip(= ".")][0], "VOID*", self._GuidDict)(True) + Value =3D ValueExpressionEx(Pcd.PcdFieldValueFromComm[= FieldName.strip(".")][0], "VOID*", self._GuidDict)(True) except BadExpression: EdkLogger.error('Build', FORMAT_INVALID, "Invalid valu= e format for %s. From %s Line %d " % - (".".join((Pcd.TokenSpaceGuidCName, Pc= d.TokenCName, FieldName.strip('.'))), FieldList[FieldName.strip(".")][1], F= ieldList[FieldName.strip(".")][2])) + (".".join((Pcd.TokenSpaceGuidCName, Pc= d.TokenCName, FieldName.strip('.'))), Pcd.PcdFieldValueFromComm[FieldName.s= trip(".")][1], Pcd.PcdFieldValueFromComm[FieldName.strip(".")][2])) Value, ValueSize =3D ParseFieldValue(Value) - CApp =3D CApp + ' __FLEXIBLE_SIZE(*Size, %s, %s, %d / __A= RRAY_ELEMENT_SIZE(%s, %s) + ((%d %% __ARRAY_ELEMENT_SIZE(%s, %s)) ? 1 : 0))= ; // From %s Line %d Value %s\n' % (Pcd.DatumType, FieldName.strip("."), Va= lueSize, Pcd.DatumType, FieldName.strip("."), ValueSize, Pcd.DatumType, Fie= ldName.strip("."), FieldList[FieldName.strip(".")][1], FieldList[FieldName.= strip(".")][2], FieldList[FieldName.strip(".")][0]); + CApp =3D CApp + ' __FLEXIBLE_SIZE(*Size, %s, %s, %d / __A= RRAY_ELEMENT_SIZE(%s, %s) + ((%d %% __ARRAY_ELEMENT_SIZE(%s, %s)) ? 1 : 0))= ; // From %s Line %d Value %s\n' % (Pcd.DatumType, FieldName.strip("."), Va= lueSize, Pcd.DatumType, FieldName.strip("."), ValueSize, Pcd.DatumType, Fie= ldName.strip("."), Pcd.PcdFieldValueFromComm[FieldName.strip(".")][1], Pcd.= PcdFieldValueFromComm[FieldName.strip(".")][2], Pcd.PcdFieldValueFromComm[F= ieldName.strip(".")][0]); else: NewFieldName =3D '' FieldName_ori =3D FieldName.strip('.') while '[' in FieldName: NewFieldName =3D NewFieldName + FieldName.split('[', 1= )[0] + '[0]' ArrayIndex =3D int(FieldName.split('[', 1)[1].split(']= ', 1)[0]) FieldName =3D FieldName.split(']', 1)[1] FieldName =3D NewFieldName + FieldName while '[' in FieldName: FieldName =3D FieldName.rsplit('[', 1)[0] - CApp =3D CApp + ' __FLEXIBLE_SIZE(*Size, %s, %s, %d);= // From %s Line %d Value %s \n' % (Pcd.DatumType, FieldName.strip("."), Ar= rayIndex + 1, FieldList[FieldName_ori][1], FieldList[FieldName_ori][2], Fie= ldList[FieldName_ori][0]) + CApp =3D CApp + ' __FLEXIBLE_SIZE(*Size, %s, %s, %d);= // From %s Line %d Value %s \n' % (Pcd.DatumType, FieldName.strip("."), Ar= rayIndex + 1, Pcd.PcdFieldValueFromComm[FieldName_ori][1], Pcd.PcdFieldValu= eFromComm[FieldName_ori][2], Pcd.PcdFieldValueFromComm[FieldName_ori][0]) CApp =3D CApp + " *Size =3D (%d > *Size ? %d : *Size); // The Pcd= maxsize is %d \n" % (self.GetPcdMaxSize(Pcd),self.GetPcdMaxSize(Pcd),self.= GetPcdMaxSize(Pcd)) CApp =3D CApp + "}\n" return CApp def GenerateSizeStatments(self,Pcd): CApp =3D ' Size =3D sizeof(%s);\n' % (Pcd.DatumType) --=20 2.14.3.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel