a) Added explicit banner for pass/fail indication of build
authorjwang36 <jwang36@7335b38e-4728-0410-8992-fb3ffe349368>
Thu, 8 May 2008 13:05:14 +0000 (13:05 +0000)
committerjwang36 <jwang36@7335b38e-4728-0410-8992-fb3ffe349368>
Thu, 8 May 2008 13:05:14 +0000 (13:05 +0000)
b) Fixed the issue which cause error message from FDF parser won't be printed out.
c) Fixed the error message format of FDF parser
d) Changed the exit code of build tool from always 1 to be error code, if error occurred

git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@1200 7335b38e-4728-0410-8992-fb3ffe349368

Source/Python/Common/BuildToolError.py
Source/Python/Common/EdkLogger.py
Source/Python/GenFds/FdfParser.py
Source/Python/GenFds/GenFds.py
Source/Python/build/build.py

index 12da69a..5391fc2 100755 (executable)
@@ -11,7 +11,6 @@
 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #
 
-FILE_NOT_FOUND = 0
 FILE_OPEN_FAILURE = 1
 FILE_WRITE_FAILURE = 2
 FILE_PARSE_FAILURE = 3
@@ -25,6 +24,7 @@ FILE_DELETE_FAILURE = 10
 FILE_COPY_FAILURE = 11
 FILE_POSITIONING_FAILURE = 12
 FILE_ALREADY_EXIST = 13
+FILE_NOT_FOUND = 14
 FILE_UNKNOWN_ERROR = 0x0FFF
 
 OPTION_UNKNOWN = 0x1000
@@ -65,13 +65,17 @@ IO_UNKNOWN_ERROR = 0x6FFF
 
 COMMAND_FAILURE = 0x7000
 
+CODE_ERROR = 0xC0DE
+
 AUTOGEN_ERROR = 0xF000
 PARSER_ERROR = 0xF001
 BUILD_ERROR = 0xF002
 GENFDS_ERROR = 0xF003
 ECC_ERROR = 0xF004
 EOT_ERROR = 0xF005
+WARNING_AS_ERROR = 0xF006
 MIGRATION_ERROR = 0xF010
+ABORT_ERROR = 0xFFFE
 UNKNOWN_ERROR = 0xFFFF
 
 ## Error message of each error code
@@ -104,10 +108,10 @@ gErrorMessage = {
     PARAMETER_MISSING       :   "Missing parameter",
     PARAMETER_UNKNOWN_ERROR :   "Unknown error in parameters",
 
-    FORMAT_INVALID          :   "Invalid sytax/format",
-    FORMAT_NOT_SUPPORTED    :   "Not supported sytax/format",
+    FORMAT_INVALID          :   "Invalid syntax/format",
+    FORMAT_NOT_SUPPORTED    :   "Not supported syntax/format",
     FORMAT_UNKNOWN          :   "Unknown format",
-    FORMAT_UNKNOWN_ERROR    :   "Unknown error in sytax/format ",
+    FORMAT_UNKNOWN_ERROR    :   "Unknown error in syntax/format ",
 
     RESOURCE_NOT_AVAILABLE  :   "Not available",
     RESOURCE_ALLOCATE_FAILURE :   "Allocate failure",
index d59e7db..a4dda36 100644 (file)
@@ -51,24 +51,24 @@ _ErrorLogger = logging.getLogger("tool_error")
 _ErrorFormatter = logging.Formatter("%(message)s")
 
 # String templates for ERROR/WARN/DEBUG log message
-_ErrorMessageTemplate = '\n%(tool)s...\n%(file)s(%(line)s): error %(errorcode)X: %(msg)s\n    %(extra)s'
-_ErrorMessageTemplateWithoutFile = '\n%(tool)s...\n : error %(errorcode)04X: %(msg)s\n    %(extra)s'
+_ErrorMessageTemplate = '\n\n%(tool)s...\n%(file)s(%(line)s): error %(errorcode)04X: %(msg)s\n    %(extra)s'
+_ErrorMessageTemplateWithoutFile = '\n\n%(tool)s...\n : error %(errorcode)04X: %(msg)s\n    %(extra)s'
 _WarningMessageTemplate = '%(tool)s...\n%(file)s(%(line)s): warning: %(msg)s'
 _WarningMessageTemplateWithoutFile = '%(tool)s: : warning: %(msg)s'
 _DebugMessageTemplate = '%(file)s(%(line)s): debug: %(msg)s'
 
-# 
-# Flag used to take WARN as ERROR. 
+#
+# Flag used to take WARN as ERROR.
 # By default, only ERROR message will break the tools execution.
-# 
+#
 _WarningAsError = False
 
 ## Log debug message
-# 
+#
 #   @param  Level       DEBUG level (DEBUG0~9)
 #   @param  Message     Debug information
 #   @param  ExtraData   More information associated with "Message"
-# 
+#
 def debug(Level, Message, ExtraData=None):
     if _DebugLogger.level > Level:
         return
@@ -91,23 +91,23 @@ def debug(Level, Message, ExtraData=None):
     _DebugLogger.log(Level, LogText)
 
 ## Log verbose message
-# 
+#
 #   @param  Message     Verbose information
-# 
+#
 def verbose(Message):
     return _InfoLogger.log(VERBOSE, Message)
 
 ## Log warning message
 #
 #   Warning messages are those which might be wrong but won't fail the tool.
-# 
+#
 #   @param  ToolName    The name of the tool. If not given, the name of caller
 #                       method will be used.
 #   @param  Message     Warning information
 #   @param  File        The name of file which caused the warning.
 #   @param  Line        The line number in the "File" which caused the warning.
 #   @param  ExtraData   More information associated with "Message"
-# 
+#
 def warn(ToolName, Message, File=None, Line=None, ExtraData=None):
     if _InfoLogger.level > WARN:
         return
@@ -140,7 +140,7 @@ def warn(ToolName, Message, File=None, Line=None, ExtraData=None):
 
     # Raise an execption if indicated
     if _WarningAsError == True:
-        raise FatalError("%s failed by warning!" % ToolName)
+        raise FatalError(WARNING_AS_ERROR)
 
 ## Log INFO message
 info    = _InfoLogger.info
@@ -150,7 +150,7 @@ info    = _InfoLogger.info
 #   Once an error messages is logged, the tool's execution will be broken by raising
 # an execption. If you don't want to break the execution later, you can give
 # "RaiseError" with "False" value.
-# 
+#
 #   @param  ToolName    The name of the tool. If not given, the name of caller
 #                       method will be used.
 #   @param  ErrorCode   The error code
@@ -158,9 +158,9 @@ info    = _InfoLogger.info
 #   @param  File        The name of file which caused the error.
 #   @param  Line        The line number in the "File" which caused the warning.
 #   @param  ExtraData   More information associated with "Message"
-#   @param  RaiseError  Raise an exception to break the tool's executuion if 
+#   @param  RaiseError  Raise an exception to break the tool's executuion if
 #                       it's True. This is the default behavior.
-# 
+#
 def error(ToolName, ErrorCode, Message=None, File=None, Line=None, ExtraData=None, RaiseError=True):
     # if no tool name given, use caller's source file name as tool name
     if ToolName == None or ToolName == "":
@@ -196,7 +196,7 @@ def error(ToolName, ErrorCode, Message=None, File=None, Line=None, ExtraData=Non
 
     _ErrorLogger.log(ERROR, LogText)
     if RaiseError:
-        raise FatalError("%s failed!" % ToolName)
+        raise FatalError(ErrorCode)
 
 # Log information which should be always put out
 quiet   = _ErrorLogger.error
@@ -206,25 +206,25 @@ def Initialize():
     #
     # Since we use different format to log different levels of message into different
     # place (stdout or stderr), we have to use different "Logger" objects to do this.
-    # 
+    #
     # For DEBUG level (All DEBUG_0~9 are applicable)
     _DebugLogger.setLevel(INFO)
     _DebugChannel = logging.StreamHandler(sys.stdout)
     _DebugChannel.setFormatter(_DebugFormatter)
     _DebugLogger.addHandler(_DebugChannel)
-    
+
     # For VERBOSE, INFO, WARN level
     _InfoLogger.setLevel(INFO)
     _InfoChannel = logging.StreamHandler(sys.stdout)
     _InfoChannel.setFormatter(_InfoFormatter)
     _InfoLogger.addHandler(_InfoChannel)
-    
+
     # For ERROR level
     _ErrorLogger.setLevel(INFO)
     _ErrorCh = logging.StreamHandler(sys.stderr)
     _ErrorCh.setFormatter(_ErrorFormatter)
     _ErrorLogger.addHandler(_ErrorCh)
-    
+
 ## Set log level
 #
 #   @param  Level   One of log level in _LogLevel
@@ -248,7 +248,7 @@ def SetWarningAsError():
 ## Specify a file to store the log message as well as put on console
 #
 #   @param  LogFile     The file path used to store the log message
-# 
+#
 def SetLogFile(LogFile):
     if os.path.exists(LogFile):
         os.remove(LogFile)
index 96f73c8..53a7399 100644 (file)
@@ -36,7 +36,9 @@ import RuleSimpleFile
 import EfiSection\r
 import Vtf\r
 import ComponentStatement\r
-#import GenFdsGlobalVariable\r
+\r
+from Common.BuildToolError import *\r
+from Common import EdkLogger\r
 \r
 import re\r
 import os\r
@@ -57,7 +59,7 @@ import os
 T_CHAR_BACKSLASH, T_CHAR_DOUBLE_QUOTE, T_CHAR_SINGLE_QUOTE, T_CHAR_STAR, T_CHAR_HASH) = \\r
 (' ', '\0', '\r', '\t', '\n', '/', '\\', '\"', '\'', '*', '#')\r
 \r
-SEPERATOR_TUPLE = ('=', '|', ',', '{', '}') \r
+SEPERATOR_TUPLE = ('=', '|', ',', '{', '}')\r
 \r
 IncludeFileList = []\r
 # Macro passed from command line, which has greatest priority and can NOT be overridden by those in FDF\r
@@ -66,14 +68,14 @@ InputMacroDict = {}
 AllMacroList = []\r
 \r
 def GetRealFileLine (File, Line):\r
-    \r
+\r
     InsertedLines = 0\r
     for Profile in IncludeFileList:\r
         if Line >= Profile.InsertStartLineNumber and Line < Profile.InsertStartLineNumber + Profile.InsertAdjust + len(Profile.FileLinesList):\r
             return (Profile.FileName, Line - Profile.InsertStartLineNumber + 1)\r
         if Line >= Profile.InsertStartLineNumber + Profile.InsertAdjust + len(Profile.FileLinesList):\r
             InsertedLines += Profile.InsertAdjust + len(Profile.FileLinesList)\r
-    \r
+\r
     return (File, Line - InsertedLines)\r
 \r
 ## The exception class that used to report error messages when parsing FDF\r
@@ -89,13 +91,16 @@ class Warning (Exception):
     #   @param  Line        The Line number that error occurs\r
     #\r
     def __init__(self, Str, File = None, Line = None):\r
-        \r
+\r
         FileLineTuple = GetRealFileLine(File, Line)\r
         self.FileName = FileLineTuple[0]\r
         self.LineNumber = FileLineTuple[1]\r
-        self.message = Str + str(self.LineNumber)\r
-        self.ToolName = 'FDF Parser'\r
-        \r
+        self.Message = Str\r
+        self.ToolName = 'FdfParser'\r
+\r
+    def __str__(self):\r
+        return self.Message\r
+\r
 ## The MACRO class that used to record macro value data when parsing include file\r
 #\r
 #\r
@@ -106,7 +111,7 @@ class MacroProfile :
     #   @param  FileName    The file that to be parsed\r
     #\r
     def __init__(self, FileName, Line):\r
-        self.FileName = FileName        \r
+        self.FileName = FileName\r
         self.DefinedAtLine  = Line\r
         self.MacroName = None\r
         self.MacroValue = None\r
@@ -131,9 +136,9 @@ class IncludeFileProfile :
             finally:\r
                 fsock.close()\r
 \r
-        except IOError:\r
-            raise Warning("Error when opening file %s" % FileName)\r
-        \r
+        except:\r
+            EdkLogger.error("FdfParser", FILE_OPEN_FAILURE, ExtraData=FileName)\r
+\r
         self.InsertStartLineNumber = None\r
         self.InsertAdjust = 0\r
 \r
@@ -156,12 +161,13 @@ class FileProfile :
             finally:\r
                 fsock.close()\r
 \r
-        except IOError:\r
-            raise Warning("Error when opening file %s" % FileName)\r
-        \r
+        except:\r
+            EdkLogger.error("FdfParser", FILE_OPEN_FAILURE, ExtraData=FileName)\r
+\r
+\r
         self.PcdDict = {}\r
         self.InfList = []\r
-        \r
+\r
         self.FdDict = {}\r
         self.FvDict = {}\r
         self.CapsuleList = []\r
@@ -175,7 +181,7 @@ class FileProfile :
 #\r
 # GetNext*** procedures mean these procedures will get next token first, then make judgement.\r
 # Get*** procedures mean these procedures will make judgement on current token only.\r
-#        \r
+#\r
 class FdfParser:\r
     ## The constructor\r
     #\r
@@ -191,7 +197,7 @@ class FdfParser:
         self.CurrentFvName = None\r
         self.__Token = ""\r
         self.__SkippedChars = ""\r
-        \r
+\r
         self.__WipeOffArea = []\r
 \r
     ## __IsWhiteSpace() method\r
@@ -242,7 +248,7 @@ class FdfParser:
         if self.CurrentLineNumber == NumberOfLines and self.CurrentOffsetWithinLine >= SizeOfLastLine - 1:\r
             return True\r
         elif self.CurrentLineNumber > NumberOfLines:\r
-            return True \r
+            return True\r
         else:\r
             return False\r
 \r
@@ -260,7 +266,7 @@ class FdfParser:
             return True\r
         else:\r
             return False\r
-    \r
+\r
     ## Rewind() method\r
     #\r
     #   Reset file data buffer to the initial state\r
@@ -270,7 +276,7 @@ class FdfParser:
     def Rewind(self):\r
         self.CurrentLineNumber = 1\r
         self.CurrentOffsetWithinLine = 0\r
-    \r
+\r
     ## __UndoOneChar() method\r
     #\r
     #   Go back one char in the file buffer\r
@@ -278,9 +284,9 @@ class FdfParser:
     #   @param  self        The object pointer\r
     #   @retval True        Successfully go back one char\r
     #   @retval False       Not able to go back one char as file beginning reached\r
-    #    \r
+    #\r
     def __UndoOneChar(self):\r
-        \r
+\r
         if self.CurrentLineNumber == 1 and self.CurrentOffsetWithinLine == 0:\r
             return False\r
         elif self.CurrentOffsetWithinLine == 0:\r
@@ -289,13 +295,13 @@ class FdfParser:
         else:\r
             self.CurrentOffsetWithinLine -= 1\r
         return True\r
-        \r
+\r
     ## __GetOneChar() method\r
     #\r
     #   Move forward one char in the file buffer\r
     #\r
     #   @param  self        The object pointer\r
-    #  \r
+    #\r
     def __GetOneChar(self):\r
         if self.CurrentOffsetWithinLine == len(self.Profile.FileLinesList[self.CurrentLineNumber - 1]) - 1:\r
                 self.CurrentLineNumber += 1\r
@@ -309,10 +315,10 @@ class FdfParser:
     #\r
     #   @param  self        The object pointer\r
     #   @retval Char        Current char\r
-    #  \r
+    #\r
     def __CurrentChar(self):\r
         return self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine]\r
-    \r
+\r
     ## __NextChar() method\r
     #\r
     #   Get the one char pass the char pointed to by the file buffer pointer\r
@@ -325,7 +331,7 @@ class FdfParser:
             return self.Profile.FileLinesList[self.CurrentLineNumber][0]\r
         else:\r
             return self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine + 1]\r
-        \r
+\r
     ## __SetCurrentCharValue() method\r
     #\r
     #   Modify the value of current char\r
@@ -335,7 +341,7 @@ class FdfParser:
     #\r
     def __SetCurrentCharValue(self, Value):\r
         self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine] = Value\r
-        \r
+\r
     ## __CurrentLine() method\r
     #\r
     #   Get the list that contains current line contents\r
@@ -345,10 +351,10 @@ class FdfParser:
     #\r
     def __CurrentLine(self):\r
         return self.Profile.FileLinesList[self.CurrentLineNumber - 1]\r
-        \r
+\r
     def __StringToList(self):\r
         self.Profile.FileLinesList = [list(s) for s in self.Profile.FileLinesList]\r
-    \r
+\r
     def __ReplaceMacros(self, Str, File, Line):\r
         MacroEnd = 0\r
         while Str.find('$(', MacroEnd) >= 0:\r
@@ -359,20 +365,20 @@ class FdfParser:
                 Value = None\r
                 if Name in InputMacroDict:\r
                     Value = InputMacroDict[Name]\r
-                   \r
+\r
                 else:\r
                     for Profile in AllMacroList:\r
                         if Profile.FileName == File and Profile.MacroName == Name and Profile.DefinedAtLine <= Line:\r
                             Value = Profile.MacroValue\r
-                            \r
+\r
                 if Value != None:\r
                     Str = Str.replace('$(' + Name + ')', Value)\r
-                    MacroEnd = MacroStart + len(Value) \r
-                \r
+                    MacroEnd = MacroStart + len(Value)\r
+\r
             else:\r
-                raise Warning("Macro not complete At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Macro not complete", self.FileName, self.CurrentLineNumber)\r
         return Str\r
-    \r
+\r
     def __ReplaceFragment(self, StartPos, EndPos, Value = ' '):\r
         if StartPos[0] == EndPos[0]:\r
             Offset = StartPos[1]\r
@@ -380,12 +386,12 @@ class FdfParser:
                 self.Profile.FileLinesList[StartPos[0]][Offset] = Value\r
                 Offset += 1\r
             return\r
-        \r
+\r
         Offset = StartPos[1]\r
         while self.Profile.FileLinesList[StartPos[0]][Offset] not in ('\r', '\n'):\r
             self.Profile.FileLinesList[StartPos[0]][Offset] = Value\r
             Offset += 1\r
-        \r
+\r
         Line = StartPos[0]\r
         while Line < EndPos[0]:\r
             Offset = 0\r
@@ -393,13 +399,13 @@ class FdfParser:
                 self.Profile.FileLinesList[Line][Offset] = Value\r
                 Offset += 1\r
             Line += 1\r
-            \r
+\r
         Offset = 0\r
         while Offset <= EndPos[1]:\r
             self.Profile.FileLinesList[EndPos[0]][Offset] = Value\r
             Offset += 1\r
-            \r
-    \r
+\r
+\r
     ## PreprocessFile() method\r
     #\r
     #   Preprocess file contents, replace comments with spaces.\r
@@ -408,18 +414,18 @@ class FdfParser:
     #   !include statement should be expanded at the same FileLinesList[CurrentLineNumber - 1]\r
     #\r
     #   @param  self        The object pointer\r
