# X64 definitions - still a work in progress. This tool chain does not produce\r
# the correct ABI, it is just used to compile the code....\r
##################\r
-*_XCODE32_X64_CC_PATH = gcc-4.2\r
+*_XCODE32_X64_CC_PATH = gcc\r
*_XCODE32_X64_SLINK_PATH = libtool\r
*_XCODE32_X64_DLINK_PATH = ld\r
*_XCODE32_X64_ASM_PATH = as\r
-*_XCODE32_X64_PP_PATH = gcc-4.2\r
-*_XCODE32_X64_VFRPP_PATH = gcc-4.2\r
+*_XCODE32_X64_PP_PATH = gcc\r
+*_XCODE32_X64_VFRPP_PATH = gcc\r
*_XCODE32_X64_ASL_PATH = iasl\r
*_XCODE32_X64_ASLCC_PATH = gcc\r
*_XCODE32_X64_ASLPP_PATH = gcc\r
Offset = 0;\r
FileBuffer = NULL;\r
\r
- if (CompareGuid (VendorGuid, &mEfiCrc32SectionGuid) == 0) {\r
+ if (CompareGuid (VendorGuid, &mZeroGuid) == 0) {\r
Offset = sizeof (CRC32_SECTION_HEADER);\r
} else {\r
Offset = sizeof (EFI_GUID_DEFINED_SECTION);\r
//\r
// Now data is in FileBuffer + Offset\r
//\r
- if (CompareGuid (VendorGuid, &mEfiCrc32SectionGuid) == 0) {\r
+ if (CompareGuid (VendorGuid, &mZeroGuid) == 0) {\r
//\r
// Default Guid section is CRC32.\r
//\r
VerboseMsg ("Compress method is %s", mCompressionTypeName [SectCompSubType]);\r
} else if (stricmp (SectionName, mSectionTypeName[EFI_SECTION_GUID_DEFINED]) == 0) {\r
SectType = EFI_SECTION_GUID_DEFINED;\r
-\r
- if (CompareGuid (&VendorGuid, &mZeroGuid) == 0) {\r
- memcpy (&VendorGuid, &mEfiCrc32SectionGuid, sizeof (EFI_GUID));\r
- }\r
\r
if ((SectGuidAttribute & EFI_GUIDED_SECTION_NONE) != 0) {\r
//\r
break;\r
\r
case EFI_SECTION_GUID_DEFINED:\r
- if (InputFileAlign != NULL && (CompareGuid (&VendorGuid, &mEfiCrc32SectionGuid) != 0)) {\r
+ if (InputFileAlign != NULL && (CompareGuid (&VendorGuid, &mZeroGuid) != 0)) {\r
//\r
// Only process alignment for the default known CRC32 guided section.\r
// For the unknown guided section, the alignment is processed when the dummy all section (EFI_SECTION_ALL) is generated.\r
\r
**/\r
\r
-#define __BUILD_VERSION "Build 2518"\r
+#define __BUILD_VERSION "Build 2524"\r
for Arch in self.ArchList:\r
Platform = self.BuildDatabase[self.MetaFile, Arch, Target, Toolchain]\r
\r
- DecPcds = set()\r
+ DecPcds = {}\r
PGen = PlatformAutoGen(self, self.MetaFile, Target, Toolchain, Arch)\r
Pkgs = PGen.PackageList\r
for Pkg in Pkgs:\r
- for Pcd in Pkg.Pcds.keys():\r
- DecPcds.add((Pcd[0], Pcd[1]))\r
+ for Pcd in Pkg.Pcds:\r
+ DecPcds[Pcd[0], Pcd[1]] = Pkg.Pcds[Pcd]\r
Platform.IsPlatformPcdDeclared(DecPcds)\r
\r
Platform.SkuName = self.SkuId\r
\r
for Index in xrange(len(ValueList)):\r
Value = None\r
- if ValueList[Index].startswith('0x'):\r
+ if ValueList[Index].lower().startswith('0x'):\r
# translate hex value\r
try:\r
Value = int(ValueList[Index], 16)\r
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
#\r
\r
-gBUILD_VERSION = "Build 2518"\r
+gBUILD_VERSION = "Build 2524"\r
if self.__IsNumberToken():\r
return self._Expr\r
\r
- Token = self._GetToken()\r
- if type(Token) == type('') and Token.startswith('{') and Token.endswith('}') and self._Idx >= self._Len:\r
- return self._Expr\r
+ try:\r
+ Token = self._GetToken()\r
+ if type(Token) == type('') and Token.startswith('{') and Token.endswith('}') and self._Idx >= self._Len:\r
+ return self._Expr\r
+ except BadExpression:\r
+ pass\r
\r
self._Idx = 0\r
self._Token = ''\r
self.SectionType = None\r
self.ProcessRequired = False\r
self.AuthStatusValid = False\r
+ self.ExtraHeaderSize = -1\r
self.FvAddr = []\r
self.FvParentAddr = None\r
self.IncludeFvSection = False\r
GuidSectionObj.SectionType = "GUIDED"\r
GuidSectionObj.ProcessRequired = AttribDict["PROCESSING_REQUIRED"]\r
GuidSectionObj.AuthStatusValid = AttribDict["AUTH_STATUS_VALID"]\r
+ GuidSectionObj.ExtraHeaderSize = AttribDict["EXTRA_HEADER_SIZE"]\r
# Recursive sections...\r
while True:\r
IsLeafSection = self.__GetLeafSection(GuidSectionObj)\r
AttribDict = {}\r
AttribDict["PROCESSING_REQUIRED"] = "NONE"\r
AttribDict["AUTH_STATUS_VALID"] = "NONE"\r
- if self.__IsKeyword("PROCESSING_REQUIRED") or self.__IsKeyword("AUTH_STATUS_VALID"):\r
+ AttribDict["EXTRA_HEADER_SIZE"] = -1\r
+ while self.__IsKeyword("PROCESSING_REQUIRED") or self.__IsKeyword("AUTH_STATUS_VALID") \\r
+ or self.__IsKeyword("EXTRA_HEADER_SIZE"):\r
AttribKey = self.__Token\r
\r
if not self.__IsToken("="):\r
raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
\r
- if not self.__GetNextToken() or self.__Token.upper() not in ("TRUE", "FALSE", "1", "0"):\r
- raise Warning("expected TRUE/FALSE (1/0)", self.FileName, self.CurrentLineNumber)\r
- AttribDict[AttribKey] = self.__Token\r
-\r
- if self.__IsKeyword("PROCESSING_REQUIRED") or self.__IsKeyword("AUTH_STATUS_VALID"):\r
- AttribKey = self.__Token\r
-\r
- if not self.__IsToken("="):\r
- raise Warning("expected '='")\r
-\r
- if not self.__GetNextToken() or self.__Token.upper() not in ("TRUE", "FALSE", "1", "0"):\r
+ if not self.__GetNextToken():\r
+ raise Warning("expected TRUE(1)/FALSE(0)/Number", self.FileName, self.CurrentLineNumber)\r
+ elif AttribKey == "EXTRA_HEADER_SIZE":\r
+ Base = 10\r
+ if self.__Token[0:2].upper() == "0X":\r
+ Base = 16\r
+ try:\r
+ AttribDict[AttribKey] = int(self.__Token, Base)\r
+ continue\r
+ except ValueError:\r
+ raise Warning("expected Number", self.FileName, self.CurrentLineNumber)\r
+ elif self.__Token.upper() not in ("TRUE", "FALSE", "1", "0"):\r
raise Warning("expected TRUE/FALSE (1/0)", self.FileName, self.CurrentLineNumber)\r
AttribDict[AttribKey] = self.__Token\r
\r
GuidSectionObj.SectionType = "GUIDED"\r
GuidSectionObj.ProcessRequired = AttribDict["PROCESSING_REQUIRED"]\r
GuidSectionObj.AuthStatusValid = AttribDict["AUTH_STATUS_VALID"]\r
+ GuidSectionObj.ExtraHeaderSize = AttribDict["EXTRA_HEADER_SIZE"]\r
\r
# Efi sections...\r
while True:\r
\r
Attribute = []\r
HeaderLength = None\r
- if self.ProcessRequired == "NONE":\r
+ if self.ExtraHeaderSize != -1:\r
+ HeaderLength = str(self.ExtraHeaderSize)\r
+\r
+ if self.ProcessRequired == "NONE" and HeaderLength == None:\r
if TempFileSize > InputFileSize and TempFileSize % 4 == 0:\r
FileHandleIn.seek(0)\r
BufferIn = FileHandleIn.read()\r
if self.ProcessRequired in ("TRUE", "1"):\r
if 'PROCESSING_REQUIRED' not in Attribute:\r
Attribute.append('PROCESSING_REQUIRED')\r
- HeaderLength = None\r
+ \r
if self.AuthStatusValid in ("TRUE", "1"):\r
Attribute.append('AUTH_STATUS_VALID')\r
GenFdsGlobalVariable.GenerateSection(OutputFile, [TempFile], Section.Section.SectionType['GUIDED'],\r
Build version information\r
'''\r
\r
-gBUILD_VERSION = "Build 2518"\r
+gBUILD_VERSION = "Build 2524"\r
EdkLogger.error('build', PARSER_ERROR,\r
"Pcd (%s.%s) defined in DSC is not declared in DEC files." % (TokenSpaceGuid, PcdCName),\r
File=self.MetaFile, Line=Dummy4)\r
+ PcdValue = ''\r
+ if PcdType in (MODEL_PCD_DYNAMIC_VPD, MODEL_PCD_DYNAMIC_EX_VPD):\r
+ if DecPcds[PcdCName, TokenSpaceGuid].DatumType == "VOID*":\r
+ PcdValue = AnalyzeVpdPcdData(Setting)[2]\r
+ else:\r
+ PcdValue = AnalyzeVpdPcdData(Setting)[1]\r
+ elif PcdType in (MODEL_PCD_DYNAMIC_HII, MODEL_PCD_DYNAMIC_EX_HII):\r
+ PcdValue = AnalyzeHiiPcdData(Setting)[3]\r
+ else:\r
+ PcdValue = AnalyzePcdData(Setting)[0]\r
+ if PcdValue:\r
+ Valid, ErrStr = CheckPcdDatum(DecPcds[PcdCName, TokenSpaceGuid].DatumType, PcdValue)\r
+ if not Valid:\r
+ EdkLogger.error('build', FORMAT_INVALID, ErrStr, File=self.MetaFile, Line=Dummy4,\r
+ ExtraData="%s.%s" % (TokenSpaceGuid, PcdCName))\r
\r
_Macros = property(_GetMacros)\r
Arch = property(_GetArch, _SetArch)\r
from Common.DataType import TAB_SPACE_SPLIT\r
from Common.DataType import TAB_BRG_PCD\r
from Common.DataType import TAB_BRG_LIBRARY\r
+from Common.DataType import TAB_BACK_SLASH\r
\r
## Pattern to extract contents in EDK DXS files\r
gDxsDependencyPattern = re.compile(r"DEPENDENCY_START(.+)DEPENDENCY_END", re.DOTALL)\r
while len(Line.rstrip()) > MaxLength:\r
LineSpaceIndex = Line.rfind(TAB_SPACE_SPLIT, 0, MaxLength)\r
LineSlashIndex = Line.rfind(TAB_SLASH, 0, MaxLength)\r
- LineBreakIndex = MaxLength\r
- if LineSpaceIndex > LineSlashIndex:\r
- LineBreakIndex = LineSpaceIndex\r
- elif LineSlashIndex > LineSpaceIndex:\r
- LineBreakIndex = LineSlashIndex\r
+ LineBackSlashIndex = Line.rfind(TAB_BACK_SLASH, 0, MaxLength)\r
+ if max(LineSpaceIndex, LineSlashIndex, LineBackSlashIndex) > 0:\r
+ LineBreakIndex = max(LineSpaceIndex, LineSlashIndex, LineBackSlashIndex)\r
+ else:\r
+ LineBreakIndex = MaxLength\r
NewContentList.append(Line[:LineBreakIndex])\r
Line = Line[LineBreakIndex:]\r
if Line:\r