PcdItem = BuildData.Pcds[key]\r
if (TokenSpaceGuidCName, TokenCName) == (PcdItem.TokenSpaceGuidCName, PcdItem.TokenCName) and FieldName =="":\r
PcdItem.DefaultValue = pcdvalue\r
+ PcdItem.PcdValueFromComm = pcdvalue\r
#In command line, the latter full assign value in commandLine should override the former field assign value.\r
#For example, --pcd Token.pcd.field="" --pcd Token.pcd=H"{}"\r
delete_assign = []\r
if not FieldName:\r
if PcdDatumType not in TAB_PCD_NUMERIC_TYPES:\r
PcdValue = '"' + PcdValue + '"'\r
+ elif not PcdValue.isdigit() and not PcdValue.upper().startswith('0X'):\r
+ PcdValue = '"' + PcdValue + '"'\r
else:\r
IsArray = False\r
Base = 10\r
elif TAB_DEFAULT in pcd.SkuInfoList and TAB_COMMON in pcd.SkuInfoList:\r
del pcd.SkuInfoList[TAB_COMMON]\r
\r
+ #For the same one VOID* pcd, if the default value type of one SKU is "Unicode string",\r
+ #the other SKUs are "OtherVOID*"(ASCII string or byte array),Then convert "Unicode string" to "byte array".\r
+ for pcd in Pcds.values():\r
+ PcdValueTypeSet = set()\r
+ for sku in pcd.SkuInfoList.values():\r
+ PcdValueTypeSet.add("UnicodeString" if sku.DefaultValue.startswith(('L"',"L'")) else "OtherVOID*")\r
+ if len(PcdValueTypeSet) > 1:\r
+ for sku in pcd.SkuInfoList.values():\r
+ sku.DefaultValue = StringToArray(sku.DefaultValue) if sku.DefaultValue.startswith(('L"',"L'")) else sku.DefaultValue\r
\r
map(self.FilterSkuSettings, Pcds.values())\r
return Pcds\r
ModuleData = self._Bdb[ModuleFile, self._Arch, self._Target, self._Toolchain]\r
PkgSet.update(ModuleData.Packages)\r
self._DecPcds, self._GuidDict = GetDeclaredPcd(self, self._Bdb, self._Arch, self._Target, self._Toolchain, PkgSet)\r
+ self._GuidDict.update(GlobalData.gPlatformPcds)\r
return self._DecPcds\r