-    #   \r
+    #\r
     def PreprocessFile(self):\r
-        \r
+\r
         self.Rewind()\r
         InComment = False\r
         DoubleSlashComment = False\r
         HashComment = False\r
         # HashComment in quoted string " " is ignored.\r
-        InString = False    \r
-        \r
+        InString = False\r
+\r
         while not self.__EndOfFile():\r
-            \r
+\r
             if self.__CurrentChar() == T_CHAR_DOUBLE_QUOTE and not InComment:\r
                 InString = not InString\r
             # meet new line, then no longer in a comment for // and '#'\r
@@ -460,7 +466,7 @@ class FdfParser:
                 InComment = True\r
             else:\r
                 self.__GetOneChar()\r
-        \r
+\r
         # restore from ListOfList to ListOfString\r
         self.Profile.FileLinesList = ["".join(list) for list in self.Profile.FileLinesList]\r
         self.Rewind()\r
@@ -471,16 +477,16 @@ class FdfParser:
     #   In the end, rewind the file buffer pointer to the beginning\r
     #\r
     #   @param  self        The object pointer\r
-    #   \r
+    #\r
     def PreprocessIncludeFile(self):\r
-        \r
+\r
         while self.__GetNextToken():\r
-            \r
+\r
             if self.__Token == '!include':\r
                 IncludeLine = self.CurrentLineNumber\r
                 IncludeOffset = self.CurrentOffsetWithinLine - len('!include')\r
                 if not self.__GetNextToken():\r
