From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.136; helo=mga12.intel.com; envelope-from=liming.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) (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 1BA0B20886F28 for ; Thu, 14 Feb 2019 07:02:44 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Feb 2019 07:02:44 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,369,1544515200"; d="scan'208";a="320380227" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga005.fm.intel.com with ESMTP; 14 Feb 2019 07:02:44 -0800 Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 14 Feb 2019 07:02:44 -0800 Received: from shsmsx108.ccr.corp.intel.com (10.239.4.97) by fmsmsx156.amr.corp.intel.com (10.18.116.74) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 14 Feb 2019 07:02:43 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.102]) by SHSMSX108.ccr.corp.intel.com ([169.254.8.36]) with mapi id 14.03.0415.000; Thu, 14 Feb 2019 23:02:42 +0800 From: "Gao, Liming" To: "Feng, Bob C" , "Fan, ZhijuX" CC: "Gao, Liming" , "edk2-devel@lists.01.org" Thread-Topic: [Patch] BaseTools: Correct the PcdDatabase Info in AutoGen Thread-Index: AQHUupnpHWZJZkSADkix8ttuVlYnrKXfcwEg Date: Thu, 14 Feb 2019 15:02:42 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E3DEC06@SHSMSX104.ccr.corp.intel.com> References: <20190202015204.5672-1-bob.c.feng@intel.com> In-Reply-To: <20190202015204.5672-1-bob.c.feng@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNDM5MWE0NmUtMzg2Yi00ZTgzLTk5YzctNTEzNzhjMThjNjk2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoidWFpMExFbUFHNlVTOWNpR0paNnpWSWwrVjlsdVBNcjFEU3lvWktUR3lGWExJTHFlWU9lU3Flb1hLMmRSaEZuZiJ9 dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [Patch] BaseTools: Correct the PcdDatabase Info in AutoGen X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Feb 2019 15:02:45 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Zhiju: 1. Please make sure struct PEI_PCD_DATABASE_INIT in AutoGen.h to match gPEI= PcdDbInit in AutoGen.c.=20 2. Please make sure struct DXE_PCD_DATABASE_INIT in AutoGen.h to match gDXE= PcdDbinit in AutoGen.c 3. gDXEPcdDbinit in AutoGen.c a. Keep origin style of /* LocalTokenNumberTable */ and /* VariableHead *= / b. Remove /* SkuHead */. It is not in PCD data bin.=20 c. Use the real string for the value in /* PcdTokenTable */ and /* PcdCNa= meTable */ Thanks Liming > -----Original Message----- > From: Feng, Bob C > Sent: Saturday, February 2, 2019 9:52 AM > To: edk2-devel@lists.01.org > Cc: Zhao, ZhiqiangX ; Feng, Bob C ; Gao, Liming > Subject: [Patch] BaseTools: Correct the PcdDatabase Info in AutoGen >=20 > From: Zhaozh1x >=20 > PcdDriver AutoGen code shows PCD DB format for debug purpose only. > But now, AutoGen code doesn't exactly match the generated > PCD DB binary file. It brings the complex for Pcd driver debug. >=20 > This patch is going to fix that issue. >=20 > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Bob Feng > Cc: Liming Gao > --- > BaseTools/Source/Python/AutoGen/GenPcdDb.py | 41 +++++++++++++-------- > 1 file changed, 26 insertions(+), 15 deletions(-) >=20 > diff --git a/BaseTools/Source/Python/AutoGen/GenPcdDb.py b/BaseTools/Sour= ce/Python/AutoGen/GenPcdDb.py > index cbf7a39dd5..2ca9001417 100644 > --- a/BaseTools/Source/Python/AutoGen/GenPcdDb.py > +++ b/BaseTools/Source/Python/AutoGen/GenPcdDb.py > @@ -52,23 +52,32 @@ ${END} > ${BEGIN} { ${EXMAPPING_TABLE_EXTOKEN}, ${EXMAPPING_TABLE_LOCAL_TOKEN}= , ${EXMAPPING_TABLE_GUID_INDEX} }, > ${END} > }, > /* LocalTokenNumberTable */ > { > -${BEGIN} offsetof(${PHASE}_PCD_DATABASE, ${TOKEN_INIT}.${TOKEN_CNAME}= _${TOKEN_GUID}${VARDEF_HEADER}) | > ${TOKEN_TYPE}, > +${BEGIN} ${LOCAL_TOKEN_NUMBER_DB_VALUE}, /* offsetof(${PHASE}_PCD_DAT= ABASE, > ${TOKEN_INIT}.${TOKEN_CNAME}_${TOKEN_GUID}${VARDEF_HEADER}) | ${TOKEN_TYP= E} */ > ${END} > }, > /* GuidTable */ > { > ${BEGIN} ${GUID_STRUCTURE}, > ${END} > }, > + /* StringHead */ > ${BEGIN} { ${STRING_HEAD_VALUE} }, /* > ${STRING_HEAD_CNAME_DECL}_${STRING_HEAD_GUID_DECL}[${STRING_HEAD_NUMSKUS_= DECL}] */ > ${END} > + /* PcdNameTable */ > + /* TokenSpaceCNameIndex, PcdCNameIndex, TokenSpaceCNameIndex, PcdCName= Index, ...... */ > + { > +${BEGIN} ${PCD_NAME_OFFSET}, > +${END} > + }, > + /* VariableHead */ > + /* StringIndex, DefaultValueOffset, GuidTableIndex, Offset, Attributes= , Property */ > ${BEGIN} /* ${VARIABLE_HEAD_CNAME_DECL}_${VARIABLE_HEAD_GUID_DECL}_Vari= able_Header[${VARIABLE_HEAD_NUMSKUS_DECL}] > */ > { > - ${VARIABLE_HEAD_VALUE} > + ${VARIABLE_DB_VALUE} > }, > ${END} > /* SkuHead */ > { > ${BEGIN} offsetof (${PHASE}_PCD_DATABASE, ${TOKEN_INIT}.${TOKEN_CNAME}= _${TOKEN_GUID}${VARDEF_HEADER}) | > ${TOKEN_TYPE}, /* */ > @@ -76,10 +85,20 @@ ${END} > ${END} > }, > /* StringTable */ > ${BEGIN} ${STRING_TABLE_VALUE}, /* ${STRING_TABLE_CNAME}_${STRING_TABLE= _GUID} */ > ${END} > + /* PcdTokenTable */ > + { > +${BEGIN} ${PCD_TOKENSPACE}, /* PCD_TOKENSPACE */ > +${END} > + }, > + /* PcdCNameTable */ > + { > +${BEGIN} ${PCD_CNAME}, /* PCD_CNAME */ > +${END} > + }, > /* SizeTable */ > { > ${BEGIN} ${SIZE_TABLE_MAXIMUM_LENGTH}, ${SIZE_TABLE_CURRENT_LENGTH}, = /* ${SIZE_TABLE_CNAME}_${SIZE_TABLE_GUID} */ > ${END} > }, > @@ -1221,18 +1240,10 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platfo= rm, DynamicPcdList, Phase): > if VariableGuid not in GuidList: > GuidList.append(VariableGuid) > Dict['GUID_STRUCTURE'].append(VariableGuidStructure) > VariableHeadGuidIndex =3D GuidList.index(VariableGuid) >=20 > - if "PCD_TYPE_STRING" in Pcd.TokenTypeList: > - VariableHeadValueList.append('%dU, offsetof(%s_PCD_D= ATABASE, Init.%s_%s), %dU, %sU' % > - (VariableHeadStringInde= x, Phase, CName, TokenSpaceGuid, > - VariableHeadGuidIndex, = Sku.VariableOffset)) > - else: > - VariableHeadValueList.append('%dU, offsetof(%s_PCD_D= ATABASE, Init.%s_%s_VariableDefault_%s), %dU, %sU' % > - (VariableHeadStringInde= x, Phase, CName, TokenSpaceGuid, SkuIdIndex, > - VariableHeadGuidIndex, = Sku.VariableOffset)) > Dict['VARDEF_CNAME_'+Pcd.DatumType].append(CName) > Dict['VARDEF_GUID_'+Pcd.DatumType].append(TokenSpaceGuid= ) > Dict['VARDEF_SKUID_'+Pcd.DatumType].append(SkuIdIndex) > if "PCD_TYPE_STRING" in Pcd.TokenTypeList: > Dict['VARDEF_VALUE_' + Pcd.DatumType].append("%s_%s[= %d]" % (Pcd.TokenCName, TokenSpaceGuid, > SkuIdIndex)) > @@ -1571,13 +1582,11 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platfo= rm, DynamicPcdList, Phase): > if AvailableSkuNumber not in Dict['SKUID_VALUE']: > Dict['SKUID_VALUE'].append(AvailableSkuNumber) > Dict['SKUID_VALUE'][0] =3D len(Dict['SKUID_VALUE']) - 1 >=20 > AutoGenH.Append(gPcdDatabaseAutoGenH.Replace(Dict)) > - if NumberOfLocalTokens =3D=3D 0: > - AutoGenC.Append(gEmptyPcdDatabaseAutoGenC.Replace(Dict)) > - else: > + if NumberOfLocalTokens !=3D 0: > # > # Update Size Table to the right order, it should be same with L= ocalTokenNumberTable > # > SizeCNameTempList =3D [] > SizeGuidTempList =3D [] > @@ -1603,15 +1612,17 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platfo= rm, DynamicPcdList, Phase): > Dict['SIZE_TABLE_CNAME'][Count] =3D SizeCNameTempList[Co= unt] > Dict['SIZE_TABLE_GUID'][Count] =3D SizeGuidTempList[Coun= t] > Dict['SIZE_TABLE_CURRENT_LENGTH'][Count] =3D SizeCurLenT= empList[Count] > Dict['SIZE_TABLE_MAXIMUM_LENGTH'][Count] =3D SizeMaxLenT= empList[Count] >=20 > - AutoGenC.Append(gPcdDatabaseAutoGenC.Replace(Dict)) > - >=20 > # print Phase > Buffer =3D BuildExDataBase(Dict) > + if NumberOfLocalTokens =3D=3D 0: > + AutoGenC.Append(gEmptyPcdDatabaseAutoGenC.Replace(Dict)) > + else: > + AutoGenC.Append(gPcdDatabaseAutoGenC.Replace(Dict)) > return AutoGenH, AutoGenC, Buffer, VarCheckTab >=20 > def GetOrderedDynamicPcdList(DynamicPcdList, PcdTokenNumberList): > ReorderedDyPcdList =3D [None for i in range(len(DynamicPcdList))] > for Pcd in DynamicPcdList: > -- > 2.20.1.windows.1