-                    raise Warning("expected include file name At Line ", self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected include file name", self.FileName, self.CurrentLineNumber)\r
                 IncFileName = self.__Token\r
                 if not os.path.isabs(IncFileName):\r
                     if IncFileName.startswith('$(WORKSPACE)'):\r
@@ -494,14 +500,14 @@ class FdfParser:
                         FullFdf = self.FileName\r
                         if not os.path.isabs(self.FileName):\r
                             FullFdf = os.path.join(os.environ.get('WORKSPACE'), self.FileName)\r
-                \r
+\r
                         IncFileName = os.path.join(os.path.dirname(FullFdf), IncFileName)\r
-                    \r
+\r
                 if not os.path.exists(os.path.normpath(IncFileName)):\r
-                    raise Warning("Include file not exists At Line ", self.FileName, self.CurrentLineNumber)\r
-                \r
+                    raise Warning("Include file not exists", self.FileName, self.CurrentLineNumber)\r
+\r
                 IncFileProfile = IncludeFileProfile(os.path.normpath(IncFileName))\r
-                \r
+\r
                 CurrentLine = self.CurrentLineNumber\r
                 CurrentOffset = self.CurrentOffsetWithinLine\r
                 # list index of the insertion, note that line number is 'CurrentLine + 1'\r
@@ -515,19 +521,19 @@ class FdfParser:
                         IncFileProfile.InsertAdjust += 1\r
                         self.CurrentLineNumber += 1\r
                         self.CurrentOffsetWithinLine = 0\r
-                \r
+\r
                 for Line in IncFileProfile.FileLinesList:\r
                     self.Profile.FileLinesList.insert(InsertAtLine, Line)\r
                     self.CurrentLineNumber += 1\r
-                    InsertAtLine += 1    \r
-                \r
+                    InsertAtLine += 1\r
+\r
                 IncludeFileList.append(IncFileProfile)\r
-                \r
+\r
                 # comment out the processed include file statement\r
                 TempList = list(self.Profile.FileLinesList[IncludeLine - 1])\r
                 TempList.insert(IncludeOffset, '#')\r
                 self.Profile.FileLinesList[IncludeLine - 1] = ''.join(TempList)\r
-                \r
+\r
         self.Rewind()\r
 \r
     ## PreprocessIncludeFile() method\r
@@ -536,7 +542,7 @@ class FdfParser:
     #   In the end, rewind the file buffer pointer to the beginning\r
     #\r
     #   @param  self        The object pointer\r
-    #   \r
+    #\r
     def PreprocessConditionalStatement(self):\r
         # IfList is a stack of if branches with elements of list [Pos, CondSatisfied, BranchDetermined]\r
         IfList = []\r
@@ -545,14 +551,14 @@ class FdfParser:
                 DefineLine = self.CurrentLineNumber - 1\r
                 DefineOffset = self.CurrentOffsetWithinLine - len('DEFINE')\r
                 if not self.__GetNextToken():\r
-                    raise Warning("expected Macro name At Line ", self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected Macro name", self.FileName, self.CurrentLineNumber)\r
                 Macro = self.__Token\r
                 if not self.__IsToken( "="):\r
-                    raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-                \r
+                    raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
                 if not self.__GetNextToken():\r
-                    raise Warning("expected value At Line ", self.FileName, self.CurrentLineNumber)\r
-                \r
+                    raise Warning("expected value", self.FileName, self.CurrentLineNumber)\r
+\r
                 if self.__GetStringData():\r
                     pass\r
                 Value = self.__Token\r
@@ -563,35 +569,35 @@ class FdfParser:
                     MacProfile.MacroValue = Value\r
                     AllMacroList.append(MacProfile)\r
                 self.__WipeOffArea.append(((DefineLine, DefineOffset), (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))\r
-            \r
+\r
             elif self.__Token in ('!ifdef', '!ifndef', '!if'):\r
                 IfStartPos = (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - len(self.__Token))\r
                 IfList.append([IfStartPos, None, None])\r
                 CondLabel = self.__Token\r
-                \r
+\r
                 if not self.__GetNextToken():\r
-                    raise Warning("expected Macro name At Line ", self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected Macro name", self.FileName, self.CurrentLineNumber)\r
                 MacroName = self.__Token\r
                 NotFlag = False\r
                 if MacroName.startswith('!'):\r
                     NotFlag = True\r
-                        \r
+\r
                 NotDefineFlag = False\r
                 if CondLabel == '!ifndef':\r
                     NotDefineFlag = True\r
                 if CondLabel == '!ifdef' or CondLabel == '!ifndef':\r
                     if NotFlag:\r
-                        raise Warning("'NOT' operation not allowed for Macro name At Line ", self.FileName, self.CurrentLineNumber)\r
-                    \r
+                        raise Warning("'NOT' operation not allowed for Macro name", self.FileName, self.CurrentLineNumber)\r
+\r
                 if CondLabel == '!if':\r
-                        \r
+\r
                     if not self.__GetNextOp():\r
-                        raise Warning("expected !endif At Line ", self.FileName, self.CurrentLineNumber)\r
-                    \r
+                        raise Warning("expected !endif", self.FileName, self.CurrentLineNumber)\r
+\r
                     if self.__Token in ('!=', '==', '>', '<', '>=', '<='):\r
                         Op = self.__Token\r
                         if not self.__GetNextToken():\r
-                            raise Warning("expected value At Line ", self.FileName, self.CurrentLineNumber)\r
+                            raise Warning("expected value", self.FileName, self.CurrentLineNumber)\r
                         if self.__GetStringData():\r
                             pass\r
                         MacroValue = self.__Token\r
@@ -599,14 +605,14 @@ class FdfParser:
                         ConditionSatisfied = NotFlag and (not ConditionSatisfied) or ConditionSatisfied\r
                         BranchDetermined = ConditionSatisfied and True or False\r
                     else:\r
-                        self.CurrentOffsetWithinLine -= len(self.__Token)                        \r
+                        self.CurrentOffsetWithinLine -= len(self.__Token)\r
                         ConditionSatisfied = self.__EvaluateConditional(MacroName, IfList[-1][0][0] + 1, None, 'Bool')\r
                         ConditionSatisfied = NotFlag and (not ConditionSatisfied) or ConditionSatisfied\r
                         BranchDetermined = ConditionSatisfied and True or False\r
                     IfList[-1] = [IfList[-1][0], ConditionSatisfied, BranchDetermined]\r
                     if ConditionSatisfied:\r
                         self.__WipeOffArea.append((IfList[-1][0], (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))\r
-                        \r
+\r
                 else:\r
                     ConditionSatisfied = self.__EvaluateConditional(MacroName, IfList[-1][0][0] + 1)\r
                     ConditionSatisfied = NotDefineFlag and (not ConditionSatisfied) or ConditionSatisfied\r
@@ -614,11 +620,11 @@ class FdfParser:
                     IfList[-1] = [IfList[-1][0], ConditionSatisfied, BranchDetermined]\r
                     if ConditionSatisfied:\r
                         self.__WipeOffArea.append((IfStartPos, (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))\r
-                    \r
+\r
             elif self.__Token in ('!elseif', '!else'):\r
                 ElseStartPos = (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - len(self.__Token))\r
                 if len(IfList) <= 0:\r
-                    raise Warning("Missing !if statement At Line ", self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("Missing !if statement", self.FileName, self.CurrentLineNumber)\r
                 if IfList[-1][1]:\r
                     IfList[-1] = [ElseStartPos, False, True]\r
                     self.__WipeOffArea.append((ElseStartPos, (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))\r
@@ -627,32 +633,32 @@ class FdfParser:
                     IfList[-1] = [ElseStartPos, True, IfList[-1][2]]\r
                     if self.__Token == '!elseif':\r
                         if not self.__GetNextToken():\r
-                            raise Warning("expected Macro name At Line ", self.FileName, self.CurrentLineNumber)\r
+                            raise Warning("expected Macro name", self.FileName, self.CurrentLineNumber)\r
                         MacroName = self.__Token\r
                         NotFlag = False\r
                         if MacroName.startswith('!'):\r
                             NotFlag = True\r
-                        \r
+\r
                         if not self.__GetNextOp():\r
-                            raise Warning("expected !endif At Line ", self.FileName, self.CurrentLineNumber)\r
-                    \r
+                            raise Warning("expected !endif", self.FileName, self.CurrentLineNumber)\r
+\r
                         if self.__Token in ('!=', '==', '>', '<', '>=', '<='):\r
                             Op = self.__Token\r
                             if not self.__GetNextToken():\r
-                                raise Warning("expected value At Line ", self.FileName, self.CurrentLineNumber)\r
+                                raise Warning("expected value", self.FileName, self.CurrentLineNumber)\r
                             if self.__GetStringData():\r
                                 pass\r
                             MacroValue = self.__Token\r
                             ConditionSatisfied = self.__EvaluateConditional(MacroName, IfList[-1][0][0] + 1, Op, MacroValue)\r
                             ConditionSatisfied = NotFlag and (not ConditionSatisfied) or ConditionSatisfied\r
-                        \r
+\r
                         else:\r
-                            self.CurrentOffsetWithinLine -= len(self.__Token)                        \r
+                            self.CurrentOffsetWithinLine -= len(self.__Token)\r
                             ConditionSatisfied = self.__EvaluateConditional(MacroName, IfList[-1][0][0] + 1, None, 'Bool')\r
                             ConditionSatisfied = NotFlag and (not ConditionSatisfied) or ConditionSatisfied\r
-                            \r
+\r
                         IfList[-1] = [IfList[-1][0], ConditionSatisfied, IfList[-1][2]]\r
-                    \r
+\r
                     if IfList[-1][1]:\r
                         if IfList[-1][2]:\r
                             IfList[-1][1] = False\r
@@ -660,22 +666,22 @@ class FdfParser:
                             IfList[-1][2] = True\r
                             self.__WipeOffArea.append((IfList[-1][0], (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))\r
 \r
-                \r
+\r
             elif self.__Token == '!endif':\r
                 if IfList[-1][1]:\r
                     self.__WipeOffArea.append(((self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - len('!endif')), (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))\r
                 else:\r
                     self.__WipeOffArea.append((IfList[-1][0], (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))\r
-                \r
+\r
                 IfList.pop()\r
-                \r
-                    \r
+\r
+\r
         if len(IfList) > 0:\r
-            raise Warning("Missing !endif At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Missing !endif", self.FileName, self.CurrentLineNumber)\r
         self.Rewind()\r
 \r
     def __EvaluateConditional(self, Name, Line, Op = None, Value = None):\r
-        \r
+\r
         FileLineTuple = GetRealFileLine(self.FileName, Line)\r
         if Name in InputMacroDict:\r
             MacroValue = InputMacroDict[Name]\r
@@ -720,8 +726,8 @@ class FdfParser:
                     else:\r
                         return False\r
                 else:\r
-                    raise Warning("Value %s is not a number At Line ", self.FileName, Line)\r
-                \r
+                    raise Warning("Value %s is not a number", self.FileName, Line)\r
+\r
         for Profile in AllMacroList:\r
             if Profile.FileName == FileLineTuple[0] and Profile.MacroName == Name and Profile.DefinedAtLine <= FileLineTuple[1]:\r
                 if Op == None:\r
@@ -765,8 +771,8 @@ class FdfParser:
                         else:\r
                             return False\r
                     else:\r
-                        raise Warning("Value %s is not a number At Line ", self.FileName, Line)\r
-        \r
+                        raise Warning("Value %s is not a number", self.FileName, Line)\r
+\r
         return False\r
 \r
     ## __IsToken() method\r
@@ -787,7 +793,7 @@ class FdfParser:
         StartPos = self.CurrentOffsetWithinLine\r
         index = -1\r
         if IgnoreCase:\r
-            index = self.__CurrentLine()[self.CurrentOffsetWithinLine : ].upper().find(String.upper()) \r
+            index = self.__CurrentLine()[self.CurrentOffsetWithinLine : ].upper().find(String.upper())\r
         else:\r
             index = self.__CurrentLine()[self.CurrentOffsetWithinLine : ].find(String)\r
         if index == 0:\r
@@ -814,7 +820,7 @@ class FdfParser:
         StartPos = self.CurrentOffsetWithinLine\r
         index = -1\r
         if IgnoreCase:\r
-            index = self.__CurrentLine()[self.CurrentOffsetWithinLine : ].upper().find(KeyWord.upper()) \r
+            index = self.__CurrentLine()[self.CurrentOffsetWithinLine : ].upper().find(KeyWord.upper())\r
         else:\r
             index = self.__CurrentLine()[self.CurrentOffsetWithinLine : ].find(KeyWord)\r
         if index == 0:\r
@@ -839,7 +845,7 @@ class FdfParser:
         self.__SkipWhiteSpace()\r
         if self.__EndOfFile():\r
             return False\r
-        \r
+\r
         TempChar = self.__CurrentChar()\r
         StartPos = self.CurrentOffsetWithinLine\r
         if (TempChar >= 'a' and TempChar <= 'z') or (TempChar >= 'A' and TempChar <= 'Z') or TempChar == '_':\r
@@ -849,15 +855,15 @@ class FdfParser:
                 if (TempChar >= 'a' and TempChar <= 'z') or (TempChar >= 'A' and TempChar <= 'Z') \\r
                 or (TempChar >= '0' and TempChar <= '9') or TempChar == '_' or TempChar == '-':\r
                     self.__GetOneChar()\r
-                    \r
+\r
                 else:\r
                     break\r
 \r
             self.__Token = self.__CurrentLine()[StartPos : self.CurrentOffsetWithinLine]\r
             return True\r
-            \r
+\r
         return False\r
-    \r
+\r
     ## __GetNextToken() method\r
     #\r
     #   Get next token unit before a seperator\r
@@ -889,13 +895,13 @@ class FdfParser:
                 break\r
         else:\r
             return False\r
-        \r
+\r
         if StartPos != self.CurrentOffsetWithinLine:\r
             self.__Token = self.__CurrentLine()[StartPos : self.CurrentOffsetWithinLine]\r
             return True\r
         else:\r
             return False\r
-    \r
+\r
     def __GetNextOp(self):\r
         # Skip leading spaces, if exist.\r
         self.__SkipWhiteSpace()\r
@@ -912,7 +918,7 @@ class FdfParser:
                 break\r
         else:\r
             return False\r
-        \r
+\r
         if StartPos != self.CurrentOffsetWithinLine:\r
             self.__Token = self.__CurrentLine()[StartPos : self.CurrentOffsetWithinLine]\r
             return True\r
@@ -928,7 +934,7 @@ class FdfParser:
     #   @retval False       Not able to find a registry format GUID, file buffer pointer not changed\r
     #\r
     def __GetNextGuid(self):\r
-        \r
+\r
         if not self.__GetNextToken():\r
             return False\r
         p = re.compile('[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}')\r
@@ -950,12 +956,12 @@ class FdfParser:
             if not self.__UndoOneChar():\r
                 self.__GetOneChar()\r
                 return\r
-        \r
-        \r
+\r
+\r
         StartPos = self.CurrentOffsetWithinLine\r
         CurrentLine = self.CurrentLineNumber\r
         while CurrentLine == self.CurrentLineNumber:\r
-            \r
+\r
             TempChar = self.__CurrentChar()\r
             # Try to find the end char that is not a space and not in seperator tuple.\r
             # That is, when we got a space or any char in the tuple, we got the end of token.\r
@@ -968,9 +974,9 @@ class FdfParser:
                 return\r
             else:\r
                 break\r
-            \r
+\r
         self.__GetOneChar()\r
-    \r
+\r
     ## __HexDigit() method\r
     #\r
     #   Whether char input is a Hex data bit\r
@@ -986,7 +992,7 @@ class FdfParser:
                     return True\r
         else:\r
             return False\r
-    \r
+\r
     def __IsHex(self, HexStr):\r
         if not HexStr.upper().startswith("0X"):\r
             return False\r
@@ -996,7 +1002,7 @@ class FdfParser:
         if len(charList) == 0:\r
             return True\r
         else:\r
-            return False    \r
+            return False\r
     ## __GetNextHexNumber() method\r
     #\r
     #   Get next HEX data before a seperator\r
@@ -1014,7 +1020,7 @@ class FdfParser:
         else:\r
             self.__UndoToken()\r
             return False\r
-        \r
+\r
     ## __GetNextDecimalNumber() method\r
     #\r
     #   Get next decimal data before a seperator\r
@@ -1032,29 +1038,29 @@ class FdfParser:
         else:\r
             self.__UndoToken()\r
             return False\r
-    \r
+\r
     ## __GetNextPcdName() method\r
     #\r
     #   Get next PCD token space C name and PCD C name pair before a seperator\r
     #   If found, the decimal data is put into self.__Token\r
     #\r
     #   @param  self        The object pointer\r
-    #   @retval Tuple       PCD C name and PCD token space C name pair \r
+    #   @retval Tuple       PCD C name and PCD token space C name pair\r
     #\r
     def __GetNextPcdName(self):\r
         if not self.__GetNextWord():\r
-            raise Warning("expected PcdTokenSpaceCName.PcdCName At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected format of <PcdTokenSpaceCName>.<PcdCName>", self.FileName, self.CurrentLineNumber)\r
         pcdTokenSpaceCName = self.__Token\r
-        \r
+\r
         if not self.__IsToken( "."):\r
-            raise Warning("expected PcdTokenSpaceCName.PcdCName At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected format of <PcdTokenSpaceCName>.<PcdCName>", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__GetNextWord():\r
-            raise Warning("expected PcdTokenSpaceCName.PcdCName At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected format of <PcdTokenSpaceCName>.<PcdCName>", self.FileName, self.CurrentLineNumber)\r
         pcdCName = self.__Token\r
-        \r
-        return (pcdCName, pcdTokenSpaceCName) \r
-            \r
+\r
+        return (pcdCName, pcdTokenSpaceCName)\r
+\r
     ## __GetStringData() method\r
     #\r
     #   Get string contents quoted in ""\r
@@ -1063,35 +1069,35 @@ class FdfParser:
     #   @param  self        The object pointer\r
     #   @retval True        Successfully find a string data, file buffer pointer moved forward\r
     #   @retval False       Not able to find a string data, file buffer pointer not changed\r
-    #    \r
+    #\r
     def __GetStringData(self):\r
         if self.__Token.startswith("\"") or self.__Token.startswith("L\""):\r
             self.__UndoToken()\r
             self.__SkipToToken("\"")\r
             currentLineNumber = self.CurrentLineNumber\r
-            \r
+\r
             if not self.__SkipToToken("\""):\r
-                raise Warning("Missing Quote \" for String At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Missing Quote \" for String", self.FileName, self.CurrentLineNumber)\r
             if currentLineNumber != self.CurrentLineNumber:\r
-                raise Warning("Missing Quote \" for String At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Missing Quote \" for String", self.FileName, self.CurrentLineNumber)\r
             self.__Token = self.__SkippedChars.rstrip('\"')\r
             return True\r
-        \r
+\r
         elif self.__Token.startswith("\'") or self.__Token.startswith("L\'"):\r
             self.__UndoToken()\r
             self.__SkipToToken("\'")\r
             currentLineNumber = self.CurrentLineNumber\r
-            \r
+\r
             if not self.__SkipToToken("\'"):\r
-                raise Warning("Missing Quote \' for String At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Missing Quote \' for String", self.FileName, self.CurrentLineNumber)\r
             if currentLineNumber != self.CurrentLineNumber:\r
-                raise Warning("Missing Quote \' for String At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Missing Quote \' for String", self.FileName, self.CurrentLineNumber)\r
             self.__Token = self.__SkippedChars.rstrip('\'')\r
             return True\r
-        \r
+\r
         else:\r
             return False\r
-            \r
+\r
     ## __SkipToToken() method\r
     #\r
     #   Search forward in file buffer for the string\r
@@ -1105,12 +1111,12 @@ class FdfParser:
     #\r
     def __SkipToToken(self, String, IgnoreCase = False):\r
         StartPos = self.GetFileBufferPos()\r
-        \r
+\r
         self.__SkippedChars = ""\r
         while not self.__EndOfFile():\r
             index = -1\r
             if IgnoreCase:\r
-                index = self.__CurrentLine()[self.CurrentOffsetWithinLine : ].upper().find(String.upper()) \r
+                index = self.__CurrentLine()[self.CurrentOffsetWithinLine : ].upper().find(String.upper())\r
             else:\r
                 index = self.__CurrentLine()[self.CurrentOffsetWithinLine : ].find(String)\r
             if index == 0:\r
@@ -1119,7 +1125,7 @@ class FdfParser:
                 return True\r
             self.__SkippedChars += str(self.__CurrentChar())\r
             self.__GetOneChar()\r
-            \r
+\r
         self.SetFileBufferPos( StartPos)\r
         self.__SkippedChars = ""\r
         return False\r
@@ -1129,11 +1135,11 @@ class FdfParser:
     #   Return the tuple of current line and offset within the line\r
     #\r
     #   @param  self        The object pointer\r
-    #   @retval Tuple       Line number and offset pair \r
+    #   @retval Tuple       Line number and offset pair\r
     #\r
     def GetFileBufferPos(self):\r
         return (self.CurrentLineNumber, self.CurrentOffsetWithinLine)\r
-    \r
+\r
     ## SetFileBufferPos() method\r
     #\r
     #   Restore the file buffer position\r
@@ -1143,7 +1149,7 @@ class FdfParser:
     #\r
     def SetFileBufferPos(self, Pos):\r
         (self.CurrentLineNumber, self.CurrentOffsetWithinLine) = Pos\r
-            \r
+\r
     ## ParseFile() method\r
     #\r
     #   Parse the file profile buffer to extract fd, fv ... information\r
@@ -1169,7 +1175,7 @@ class FdfParser:
                 FileLineTuple = GetRealFileLine(self.FileName, Index + 1)\r
                 self.Profile.FileLinesList[Index] = self.__ReplaceMacros(self.Profile.FileLinesList[Index], FileLineTuple[0], FileLineTuple[1])\r
                 Index += 1\r
-                \r
+\r
             while self.__GetFd():\r
                 pass\r
 \r
@@ -1184,15 +1190,15 @@ class FdfParser:
 \r
             while self.__GetRule():\r
                 pass\r
-            \r
+\r
         except Warning, X:\r
             self.__UndoToken()\r
             FileLineTuple = GetRealFileLine(self.FileName, self.CurrentLineNumber)\r
-            X.message += '\nGot Token: \"%s\" from File %s\n' % (self.__Token, FileLineTuple[0]) + \\r
-                'Previous Token: \"%s\" At line: %d, Offset Within Line: %d\n' \\r
-                    % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :].rstrip('\n').rstrip('\r'), FileLineTuple[1], self.CurrentOffsetWithinLine)\r
+            #'\n\tGot Token: \"%s\" from File %s\n' % (self.__Token, FileLineTuple[0]) + \\r
+            X.Message += ' near line %d, column %d: %s' \\r
+                % (FileLineTuple[1], self.CurrentOffsetWithinLine + 1, self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :].rstrip('\n').rstrip('\r'))\r
             raise\r
-        \r
+\r
     ## __GetFd() method\r
     #\r
     #   Get FD section contents and store its data into FD dictionary of self.Profile\r
@@ -1205,49 +1211,49 @@ class FdfParser:
 \r
         if not self.__GetNextToken():\r
             return False\r
-        \r
+\r
         S = self.__Token.upper()\r
         if S.startswith("[") and not S.startswith("[FD."):\r
             if not S.startswith("[FV.") and not S.startswith("[CAPSULE.") \\r
                 and not S.startswith("[VTF.") and not S.startswith("[RULE."):\r
-                raise Warning("Unknown section At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Unknown section", self.FileName, self.CurrentLineNumber)\r
             self.__UndoToken()\r
             return False\r
-        \r
+\r
         self.__UndoToken()\r
         if not self.__IsToken("[FD.", True):\r
             FileLineTuple = GetRealFileLine(self.FileName, self.CurrentLineNumber)\r
-            print 'Parsing String: %s in File %s, At line: %d, Offset Within Line: %d' \\r
-                    % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :], FileLineTuple[0], FileLineTuple[1], self.CurrentOffsetWithinLine)\r
-            raise Warning("expected [FD.] At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            #print 'Parsing String: %s in File %s, At line: %d, Offset Within Line: %d' \\r
+            #        % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :], FileLineTuple[0], FileLineTuple[1], self.CurrentOffsetWithinLine)\r
+            raise Warning("expected [FD.]", self.FileName, self.CurrentLineNumber)\r
+\r
         FdName = self.__GetUiName()\r
         self.CurrentFdName = FdName.upper()\r
-        \r
+\r
         if not self.__IsToken( "]"):\r
-            raise Warning("expected ']' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected ']'", self.FileName, self.CurrentLineNumber)\r
+\r
         FdObj = Fd.FD()\r
         FdObj.FdUiName = self.CurrentFdName\r
         self.Profile.FdDict[self.CurrentFdName] = FdObj\r
         Status = self.__GetCreateFile(FdObj)\r
         if not Status:\r
-            raise Warning("FD name error At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("FD name error", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__GetTokenStatements(FdObj):\r
             return False\r
-        \r
+\r
         self.__GetDefineStatements(FdObj)\r
 \r
         self.__GetSetStatements(FdObj)\r
 \r
         if not self.__GetRegionLayout(FdObj):\r
-            raise Warning("expected region layout At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+            raise Warning("expected region layout", self.FileName, self.CurrentLineNumber)\r
+\r
         while self.__GetRegionLayout(FdObj):\r
             pass\r
         return True\r
-    \r
+\r
     ## __GetUiName() method\r
     #\r
     #   Return the UI name of a section\r
@@ -1259,7 +1265,7 @@ class FdfParser:
         FdName = ""\r
         if self.__GetNextWord():\r
             FdName = self.__Token\r
-            \r
+\r
         return FdName\r
 \r
     ## __GetCreateFile() method\r
@@ -1274,11 +1280,11 @@ class FdfParser:
 \r
         if self.__IsKeyword( "CREATE_FILE"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-                \r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
             if not self.__GetNextToken():\r
-                raise Warning("expected file name At Line ", self.FileName, self.CurrentLineNumber)\r
-                \r
+                raise Warning("expected file name", self.FileName, self.CurrentLineNumber)\r
+\r
             FileName = self.__Token\r
             Obj.CreateFileName = FileName\r
 \r
@@ -1295,55 +1301,55 @@ class FdfParser:
     #\r
     def __GetTokenStatements(self, Obj):\r
         if not self.__IsKeyword( "BaseAddress"):\r
-            raise Warning("BaseAddress missing At Line ", self.FileName, self.CurrentLineNumber)\r
-           \r
+            raise Warning("BaseAddress missing", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__GetNextHexNumber():\r
-            raise Warning("expected Hex base address At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+            raise Warning("expected Hex base address", self.FileName, self.CurrentLineNumber)\r
+\r
         Obj.BaseAddress = self.__Token\r
-        \r
+\r
         if self.__IsToken( "|"):\r
             pcdPair = self.__GetNextPcdName()\r
             Obj.BaseAddressPcd = pcdPair\r
             self.Profile.PcdDict[pcdPair] = long(Obj.BaseAddress, 0)\r
-            \r
+\r
         if not self.__IsKeyword( "Size"):\r
-            raise Warning("Size missing At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+            raise Warning("Size missing", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__GetNextHexNumber():\r
-            raise Warning("expected Hex size At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
-      \r
+            raise Warning("expected Hex size", self.FileName, self.CurrentLineNumber)\r
+\r
+\r
         Obj.Size = long(self.__Token, 0)\r
 \r
         if self.__IsToken( "|"):\r
             pcdPair = self.__GetNextPcdName()\r
             Obj.SizePcd = pcdPair\r
             self.Profile.PcdDict[pcdPair] = Obj.Size\r
-                    \r
+\r
         if not self.__IsKeyword( "ErasePolarity"):\r
-            raise Warning("ErasePolarity missing At Line ", self.FileName, self.CurrentLineNumber)\r
-           \r
+            raise Warning("ErasePolarity missing", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__GetNextToken():\r
-            raise Warning("expected Erase Polarity At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+            raise Warning("expected Erase Polarity", self.FileName, self.CurrentLineNumber)\r
+\r
         if self.__Token != "1" and self.__Token != "0":\r
-            raise Warning("expected 1 or 0 Erase Polarity At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+            raise Warning("expected 1 or 0 Erase Polarity", self.FileName, self.CurrentLineNumber)\r
+\r
         Obj.ErasePolarity = self.__Token\r
 \r
         Status = self.__GetBlockStatements(Obj)\r
         return Status\r
-    \r
+\r
     ## __GetAddressStatements() method\r
     #\r
     #   Get address statements\r
@@ -1354,27 +1360,27 @@ class FdfParser:
     #   @retval False       Not able to find\r
     #\r
     def __GetAddressStatements(self, Obj):\r
-        \r
+\r
         if self.__IsKeyword("BsBaseAddress"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
             if not self.__GetNextDecimalNumber() and not self.__GetNextHexNumber():\r
-                raise Warning("expected address At Line ", self.FileName, self.CurrentLineNumber)\r
-                \r
+                raise Warning("expected address", self.FileName, self.CurrentLineNumber)\r
+\r
             BsAddress = long(self.__Token, 0)\r
             Obj.BsBaseAddress = BsAddress\r
-            \r
+\r
         if self.__IsKeyword("RtBaseAddress"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
             if not self.__GetNextDecimalNumber() and not self.__GetNextHexNumber():\r
-                raise Warning("expected address At Line ", self.FileName, self.CurrentLineNumber)\r
-                \r
+                raise Warning("expected address", self.FileName, self.CurrentLineNumber)\r
+\r
             RtAddress = long(self.__Token, 0)\r
             Obj.RtBaseAddress = RtAddress\r
-    \r
+\r
     ## __GetBlockStatements() method\r
     #\r
     #   Get block statements\r
@@ -1385,14 +1391,14 @@ class FdfParser:
     #   @retval False       Not able to find\r
     #\r
     def __GetBlockStatements(self, Obj):\r
-        \r
+\r
         if not self.__GetBlockStatement(Obj):\r
-            raise Warning("expected block statement At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+            raise Warning("expected block statement", self.FileName, self.CurrentLineNumber)\r
+\r
         while self.__GetBlockStatement(Obj):\r
             pass\r
         return True\r
-    \r
+\r
     ## __GetBlockStatement() method\r
     #\r
     #   Get block statement\r
@@ -1405,12 +1411,12 @@ class FdfParser:
     def __GetBlockStatement(self, Obj):\r
         if not self.__IsKeyword( "BlockSize"):\r
             return False\r
-        \r
+\r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__GetNextHexNumber() and not self.__GetNextDecimalNumber():\r
-            raise Warning("expected Hex block size At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Hex block size", self.FileName, self.CurrentLineNumber)\r
 \r
         BlockSize = long(self.__Token, 0)\r
         BlockSizePcd = None\r
@@ -1418,17 +1424,17 @@ class FdfParser:
             PcdPair = self.__GetNextPcdName()\r
             BlockSizePcd = PcdPair\r
             self.Profile.PcdDict[PcdPair] = BlockSize\r
-            \r
+\r
         BlockNumber = None\r
         if self.__IsKeyword( "NumBlocks"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-                \r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
             if not self.__GetNextDecimalNumber() and not self.__GetNextHexNumber():\r
-                raise Warning("expected block numbers At Line ", self.FileName, self.CurrentLineNumber)\r
-                \r
+                raise Warning("expected block numbers", self.FileName, self.CurrentLineNumber)\r
+\r
             BlockNumber = long(self.__Token, 0)\r
-        \r
+\r
         Obj.BlockSizeList.append((BlockSize, BlockNumber, BlockSizePcd))\r
         return True\r
 \r
@@ -1444,7 +1450,7 @@ class FdfParser:
     def __GetDefineStatements(self, Obj):\r
         while self.__GetDefineStatement( Obj):\r
             pass\r
-    \r
+\r
     ## __GetDefineStatement() method\r
     #\r
     #   Get define statement\r
@@ -1459,18 +1465,18 @@ class FdfParser:
             self.__GetNextToken()\r
             Macro = self.__Token\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-                \r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
             if not self.__GetNextToken():\r
-                raise Warning("expected value At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected value", self.FileName, self.CurrentLineNumber)\r
 \r
             Value = self.__Token\r
             Macro = '$(' + Macro + ')'\r
             Obj.DefineVarDict[Macro] = Value\r
             return True\r
-        \r
+\r
         return False\r
-    \r
+\r
     ## __GetSetStatements() method\r
     #\r
     #   Get set statements\r
@@ -1496,20 +1502,20 @@ class FdfParser:
     def __GetSetStatement(self, Obj):\r
         if self.__IsKeyword("SET"):\r
             PcdPair = self.__GetNextPcdName()\r
-            \r
+\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-                \r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
             if not self.__GetNextToken():\r
-                raise Warning("expected value At Line ", self.FileName, self.CurrentLineNumber)\r
-                \r
+                raise Warning("expected value", self.FileName, self.CurrentLineNumber)\r
+\r
             Value = self.__Token\r
             if Value.startswith("{"):\r
                 # deal with value with {}\r
                 if not self.__SkipToToken( "}"):\r
-                    raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected '}'", self.FileName, self.CurrentLineNumber)\r
                 Value += self.__SkippedChars\r
-                \r
+\r
             Obj.SetVarDict[PcdPair] = Value\r
             self.Profile.PcdDict[PcdPair] = Value\r
             return True\r
@@ -1528,21 +1534,21 @@ class FdfParser:
     def __GetRegionLayout(self, Fd):\r
         if not self.__GetNextHexNumber():\r
             return False\r
-        \r
+\r
         RegionObj = Region.Region()\r
         RegionObj.Offset = long(self.__Token, 0)\r
         Fd.RegionList.append(RegionObj)\r
-        \r
+\r
         if not self.__IsToken( "|"):\r
-            raise Warning("expected '|' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected '|'", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__GetNextHexNumber():\r
-            raise Warning("expected Region Size At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Region Size", self.FileName, self.CurrentLineNumber)\r
         RegionObj.Size = long(self.__Token, 0)\r
-        \r
+\r
         if not self.__GetNextWord():\r
             return True\r
-        \r
+\r
         if not self.__Token in ("SET", "FV", "FILE", "DATA"):\r
             self.__UndoToken()\r
             RegionObj.PcdOffset = self.__GetNextPcdName()\r
@@ -1550,7 +1556,7 @@ class FdfParser:
             if self.__IsToken( "|"):\r
                 RegionObj.PcdSize = self.__GetNextPcdName()\r
                 self.Profile.PcdDict[RegionObj.PcdSize] = RegionObj.Size\r
-            \r
+\r
             if not self.__GetNextWord():\r
                 return True\r
 \r
@@ -1559,7 +1565,7 @@ class FdfParser:
             self.__GetSetStatements( RegionObj)\r
             if not self.__GetNextWord():\r
                 return True\r
-            \r
+\r
         if self.__Token == "FV":\r
             self.__UndoToken()\r
             self.__GetRegionFvType( RegionObj)\r
@@ -1571,9 +1577,9 @@ class FdfParser:
         else:\r
             self.__UndoToken()\r
             self.__GetRegionDataType( RegionObj)\r
-            \r
+\r
         return True\r
-            \r
+\r
     ## __GetRegionFvType() method\r
     #\r
     #   Get region fv data for region\r
@@ -1584,27 +1590,27 @@ class FdfParser:
     def __GetRegionFvType(self, RegionObj):\r
 \r
         if not self.__IsKeyword( "FV"):\r
-            raise Warning("expected Keyword 'FV' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected Keyword 'FV'", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__GetNextToken():\r
-            raise Warning("expected FV name At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected FV name", self.FileName, self.CurrentLineNumber)\r
+\r
         RegionObj.RegionType = "FV"\r
         RegionObj.RegionDataList.append(self.__Token)\r
-        \r
+\r
         while self.__IsKeyword( "FV"):\r
-        \r
+\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
             if not self.__GetNextToken():\r
-                raise Warning("expected FV name At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+                raise Warning("expected FV name", self.FileName, self.CurrentLineNumber)\r
+\r
             RegionObj.RegionDataList.append(self.__Token)\r
-        \r
+\r
     ## __GetRegionFileType() method\r
     #\r
     #   Get region file data for region\r
@@ -1615,25 +1621,25 @@ class FdfParser:
     def __GetRegionFileType(self, RegionObj):\r
 \r
         if not self.__IsKeyword( "FILE"):\r
-            raise Warning("expected Keyword 'FILE' At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Keyword 'FILE'", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextToken():\r
-            raise Warning("expected File name At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected File name", self.FileName, self.CurrentLineNumber)\r
 \r
         RegionObj.RegionType = "FILE"\r
         RegionObj.RegionDataList.append( self.__Token)\r
-        \r
+\r
         while self.__IsKeyword( "FILE"):\r
-        \r
+\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
             if not self.__GetNextToken():\r
-                raise Warning("expected FILE name At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+                raise Warning("expected FILE name", self.FileName, self.CurrentLineNumber)\r
+\r
             RegionObj.RegionDataList.append(self.__Token)\r
 \r
     ## __GetRegionDataType() method\r
@@ -1644,70 +1650,70 @@ class FdfParser:
     #   @param  RegionObj   for whom region data is got\r
     #\r
     def __GetRegionDataType(self, RegionObj):\r
-        \r
+\r
         if not self.__IsKeyword( "DATA"):\r
-            raise Warning("expected Region Data type At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Region Data type", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__IsToken( "{"):\r
-            raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected '{'", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__GetNextHexNumber():\r
-            raise Warning("expected Hex byte At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected Hex byte", self.FileName, self.CurrentLineNumber)\r
+\r
         if len(self.__Token) > 4:\r
-            raise Warning("Hex byte(must be 2 digits) too long At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("Hex byte(must be 2 digits) too long", self.FileName, self.CurrentLineNumber)\r
+\r
         DataString = self.__Token\r
         DataString += ","\r
-        \r
+\r
         while self.__IsToken(","):\r
             if not self.__GetNextHexNumber():\r
-                raise Warning("Invalid Hex number At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Invalid Hex number", self.FileName, self.CurrentLineNumber)\r
             if len(self.__Token) > 4:\r
-                raise Warning("Hex byte(must be 2 digits) too long At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Hex byte(must be 2 digits) too long", self.FileName, self.CurrentLineNumber)\r
             DataString += self.__Token\r
             DataString += ","\r
-            \r
+\r
         if not self.__IsToken( "}"):\r
-            raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected '}'", self.FileName, self.CurrentLineNumber)\r
+\r
         DataString = DataString.rstrip(",")\r
         RegionObj.RegionType = "DATA"\r
         RegionObj.RegionDataList.append( DataString)\r
-        \r
+\r
         while self.__IsKeyword( "DATA"):\r
 \r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
             if not self.__IsToken( "{"):\r
-                raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+                raise Warning("expected '{'", self.FileName, self.CurrentLineNumber)\r
+\r
             if not self.__GetNextHexNumber():\r
-                raise Warning("expected Hex byte At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+                raise Warning("expected Hex byte", self.FileName, self.CurrentLineNumber)\r
+\r
             if len(self.__Token) > 4:\r
-                raise Warning("Hex byte(must be 2 digits) too long At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+                raise Warning("Hex byte(must be 2 digits) too long", self.FileName, self.CurrentLineNumber)\r
+\r
             DataString = self.__Token\r
             DataString += ","\r
-        \r
+\r
             while self.__IsToken(","):\r
                 self.__GetNextHexNumber()\r
                 if len(self.__Token) > 4:\r
-                    raise Warning("Hex byte(must be 2 digits) too long At Line ", self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("Hex byte(must be 2 digits) too long", self.FileName, self.CurrentLineNumber)\r
                 DataString += self.__Token\r
                 DataString += ","\r
-            \r
+\r
             if not self.__IsToken( "}"):\r
-                raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+                raise Warning("expected '}'", self.FileName, self.CurrentLineNumber)\r
+\r
             DataString = DataString.rstrip(",")\r
             RegionObj.RegionDataList.append( DataString)\r
-    \r
+\r
     ## __GetFv() method\r
     #\r
     #   Get FV section contents and store its data into FV dictionary of self.Profile\r
@@ -1715,7 +1721,7 @@ class FdfParser:
     #   @param  self        The object pointer\r
     #   @retval True        Successfully find a FV\r
     #   @retval False       Not able to find a FV\r
-    #    \r
+    #\r
     def __GetFv(self):\r
         if not self.__GetNextToken():\r
             return False\r
@@ -1724,35 +1730,35 @@ class FdfParser:
         if S.startswith("[") and not S.startswith("[FV."):\r
             if not S.startswith("[CAPSULE.") \\r
                 and not S.startswith("[VTF.") and not S.startswith("[RULE."):\r
-                raise Warning("Unknown section or section appear sequence error \n(The correct sequence should be [FD.], [FV.], [Capsule.], [VTF.], [Rule.]) At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Unknown section or section appear sequence error (The correct sequence should be [FD.], [FV.], [Capsule.], [VTF.], [Rule.])", self.FileName, self.CurrentLineNumber)\r
             self.__UndoToken()\r
             return False\r
 \r
         self.__UndoToken()\r
         if not self.__IsToken("[FV.", True):\r
             FileLineTuple = GetRealFileLine(self.FileName, self.CurrentLineNumber)\r
-            print 'Parsing String: %s in File %s, At line: %d, Offset Within Line: %d' \\r
-                    % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :], FileLineTuple[0], FileLineTuple[1], self.CurrentOffsetWithinLine)\r
-            raise Warning("Unknown Keyword At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            #print 'Parsing String: %s in File %s, At line: %d, Offset Within Line: %d' \\r
+            #        % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :], FileLineTuple[0], FileLineTuple[1], self.CurrentOffsetWithinLine)\r
+            raise Warning("Unknown Keyword '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
+\r
         FvName = self.__GetUiName()\r
         self.CurrentFvName = FvName.upper()\r
-        \r
+\r
         if not self.__IsToken( "]"):\r
-            raise Warning("expected ']' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected ']'", self.FileName, self.CurrentLineNumber)\r
+\r
         FvObj = Fv.FV()\r
         FvObj.UiFvName = self.CurrentFvName\r
         self.Profile.FvDict[self.CurrentFvName] = FvObj\r
-        \r
+\r
         Status = self.__GetCreateFile(FvObj)\r
         if not Status:\r
-            raise Warning("FV name error At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("FV name error", self.FileName, self.CurrentLineNumber)\r
 \r
         self.__GetDefineStatements(FvObj)\r
 \r
         self.__GetAddressStatements(FvObj)\r
-        \r
+\r
         self.__GetBlockStatement(FvObj)\r
 \r
         self.__GetSetStatements(FvObj)\r
@@ -1760,16 +1766,16 @@ class FdfParser:
         self.__GetFvAlignment(FvObj)\r
 \r
         self.__GetFvAttributes(FvObj)\r
-        \r
+\r
         self.__GetAprioriSection(FvObj, FvObj.DefineVarDict.copy())\r
         self.__GetAprioriSection(FvObj, FvObj.DefineVarDict.copy())\r
-        \r
+\r
         while True:\r
             isInf = self.__GetInfStatement(FvObj, MacroDict = FvObj.DefineVarDict.copy())\r
             isFile = self.__GetFileStatement(FvObj, MacroDict = FvObj.DefineVarDict.copy())\r
             if not isInf and not isFile:\r
                 break\r
-        \r
+\r
         return True\r
 \r
     ## __GetFvAlignment() method\r
@@ -1782,24 +1788,24 @@ class FdfParser:
     #   @retval False       Not able to find a alignment statement\r
     #\r
     def __GetFvAlignment(self, Obj):\r
-        \r
+\r
         if not self.__IsKeyword( "FvAlignment"):\r
             return False\r
-        \r
+\r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__GetNextToken():\r
-            raise Warning("expected alignment value At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected alignment value", self.FileName, self.CurrentLineNumber)\r
+\r
         if self.__Token.upper() not in ("1", "2", "4", "8", "16", "32", "64", "128", "256", "512", \\r
                                         "1K", "2K", "4K", "8K", "16K", "32K", "64K", "128K", "256K", "512K", \\r
                                         "1M", "2M", "4M", "8M", "16M", "32M", "64M", "128M", "256M", "512M", \\r
                                         "1G", "2G"):\r
-            raise Warning("Unknown alignment value At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown alignment value '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
         Obj.FvAlignment = self.__Token\r
         return True\r
-    \r
+\r
     ## __GetFvAttributes() method\r
     #\r
     #   Get attributes for FV\r
@@ -1809,7 +1815,7 @@ class FdfParser:
     #   @retval None\r
     #\r
     def __GetFvAttributes(self, FvObj):\r
-        \r
+\r
         while self.__GetNextWord():\r
             name = self.__Token\r
             if name not in ("ERASE_POLARITY", "MEMORY_MAPPED", \\r
@@ -1822,11 +1828,11 @@ class FdfParser:
                 return\r
 \r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \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) At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected TRUE/FALSE (1/0)", self.FileName, self.CurrentLineNumber)\r
+\r
             FvObj.FvAttributeDict[name] = self.__Token\r
 \r
         return\r
@@ -1842,31 +1848,31 @@ class FdfParser:
     #   @retval False       Not able to find apriori statement\r
     #\r
     def __GetAprioriSection(self, FvObj, MacroDict = {}):\r
-        \r
+\r
         if not self.__IsKeyword( "APRIORI"):\r
             return False\r
-        \r
+\r
         if not self.__IsKeyword("PEI") and not self.__IsKeyword("DXE"):\r
-            raise Warning("expected Apriori file type At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Apriori file type", self.FileName, self.CurrentLineNumber)\r
         AprType = self.__Token\r
-        \r
+\r
         if not self.__IsToken( "{"):\r
-            raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected '{'", self.FileName, self.CurrentLineNumber)\r
+\r
         AprSectionObj = AprioriSection.AprioriSection()\r
         AprSectionObj.AprioriType = AprType\r
-        \r
+\r
         self.__GetDefineStatements(AprSectionObj)\r
         MacroDict.update(AprSectionObj.DefineVarDict)\r
-        \r
+\r
         while True:\r
             IsInf = self.__GetInfStatement( AprSectionObj, MacroDict = MacroDict)\r
             IsFile = self.__GetFileStatement( AprSectionObj)\r
             if not IsInf and not IsFile:\r
                 break\r
-        \r
+\r
         if not self.__IsToken( "}"):\r
-            raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '}'", self.FileName, self.CurrentLineNumber)\r
 \r
         FvObj.AprioriSectionList.append(AprSectionObj)\r
         return True\r
@@ -1885,28 +1891,28 @@ class FdfParser:
 \r
         if not self.__IsKeyword( "INF"):\r
             return False\r
-        \r
+\r
         ffsInf = FfsInfStatement.FfsInfStatement()\r
         self.__GetInfOptions( ffsInf)\r
-        \r
+\r
         if not self.__GetNextToken():\r
-            raise Warning("expected INF file path At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected INF file path", self.FileName, self.CurrentLineNumber)\r
         ffsInf.InfFileName = self.__Token\r
-        \r
+\r
 #        if ffsInf.InfFileName.find('$') >= 0:\r
 #            ffsInf.InfFileName = GenFdsGlobalVariable.GenFdsGlobalVariable.MacroExtend(ffsInf.InfFileName, MacroDict)\r
-            \r
+\r
         if not ffsInf.InfFileName in self.Profile.InfList:\r
             self.Profile.InfList.append(ffsInf.InfFileName)\r
-        \r
+\r
         if self.__IsToken('|'):\r
             if self.__IsKeyword('RELOCS_STRIPPED'):\r
                 ffsInf.KeepReloc = False\r
             elif self.__IsKeyword('RELOCS_RETAINED'):\r
                 ffsInf.KeepReloc = True\r
             else:\r
-                raise Warning("Unknown reloc strip flag At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+                raise Warning("Unknown reloc strip flag '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
+\r
         if ForCapsule:\r
             capsuleFfs = CapsuleData.CapsuleFfs()\r
             capsuleFfs.Ffs = ffsInf\r
@@ -1914,7 +1920,7 @@ class FdfParser:
         else:\r
             Obj.FfsList.append(ffsInf)\r
         return True\r
-    \r
+\r
     ## __GetInfOptions() method\r
     #\r
     #   Get options for INF\r
@@ -1923,29 +1929,29 @@ class FdfParser:
     #   @param  FfsInfObj   for whom option is got\r
     #\r
     def __GetInfOptions(self, FfsInfObj):\r
-        \r
+\r
         if self.__IsKeyword( "RuleOverride"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
             if not self.__GetNextToken():\r
-                raise Warning("expected Rule name At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected Rule name", self.FileName, self.CurrentLineNumber)\r
             FfsInfObj.Rule = self.__Token\r
-            \r
+\r
         if self.__IsKeyword( "VERSION"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
             if not self.__GetNextToken():\r
-                raise Warning("expected Version At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected Version", self.FileName, self.CurrentLineNumber)\r
+\r
             if self.__GetStringData():\r
                 FfsInfObj.Version = self.__Token\r
-        \r
+\r
         if self.__IsKeyword( "UI"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
             if not self.__GetNextToken():\r
-                raise Warning("expected UI name At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected UI name", self.FileName, self.CurrentLineNumber)\r
+\r
             if self.__GetStringData():\r
                 FfsInfObj.Ui = self.__Token\r
 \r
@@ -1958,15 +1964,15 @@ class FdfParser:
             else:\r
                 self.__UndoToken()\r
                 return\r
-                \r
+\r
             while self.__GetNextToken():\r
                 if not p.match(self.__Token):\r
-                    raise Warning("expected KeyString \"Target_Tag_Arch\" At Line ", self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected KeyString \"Target_Tag_Arch\"", self.FileName, self.CurrentLineNumber)\r
                 FfsInfObj.KeyStringList.append(self.__Token)\r
-    \r
+\r
                 if not self.__IsToken(","):\r
                     break\r
-                \r
+\r
     ## __GetFileStatement() method\r
     #\r
     #   Get FILE statements\r
@@ -1981,31 +1987,31 @@ class FdfParser:
 \r
         if not self.__IsKeyword( "FILE"):\r
             return False\r
-        \r
+\r
         FfsFileObj = FfsFileStatement.FileStatement()\r
-        \r
+\r
         if not self.__GetNextWord():\r
-            raise Warning("expected FFS type At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected FFS type", self.FileName, self.CurrentLineNumber)\r
         FfsFileObj.FvFileType = self.__Token\r
-        \r
+\r
         if not self.__IsToken( "="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextGuid():\r
-            raise Warning("expected File GUID At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected File GUID", self.FileName, self.CurrentLineNumber)\r
         FfsFileObj.NameGuid = self.__Token\r
-    \r
+\r
         self.__GetFilePart( FfsFileObj, MacroDict.copy())\r
-        \r
+\r
         if ForCapsule:\r
             capsuleFfs = CapsuleData.CapsuleFfs()\r
             capsuleFfs.Ffs = FfsFileObj\r
             Obj.CapsuleDataList.append(capsuleFfs)\r
         else:\r
             Obj.FfsList.append(FfsFileObj)\r
-                \r
+\r
         return True\r
-    \r
+\r
     ## __FileCouldHaveRelocFlag() method\r
     #\r
     #   Check whether reloc strip flag can be set for a file type.\r
@@ -2015,13 +2021,13 @@ class FdfParser:
     #   @retval True        This type could have relocation strip flag\r
     #   @retval False       No way to have it\r
     #\r
-    \r
+\r
     def __FileCouldHaveRelocFlag (self, FileType):\r
         if FileType in ('SEC', 'PEI_CORE', 'PEIM', 'PEI_DXE_COMBO'):\r
             return True\r
         else:\r
             return False\r
-    \r
+\r
     ## __SectionCouldHaveRelocFlag() method\r
     #\r
     #   Check whether reloc strip flag can be set for a section type.\r
@@ -2031,13 +2037,13 @@ class FdfParser:
     #   @retval True        This type could have relocation strip flag\r
     #   @retval False       No way to have it\r
     #\r
-    \r
+\r
     def __SectionCouldHaveRelocFlag (self, SectionType):\r
         if SectionType in ('TE', 'PE32'):\r
             return True\r
         else:\r
             return False\r
-        \r
+\r
     ## __GetFilePart() method\r
     #\r
     #   Get components for FILE statement\r
@@ -2047,9 +2053,9 @@ class FdfParser:
     #   @param  MacroDict   dictionary used to replace macro\r
     #\r
     def __GetFilePart(self, FfsFileObj, MacroDict = {}):\r
-        \r
+\r
         self.__GetFileOpts( FfsFileObj)\r
-        \r
+\r
         if not self.__IsToken("{"):\r
 #            if self.__IsKeyword('RELOCS_STRIPPED') or self.__IsKeyword('RELOCS_RETAINED'):\r
 #                if self.__FileCouldHaveRelocFlag(FfsFileObj.FvFileType):\r
@@ -2058,37 +2064,37 @@ class FdfParser:
 #                    else:\r
 #                        FfsFileObj.KeepReloc = True\r
 #                else:\r
-#                    raise Warning("File type %s could not have reloc strip flag At Line %d" % (FfsFileObj.FvFileType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
-#            \r
+#                    raise Warning("File type %s could not have reloc strip flag%d" % (FfsFileObj.FvFileType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
+#\r
 #            if not self.__IsToken("{"):\r
-                raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected '{'", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__GetNextToken():\r
-            raise Warning("expected File name or section data At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected File name or section data", self.FileName, self.CurrentLineNumber)\r
+\r
         if self.__Token == "FV":\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
             if not self.__GetNextToken():\r
-                raise Warning("expected FV name At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected FV name", self.FileName, self.CurrentLineNumber)\r
             FfsFileObj.FvName = self.__Token\r
-            \r
+\r
         elif self.__Token == "FD":\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
             if not self.__GetNextToken():\r
-                raise Warning("expected FD name At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected FD name", self.FileName, self.CurrentLineNumber)\r
             FfsFileObj.FdName = self.__Token\r
-            \r
+\r
         elif self.__Token in ("DEFINE", "APRIORI", "SECTION"):\r
             self.__UndoToken()\r
             self.__GetSectionData( FfsFileObj, MacroDict)\r
         else:\r
             FfsFileObj.FileName = self.__Token\r
-        \r
+\r
         if not self.__IsToken( "}"):\r
-            raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
-    \r
+            raise Warning("expected '}'", self.FileName, self.CurrentLineNumber)\r
+\r
     ## __GetFileOpts() method\r
     #\r
     #   Get options for FILE statement\r
@@ -2097,7 +2103,7 @@ class FdfParser:
     #   @param  FfsFileObj   for whom options is got\r
     #\r
     def __GetFileOpts(self, FfsFileObj):\r
-        \r
+\r
         if self.__GetNextToken():\r
             Pattern = re.compile(r'([a-zA-Z0-9\-]+|\$\(TARGET\)|\*)_([a-zA-Z0-9\-]+|\$\(TOOL_CHAIN_TAG\)|\*)_([a-zA-Z0-9\-]+|\$\(ARCH\)|\*)')\r
             if Pattern.match(self.__Token):\r
@@ -2105,26 +2111,26 @@ class FdfParser:
                 if self.__IsToken(","):\r
                     while self.__GetNextToken():\r
                         if not Pattern.match(self.__Token):\r
-                            raise Warning("expected KeyString \"Target_Tag_Arch\" At Line ", self.FileName, self.CurrentLineNumber)\r
+                            raise Warning("expected KeyString \"Target_Tag_Arch\"", self.FileName, self.CurrentLineNumber)\r
                         FfsFileObj.KeyStringList.append(self.__Token)\r
 \r
                         if not self.__IsToken(","):\r
                             break\r
-                    \r
+\r
             else:\r
                 self.__UndoToken()\r
 \r
         if self.__IsKeyword( "FIXED", True):\r
             FfsFileObj.Fixed = True\r
-            \r
+\r
         if self.__IsKeyword( "CHECKSUM", True):\r
             FfsFileObj.CheckSum = True\r
-            \r
+\r
         if self.__GetAlignment():\r
             FfsFileObj.Alignment = self.__Token\r
-            \r
-        \r
-    \r
+\r
+\r
+\r
     ## __GetAlignment() method\r
     #\r
     #   Return the alignment value\r
@@ -2136,14 +2142,14 @@ class FdfParser:
     def __GetAlignment(self):\r
         if self.__IsKeyword( "Align", True):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
             if not self.__GetNextToken():\r
-                raise Warning("expected alignment value At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected alignment value", self.FileName, self.CurrentLineNumber)\r
             return True\r
-            \r
+\r
         return False\r
-    \r
+\r
     ## __GetFilePart() method\r
     #\r
     #   Get section data for FILE statement\r
@@ -2155,19 +2161,19 @@ class FdfParser:
     def __GetSectionData(self, FfsFileObj, MacroDict = {}):\r
         Dict = {}\r
         Dict.update(MacroDict)\r
-        \r
+\r
         self.__GetDefineStatements(FfsFileObj)\r
-        \r
+\r
         Dict.update(FfsFileObj.DefineVarDict)\r
         self.__GetAprioriSection(FfsFileObj, Dict.copy())\r
         self.__GetAprioriSection(FfsFileObj, Dict.copy())\r
-        \r
+\r
         while True:\r
             IsLeafSection = self.__GetLeafSection(FfsFileObj, Dict)\r
             IsEncapSection = self.__GetEncapsulationSec(FfsFileObj)\r
             if not IsLeafSection and not IsEncapSection:\r
                 break\r
-         \r
+\r
     ## __GetLeafSection() method\r
     #\r
     #   Get leaf section for Obj\r
@@ -2179,34 +2185,34 @@ class FdfParser:
     #   @retval False       Not able to find section statement\r
     #\r
     def __GetLeafSection(self, Obj, MacroDict = {}):\r
-        \r
+\r
         OldPos = self.GetFileBufferPos()\r
-        \r
+\r
         if not self.__IsKeyword( "SECTION"):\r
             if len(Obj.SectionList) == 0:\r
-                raise Warning("expected SECTION At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected SECTION", self.FileName, self.CurrentLineNumber)\r
             else:\r
                 return False\r
-        \r
+\r
         AlignValue = None\r
         if self.__GetAlignment():\r
             AlignValue = self.__Token\r
-            \r
+\r
         BuildNum = None\r
         if self.__IsKeyword( "BUILD_NUM"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
             if not self.__GetNextToken():\r
-                raise Warning("expected Build number value At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected Build number value", self.FileName, self.CurrentLineNumber)\r
+\r
             BuildNum = self.__Token\r
-            \r
+\r
         if self.__IsKeyword( "VERSION"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
             if not self.__GetNextToken():\r
-                raise Warning("expected version At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected version", self.FileName, self.CurrentLineNumber)\r
             VerSectionObj = VerSection.VerSection()\r
             VerSectionObj.Alignment = AlignValue\r
             VerSectionObj.BuildNum = BuildNum\r
@@ -2218,9 +2224,9 @@ class FdfParser:
 \r
         elif self.__IsKeyword( "UI"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
             if not self.__GetNextToken():\r
-                raise Warning("expected UI At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected UI", self.FileName, self.CurrentLineNumber)\r
             UiSectionObj = UiSection.UiSection()\r
             UiSectionObj.Alignment = AlignValue\r
             if self.__GetStringData():\r
@@ -2228,13 +2234,13 @@ class FdfParser:
             else:\r
                 UiSectionObj.FileName = self.__Token\r
             Obj.SectionList.append(UiSectionObj)\r
-            \r
+\r
         elif self.__IsKeyword( "FV_IMAGE"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
             if not self.__GetNextWord():\r
-                raise Warning("expected FV name At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected FV name", self.FileName, self.CurrentLineNumber)\r
+\r
             FvName = self.__Token.upper()\r
             FvObj = None\r
 \r
@@ -2249,16 +2255,16 @@ class FdfParser:
                 self.__GetFvAttributes(FvObj)\r
                 self.__GetAprioriSection(FvObj, MacroDict.copy())\r
                 self.__GetAprioriSection(FvObj, MacroDict.copy())\r
-    \r
+\r
                 while True:\r
                     IsInf = self.__GetInfStatement(FvObj, MacroDict.copy())\r
                     IsFile = self.__GetFileStatement(FvObj, MacroDict.copy())\r
                     if not IsInf and not IsFile:\r
                         break\r
-    \r
+\r
                 if not self.__IsToken( "}"):\r
-                    raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                    raise Warning("expected '}'", self.FileName, self.CurrentLineNumber)\r
+\r
             FvImageSectionObj = FvImageSection.FvImageSection()\r
             FvImageSectionObj.Alignment = AlignValue\r
             if FvObj != None:\r
@@ -2266,42 +2272,42 @@ class FdfParser:
                 FvImageSectionObj.FvName = None\r
             else:\r
                 FvImageSectionObj.FvName = FvName\r
-                \r
-            Obj.SectionList.append(FvImageSectionObj) \r
-           \r
+\r
+            Obj.SectionList.append(FvImageSectionObj)\r
+\r
         elif self.__IsKeyword("PEI_DEPEX_EXP") or self.__IsKeyword("DXE_DEPEX_EXP"):\r
             DepexSectionObj = DepexSection.DepexSection()\r
             DepexSectionObj.Alignment = AlignValue\r
             DepexSectionObj.DepexType = self.__Token\r
-            \r
+\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
             if not self.__IsToken( "{"):\r
-                raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '{'", self.FileName, self.CurrentLineNumber)\r
             if not self.__SkipToToken( "}"):\r
-                raise Warning("expected Depex expression ending '}' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected Depex expression ending '}'", self.FileName, self.CurrentLineNumber)\r
+\r
             DepexSectionObj.Expression = self.__SkippedChars.rstrip('}')\r
             Obj.SectionList.append(DepexSectionObj)\r
-        \r
+\r
         else:\r
-            \r
+\r
             if not self.__GetNextWord():\r
-                raise Warning("expected section type At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected section type", self.FileName, self.CurrentLineNumber)\r
+\r
             # Encapsulation section appear, UndoToken and return\r
             if self.__Token == "COMPRESS" or self.__Token == "GUIDED":\r
                 self.SetFileBufferPos(OldPos)\r
                 return False\r
-            \r
+\r
             if self.__Token not in ("COMPAT16", "PE32", "PIC", "TE", "FV_IMAGE", "RAW", "DXE_DEPEX",\\r
                                "UI", "VERSION", "PEI_DEPEX", "SUBTYPE_GUID"):\r
-                raise Warning("Unknown section type At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Unknown section type '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
             # DataSection\r
             DataSectionObj = DataSection.DataSection()\r
             DataSectionObj.Alignment = AlignValue\r
             DataSectionObj.SecType = self.__Token\r
-            \r
+\r
             if self.__IsKeyword('RELOCS_STRIPPED') or self.__IsKeyword('RELOCS_RETAINED'):\r
                 if self.__FileCouldHaveRelocFlag(Obj.FvFileType) and self.__SectionCouldHaveRelocFlag(DataSectionObj.SecType):\r
                     if self.__Token == 'RELOCS_STRIPPED':\r
@@ -2309,20 +2315,20 @@ class FdfParser:
                     else:\r
                         DataSectionObj.KeepReloc = True\r
                 else:\r
-                    raise Warning("File type %s, section type %s, could not have reloc strip flag At Line %d" % (Obj.FvFileType, DataSectionObj.SecType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
-            \r
+                    raise Warning("File type %s, section type %s, could not have reloc strip flag%d" % (Obj.FvFileType, DataSectionObj.SecType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
+\r
             if self.__IsToken("="):\r
                 if not self.__GetNextToken():\r
-                    raise Warning("expected section file path At Line ", self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected section file path", self.FileName, self.CurrentLineNumber)\r
                 DataSectionObj.SectFileName = self.__Token\r
             else:\r
                 if not self.__GetCglSection(DataSectionObj):\r
                     return False\r
-            \r
+\r
             Obj.SectionList.append(DataSectionObj)\r
-            \r
+\r
         return True\r
-            \r
+\r
     ## __GetCglSection() method\r
     #\r
     #   Get compressed or GUIDed section for Obj\r
@@ -2334,14 +2340,14 @@ class FdfParser:
     #   @retval False       Not able to find section statement\r
     #\r
     def __GetCglSection(self, Obj, AlignValue = None):\r
-        \r
+\r
         if self.__IsKeyword( "COMPRESS"):\r
             type = "PI_STD"\r
             if self.__IsKeyword("PI_STD") or self.__IsKeyword("PI_NONE"):\r
                 type = self.__Token\r
-                \r
+\r
             if not self.__IsToken("{"):\r
-                raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '{'", self.FileName, self.CurrentLineNumber)\r
 \r
             CompressSectionObj = CompressSection.CompressSection()\r
             CompressSectionObj.Alignment = AlignValue\r
@@ -2352,17 +2358,17 @@ class FdfParser:
                 IsEncapSection = self.__GetEncapsulationSec(CompressSectionObj)\r
                 if not IsLeafSection and not IsEncapSection:\r
                     break\r
-            \r
-            \r
+\r
+\r
             if not self.__IsToken( "}"):\r
-                raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '}'", self.FileName, self.CurrentLineNumber)\r
             Obj.SectionList.append(CompressSectionObj)\r
-                \r
+\r
 #            else:\r
-#               raise Warning("Compress type not known At Line ") \r
-           \r
+#               raise Warning("Compress type not known")\r
+\r
             return True\r
-        \r
+\r
         elif self.__IsKeyword( "GUIDED"):\r
             GuidValue = None\r
             if self.__GetNextGuid():\r
@@ -2370,7 +2376,7 @@ class FdfParser:
 \r
             AttribDict = self.__GetGuidAttrib()\r
             if not self.__IsToken("{"):\r
-                raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '{'", self.FileName, self.CurrentLineNumber)\r
             GuidSectionObj = GuidSection.GuidSection()\r
             GuidSectionObj.Alignment = AlignValue\r
             GuidSectionObj.NameGuid = GuidValue\r
@@ -2383,13 +2389,13 @@ class FdfParser:
                 IsEncapSection = self.__GetEncapsulationSec(GuidSectionObj)\r
                 if not IsLeafSection and not IsEncapSection:\r
                     break\r
-            \r
+\r
             if not self.__IsToken( "}"):\r
-                raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '}'", self.FileName, self.CurrentLineNumber)\r
             Obj.SectionList.append(GuidSectionObj)\r
-                \r
+\r
             return True\r
-        \r
+\r
         return False\r
 \r
     ## __GetGuidAttri() method\r
@@ -2400,7 +2406,7 @@ class FdfParser:
     #   @retval AttribDict  Dictionary of key-value pair of section attributes\r
     #\r
     def __GetGuidAttrib(self):\r
-        \r
+\r
         AttribDict = {}\r
         AttribDict["PROCESSING_REQUIRED"] = False\r
         AttribDict["AUTH_STATUS_VALID"] = False\r
@@ -2408,24 +2414,24 @@ class FdfParser:
             AttribKey = self.__Token\r
 \r
             if not self.__IsToken("="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \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) At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected TRUE/FALSE (1/0)", self.FileName, self.CurrentLineNumber)\r
             AttribDict[AttribKey] = self.__Token\r
-            \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 '=' At Line ")\r
+                raise Warning("expected '='")\r
 \r
             if not self.__GetNextToken() or self.__Token.upper() not in ("TRUE", "FALSE", "1", "0"):\r
-                raise Warning("expected TRUE/FALSE (1/0) At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected TRUE/FALSE (1/0)", self.FileName, self.CurrentLineNumber)\r
             AttribDict[AttribKey] = self.__Token\r
-            \r
+\r
         return AttribDict\r
-            \r
+\r
     ## __GetEncapsulationSec() method\r
     #\r
     #   Get encapsulation section for FILE\r
@@ -2435,19 +2441,19 @@ class FdfParser:
     #   @retval True        Successfully find section statement\r
     #   @retval False       Not able to find section statement\r
     #\r
-    def __GetEncapsulationSec(self, FfsFileObj):        \r
-        \r
+    def __GetEncapsulationSec(self, FfsFileObj):\r
+\r
         OldPos = self.GetFileBufferPos()\r
         if not self.__IsKeyword( "SECTION"):\r
             if len(FfsFileObj.SectionList) == 0:\r
-                raise Warning("expected SECTION At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected SECTION", self.FileName, self.CurrentLineNumber)\r
             else:\r
                 return False\r
-        \r
+\r
         AlignValue = None\r
         if self.__GetAlignment():\r
             AlignValue = self.__Token\r
-            \r
+\r
         if not self.__GetCglSection(FfsFileObj, AlignValue):\r
             self.SetFileBufferPos(OldPos)\r
             return False\r
@@ -2463,48 +2469,48 @@ class FdfParser:
     #   @retval False       Not able to find a capsule\r
     #\r
     def __GetCapsule(self):\r
-        \r
+\r
         if not self.__GetNextToken():\r
             return False\r
 \r
         S = self.__Token.upper()\r
         if S.startswith("[") and not S.startswith("[CAPSULE."):\r
             if not S.startswith("[VTF.") and not S.startswith("[RULE."):\r
-                raise Warning("Unknown section or section appear sequence error \n(The correct sequence should be [FD.], [FV.], [Capsule.], [VTF.], [Rule.]) At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Unknown section or section appear sequence error (The correct sequence should be [FD.], [FV.], [Capsule.], [VTF.], [Rule.])", self.FileName, self.CurrentLineNumber)\r
             self.__UndoToken()\r
             return False\r
 \r
         self.__UndoToken()\r
         if not self.__IsToken("[CAPSULE.", True):\r
             FileLineTuple = GetRealFileLine(self.FileName, self.CurrentLineNumber)\r
-            print 'Parsing String: %s in File %s, At line: %d, Offset Within Line: %d' \\r
-                    % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :], FileLineTuple[0], FileLineTuple[1], self.CurrentOffsetWithinLine)\r
-            raise Warning("expected [Capsule.] At Line ", self.FileName, self.CurrentLineNumber)        \r
-            \r
+            #print 'Parsing String: %s in File %s, At line: %d, Offset Within Line: %d' \\r
+            #        % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :], FileLineTuple[0], FileLineTuple[1], self.CurrentOffsetWithinLine)\r
+            raise Warning("expected [Capsule.]", self.FileName, self.CurrentLineNumber)\r
+\r
         CapsuleObj = Capsule.Capsule()\r
 \r
         CapsuleName = self.__GetUiName()\r
         if not CapsuleName:\r
-            raise Warning("expected capsule name At line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected capsule name", self.FileName, self.CurrentLineNumber)\r
+\r
         CapsuleObj.UiCapsuleName = CapsuleName.upper()\r
-        \r
+\r
         if not self.__IsToken( "]"):\r
-            raise Warning("expected ']' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected ']'", self.FileName, self.CurrentLineNumber)\r
+\r
         if self.__IsKeyword("CREATE_FILE"):\r
             if not self.__IsToken( "="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
             if not self.__GetNextToken():\r
-                raise Warning("expected file name At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected file name", self.FileName, self.CurrentLineNumber)\r
+\r
             CapsuleObj.CreateFile = self.__Token\r
-        \r
+\r
         self.__GetCapsuleStatements(CapsuleObj)\r
         self.Profile.CapsuleList.append(CapsuleObj)\r
-        return True    \r
-            \r
+        return True\r
+\r
     ## __GetCapsuleStatements() method\r
     #\r
     #   Get statements for capsule\r
@@ -2516,9 +2522,9 @@ class FdfParser:
         self.__GetCapsuleTokens(Obj)\r
         self.__GetDefineStatements(Obj)\r
         self.__GetSetStatements(Obj)\r
-        \r
+\r
         self.__GetCapsuleData(Obj)\r
-                \r
+\r
     ## __GetCapsuleStatements() method\r
     #\r
     #   Get token statements for capsule\r
@@ -2527,16 +2533,16 @@ class FdfParser:
     #   @param  Obj         for whom token statements are got\r
     #\r
     def __GetCapsuleTokens(self, Obj):\r
-        \r
+\r
         if not self.__IsKeyword("CAPSULE_GUID"):\r
-            raise Warning("expected 'CAPSULE_GUID' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected 'CAPSULE_GUID'", self.FileName, self.CurrentLineNumber)\r
+\r
         while self.__CurrentLine().find("=") != -1:\r
             NameValue = self.__CurrentLine().split("=")\r
             Obj.TokensDict[NameValue[0].strip()] = NameValue[1].strip()\r
             self.CurrentLineNumber += 1\r
             self.CurrentOffsetWithinLine = 0\r
-    \r
+\r
     ## __GetCapsuleData() method\r
     #\r
     #   Get capsule data for capsule\r
@@ -2545,14 +2551,14 @@ class FdfParser:
     #   @param  Obj         for whom capsule data are got\r
     #\r
     def __GetCapsuleData(self, Obj):\r
-        \r
+\r
         while True:\r
             IsInf = self.__GetInfStatement(Obj, True)\r
             IsFile = self.__GetFileStatement(Obj, True)\r
             IsFv = self.__GetFvStatement(Obj)\r
             if not IsInf and not IsFile and not IsFv:\r
                 break\r
-    \r
+\r
     ## __GetFvStatement() method\r
     #\r
     #   Get FV for capsule\r
@@ -2563,21 +2569,21 @@ class FdfParser:
     #   @retval False       Not able to find a FV statement\r
     #\r
     def __GetFvStatement(self, CapsuleObj):\r
-        \r
+\r
         if not self.__IsKeyword("FV"):\r
             return False\r
-        \r
+\r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__GetNextToken():\r
-            raise Warning("expected FV name At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected FV name", self.FileName, self.CurrentLineNumber)\r
+\r
         CapsuleFv = CapsuleData.CapsuleFv()\r
         CapsuleFv.FvName = self.__Token\r
         CapsuleObj.CapsuleDataList.append(CapsuleFv)\r
         return True\r
-    \r
+\r
     ## __GetRule() method\r
     #\r
     #   Get Rule section contents and store its data into rule list of self.Profile\r
@@ -2587,39 +2593,39 @@ class FdfParser:
     #   @retval False       Not able to find a Rule\r
     #\r
     def __GetRule(self):\r
-        \r
+\r
         if not self.__GetNextToken():\r
             return False\r
 \r
         S = self.__Token.upper()\r
         if S.startswith("[") and not S.startswith("[RULE."):\r
-            raise Warning("Unknown section or section appear sequence error \n(The correct sequence should be [FD.], [FV.], [Capsule.], [VTF.], [Rule.]) At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown section or section appear sequence error (The correct sequence should be [FD.], [FV.], [Capsule.], [VTF.], [Rule.])", self.FileName, self.CurrentLineNumber)\r
 \r
         self.__UndoToken()\r
         if not self.__IsToken("[Rule.", True):\r
             FileLineTuple = GetRealFileLine(self.FileName, self.CurrentLineNumber)\r
-            print 'Parsing String: %s in File %s, At line: %d, Offset Within Line: %d' \\r
-                    % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :], FileLineTuple[0], FileLineTuple[1], self.CurrentOffsetWithinLine)\r
-            raise Warning("expected [Rule.] At Line ", self.FileName, self.CurrentLineNumber)\r
+            #print 'Parsing String: %s in File %s, At line: %d, Offset Within Line: %d' \\r
+            #        % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :], FileLineTuple[0], FileLineTuple[1], self.CurrentOffsetWithinLine)\r
+            raise Warning("expected [Rule.]", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__SkipToToken("."):\r
-            raise Warning("expected '.' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected '.'", self.FileName, self.CurrentLineNumber)\r
+\r
         Arch = self.__SkippedChars.rstrip(".")\r
         if Arch.upper() not in ("IA32", "X64", "IPF", "EBC", "COMMON"):\r
-            raise Warning("Unknown Arch At line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("Unknown Arch '%s'" % Arch, self.FileName, self.CurrentLineNumber)\r
+\r
         ModuleType = self.__GetModuleType()\r
-        \r
+\r
         TemplateName = ""\r
         if self.__IsToken("."):\r
             if not self.__GetNextWord():\r
-                raise Warning("expected template name At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected template name", self.FileName, self.CurrentLineNumber)\r
             TemplateName = self.__Token\r
-            \r
+\r
         if not self.__IsToken( "]"):\r
-            raise Warning("expected ']' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected ']'", self.FileName, self.CurrentLineNumber)\r
+\r
         RuleObj = self.__GetRuleFileStatements()\r
         RuleObj.Arch = Arch.upper()\r
         RuleObj.ModuleType = ModuleType\r
@@ -2640,7 +2646,7 @@ class FdfParser:
                               TemplateName.upper() ] = RuleObj\r
 #        self.Profile.RuleList.append(rule)\r
         return True\r
-    \r
+\r
     ## __GetModuleType() method\r
     #\r
     #   Return the module type\r
@@ -2649,18 +2655,18 @@ class FdfParser:
     #   @retval string      module type\r
     #\r
     def __GetModuleType(self):\r
-        \r
+\r
         if not self.__GetNextWord():\r
-            raise Warning("expected Module type At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Module type", self.FileName, self.CurrentLineNumber)\r
         if self.__Token.upper() not in ("SEC", "PEI_CORE", "PEIM", "DXE_CORE", \\r
                              "DXE_DRIVER", "DXE_SAL_DRIVER", \\r
                              "DXE_SMM_DRIVER", "DXE_RUNTIME_DRIVER", \\r
                              "UEFI_DRIVER", "UEFI_APPLICATION", "USER_DEFINED", "DEFAULT", "BASE", \\r
                              "SECURITY_CORE", "COMBINED_PEIM_DRIVER", "PIC_PEIM", "RELOCATABLE_PEIM", \\r
                              "PE32_PEIM", "BS_DRIVER", "RT_DRIVER", "SAL_RT_DRIVER", "APPLICATION"):\r
-            raise Warning("Unknown Module type At line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown Module type '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
         return self.__Token\r
-    \r
+\r
     ## __GetFileExtension() method\r
     #\r
     #   Return the file extension\r
@@ -2670,20 +2676,20 @@ class FdfParser:
     #\r
     def __GetFileExtension(self):\r
         if not self.__IsToken("."):\r
-                raise Warning("expected '.' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected '.'", self.FileName, self.CurrentLineNumber)\r
+\r
         Ext = ""\r
         if self.__GetNextToken():\r
             Pattern = re.compile(r'([a-zA-Z][a-zA-Z0-9]*)')\r
             if Pattern.match(self.__Token):\r
-                Ext = self.__Token                            \r
-                return '.' + Ext    \r
+                Ext = self.__Token\r
+                return '.' + Ext\r
             else:\r
-                raise Warning("Unknown file extension At Line ", self.FileName, self.CurrentLineNumber)\r
-                \r
+                raise Warning("Unknown file extension '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
+\r
         else:\r
-            raise Warning("expected file extension At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected file extension", self.FileName, self.CurrentLineNumber)\r
+\r
     ## __GetRuleFileStatement() method\r
     #\r
     #   Get rule contents\r
@@ -2692,23 +2698,23 @@ class FdfParser:
     #   @retval Rule        Rule object\r
     #\r
     def __GetRuleFileStatements(self):\r
-        \r
+\r
         if not self.__IsKeyword("FILE"):\r
-            raise Warning("expected FILE At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected FILE", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__GetNextWord():\r
-            raise Warning("expected FV type At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected FFS type", self.FileName, self.CurrentLineNumber)\r
+\r
         Type = self.__Token.strip().upper()\r
         if Type not in ("RAW", "FREEFORM", "SEC", "PEI_CORE", "PEIM",\\r
                              "PEI_DXE_COMBO", "DRIVER", "DXE_CORE", "APPLICATION", "FV_IMAGE"):\r
-            raise Warning("Unknown FV type At line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown FV type '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
         if not self.__IsKeyword("$(NAMED_GUID)"):\r
-            raise Warning("expected $(NAMED_GUID) At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected $(NAMED_GUID)", self.FileName, self.CurrentLineNumber)\r
 \r
         KeepReloc = None\r
         if self.__IsKeyword('RELOCS_STRIPPED') or self.__IsKeyword('RELOCS_RETAINED'):\r
@@ -2718,8 +2724,8 @@ class FdfParser:
                 else:\r
                     KeepReloc = True\r
             else:\r
-                raise Warning("File type %s could not have reloc strip flag At Line %d" % (Type, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
-        \r
+                raise Warning("File type %s could not have reloc strip flag%d" % (Type, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
+\r
         KeyStringList = []\r
         if self.__GetNextToken():\r
             Pattern = re.compile(r'([a-zA-Z0-9\-]+|\$\(TARGET\)|\*)_([a-zA-Z0-9\-]+|\$\(TOOL_CHAIN_TAG\)|\*)_([a-zA-Z0-9\-]+|\$\(ARCH\)|\*)')\r
@@ -2728,28 +2734,28 @@ class FdfParser:
                 if self.__IsToken(","):\r
                     while self.__GetNextToken():\r
                         if not Pattern.match(self.__Token):\r
-                            raise Warning("expected KeyString \"Target_Tag_Arch\" At Line ", self.FileName, self.CurrentLineNumber)\r
+                            raise Warning("expected KeyString \"Target_Tag_Arch\"", self.FileName, self.CurrentLineNumber)\r
                         KeyStringList.append(self.__Token)\r
 \r
                         if not self.__IsToken(","):\r
                             break\r
-                    \r
+\r
             else:\r
                 self.__UndoToken()\r
 \r
-        \r
+\r
         Fixed = False\r
         if self.__IsKeyword("Fixed", True):\r
             Fixed = True\r
-            \r
+\r
         CheckSum = False\r
         if self.__IsKeyword("CheckSum", True):\r
             CheckSum = True\r
-            \r
+\r
         AlignValue = ""\r
         if self.__GetAlignment():\r
             if self.__Token not in ("8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K"):\r
-                raise Warning("Incorrect alignment At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect alignment '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
             AlignValue = self.__Token\r
 \r
         if self.__IsToken("{"):\r
@@ -2762,22 +2768,22 @@ class FdfParser:
             Rule.KeyStringList = KeyStringList\r
             if KeepReloc != None:\r
                 Rule.KeepReloc = KeepReloc\r
-            \r
+\r
             while True:\r
                 IsEncapsulate = self.__GetRuleEncapsulationSection(Rule)\r
                 IsLeaf = self.__GetEfiSection(Rule)\r
                 if not IsEncapsulate and not IsLeaf:\r
                     break\r
-                \r
+\r
             if not self.__IsToken("}"):\r
-                raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected '}'", self.FileName, self.CurrentLineNumber)\r
+\r
             return Rule\r
-        \r
+\r
         elif self.__IsToken("|"):\r
             # Ext rule expected\r
             Ext = self.__GetFileExtension()\r
-            \r
+\r
             Rule = RuleSimpleFile.RuleSimpleFile()\r
 \r
             Rule.FvFileType = Type\r
@@ -2788,35 +2794,35 @@ class FdfParser:
             Rule.KeyStringList = KeyStringList\r
             if KeepReloc != None:\r
                 Rule.KeepReloc = KeepReloc\r
-            \r
+\r
             return Rule\r
-            \r
+\r
         else:\r
             # Simple file rule expected\r
             if not self.__GetNextWord():\r
-                raise Warning("expected leaf section type At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected leaf section type", self.FileName, self.CurrentLineNumber)\r
 \r
             SectionName = self.__Token\r
-        \r
+\r
             if SectionName not in ("COMPAT16", "PE32", "PIC", "TE", "FV_IMAGE", "RAW", "DXE_DEPEX",\\r
                                     "UI", "PEI_DEPEX", "VERSION", "SUBTYPE_GUID"):\r
-                raise Warning("Unknown leaf section name At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("Unknown leaf section name '%s'" % SectionName, self.FileName, self.CurrentLineNumber)\r
+\r
 \r
             if self.__IsKeyword("Fixed", True):\r
-                Fixed = True              \r
-    \r
+                Fixed = True\r
+\r
             if self.__IsKeyword("CheckSum", True):\r
                 CheckSum = True\r
-    \r
+\r
             if self.__GetAlignment():\r
                 if self.__Token not in ("8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K"):\r
-                    raise Warning("Incorrect alignment At Line ", self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("Incorrect alignment '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
                 AlignValue = self.__Token\r
-            \r
+\r
             if not self.__GetNextToken():\r
-                raise Warning("expected File name At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected File name", self.FileName, self.CurrentLineNumber)\r
+\r
             Rule = RuleSimpleFile.RuleSimpleFile()\r
             Rule.SectionType = SectionName\r
             Rule.FvFileType = Type\r
@@ -2828,7 +2834,7 @@ class FdfParser:
             if KeepReloc != None:\r
                 Rule.KeepReloc = KeepReloc\r
             return Rule\r
-        \r
+\r
     ## __GetEfiSection() method\r
     #\r
     #   Get section list for Rule\r
@@ -2839,17 +2845,17 @@ class FdfParser:
     #   @retval False       Not able to find section statement\r
     #\r
     def __GetEfiSection(self, Obj):\r
-        \r
+\r
         OldPos = self.GetFileBufferPos()\r
         if not self.__GetNextWord():\r
             return False\r
         SectionName = self.__Token\r
-        \r
+\r
         if SectionName not in ("COMPAT16", "PE32", "PIC", "TE", "FV_IMAGE", "RAW", "DXE_DEPEX",\\r
                                "UI", "VERSION", "PEI_DEPEX", "GUID"):\r
             self.__UndoToken()\r
             return False\r
-        \r
+\r
         if SectionName == "FV_IMAGE":\r
             FvImageSectionObj = FvImageSection.FvImageSection()\r
             if self.__IsKeyword("FV_IMAGE"):\r
@@ -2863,36 +2869,36 @@ class FdfParser:
                 self.__GetFvAttributes(FvObj)\r
                 self.__GetAprioriSection(FvObj)\r
                 self.__GetAprioriSection(FvObj)\r
-    \r
+\r
                 while True:\r
                     IsInf = self.__GetInfStatement(FvObj)\r
                     IsFile = self.__GetFileStatement(FvObj)\r
                     if not IsInf and not IsFile:\r
                         break\r
-    \r
+\r
                 if not self.__IsToken( "}"):\r
-                    raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected '}'", self.FileName, self.CurrentLineNumber)\r
                 FvImageSectionObj.Fv = FvObj\r
                 FvImageSectionObj.FvName = None\r
-                \r
+\r
             else:\r
                 if not self.__IsKeyword("FV"):\r
-                    raise Warning("expected 'FV' At Line ", self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected 'FV'", self.FileName, self.CurrentLineNumber)\r
                 FvImageSectionObj.FvFileType = self.__Token\r
-                \r
+\r
                 if self.__GetAlignment():\r
                     if self.__Token not in ("8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K"):\r
-                        raise Warning("Incorrect alignment At Line ", self.FileName, self.CurrentLineNumber)\r
+                        raise Warning("Incorrect alignment '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
                     FvImageSectionObj.Alignment = self.__Token\r
-                \r
+\r
                 if self.__IsKeyword("FV"):\r
                     FvImageSectionObj.FvFileType = self.__Token\r
-                \r
+\r
                 if self.__GetAlignment():\r
                     if self.__Token not in ("8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K"):\r
-                        raise Warning("Incorrect alignment At Line ", self.FileName, self.CurrentLineNumber)\r
+                        raise Warning("Incorrect alignment '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
                     FvImageSectionObj.Alignment = self.__Token\r
-                    \r
+\r
                 if self.__IsToken('|'):\r
                     FvImageSectionObj.FvFileExtension = self.__GetFileExtension()\r
                 elif self.__GetNextToken():\r
@@ -2902,62 +2908,62 @@ class FdfParser:
                     else:\r
                         self.__UndoToken()\r
                 else:\r
-                    raise Warning("expected FV file name At Line ", self.FileName, self.CurrentLineNumber)\r
-                    \r
+                    raise Warning("expected FV file name", self.FileName, self.CurrentLineNumber)\r
+\r
             Obj.SectionList.append(FvImageSectionObj)\r
             return True\r
-        \r
+\r
         EfiSectionObj = EfiSection.EfiSection()\r
         EfiSectionObj.SectionType = SectionName\r
-        \r
+\r
         if not self.__GetNextToken():\r
-            raise Warning("expected file type At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected file type", self.FileName, self.CurrentLineNumber)\r
+\r
         if self.__Token == "STRING":\r
             if not self.__RuleSectionCouldHaveString(EfiSectionObj.SectionType):\r
-                raise Warning("%s section could NOT have string data At Line %d" % (EfiSectionObj.SectionType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("%s section could NOT have string data%d" % (EfiSectionObj.SectionType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
+\r
             if not self.__IsToken('='):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
-            \r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
             if not self.__GetNextToken():\r
-                raise Warning("expected Quoted String At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+                raise Warning("expected Quoted String", self.FileName, self.CurrentLineNumber)\r
+\r
             if self.__GetStringData():\r
                 EfiSectionObj.StringData = self.__Token\r
-            \r
+\r
             if self.__IsKeyword("BUILD_NUM"):\r
                 if not self.__RuleSectionCouldHaveBuildNum(EfiSectionObj.SectionType):\r
-                    raise Warning("%s section could NOT have BUILD_NUM At Line %d" % (EfiSectionObj.SectionType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
-            \r
+                    raise Warning("%s section could NOT have BUILD_NUM%d" % (EfiSectionObj.SectionType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
+\r
                 if not self.__IsToken("="):\r
-                    raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
                 if not self.__GetNextToken():\r
-                    raise Warning("expected Build number At Line ", self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected Build number", self.FileName, self.CurrentLineNumber)\r
                 EfiSectionObj.BuildNum = self.__Token\r
-                \r
+\r
         else:\r
             EfiSectionObj.FileType = self.__Token\r
             self.__CheckRuleSectionFileType(EfiSectionObj.SectionType, EfiSectionObj.FileType)\r
-            \r
+\r
         if self.__IsKeyword("Optional"):\r
             if not self.__RuleSectionCouldBeOptional(EfiSectionObj.SectionType):\r
-                raise Warning("%s section could NOT be optional At Line %d" % (EfiSectionObj.SectionType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
+                raise Warning("%s section could NOT be optional%d" % (EfiSectionObj.SectionType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
             EfiSectionObj.Optional = True\r
-        \r
+\r
             if self.__IsKeyword("BUILD_NUM"):\r
                 if not self.__RuleSectionCouldHaveBuildNum(EfiSectionObj.SectionType):\r
-                    raise Warning("%s section could NOT have BUILD_NUM At Line %d" % (EfiSectionObj.SectionType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
-                \r
+                    raise Warning("%s section could NOT have BUILD_NUM%d" % (EfiSectionObj.SectionType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
+\r
                 if not self.__IsToken("="):\r
-                    raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
                 if not self.__GetNextToken():\r
-                    raise Warning("expected Build number At Line ", self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("expected Build number", self.FileName, self.CurrentLineNumber)\r
                 EfiSectionObj.BuildNum = self.__Token\r
-                \r
+\r
         if self.__GetAlignment():\r
             EfiSectionObj.Alignment = self.__Token\r
-        \r
+\r
         if self.__IsKeyword('RELOCS_STRIPPED') or self.__IsKeyword('RELOCS_RETAINED'):\r
             if self.__SectionCouldHaveRelocFlag(EfiSectionObj.SectionType):\r
                 if self.__Token == 'RELOCS_STRIPPED':\r
@@ -2965,11 +2971,11 @@ class FdfParser:
                 else:\r
                     EfiSectionObj.KeepReloc = True\r
                 if Obj.KeepReloc != None and Obj.KeepReloc != EfiSectionObj.KeepReloc:\r
-                    raise Warning("Section type %s has reloc strip flag conflict with Rule At Line %d" % (EfiSectionObj.SectionType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
+                    raise Warning("Section type %s has reloc strip flag conflict with Rule" % EfiSectionObj.SectionType, self.FileName, self.CurrentLineNumber)\r
             else:\r
-                raise Warning("Section type %s could not have reloc strip flag At Line %d" % (EfiSectionObj.SectionType, self.CurrentLineNumber), self.FileName, self.CurrentLineNumber)\r
-        \r
-        \r
+                raise Warning("Section type %s could not have reloc strip flag" % EfiSectionObj.SectionType, self.FileName, self.CurrentLineNumber)\r
+\r
+\r
         if self.__IsToken('|'):\r
             EfiSectionObj.FileExtension = self.__GetFileExtension()\r
         elif self.__GetNextToken():\r
@@ -2979,11 +2985,11 @@ class FdfParser:
             else:\r
                 self.__UndoToken()\r
         else:\r
-            raise Warning("expected section file name At Line ", self.FileName, self.CurrentLineNumber)\r
-                \r
+            raise Warning("expected section file name", self.FileName, self.CurrentLineNumber)\r
+\r
         Obj.SectionList.append(EfiSectionObj)\r
         return True\r
-        \r
+\r
     ## __RuleSectionCouldBeOptional() method\r
     #\r
     #   Get whether a section could be optional\r
@@ -2998,7 +3004,7 @@ class FdfParser:
             return True\r
         else:\r
             return False\r
-    \r
+\r
     ## __RuleSectionCouldHaveBuildNum() method\r
     #\r
     #   Get whether a section could have build number information\r
@@ -3013,7 +3019,7 @@ class FdfParser:
             return True\r
         else:\r
             return False\r
-    \r
+\r
     ## __RuleSectionCouldHaveString() method\r
     #\r
     #   Get whether a section could have string\r
@@ -3028,7 +3034,7 @@ class FdfParser:
             return True\r
         else:\r
             return False\r
-    \r
+\r
     ## __CheckRuleSectionFileType() method\r
     #\r
     #   Get whether a section matches a file type\r
@@ -3040,35 +3046,35 @@ class FdfParser:
     def __CheckRuleSectionFileType(self, SectionType, FileType):\r
         if SectionType == "COMPAT16":\r
             if FileType not in ("COMPAT16", "SEC_COMPAT16"):\r
-                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "PE32":\r
             if FileType not in ("PE32", "SEC_PE32"):\r
-                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "PIC":\r
             if FileType not in ("PIC", "PIC"):\r
-                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "TE":\r
             if FileType not in ("TE", "SEC_TE"):\r
-                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "RAW":\r
             if FileType not in ("BIN", "SEC_BIN", "RAW", "ASL", "ACPI"):\r
-                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "DXE_DEPEX":\r
             if FileType not in ("DXE_DEPEX", "SEC_DXE_DEPEX"):\r
-                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "UI":\r
             if FileType not in ("UI", "SEC_UI"):\r
-                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "VERSION":\r
             if FileType not in ("VERSION", "SEC_VERSION"):\r
-                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "PEI_DEPEX":\r
             if FileType not in ("PEI_DEPEX", "SEC_PEI_DEPEX"):\r
-                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "GUID":\r
             if FileType not in ("PE32", "SEC_GUID"):\r
-                raise Warning("Incorrect section file type At Line ", self.FileName, self.CurrentLineNumber)    \r
-              \r
+                raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
+\r
     ## __GetRuleEncapsulationSection() method\r
     #\r
     #   Get encapsulation section for Rule\r
@@ -3084,12 +3090,12 @@ class FdfParser:
             Type = "PI_STD"\r
             if self.__IsKeyword("PI_STD") or self.__IsKeyword("PI_NONE"):\r
                 Type = self.__Token\r
-                \r
+\r
             if not self.__IsToken("{"):\r
-                raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '{'", self.FileName, self.CurrentLineNumber)\r
 \r
             CompressSectionObj = CompressSection.CompressSection()\r
-            \r
+\r
             CompressSectionObj.CompType = Type\r
             # Recursive sections...\r
             while True:\r
@@ -3097,46 +3103,46 @@ class FdfParser:
                 IsLeaf = self.__GetEfiSection(CompressSectionObj)\r
                 if not IsEncapsulate and not IsLeaf:\r
                     break\r
-            \r
+\r
             if not self.__IsToken( "}"):\r
-                raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '}'", self.FileName, self.CurrentLineNumber)\r
             Rule.SectionList.append(CompressSectionObj)\r
-                \r
+\r
             return True\r
 \r
         elif self.__IsKeyword( "GUIDED"):\r
             GuidValue = None\r
             if self.__GetNextGuid():\r
                 GuidValue = self.__Token\r
-            \r
+\r
             if self.__IsKeyword( "$(NAMED_GUID)"):\r
                 GuidValue = self.__Token\r
-                \r
+\r
             AttribDict = self.__GetGuidAttrib()\r
-            \r
+\r
             if not self.__IsToken("{"):\r
-                raise Warning("expected '{' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '{'", self.FileName, self.CurrentLineNumber)\r
             GuidSectionObj = GuidSection.GuidSection()\r
             GuidSectionObj.NameGuid = GuidValue\r
             GuidSectionObj.SectionType = "GUIDED"\r
             GuidSectionObj.ProcessRequired = AttribDict["PROCESSING_REQUIRED"]\r
             GuidSectionObj.AuthStatusValid = AttribDict["AUTH_STATUS_VALID"]\r
-            \r
+\r
             # Efi sections...\r
             while True:\r
                 IsEncapsulate = self.__GetRuleEncapsulationSection(GuidSectionObj)\r
                 IsLeaf = self.__GetEfiSection(GuidSectionObj)\r
                 if not IsEncapsulate and not IsLeaf:\r
                     break\r
-            \r
+\r
             if not self.__IsToken( "}"):\r
-                raise Warning("expected '}' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '}'", self.FileName, self.CurrentLineNumber)\r
             Rule.SectionList.append(GuidSectionObj)\r
 \r
             return True\r
 \r
         return False\r
-        \r
+\r
     ## __GetVtf() method\r
     #\r
     #   Get VTF section contents and store its data into VTF list of self.Profile\r
@@ -3146,64 +3152,64 @@ class FdfParser:
     #   @retval False       Not able to find a VTF\r
     #\r
     def __GetVtf(self):\r
-        \r
+\r
         if not self.__GetNextToken():\r
             return False\r
 \r
         S = self.__Token.upper()\r
         if S.startswith("[") and not S.startswith("[VTF."):\r
             if not S.startswith("[RULE."):\r
-                raise Warning("Unknown section or section appear sequence error \n(The correct sequence should be [FD.], [FV.], [Capsule.], [VTF.], [Rule.]) At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Unknown section or section appear sequence error (The correct sequence should be [FD.], [FV.], [Capsule.], [VTF.], [Rule.])", self.FileName, self.CurrentLineNumber)\r
             self.__UndoToken()\r
             return False\r
 \r
         self.__UndoToken()\r
         if not self.__IsToken("[VTF.", True):\r
             FileLineTuple = GetRealFileLine(self.FileName, self.CurrentLineNumber)\r
-            print 'Parsing String: %s in File %s, At line: %d, Offset Within Line: %d' \\r
-                    % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :], FileLineTuple[0], FileLineTuple[1], self.CurrentOffsetWithinLine)\r
-            raise Warning("expected [VTF.] At Line ", self.FileName, self.CurrentLineNumber)\r
+            #print 'Parsing String: %s in File %s, At line: %d, Offset Within Line: %d' \\r
+            #        % (self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine :], FileLineTuple[0], FileLineTuple[1], self.CurrentOffsetWithinLine)\r
+            raise Warning("expected [VTF.]", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__SkipToToken("."):\r
-            raise Warning("expected '.' At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '.'", self.FileName, self.CurrentLineNumber)\r
 \r
         Arch = self.__SkippedChars.rstrip(".").upper()\r
         if Arch not in ("IA32", "X64", "IPF"):\r
-            raise Warning("Unknown Arch At line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown Arch '%s'" % Arch, self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextWord():\r
-            raise Warning("expected VTF name At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected VTF name", self.FileName, self.CurrentLineNumber)\r
         Name = self.__Token.upper()\r
 \r
         VtfObj = Vtf.Vtf()\r
         VtfObj.UiName = Name\r
         VtfObj.KeyArch = Arch\r
-        \r
+\r
         if self.__IsToken(","):\r
             if not self.__GetNextWord():\r
-                raise Warning("expected Arch list At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected Arch list", self.FileName, self.CurrentLineNumber)\r
             if self.__Token.upper() not in ("IA32", "X64", "IPF"):\r
-                raise Warning("Unknown Arch At line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Unknown Arch '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
             VtfObj.ArchList = self.__Token.upper()\r
 \r
         if not self.__IsToken( "]"):\r
-            raise Warning("expected ']' At Line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("expected ']'", self.FileName, self.CurrentLineNumber)\r
+\r
         if self.__IsKeyword("IA32_RST_BIN"):\r
             if not self.__IsToken("="):\r
-                raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
 \r
             if not self.__GetNextToken():\r
-                raise Warning("expected Reset file At Line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("expected Reset file", self.FileName, self.CurrentLineNumber)\r
 \r
             VtfObj.ResetBin = self.__Token\r
-            \r
+\r
         while self.__GetComponentStatement(VtfObj):\r
             pass\r
-        \r
+\r
         self.Profile.VtfList.append(VtfObj)\r
         return True\r
-    \r
+\r
     ## __GetComponentStatement() method\r
     #\r
     #   Get components in VTF\r
@@ -3214,108 +3220,108 @@ class FdfParser:
     #   @retval False       Not able to find a component\r
     #\r
     def __GetComponentStatement(self, VtfObj):\r
-        \r
+\r
         if not self.__IsKeyword("COMP_NAME"):\r
             return False\r
-        \r
+\r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextWord():\r
-            raise Warning("expected Component Name At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Component Name", self.FileName, self.CurrentLineNumber)\r
 \r
         CompStatementObj = ComponentStatement.ComponentStatement()\r
         CompStatementObj.CompName = self.__Token\r
-        \r
+\r
         if not self.__IsKeyword("COMP_LOC"):\r
-            raise Warning("expected COMP_LOC At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected COMP_LOC", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
 \r
         CompStatementObj.CompLoc = ""\r
         if self.__GetNextWord():\r
             CompStatementObj.CompLoc = self.__Token\r
             if self.__IsToken('|'):\r
                 if not self.__GetNextWord():\r
-                    raise Warning("Expected Region Name At Line ", self.FileName, self.CurrentLineNumber)\r
-                \r
+                    raise Warning("Expected Region Name", self.FileName, self.CurrentLineNumber)\r
+\r
                 if self.__Token not in ("F", "N", "S"):    #, "H", "L", "PH", "PL"): not support\r
-                    raise Warning("Unknown location type At line ", self.FileName, self.CurrentLineNumber)\r
-    \r
+                    raise Warning("Unknown location type '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
+\r
                 CompStatementObj.FilePos = self.__Token\r
         else:\r
             self.CurrentLineNumber += 1\r
             self.CurrentOffsetWithinLine = 0\r
-        \r
+\r
         if not self.__IsKeyword("COMP_TYPE"):\r
-            raise Warning("expected COMP_TYPE At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected COMP_TYPE", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextToken():\r
-            raise Warning("expected Component type At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Component type", self.FileName, self.CurrentLineNumber)\r
         if self.__Token not in ("FIT", "PAL_B", "PAL_A", "OEM"):\r
             if not self.__Token.startswith("0x") or len(self.__Token) < 3 or len(self.__Token) > 4 or \\r
                 not self.__HexDigit(self.__Token[2]) or not self.__HexDigit(self.__Token[-1]):\r
-                raise Warning("Unknown location type At line ", self.FileName, self.CurrentLineNumber)\r
+                raise Warning("Unknown location type '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
         CompStatementObj.CompType = self.__Token\r
-        \r
+\r
         if not self.__IsKeyword("COMP_VER"):\r
-            raise Warning("expected COMP_VER At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected COMP_VER", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextToken():\r
-            raise Warning("expected Component version At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Component version", self.FileName, self.CurrentLineNumber)\r
 \r
         Pattern = re.compile('-$|[0-9]{0,1}[0-9]{1}\.[0-9]{0,1}[0-9]{1}')\r
         if Pattern.match(self.__Token) == None:\r
-            raise Warning("Unknown version format At line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown version format '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
         CompStatementObj.CompVer = self.__Token\r
-        \r
+\r
         if not self.__IsKeyword("COMP_CS"):\r
-            raise Warning("expected COMP_CS At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected COMP_CS", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextToken():\r
-            raise Warning("expected Component CS At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Component CS", self.FileName, self.CurrentLineNumber)\r
         if self.__Token not in ("1", "0"):\r
-            raise Warning("Unknown  Component CS At line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown  Component CS '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
         CompStatementObj.CompCs = self.__Token\r
-        \r
-        \r
+\r
+\r
         if not self.__IsKeyword("COMP_BIN"):\r
-            raise Warning("expected COMP_BIN At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected COMP_BIN", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextToken():\r
-            raise Warning("expected Component file At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Component file", self.FileName, self.CurrentLineNumber)\r
 \r
         CompStatementObj.CompBin = self.__Token\r
-        \r
+\r
         if not self.__IsKeyword("COMP_SYM"):\r
-            raise Warning("expected COMP_SYM At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected COMP_SYM", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextToken():\r
-            raise Warning("expected Component symbol file At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected Component symbol file", self.FileName, self.CurrentLineNumber)\r
 \r
         CompStatementObj.CompSym = self.__Token\r
-    \r
+\r
         if not self.__IsKeyword("COMP_SIZE"):\r
-            raise Warning("expected COMP_SIZE At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected COMP_SIZE", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r
-            raise Warning("expected '=' At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
 \r
         if self.__IsToken("-"):\r
             CompStatementObj.CompSize = self.__Token\r
@@ -3324,11 +3330,11 @@ class FdfParser:
         elif self.__GetNextHexNumber():\r
             CompStatementObj.CompSize = self.__Token\r
         else:\r
-            raise Warning("Unknown size At line ", self.FileName, self.CurrentLineNumber)\r
-        \r
+            raise Warning("Unknown size '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
+\r
         VtfObj.ComponentStatementList.append(CompStatementObj)\r
         return True\r
-    \r
+\r
     ## __GetFvInFd() method\r
     #\r
     #   Get FV list contained in FD\r
@@ -3338,7 +3344,7 @@ class FdfParser:
     #   @retval FvList      list of FV in FD\r
     #\r
     def __GetFvInFd (self, FdName):\r
-    \r
+\r
         FvList = []\r
         if FdName.upper() in self.Profile.FdDict.keys():\r
             FdObj = self.Profile.FdDict[FdName.upper()]\r
@@ -3348,7 +3354,7 @@ class FdfParser:
                         if elementRegionData != None and elementRegionData.upper() not in FvList:\r
                             FvList.append(elementRegionData.upper())\r
         return FvList\r
-    \r
+\r
     ## __GetReferencedFdFvTuple() method\r
     #\r
     #   Get FD and FV list referenced by a FFS file\r
@@ -3359,7 +3365,7 @@ class FdfParser:
     #   @param  RefFvList   referenced FV by section\r
     #\r
     def __GetReferencedFdFvTuple(self, FvObj, RefFdList = [], RefFvList = []):\r
-        \r
+\r
         for FfsObj in FvObj.FfsList:\r
             if isinstance(FfsObj, FfsFileStatement.FileStatement):\r
                 if FfsObj.FvName != None and FfsObj.FvName.upper() not in RefFvList:\r
@@ -3367,8 +3373,8 @@ class FdfParser:
                 elif FfsObj.FdName != None and FfsObj.FdName.upper() not in RefFdList:\r
                     RefFdList.append(FfsObj.FdName.upper())\r
                 else:\r
-                    self.__GetReferencedFdFvTupleFromSection(FfsObj, RefFdList, RefFvList)    \r
-    \r
+                    self.__GetReferencedFdFvTupleFromSection(FfsObj, RefFdList, RefFvList)\r
+\r
     ## __GetReferencedFdFvTupleFromSection() method\r
     #\r
     #   Get FD and FV list referenced by a FFS section\r
@@ -3379,7 +3385,7 @@ class FdfParser:
     #   @param  FvList      referenced FV by section\r
     #\r
     def __GetReferencedFdFvTupleFromSection(self, FfsFile, FdList = [], FvList = []):\r
-        \r
+\r
         SectionStack = []\r
         SectionStack.extend(FfsFile.SectionList)\r
         while SectionStack != []:\r
@@ -3390,10 +3396,10 @@ class FdfParser:
                 if SectionObj.Fv != None and SectionObj.Fv.UiFvName != None and SectionObj.Fv.UiFvName.upper() not in FvList:\r
                     FvList.append(SectionObj.Fv.UiFvName.upper())\r
                     self.__GetReferencedFdFvTuple(SectionObj.Fv, FdList, FvList)\r
-            \r
+\r
             if isinstance(SectionObj, CompressSection.CompressSection) or isinstance(SectionObj, GuidSection.GuidSection):\r
                 SectionStack.extend(SectionObj.SectionList)\r
-                          \r
+\r
     ## CycleReferenceCheck() method\r
     #\r
     #   Check whether cycle reference exists in FDF\r
@@ -3403,32 +3409,32 @@ class FdfParser:
     #   @retval False       Not exists cycle reference\r
     #\r
     def CycleReferenceCheck(self):\r
-        \r
+\r
         CycleRefExists = False\r
-        \r
+\r
         try:\r
             for FvName in self.Profile.FvDict.keys():\r
                 LogStr = "Cycle Reference Checking for FV: %s\n" % FvName\r
                 RefFvStack = []\r
                 RefFvStack.append(FvName)\r
                 FdAnalyzedList = []\r
-                \r
+\r
                 while RefFvStack != []:\r
                     FvNameFromStack = RefFvStack.pop()\r
                     if FvNameFromStack.upper() in self.Profile.FvDict.keys():\r
                         FvObj = self.Profile.FvDict[FvNameFromStack.upper()]\r
                     else:\r
                         continue\r
-                    \r
+\r
                     RefFdList = []\r
                     RefFvList = []\r
                     self.__GetReferencedFdFvTuple(FvObj, RefFdList, RefFvList)\r
-                    \r
+\r
                     for RefFdName in RefFdList:\r
                         if RefFdName in FdAnalyzedList:\r
                             continue\r
-                        \r
-                        LogStr += "FD %s is referenced by FV %s\n" % (RefFdName, FvNameFromStack) \r
+\r
+                        LogStr += "FD %s is referenced by FV %s\n" % (RefFdName, FvNameFromStack)\r
                         FvInFdList = self.__GetFvInFd(RefFdName)\r
                         if FvInFdList != []:\r
                             LogStr += "FD %s contains FV: " % RefFdName\r
@@ -3437,34 +3443,34 @@ class FdfParser:
                                 LogStr += ' \n'\r
                                 if FvObj not in RefFvStack:\r
                                     RefFvStack.append(FvObj)\r
-                        \r
+\r
                                 if FvName in RefFvStack:\r
                                     CycleRefExists = True\r
                                     raise Warning(LogStr)\r
                         FdAnalyzedList.append(RefFdName)\r
-                                   \r
+\r
                     for RefFvName in RefFvList:\r
                         LogStr += "FV %s is referenced by FV %s\n" % (RefFvName, FvNameFromStack)\r
                         if RefFvName not in RefFvStack:\r
                             RefFvStack.append(RefFvName)\r
-                            \r
+\r
                         if FvName in RefFvStack:\r
                             CycleRefExists = True\r
                             raise Warning(LogStr)\r
-        \r
+\r
         except Warning:\r
             print LogStr\r
-        \r
+\r
         finally:\r
             return CycleRefExists\r
-        \r
+\r
 if __name__ == "__main__":\r
     parser = FdfParser("..\LakeportX64Pkg.fdf")\r
     try:\r
         parser.ParseFile()\r
         parser.CycleReferenceCheck()\r
     except Warning, X:\r
-            print X.message\r
+            print str(X)\r
     else:\r
         print "Success!"\r
 \r
index dad6305..b4229ff 100644 (file)
@@ -51,8 +51,10 @@ def main():
     global Workspace\r
     Workspace = ""\r
     ArchList = None\r
+    ReturnCode = 0\r
+\r
+    EdkLogger.Initialize()\r
     try:\r
-        EdkLogger.Initialize()\r
         if Options.verbose != None:\r
             EdkLogger.SetLevel(EdkLogger.VERBOSE)\r
             GenFdsGlobalVariable.VerboseMode = True\r
@@ -63,10 +65,10 @@ def main():
             GenFdsGlobalVariable.DebugLevel = Options.debug\r
         else:\r
             EdkLogger.SetLevel(EdkLogger.INFO)\r
-            \r
+\r
         if (Options.Workspace == None):\r
-            GenFdsGlobalVariable.ErrorLogger("WORKSPACE not defined.\n  Please set the WORKSPACE environment variable to the location of the EDK II install directory.")\r
-            sys.exit(1)\r
+            EdkLogger.error("GenFds", BuildToolError.OPTION_MISSING, "WORKSPACE not defined",\r
+                            ExtraData="Please use '-w' switch to pass it or set the WORKSPACE environment variable.")\r
         else:\r
             Workspace = Options.Workspace\r
             GenFdsGlobalVariable.WorkSpaceDir = Workspace\r
@@ -75,51 +77,47 @@ def main():
             if (Options.debug):\r
                 GenFdsGlobalVariable.VerboseLogger( "Using Workspace:" + Workspace)\r
         os.chdir(GenFdsGlobalVariable.WorkSpaceDir)\r
-    \r
+\r
         if (Options.filename):\r
             FdfFilename = Options.filename\r
             FdfFilename = GenFdsGlobalVariable.ReplaceWorkspaceMacro(FdfFilename)\r
         else:\r
-            GenFdsGlobalVariable.ErrorLogger("You must specify an input filename")\r
-            sys.exit(1)\r
-    \r
+            EdkLogger.error("GenFds", BuildToolError.OPTION_MISSING, "Missing FDF filename")\r
+\r
         if (Options.BuildTarget):\r
             GenFdsGlobalVariable.TargetName = Options.BuildTarget\r
         else:\r
-            GenFdsGlobalVariable.ErrorLogger("You must specify a build target")\r
-            sys.exit(1)\r
-            \r
+            EdkLogger.error("GenFds", BuildToolError.OPTION_MISSING, "Missing build target")\r
+\r
         if (Options.ToolChain):\r
             GenFdsGlobalVariable.ToolChainTag = Options.ToolChain\r
         else:\r
-            GenFdsGlobalVariable.ErrorLogger("You must specify a tool chain tag")\r
-            sys.exit(1)\r
-            \r
+            EdkLogger.error("GenFds", BuildToolError.OPTION_MISSING, "Missing tool chain tag")\r
+\r
         if FdfFilename[0:2] == '..':\r
             FdfFilename = os.path.realpath(FdfFilename)\r
         if FdfFilename[1] != ':':\r
             FdfFilename = os.path.join(GenFdsGlobalVariable.WorkSpaceDir, FdfFilename)\r
-                \r
+\r
         if not os.path.exists(FdfFilename):\r
-            GenFdsGlobalVariable.ErrorLogger ("File %s not found" % (FdfFilename))\r
-            sys.exit(1)\r
+            EdkLogger.error("GenFds", BuildToolError.FILE_NOT_FOUND, ExtraData=FdfFilename)\r
 \r
         if (Options.activePlatform):\r
             ActivePlatform = Options.activePlatform\r
             ActivePlatform = GenFdsGlobalVariable.ReplaceWorkspaceMacro(ActivePlatform)\r
-    \r
+\r
             if ActivePlatform[0:2] == '..':\r
                 ActivePlatform = os.path.realpath(ActivePlatform)\r
-    \r
+\r
             if ActivePlatform[1] != ':':\r
                 ActivePlatform = os.path.join(GenFdsGlobalVariable.WorkSpaceDir, ActivePlatform)\r
-    \r
+\r
             if not os.path.exists(ActivePlatform)  :\r
                 raise Exception ("ActivePlatform doesn't exist!")\r
-            \r
+\r
             if ActivePlatform.find(Workspace) == -1:\r
                 raise Exception ("ActivePlatform doesn't exist in Workspace!")\r
-            \r
+\r
             ActivePlatform = ActivePlatform.replace(Workspace, '')\r
             if len(ActivePlatform) > 0 :\r
                 if ActivePlatform[0] == '\\' or ActivePlatform[0] == '/':\r
@@ -127,24 +125,21 @@ def main():
             else:\r
                 raise Exception ("ActivePlatform doesn't exist!")\r
         else :\r
-            GenFdsGlobalVariable.ErrorLogger("You must specify an active platform")\r
-            sys.exit(1)\r
-    \r
+            EdkLogger.error("GenFds", BuildToolError.OPTION_MISSING, "Missing active platform")\r
+\r
         GenFdsGlobalVariable.ActivePlatform = NormPath(ActivePlatform)\r
-            \r
+\r
         if (Options.archList) :\r
             ArchList = Options.archList.split(',')\r
         else:\r
-            GenFdsGlobalVariable.ErrorLogger("You must specify a build ARCH")\r
-            sys.exit(1)\r
-        \r
+            EdkLogger.error("GenFds", BuildToolError.OPTION_MISSING, "Missing build ARCH")\r
+\r
         BuildConfigurationFile = os.path.normpath(os.path.join(GenFdsGlobalVariable.WorkSpaceDir, "Conf/target.txt"))\r
         if os.path.isfile(BuildConfigurationFile) == True:\r
             TargetTxtClassObject.TargetTxtClassObject(BuildConfigurationFile)\r
         else:\r
-            GenFdsGlobalVariable.ErrorLogger("File NOT found: %s", BuildConfigrationFile)\r
-            sys.exit(1)\r
-        \r
+            EdkLogger.error("GenFds", BuildToolError.FILE_NOT_FOUND, ExtraData=BuildConfigrationFile)\r
+\r
         if Options.Macros:\r
             for Pair in Options.Macros:\r
                 Pair.strip('"')\r
@@ -154,7 +149,7 @@ def main():
                     GlobalData.gGlobalDefines[List[0].strip()] = List[1].strip()\r
                 else:\r
                     FdfParser.InputMacroDict[List[0].strip()] = None\r
-            \r
+\r
         """call Workspace build create database"""\r
         os.environ["WORKSPACE"] = Workspace\r
         BuildWorkSpace = WorkspaceDatabase(':memory:', GlobalData.gGlobalDefines)\r
@@ -162,63 +157,70 @@ def main():
 \r
         for Arch in ArchList:\r
             GenFdsGlobalVariable.OutputDirFromDscDict[Arch] = NormPath(BuildWorkSpace.BuildObject[ActivePlatform, Arch].OutputDirectory)\r
-        \r
+\r
         if (Options.outputDir):\r
             OutputDirFromCommandLine = GenFdsGlobalVariable.ReplaceWorkspaceMacro(Options.outputDir)\r
             for Arch in ArchList:\r
                 GenFdsGlobalVariable.OutputDirDict[Arch] = OutputDirFromCommandLine\r
         else:\r
             for Arch in ArchList:\r
-                GenFdsGlobalVariable.OutputDirDict[Arch] = os.path.join(GenFdsGlobalVariable.OutputDirFromDscDict[Arch], GenFdsGlobalVariable.TargetName + '_' + GenFdsGlobalVariable.ToolChainTag)        \r
-    \r
+                GenFdsGlobalVariable.OutputDirDict[Arch] = os.path.join(GenFdsGlobalVariable.OutputDirFromDscDict[Arch], GenFdsGlobalVariable.TargetName + '_' + GenFdsGlobalVariable.ToolChainTag)\r
+\r
         for Key in GenFdsGlobalVariable.OutputDirDict:\r
             OutputDir = GenFdsGlobalVariable.OutputDirDict[Key]\r
             if OutputDir[0:2] == '..':\r
                 OutputDir = os.path.realpath(OutputDir)\r
-                \r
+\r
             if OutputDir[1] != ':':\r
                 OutputDir = os.path.join (GenFdsGlobalVariable.WorkSpaceDir, OutputDir)\r
-        \r
+\r
             if not os.path.exists(OutputDir):\r
-                GenFdsGlobalVariable.ErrorLogger ("Directory %s not found" % (OutputDir))\r
-                sys.exit(1)\r
+                EdkLogger.error("GenFds", BuildToolError.FILE_NOT_FOUND, ExtraData=OutputDir)\r
             GenFdsGlobalVariable.OutputDirDict[Key] = OutputDir\r
-                    \r
+\r
         """ Parse Fdf file, has to place after build Workspace as FDF may contain macros from DSC file """\r
-        try:\r
-            FdfParserObj = FdfParser.FdfParser(FdfFilename)\r
-            FdfParserObj.ParseFile()\r
-        except FdfParser.Warning, X:\r
-            EdkLogger.error(X.ToolName, BuildToolError.GENFDS_ERROR, X.message, X.FileName, X.LineNumber, RaiseError = False)    \r
-            sys.exit(1)\r
-            \r
+        FdfParserObj = FdfParser.FdfParser(FdfFilename)\r
+        FdfParserObj.ParseFile()\r
+\r
         if FdfParserObj.CycleReferenceCheck():\r
-            GenFdsGlobalVariable.InfLogger ("ERROR: Cycle Reference Detected in FDF file")\r
-            sys.exit(1)\r
-        \r
+            EdkLogger.error("GenFds", BuildToolError.FORMAT_NOT_SUPPORTED, "Cycle Reference Detected in FDF file")\r
+\r
         if (Options.uiFdName) :\r
             if Options.uiFdName.upper() in FdfParserObj.Profile.FdDict.keys():\r
                 GenFds.currentFd = Options.uiFdName\r
             else:\r
-                GenFdsGlobalVariable.ErrorLogger("No such an FD in FDF file.")\r
-                sys.exit(1)\r
-    \r
+                EdkLogger.error("GenFds", BuildToolError.OPTION_VALUE_INVALID,\r
+                                "No such an FD in FDF file: %s" % Options.uiFdName)\r
+\r
         if (Options.uiFvName) :\r
             if Options.uiFvName.upper() in FdfParserObj.Profile.FvDict.keys():\r
                 GenFds.currentFv = Options.uiFvName\r
             else:\r
-                GenFdsGlobalVariable.ErrorLogger("No such an FV in FDF file.")\r
-                sys.exit(1)       \r
-        \r
+                EdkLogger.error("GenFds", BuildToolError.OPTION_VALUE_INVALID,\r
+                                "No such an FV in FDF file: %s" % Options.uiFvName)\r
+\r
         """Call GenFds"""\r
         GenFds.GenFd('', FdfParserObj, BuildWorkSpace, ArchList)\r
-        print "\nDone!\n"\r
-    except Exception, X:\r
-        EdkLogger.error("GenFds", BuildToolError.GENFDS_ERROR, X, RaiseError = False)\r
+    except FdfParser.Warning, X:\r
+        EdkLogger.error(X.ToolName, BuildToolError.FORMAT_INVALID, File=X.FileName, Line=X.LineNumber, ExtraData=X.Message, RaiseError = False)\r
+        ReturnCode = BuildToolError.FORMAT_INVALID\r
+    except FatalError, X:\r
         if Options.debug != None:\r
             import traceback\r
             EdkLogger.quiet(traceback.format_exc())\r
-        sys.exit(1)\r
+        ReturnCode = X.args[0]\r
+    except:\r
+        import traceback\r
+        EdkLogger.error(\r
+                    "\nPython",\r
+                    CODE_ERROR,\r
+                    "Tools code failure",\r
+                    ExtraData="Please submit bug report in www.TianoCore.org, attaching following call stack trace!\n",\r
+                    RaiseError=False\r
+                    )\r
+        EdkLogger.quiet(traceback.format_exc())\r
+        ReturnCode = CODE_ERROR\r
+    return ReturnCode\r
 \r
 ## Parse command line options\r
 #\r
@@ -226,7 +228,7 @@ def main():
 #\r
 #   @retval Opt   A optparse.Values object containing the parsed options\r
 #   @retval Args  Target of build command\r
-#    \r
+#\r
 def myOptionParser():\r
     usage = "%prog [options] -f input_file -a arch_list -b build_target -p active_platform -t tool_chain_tag -y \"MacroName [= MacroValue]\""\r
     Parser = OptionParser(usage=usage,description=__copyright__,version="%prog " + str(versionNumber))\r
@@ -236,7 +238,7 @@ def myOptionParser():
     Parser.add_option("-v", "--verbose", action="store_true", type=None, help="Turn on verbose output with informational messages printed.")\r
     Parser.add_option("-d", "--debug", action="store", type="int", help="Enable debug messages at specified level.")\r
     Parser.add_option("-p", "--platform", dest="activePlatform", help="Set the ACTIVE_PLATFORM, overrides target.txt ACTIVE_PLATFORM setting.")\r
-    Parser.add_option("-w", "--workspace", dest="Workspace", default=str(os.environ.get('WORKSPACE')), help="Set the WORKSPACE")\r
+    Parser.add_option("-w", "--workspace", dest="Workspace", default=os.environ.get('WORKSPACE'), help="Set the WORKSPACE")\r
     Parser.add_option("-o", "--outputDir", dest="outputDir", help="Name of Build Output directory")\r
     Parser.add_option("-r", "--rom_image", dest="uiFdName", help="Build the image using the [FD] section named by FdUiName.")\r
     Parser.add_option("-i", "--FvImage", dest="uiFvName", help="Buld the FV image using the [FV] section named by UiFvName")\r
@@ -259,7 +261,7 @@ class GenFds :
     FvBinDict = {}\r
     OnlyGenerateThisFd = None\r
     OnlyGenerateThisFv = None\r
-    \r
+\r
     ## GenFd()\r
     #\r
     #   @param  OutputDir           Output directory\r
@@ -279,7 +281,7 @@ class GenFds :
             for FdName in GenFdsGlobalVariable.FdfParser.Profile.FdDict.keys():\r
                 FdObj = GenFdsGlobalVariable.FdfParser.Profile.FdDict[FdName]\r
                 FdObj.GenFd(GenFds.FvBinDict)\r
-            \r
+\r
         GenFdsGlobalVariable.VerboseLogger(" Gen FV ! ")\r
         if GenFds.OnlyGenerateThisFv != None and GenFds.OnlyGenerateThisFv.upper() in GenFdsGlobalVariable.FdfParser.Profile.FvDict.keys():\r
             FvObj = GenFdsGlobalVariable.FdfParser.Profile.FvDict.get(GenFds.OnlyGenerateThisFv.upper())\r
@@ -290,13 +292,13 @@ class GenFds :
                 Buffer.close()\r
                 return\r
         elif GenFds.OnlyGenerateThisFd == None:\r
-            for FvName in GenFdsGlobalVariable.FdfParser.Profile.FvDict.keys():          \r
+            for FvName in GenFdsGlobalVariable.FdfParser.Profile.FvDict.keys():\r
                 Buffer = StringIO.StringIO('')\r
                 FvObj = GenFdsGlobalVariable.FdfParser.Profile.FvDict[FvName]\r
                 # Get FV base Address\r
                 FvObj.AddToBuffer(Buffer, None, GenFds.GetFvBlockSize(FvObj))\r
                 Buffer.close()\r
-    \r
+\r
         if GenFds.OnlyGenerateThisFv == None and GenFds.OnlyGenerateThisFd == None:\r
             GenFdsGlobalVariable.VerboseLogger(" Gen Capsule !")\r
             for CapsuleObj in GenFdsGlobalVariable.FdfParser.Profile.CapsuleList:\r
@@ -332,11 +334,11 @@ class GenFds :
                                 else:\r
                                     return ElementRegion.BlockSizeOfRegion(ElementFd.BlockSizeList)\r
             return 0x10000\r
-        \r
+\r
     ##Define GenFd as static function\r
     GenFd = staticmethod(GenFd)\r
     GetFvBlockSize = staticmethod(GetFvBlockSize)\r
 \r
 if __name__ == '__main__':\r
-    \r
-    main()\r
+    sys.exit(main())\r
+\r
index 68bda09..cb56cce 100644 (file)
@@ -1272,25 +1272,51 @@ def Main():
         if MyBuild != None:\r
             # for multi-thread build exits safely\r
             MyBuild.Relinquish()\r
-        EdkLogger.quiet("")\r
+        if Option != None and Option.debug != None:\r
+            EdkLogger.quiet(traceback.format_exc())\r
+        ReturnCode = X.args[0]\r
+    except Warning, X:\r
+        # error from Fdf parser\r
+        EdkLogger.SetLevel(EdkLogger.QUIET)\r
+        if MyBuild != None:\r
+            # for multi-thread build exits safely\r
+            MyBuild.Relinquish()\r
         if Option != None and Option.debug != None:\r
             EdkLogger.quiet(traceback.format_exc())\r
         else:\r
-            EdkLogger.quiet(str(X))\r
-        ReturnCode = 1\r
-    except BaseException, X:\r
-        EdkLogger.quiet("\n\nPython...")\r
+            EdkLogger.error(X.ToolName, FORMAT_INVALID, File=X.FileName, Line=X.LineNumber, ExtraData=X.Message, RaiseError = False)\r
+        ReturnCode = FORMAT_INVALID\r
+    except KeyboardInterrupt:\r
+        ReturnCode = ABORT_ERROR\r
+    except:\r
+        EdkLogger.SetLevel(EdkLogger.QUIET)\r
+        if MyBuild != None:\r
+            # for multi-thread build exits safely\r
+            MyBuild.Relinquish()\r
+        EdkLogger.error(\r
+                    "\nPython",\r
+                    CODE_ERROR,\r
+                    "Tools code failure",\r
+                    ExtraData="Please submit bug report in www.TianoCore.org, attaching following call stack trace!\n",\r
+                    RaiseError=False\r
+                    )\r
         EdkLogger.quiet(traceback.format_exc())\r
-        ReturnCode = 1\r
+        ReturnCode = CODE_ERROR\r
     finally:\r
         Utils.Progressor.Abort()\r
 \r
     if MyBuild != None:\r
         MyBuild.Db.Close()\r
 \r
+    if ReturnCode == 0:\r
+        Conclusion = "Done"\r
+    elif ReturnCode == ABORT_ERROR:\r
+        Conclusion = "Aborted"\r
+    else:\r
+        Conclusion = "Failed"\r
     FinishTime = time.time()\r
     BuildDuration = time.strftime("%M:%S", time.gmtime(int(round(FinishTime - StartTime))))\r
-    EdkLogger.quiet("\n%s [%s]" % (time.strftime("%H:%M:%S, %b.%d %Y", time.localtime()), BuildDuration))\r
+    EdkLogger.quiet("\n- %s -\n%s [%s]" % (Conclusion, time.strftime("%H:%M:%S, %b.%d %Y", time.localtime()), BuildDuration))\r
 \r
     return ReturnCode\r
 \r