Correct Error Message according to Tool design spec.
authorlgao4 <lgao4@7335b38e-4728-0410-8992-fb3ffe349368>
Wed, 19 Mar 2008 09:16:22 +0000 (09:16 +0000)
committerlgao4 <lgao4@7335b38e-4728-0410-8992-fb3ffe349368>
Wed, 19 Mar 2008 09:16:22 +0000 (09:16 +0000)
git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@1080 7335b38e-4728-0410-8992-fb3ffe349368

Source/C/Common/BasePeCoff.c
Source/C/Common/CommonLib.c
Source/C/Common/FvLib.c
Source/C/Common/SimpleFileParsing.c
Source/C/EfiLdrImage/EfiLdrImage.c
Source/C/GenFv/GenFvInternalLib.c
Source/C/TianoCompress/TianoCompress.c
Source/C/VfrCompile/EfiVfr.h
Source/C/VfrCompile/VfrCompiler.cpp
Source/C/VfrCompile/VfrError.cpp
Source/C/VolInfo/VolInfo.c

index b984535..ce906b7 100644 (file)
@@ -291,7 +291,7 @@ Returns:
   // Retrieve the base address of the image\r
   //\r
   if (!(ImageContext->IsTeImage)) {\r
-    if (ImageContext->Machine == EFI_IMAGE_MACHINE_IA32) {\r
+    if (PeHdr->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
       ImageContext->ImageAddress = (PHYSICAL_ADDRESS) OptionHeader.Optional32->ImageBase;\r
     } else {\r
       ImageContext->ImageAddress = (PHYSICAL_ADDRESS) OptionHeader.Optional64->ImageBase;\r
@@ -332,7 +332,7 @@ Returns:
 \r
   if (!(ImageContext->IsTeImage)) {\r
 \r
-    if (ImageContext->Machine == EFI_IMAGE_MACHINE_IA32) {\r
+    if (PeHdr->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
       ImageContext->ImageSize         = (UINT64) OptionHeader.Optional32->SizeOfImage;\r
       ImageContext->SectionAlignment  = OptionHeader.Optional32->SectionAlignment;\r
       ImageContext->SizeOfHeaders     = OptionHeader.Optional32->SizeOfHeaders;\r
@@ -624,7 +624,7 @@ Returns:
     PeHdr = (EFI_IMAGE_NT_HEADERS *)((UINTN)ImageContext->ImageAddress + \r
                                             ImageContext->PeCoffHeaderOffset);\r
     OptionHeader.Header = (VOID *) &(PeHdr->OptionalHeader);\r
-    if (ImageContext->Machine == EFI_IMAGE_MACHINE_IA32) {\r
+    if (PeHdr->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
       Adjust = (UINT64) BaseAddress - OptionHeader.Optional32->ImageBase;\r
       OptionHeader.Optional32->ImageBase = (UINT32) BaseAddress;\r
       MachineType = ImageContext->Machine;\r
@@ -1048,7 +1048,7 @@ Returns:
   // the optional header to verify a desired directory entry is there.\r
   //\r
   if (!(ImageContext->IsTeImage)) {\r
-    if (ImageContext->Machine == EFI_IMAGE_MACHINE_IA32) {\r
+    if (PeHdr->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
       if (OptionHeader.Optional32->NumberOfRvaAndSizes > EFI_IMAGE_DIRECTORY_ENTRY_BASERELOC) {\r
         DirectoryEntry = (EFI_IMAGE_DATA_DIRECTORY *)\r
           &OptionHeader.Optional32->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_BASERELOC];\r
index f50104c..6d87b33 100644 (file)
@@ -196,14 +196,14 @@ Returns:
   //\r
   InputFile = fopen (InputFileName, "rb");\r
   if (InputFile == NULL) {\r
-    printf ("ERROR: E0001: Could not open input file \"%s\".\n", InputFileName);\r
+    Error (NULL, 0, 0001, "Error opening the input file", InputFileName);\r
     return EFI_ABORTED;\r
   }\r
   //\r
   // Go to the end so that we can determine the file size\r
   //\r
   if (fseek (InputFile, 0, SEEK_END)) {\r
-    printf ("ERROR: E0004: System error reading input file \"%s\".\n", InputFileName);\r
+    Error (NULL, 0, 0004, "Error reading the input file", InputFileName);\r
     fclose (InputFile);\r
     return EFI_ABORTED;\r
   }\r
@@ -212,7 +212,7 @@ Returns:
   //\r
   FileSize = ftell (InputFile);\r
   if (FileSize == -1) {\r
-    printf ("ERROR: E0003: System error parsing input file \"%s\".\n", InputFileName);\r
+    Error (NULL, 0, 0003, "Error parsing the input file", InputFileName);\r
     fclose (InputFile);\r
     return EFI_ABORTED;\r
   }\r
@@ -228,7 +228,7 @@ Returns:
   // Reset to the beginning of the file\r
   //\r
   if (fseek (InputFile, 0, SEEK_SET)) {\r
-    printf ("ERROR: E0004: System error reading input file \"%s\".\n", InputFileName);\r
+    Error (NULL, 0, 0004, "Error reading the input file", InputFileName);\r
     fclose (InputFile);\r
     free (*InputFileImage);\r
     *InputFileImage = NULL;\r
@@ -239,7 +239,7 @@ Returns:
   //\r
   *BytesRead = fread (*InputFileImage, sizeof (UINT8), FileSize, InputFile);\r
   if (*BytesRead != sizeof (UINT8) * FileSize) {\r
-    printf ("ERROR: E0004: Reading file \"%s\"%i.\n", InputFileName);\r
+    Error (NULL, 0, 0004, "Error reading the input file", InputFileName);\r
     fclose (InputFile);\r
     free (*InputFileImage);\r
     *InputFileImage = NULL;\r
@@ -297,7 +297,7 @@ Returns:
   //\r
   OutputFile = fopen (OutputFileName, "wb");\r
   if (OutputFile == NULL) {\r
-    printf ("ERROR: E0001: Could not open output file \"%s\".\n", OutputFileName);\r
+    Error (NULL, 0, 0001, "Error opening the output file", OutputFileName);\r
     return EFI_ABORTED;\r
   }\r
 \r
@@ -306,7 +306,7 @@ Returns:
   //\r
   BytesWrote = fwrite (OutputFileImage, sizeof (UINT8), BytesToWrite, OutputFile);\r
   if (BytesWrote != sizeof (UINT8) * BytesToWrite) {\r
-    printf ("ERROR: E0004: Writing file \"%s\"%i.\n", OutputFileName);\r
+    Error (NULL, 0, 0002, "Error writing the output file", OutputFileName);\r
     fclose (OutputFile);\r
     return EFI_ABORTED;\r
   }\r
@@ -464,7 +464,7 @@ Returns:
 --*/\r
 {\r
   if (Guid == NULL) {\r
-    printf ("ERROR: PrintGuid called with a NULL value.\n");\r
+    Error (NULL, 0, 2000, "Invalid parameter", "PrintGuidToBuffer() called with a NULL value");\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -514,12 +514,12 @@ Returns:
 --*/\r
 {\r
   if (Guid == NULL) {\r
-    printf ("ERROR: PrintGuidToBuffer() called with a NULL value\n");\r
+    Error (NULL, 0, 2000, "Invalid parameter", "PrintGuidToBuffer() called with a NULL value");\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
   if (BufferLen < PRINTED_GUID_BUFFER_SIZE) {\r
-    printf ("ERORR: PrintGuidToBuffer() called with invalid buffer size\n");\r
+    Error (NULL, 0, 2000, "Invalid parameter", "PrintGuidToBuffer() called with invalid buffer size");\r
     return EFI_BUFFER_TOO_SMALL;\r
   }\r
 \r
index c2807e8..cdecfd9 100644 (file)
@@ -252,6 +252,7 @@ Returns:
 {\r
   EFI_FFS_FILE_HEADER *CurrentFile;\r
   EFI_STATUS          Status;\r
+  CHAR8               FileGuidString[80];\r
 \r
   //\r
   // Verify library has been initialized.\r
@@ -266,6 +267,10 @@ Returns:
     return EFI_INVALID_PARAMETER;\r
   }\r
   //\r
+  // File Guid String Name\r
+  //\r
+  PrintGuidToBuffer (FileName, FileGuidString, sizeof (FileGuidString), TRUE);\r
+  //\r
   // Verify FV header\r
   //\r
   Status = VerifyFv (mFvHeader);\r
@@ -277,7 +282,7 @@ Returns:
   //\r
   Status = GetNextFile (NULL, &CurrentFile);\r
   if (EFI_ERROR (Status)) {\r
-    Error (NULL, 0, 0, "error parsing the FV", NULL);\r
+    Error (NULL, 0, 0003, "error parsing FV image", "FFS file with Guid %s can't be found", FileGuidString);\r
     return EFI_ABORTED;\r
   }\r
   //\r
@@ -291,7 +296,7 @@ Returns:
 \r
     Status = GetNextFile (CurrentFile, &CurrentFile);\r
     if (EFI_ERROR (Status)) {\r
-      Error (NULL, 0, 0, "error parsing the FV", NULL);\r
+      Error (NULL, 0, 0003, "error parsing FV image", "FFS file with Guid %s can't be found", FileGuidString);\r
       return EFI_ABORTED;\r
     }\r
   }\r
@@ -363,7 +368,7 @@ Returns:
   //\r
   Status = GetNextFile (NULL, &CurrentFile);\r
   if (EFI_ERROR (Status)) {\r
-    Error (NULL, 0, 0, "error parsing FV", NULL);\r
+    Error (NULL, 0, 0003, "error parsing FV image", "FFS file with FileType 0x%x can't be found", FileType);\r
     return EFI_ABORTED;\r
   }\r
   //\r
@@ -381,7 +386,7 @@ Returns:
 \r
     Status = GetNextFile (CurrentFile, &CurrentFile);\r
     if (EFI_ERROR (Status)) {\r
-      Error (NULL, 0, 0, "error parsing the FV", NULL);\r
+      Error (NULL, 0, 0003, "error parsing FV image", "FFS file with FileType 0x%x can't be found", FileType);\r
       return EFI_ABORTED;\r
     }\r
   }\r
@@ -521,7 +526,7 @@ Returns:
   //\r
   Status = VerifyFfsFile (File);\r
   if (EFI_ERROR (Status)) {\r
-    Error (NULL, 0, 0, "invalid FFS file", NULL);\r
+    Error (NULL, 0, 0006, "invalid FFS file", NULL);\r
     return EFI_ABORTED;\r
   }\r
   //\r
@@ -592,7 +597,7 @@ Returns:
   }\r
 \r
   if (FvHeader->Signature != EFI_FVH_SIGNATURE) {\r
-    Error (NULL, 0, 0, "invalid FV header signature", NULL);\r
+    Error (NULL, 0, 0006, "invalid FV header signature", NULL);\r
     return EFI_VOLUME_CORRUPTED;\r
   }\r
   //\r
@@ -601,7 +606,7 @@ Returns:
   Checksum = CalculateSum16 ((UINT16 *) FvHeader, FvHeader->HeaderLength / sizeof (UINT16));\r
 \r
   if (Checksum != 0) {\r
-    Error (NULL, 0, 0, "invalid FV header checksum", NULL);\r
+    Error (NULL, 0, 0006, "invalid FV header checksum", NULL);\r
     return EFI_ABORTED;\r
   }\r
 \r
@@ -687,7 +692,7 @@ Returns:
   FfsHeader->State = SavedState;\r
   FfsHeader->IntegrityCheck.Checksum.File = SavedChecksum;\r
   if (Checksum != 0) {\r
-    Error (NULL, 0, 0, FileGuidString, "invalid FFS file header checksum");\r
+    Error (NULL, 0, 0006, "invalid FFS file header checksum", "Ffs file with Guid %s", FileGuidString);\r
     return EFI_ABORTED;\r
   }\r
   //\r
@@ -701,7 +706,7 @@ Returns:
     Checksum            = CalculateSum8 ((UINT8 *) FfsHeader, FileLength);\r
     Checksum            = (UINT8) (Checksum - FfsHeader->State);\r
     if (Checksum != 0) {\r
-      Error (NULL, 0, 0, FileGuidString, "invalid FFS file checksum");\r
+      Error (NULL, 0, 0006, "invalid FFS file checksum", "Ffs file with Guid %s", FileGuidString);\r
       return EFI_ABORTED;\r
     }\r
   } else {\r
@@ -710,7 +715,7 @@ Returns:
     // Verify contents are 0x5A as spec'd\r
     //\r
     if (FfsHeader->IntegrityCheck.Checksum.File != FFS_FIXED_CHECKSUM) {\r
-      Error (NULL, 0, 0, FileGuidString, "invalid fixed FFS file header checksum");\r
+      Error (NULL, 0, 0006, "invalid fixed FFS file header checksum", "Ffs file with Guid %s", FileGuidString);\r
       return EFI_ABORTED;\r
     }\r
   }\r
index 6c24f86..0bf0be3 100644 (file)
@@ -653,7 +653,7 @@ Returns:
   // Make sure we didn't exceed our maximum nesting depth\r
   //\r
   if (NestDepth > MAX_NEST_DEPTH) {\r
-    Error (NULL, 0, 0, SourceFile->FileName, "max nesting depth (%d) exceeded", NestDepth);\r
+    Error (NULL, 0, 3001, "Not Supported", "%s exceeeds max nesting depth (%d)", SourceFile->FileName, NestDepth);\r
     Status = STATUS_ERROR;\r
     goto Finish;\r
   }\r
@@ -715,7 +715,7 @@ Returns:
   fseek (SourceFile->Fptr, 0, SEEK_SET);\r
   SourceFile->FileBuffer = (CHAR8  *) malloc (SourceFile->FileSize + sizeof (CHAR8 ));\r
   if (SourceFile->FileBuffer == NULL) {\r
-    Error (NULL, 0, 0, "memory allocation failure", NULL);\r
+    Error (NULL, 0, 4001, "Resource: memory cannot be allocated", NULL);\r
     return STATUS_ERROR;\r
   }\r
 \r
@@ -964,7 +964,7 @@ GetQuotedString (
   //\r
   String = (CHAR8  *) malloc ((Len + 1) * sizeof (CHAR8 ));\r
   if (String == NULL) {\r
-    Error (NULL, 0, 0, "memory allocation failed", NULL);\r
+    Error (NULL, 0, 4001, "Resource: memory cannot be allocated", NULL);\r
     return NULL;\r
   }\r
   //\r
index 2cb854e..1c931d2 100644 (file)
@@ -89,7 +89,7 @@ Usage (
   VOID\r
   )\r
 {\r
-  printf ("Usage: EfiLdrImage -o OutImage LoaderImage PeImage1 PeImage2 ... PeImageN");\r
+  printf ("Usage: EfiLdrImage -o OutImage LoaderImage PeImage1 PeImage2 ... PeImageN\n");\r
   exit (1);\r
 }\r
 \r
@@ -182,8 +182,10 @@ Returns:
   UINT64        DebugLevel = 0;\r
   UINT64        VerboseLevel = 0;\r
   EFI_STATUS Status = EFI_SUCCESS;\r
+  \r
+  SetUtilityName (UTILITY_NAME);\r
 \r
-  if (argc < 4) {\r
+  if (argc == 1) {\r
     Usage();\r
     return STATUS_ERROR;\r
   }\r
@@ -206,7 +208,7 @@ Returns:
     if ((stricmp (argv[0], "-o") == 0) || (stricmp (argv[0], "--output") == 0)) {\r
       OutputFileName = argv[1];\r
       if (OutputFileName == NULL) {\r
-        Error (NULL, 0, 0, "NO Output file specified.", NULL);\r
+        Error (NULL, 0, 1003, "Invalid option value", "Output file can't be null");\r
         return STATUS_ERROR;\r
       }\r
       argc -= 2;\r
@@ -226,7 +228,7 @@ Returns:
       if (strlen(argv[0]) > 2) {\r
         Status = CountVerboseLevel (&argv[0][2], strlen(argv[0]) - 2, &VerboseLevel);\r
         if (EFI_ERROR (Status)) {\r
-          Error (NULL, 0, 0, NULL, "%s is invaild paramter!", argv[0]);\r
+          Error (NULL, 0, 1003, "Invalid option value", argv[0]);\r
           return STATUS_ERROR;        \r
         }\r
       }\r
@@ -239,7 +241,7 @@ Returns:
     if ((stricmp (argv[0], "-d") == 0) || (stricmp (argv[0], "--debug") == 0)) {\r
       Status = AsciiStringToUint64 (argv[1], FALSE, &DebugLevel);\r
       if (EFI_ERROR (Status)) {\r
-        Error (NULL, 0, 0, "Input debug level is not one valid integrator.", NULL);\r
+        Error (NULL, 0, 1003, "Invalid option value", "%s = %s", argv[0], argv[1]);\r
         return STATUS_ERROR;        \r
       }\r
       argc -= 2;\r
@@ -247,7 +249,7 @@ Returns:
       continue; \r
     }\r
     //\r
-    // Don't recognize the paramter.\r
+    // Don't recognize the paramter, should be regarded as the input file name.\r
     //\r
     InputFileNames[InputFileCount] = argv[0];\r
     InputFileCount++;\r
@@ -255,20 +257,29 @@ Returns:
     argv++;\r
   }\r
 \r
+  if (InputFileCount == 0) {\r
+    Error (NULL, 0, 1001, "Missing option", "No input file");\r
+    return STATUS_ERROR;\r
+  }\r
   //\r
   // Open output file for write\r
   //\r
+  if (OutputFileName == NULL) {\r
+    Error (NULL, 0, 1001, "Missing option", "No output file");\r
+    return STATUS_ERROR;\r
+  }\r
+\r
   fpOut = fopen(OutputFileName, "w+b");\r
   if (!fpOut) {\r
-    printf ("efildrimage: ERROR: E0001: Could not open output file %s\n", OutputFileName);\r
-    exit(1);\r
+    Error (NULL, 0, 0001, "Could not open output file", OutputFileName);\r
+    return STATUS_ERROR;\r
   }\r
 \r
   memset (&EfiLdrHeader, 0, sizeof (EfiLdrHeader));\r
-  memset (&EfiLdrImage, 0, sizeof (EFILDR_IMAGE) * (InputFileCount+1));\r
+  memset (&EfiLdrImage, 0, sizeof (EFILDR_IMAGE) * (InputFileCount));\r
 \r
   memcpy (&EfiLdrHeader.Signature, "EFIL", 4);\r
-  EfiLdrHeader.FileLength = sizeof(EFILDR_HEADER) + sizeof(EFILDR_IMAGE)*(InputFileCount+1);\r
+  EfiLdrHeader.FileLength = sizeof(EFILDR_HEADER) + sizeof(EFILDR_IMAGE)*(InputFileCount);\r
 \r
   //\r
   // Skip the file header first\r
@@ -278,14 +289,15 @@ Returns:
   //\r
   // copy all the input files to the output file\r
   //\r
-  for(i=0;i<InputFileCount;i++) {\r
+  for(i=0;i<InputFileCount;i++) {\r
     //\r
     // Copy the content of PeImage file to output file\r
     //\r
     fpIn = fopen (InputFileNames[i], "rb");\r
     if (!fpIn) {\r
-      printf ("efildrimage: ERROR: E1001: Could not open input file %s\n", InputFileNames[i]);\r
-      exit(1);\r
+      Error (NULL, 0, 0001, "Could not open input file", InputFileNames[i]);\r
+      fclose (fpOut);\r
+      return STATUS_ERROR;\r
     }\r
     filesize = FCopyFile (fpIn, fpOut);\r
     fclose(fpIn);\r
@@ -305,7 +317,7 @@ Returns:
   //\r
   fseek (fpOut, 0, SEEK_SET);\r
   fwrite (&EfiLdrHeader, sizeof(EFILDR_HEADER)        , 1, fpOut);\r
-  fwrite (&EfiLdrImage , sizeof(EFILDR_IMAGE)*(InputFileCount+1), 1, fpOut);\r
+  fwrite (&EfiLdrImage , sizeof(EFILDR_IMAGE)*(InputFileCount), 1, fpOut);\r
 \r
   fclose (fpOut);\r
   printf ("Created %s\n", OutputFileName);\r
index 6a3673e..1634338 100644 (file)
@@ -767,7 +767,8 @@ Returns:
   //\r
   for (Index1 = 0; Index1 < Index; Index1 ++) {\r
     if (CompareGuid ((EFI_GUID *) FileBuffer, &mFileGuidArray [Index1]) == 0) {\r
-      Error (NULL, 0, 2000, "Invalid parameter", "the %dth file and %dth file have the same file GUID.", Index1, Index);\r
+      Error (NULL, 0, 2000, "Invalid parameter", "the %dth file and %dth file have the same file GUID.", Index1 + 1, Index + 1);\r
+      PrintGuid ((EFI_GUID *) FileBuffer);\r
       return EFI_INVALID_PARAMETER;\r
     }\r
   }\r
index 886da9b..ecd77cb 100644 (file)
@@ -1614,7 +1614,7 @@ Returns:
   //\r
   InputFile = fopen (InputFileName, "rb");\r
     if (InputFile == NULL) {\r
-      Error(NULL, 0, 0001, "Error opening file: %s", InputFileName);\r
+      Error (NULL, 0, 0001, "Error opening file: %s", InputFileName);\r
       return EFI_ABORTED;\r
     }\r
   \r
@@ -1626,7 +1626,7 @@ Returns:
     // \r
     if (FileSize > 0 && FileBuffer != NULL) {\r
       if (fread (FileBuffer, FileSize, 1, InputFile) != 1) {\r
-        Error(NULL, 0, 0004, "Error reading contents of input file: %s", InputFileName);\r
+        Error (NULL, 0, 0004, "Error reading contents of input file: %s", InputFileName);\r
         fclose (InputFile);\r
         return EFI_ABORTED;\r
       }\r
@@ -1703,15 +1703,15 @@ Returns:
   fprintf (stdout, "  -o FileName, --output FileName\n\\r
             File will be created to store the ouput content.\n");\r
   fprintf (stdout, "  -v, --verbose\n\\r
-            Turn on verbose output with informational messages.\n");\r
+           Turn on verbose output with informational messages.\n");\r
+  fprintf (stdout, "  -q, --quiet\n\\r
+           Disable all messages except key message and fatal error\n");\r
+  fprintf (stdout, "  --debug [0-9]\n\\r
+           Enable debug messages, at input debug level.\n");\r
   fprintf (stdout, "  --version\n\\r
-            Show program's version number and exit.\n");\r
+           Show program's version number and exit.\n");\r
   fprintf (stdout, "  -h, --help\n\\r
-            Show this help message and exit.\n");\r
-  fprintf (stdout, "  -q, --quiet\n\\r
-         Disable all messages except FATAL ERRORS.\n");\r
-  fprintf (stdout, "  --debug [#,0-9]\n\\r
-         Enable debug messages at level #.\n");  \r
+           Show this help message and exit.\n");\r
 }\r
 \r
 \r
@@ -1756,6 +1756,7 @@ Returns:
   FileBuffer = NULL;\r
   Src = NULL;\r
   OutBuffer = NULL;\r
+  Scratch   = NULL;\r
   OrigSize = 0;\r
   InputLength = 0;\r
   InputFileName = NULL;\r
@@ -1768,6 +1769,7 @@ Returns:
   // Verify the correct number of arguments\r
   //\r
   if (argc == 1) {\r
+    Error (NULL, 0, 1001, "Missing options", "No input options specified.");\r
     Usage();\r
     return 0;\r
   }\r
@@ -1778,7 +1780,7 @@ Returns:
     return 0;\r
   }\r
   \r
-  if ( (strcmp(argv[1], "--version") == 0)) {\r
+  if ((strcmp(argv[1], "--version") == 0)) {\r
     Version();\r
     return 0;\r
   }\r
@@ -1805,6 +1807,7 @@ Returns:
   //\r
   // Error command line\r
   //\r
+  Error (NULL, 0, 1003, "Invalid option value", "the options specified are not recognized.");\r
   Usage();\r
   return 1;\r
   }\r
@@ -1821,7 +1824,7 @@ Returns:
      argv++;\r
      Status = AsciiStringToUint64(argv[0], FALSE, &DebugLevel);\r
      if (DebugLevel > 9 || DebugLevel < 0) {\r
-       Error(NULL, 0 ,2000, "Invalid parameter", "Unrecognized argument %s", argv[0]);\r
+       Error (NULL, 0 ,2000, "Invalid parameter", "Unrecognized argument %s", argv[0]);\r
        goto ERROR;\r
      }\r
      if (DebugLevel>=5 && DebugLevel <=9){\r
@@ -1832,19 +1835,22 @@ Returns:
      argv++;\r
      continue;\r
    }\r
-   if ((strcmp(argv[0], "-q") == 0) || (stricmp (argv[0], "--debug") == 0)) {\r
+   if ((strcmp(argv[0], "-q") == 0) || (stricmp (argv[0], "--quiet") == 0)) {\r
      QuietMode = TRUE;\r
      argc--;\r
      argv++;\r
      continue;\r
    }\r
    if ((strcmp(argv[0], "-o") == 0) || (stricmp (argv[0], "--output") == 0)) {\r
-    argc-=2;\r
-    argv++;\r
-    OutputFileName = argv[0];\r
-    argv++;\r
+    OutputFileName = argv[1];\r
+    if (OutputFileName == NULL) {\r
+      Error (NULL, 0, 1003, "Invalid option value", "Output File name can't be set NULL");\r
+      goto ERROR;\r
+    }   \r
+    argc -=2;\r
+    argv +=2;\r
     continue; \r
-    }\r
+   }\r
    if (argv[0][0]!='-') {\r
    InputFileName = argv[0];\r
    argc--;\r
@@ -1856,9 +1862,8 @@ Returns:
   }\r
 \r
   if (InputFileName == NULL) {\r
-    Error(NULL, 0, 2000, " Invalid parameter");\r
-    Usage();\r
-    return 1;    \r
+    Error (NULL, 0, 1001, "Missing options", "No input files specified.");\r
+    goto ERROR;\r
   }\r
 \r
 //\r
@@ -1877,13 +1882,13 @@ Returns:
    }\r
   Scratch = (SCRATCH_DATA *)malloc(sizeof(SCRATCH_DATA));\r
   if (Scratch == NULL) {\r
-    Error(NULL, 0, 4001, "Resource:", "Memory cannot be allocated!");\r
+    Error (NULL, 0, 4001, "Resource:", "Memory cannot be allocated!");\r
     goto ERROR;\r
   }\r
     \r
   InputFile = fopen (InputFileName, "rb");\r
   if (InputFile == NULL) {\r
-    Error(NULL, 0, 0001, "Error opening input file", InputFileName);\r
+    Error (NULL, 0, 0001, "Error opening input file", InputFileName);\r
     goto ERROR;\r
   }\r
         \r
@@ -1895,7 +1900,7 @@ Returns:
   if (Status == EFI_BUFFER_TOO_SMALL) {\r
     FileBuffer = (UINT8 *) malloc (InputLength);\r
     if (FileBuffer == NULL) {\r
-      Error(NULL, 0, 4001, "Resource:", "Memory cannot be allocated!");\r
+      Error (NULL, 0, 4001, "Resource:", "Memory cannot be allocated!");\r
       return EFI_OUT_OF_RESOURCES;\r
     }\r
 \r
@@ -1914,7 +1919,7 @@ Returns:
   if (OutputFileName != NULL) {\r
     OutputFile = fopen (OutputFileName, "wb");\r
     if (OutputFile == NULL) {\r
-      Error(NULL, 0, 0001, "Error opening output file for writing", OutputFileName);\r
+      Error (NULL, 0, 0001, "Error opening output file for writing", OutputFileName);\r
     if (InputFile != NULL) {\r
       fclose (InputFile);\r
       }\r
@@ -1937,13 +1942,13 @@ Returns:
   if (Status == EFI_BUFFER_TOO_SMALL) {\r
     OutBuffer = (UINT8 *) malloc (DstSize);\r
     if (OutBuffer == NULL) {\r
-      Error(NULL, 0, 4001, "Resource:", "Memory cannot be allocated!");\r
+      Error (NULL, 0, 4001, "Resource:", "Memory cannot be allocated!");\r
       goto ERROR;\r
     }\r
   }\r
   Status = TianoCompress ((UINT8 *)FileBuffer, InputLength, OutBuffer, &DstSize);\r
   if (Status != EFI_SUCCESS) {\r
-    Error(NULL, 0, 0007, "Error compressing file");\r
+    Error (NULL, 0, 0007, "Error compressing file");\r
     goto ERROR;\r
   }\r
 \r
@@ -1975,7 +1980,7 @@ Returns:
   //\r
   OutBuffer = (UINT8 *)malloc(OrigSize);\r
   if (OutBuffer == NULL) {\r
-    Error(NULL, 0, 4001, "Resource:", "Memory cannot be allocated!");\r
+    Error (NULL, 0, 4001, "Resource:", "Memory cannot be allocated!");\r
     goto ERROR;\r
    }  \r
 \r
@@ -2007,9 +2012,16 @@ ERROR:
       DebugMsg(UTILITY_NAME, 0, DebugLevel, "Decoding Error\n");\r
     }\r
   }\r
-  free(Scratch);\r
-  free(FileBuffer);\r
-  free(OutBuffer);\r
+  if (Scratch != NULL) {\r
+    free(Scratch);\r
+  }\r
+  if (FileBuffer != NULL) {\r
+    free(FileBuffer);\r
+  }\r
+  if (OutBuffer != NULL) {\r
+    free(OutBuffer);\r
+  }\r
+    \r
   if (VerboseMode) {\r
     VerboseMsg("%s tool done with return code is 0x%x.\n", UTILITY_NAME, GetUtilityStatus ());\r
   }\r
index d5fc9d3..c140c97 100644 (file)
@@ -28,7 +28,7 @@ Abstract:
 #include "Common/MdeModuleHii.h"\r
 \r
 #define MAX_PATH                 255\r
-#define MAX_LINE_LEN             4096\r
+#define MAX_VFR_LINE_LEN         4096\r
 \r
 #define EFI_IFR_MAX_LENGTH       0xFF\r
 \r
index 5968aca..197c81b 100644 (file)
@@ -3,7 +3,7 @@
 #include "string.h"\r
 //#include "process.h"\r
 #include "VfrCompiler.h"\r
-\r
+#include "EfiUtilityMsgs.h"\r
 \r
 VOID\r
 CVfrCompiler::SET_RUN_STATUS (\r
@@ -28,6 +28,8 @@ CVfrCompiler::OptionInitialization (
   )\r
 {\r
   INT32         Index;\r
+  \r
+  SetUtilityName (PROGRAM_NAME);\r
 \r
   mOptions.VfrFileName[0]                = '\0';\r
   mOptions.RecordListFile[0]             = '\0';\r
@@ -53,7 +55,7 @@ CVfrCompiler::OptionInitialization (
     } else if (strcmp(Argv[Index], "-i") == 0) {\r
       Index++;\r
       if ((Index >= Argc) || (Argv[Index][0] == '-')) {\r
-        printf ("%s -i - missing path argument\n", PROGRAM_NAME);\r
+        Error (NULL, 0, 1001, "Missing option", "-i missing path argument"); \r
         goto Fail;\r
       }\r
 \r
@@ -61,7 +63,7 @@ CVfrCompiler::OptionInitialization (
     } else if (strcmp(Argv[Index], "-o") == 0 || strcmp(Argv[Index], "--output-directory") == 0) {\r
       Index++;\r
       if ((Index >= Argc) || (Argv[Index][0] == '-')) {\r
-        printf ("%s -od - missing output directory name\n", PROGRAM_NAME);\r
+        Error (NULL, 0, 1001, "Missing option", "-od missing output directory name");\r
         goto Fail;\r
       }\r
       strcpy (mOptions.OutputDirectory, Argv[Index]);\r
@@ -83,20 +85,20 @@ CVfrCompiler::OptionInitialization (
     } else if (strcmp(Argv[Index], "-f") == 0 || strcmp(Argv[Index], "--pre-processing-flag") == 0) {\r
       Index++;\r
       if ((Index >= Argc) || (Argv[Index][0] == '-')) {\r
-        printf ("%s -od - missing C-preprocessor argument\n", PROGRAM_NAME);\r
+        Error (NULL, 0, 1001, "Missing option", "-od - missing C-preprocessor argument");\r
         goto Fail;\r
       }\r
 \r
       AppendCPreprocessorOptions (Argv[Index]);\r
     } else {\r
-      printf ("%s unrecognized option %s\n", PROGRAM_NAME, Argv[Index]);\r
+      Error (NULL, 0, 1000, "Unknown option", "unrecognized option %s", Argv[Index]);\r
       Usage ();\r
       goto Fail;\r
     }\r
   }\r
 \r
   if (Index != Argc - 1) {\r
-    printf ("%s must specify VFR file name", PROGRAM_NAME);\r
+    Error (NULL, 0, 1001, "Missing option", "VFR file name is not specified.");\r
     Usage ();\r
     goto Fail;\r
   } else {\r
@@ -121,7 +123,7 @@ CVfrCompiler::OptionInitialization (
   return;\r
 \r
 Fail:\r
-  SET_RUN_STATUS (STATUS_FAILED);\r
+  SET_RUN_STATUS (STATUS_DEAD);\r
 \r
   mOptions.VfrFileName[0]                = '\0';\r
   mOptions.RecordListFile[0]             = '\0';\r
@@ -156,7 +158,7 @@ CVfrCompiler::AppendIncludePath (
   }\r
   IncludePaths = new CHAR8[Len];\r
   if (IncludePaths == NULL) {\r
-    printf ("%s memory allocation failure\n", PROGRAM_NAME);\r
+    Error (NULL, 0, 4001, "Resource: memory can't be allocated", NULL);\r
     return;\r
   }\r
   IncludePaths[0] = '\0';\r
@@ -185,7 +187,7 @@ CVfrCompiler::AppendCPreprocessorOptions (
   }\r
   Opt = new CHAR8[Len];\r
   if (Opt == NULL) {\r
-    printf ("%s memory allocation failure\n", PROGRAM_NAME);\r
+    Error (NULL, 0, 4001, "Resource: memory can't be allocated", NULL);\r
     return;\r
   }\r
   Opt[0] = 0;\r
@@ -356,7 +358,6 @@ CVfrCompiler::Usage (
     "                 do not preprocessing input file",\r
     "  -f, --pre-processing-flag",\r
     "                 Preprocessing flags",\r
-    " ",\r
     NULL\r
     };\r
   for (Index = 0; Help[Index] != NULL; Index++) {\r
@@ -382,7 +383,7 @@ CVfrCompiler::PreProcess (
   }\r
 \r
   if ((pVfrFile = fopen (mOptions.VfrFileName, "r")) == NULL) {\r
-    printf ("%s could not open input VFR file - %s\n", PROGRAM_NAME, mOptions.VfrFileName);\r
+    Error (NULL, 0, 0001, "Error opening the input VFR file", mOptions.VfrFileName);\r
     goto Fail;\r
   }\r
   fclose (pVfrFile);\r
@@ -398,7 +399,7 @@ CVfrCompiler::PreProcess (
 \r
   PreProcessCmd = new CHAR8[CmdLen + 10];\r
   if (PreProcessCmd == NULL) {\r
-    printf ("%s could not allocate memory\n", PROGRAM_NAME);\r
+    Error (NULL, 0, 4001, "Resource: memory can't be allocated", NULL);\r
     goto Fail;\r
   }\r
   strcpy (PreProcessCmd, mPreProcessCmd), strcat (PreProcessCmd, " ");\r
@@ -413,7 +414,7 @@ CVfrCompiler::PreProcess (
   strcat (PreProcessCmd, mOptions.PreprocessorOutputFileName);\r
 \r
   if (system (PreProcessCmd) != 0) {\r
-    printf ("%s failed to spawn C preprocessor on VFR file \n\t - %s\n", PROGRAM_NAME, PreProcessCmd);\r
+    Error (NULL, 0, 0003, "Error parsing file", "failed to spawn C preprocessor on VFR file %s\n", PreProcessCmd);\r
     goto Fail;\r
   }\r
 \r
@@ -449,7 +450,7 @@ CVfrCompiler::Compile (
   gCVfrErrorHandle.SetInputFile (InFileName);\r
 \r
   if ((pInFile = fopen (InFileName, "r")) == NULL) {\r
-    printf ("%s failed to open input file - %s\n", PROGRAM_NAME, InFileName);\r
+    Error (NULL, 0, 0001, "Error opening the input file", InFileName);\r
     goto Fail;\r
   }\r
 \r
@@ -469,7 +470,7 @@ CVfrCompiler::Compile (
 \r
 Fail:\r
   if (!IS_RUN_STATUS(STATUS_DEAD)) {\r
-    printf ("%s compile error!\n", PROGRAM_NAME);\r
+    Error (NULL, 0, 0003, "Error parsing", "compile error in file %s", InFileName);\r
     SET_RUN_STATUS (STATUS_FAILED);\r
   }\r
   if (pInFile != NULL) {\r
@@ -490,7 +491,7 @@ CVfrCompiler::GenBinary (
 \r
   if (mOptions.CreateIfrPkgFile == TRUE) {\r
     if ((pFile = fopen (mOptions.PkgOutputFileName, "wb")) == NULL) {\r
-      printf ("can not open %s\n", mOptions.PkgOutputFileName);\r
+      Error (NULL, 0, 0001, "Error opening file", mOptions.PkgOutputFileName);\r
       goto Fail;\r
     }\r
     if (gCFormPkg.BuildPkg (pFile) != VFR_RETURN_SUCCESS) {\r
@@ -531,7 +532,7 @@ CVfrCompiler::GenCFile (
   }\r
 \r
   if ((pFile = fopen (mOptions.COutputFileName, "w")) == NULL) {\r
-    printf ("failed to open output C file - %s\n", mOptions.COutputFileName);\r
+    Error (NULL, 0, 0001, "Error opening output C file", mOptions.COutputFileName);\r
     goto Fail;\r
   }\r
 \r
@@ -564,7 +565,7 @@ CVfrCompiler::GenRecordListFile (
   CHAR8  *InFileName = NULL;\r
   FILE   *pInFile    = NULL;\r
   FILE   *pOutFile   = NULL;\r
-  CHAR8  LineBuf[MAX_LINE_LEN];\r
+  CHAR8  LineBuf[MAX_VFR_LINE_LEN];\r
   UINT32 LineNo;\r
 \r
   InFileName = (mOptions.SkipCPreprocessor == TRUE) ? mOptions.VfrFileName : mOptions.PreprocessorOutputFileName;\r
@@ -575,19 +576,19 @@ CVfrCompiler::GenRecordListFile (
     }\r
 \r
     if ((pInFile = fopen (InFileName, "r")) == NULL) {\r
-      printf ("%s failed to open input VFR preprocessor output file - %s\n", PROGRAM_NAME, InFileName);\r
+      Error (NULL, 0, 0001, "Error opening the input VFR preprocessor output file", InFileName);\r
       return;\r
     }\r
 \r
     if ((pOutFile = fopen (mOptions.RecordListFile, "w")) == NULL) {\r
-      printf ("%s failed to open record list file for writing - %s\n", PROGRAM_NAME, mOptions.RecordListFile);\r
+      Error (NULL, 0, 0001, "Error opening the record list file", mOptions.RecordListFile);\r
       goto Err1;\r
     }\r
 \r
     fprintf (pOutFile, "//\n//  VFR compiler version " VFR_COMPILER_VERSION "\n//\n");\r
     LineNo = 0;\r
     while (!feof (pInFile)) {\r
-      if (fgets (LineBuf, MAX_LINE_LEN, pInFile) != NULL) {\r
+      if (fgets (LineBuf, MAX_VFR_LINE_LEN, pInFile) != NULL) {\r
         fprintf (pOutFile, "%s", LineBuf);\r
         LineNo++;\r
         gCIfrRecordInfoDB.IfrRecordOutput (pOutFile, LineNo);\r
@@ -612,7 +613,7 @@ main (
 {\r
   COMPILER_RUN_STATUS  Status;\r
   CVfrCompiler         Compiler(Argc, Argv);\r
-\r
+  \r
   Compiler.PreProcess();\r
   Compiler.Compile();\r
   Compiler.GenBinary();\r
index 0ae08a5..f3a296d 100644 (file)
@@ -2,6 +2,7 @@
 #include "string.h"\r
 #include "stdlib.h"\r
 #include "VfrError.h"\r
+#include "EfiUtilityMsgs.h"\r
 \r
 static SVFR_ERROR_HANDLE VFR_ERROR_HANDLE_TABLE [] = {\r
   { VFR_RETURN_SUCCESS, NULL },\r
@@ -185,7 +186,7 @@ CVfrErrorHandle::PrintMsg (
   UINT32                 FileLine;\r
 \r
   GetFileNameLineNum (LineNum, &FileName, &FileLine);\r
-  printf ("%s line %d: %s %s %s\n", FileName, FileLine, MsgType, TokName, ErrorMsg);\r
+  Error (NULL, 0, 3000, MsgType, "%s line %d: %s %s", FileName, FileLine, TokName, ErrorMsg);\r
 }\r
 \r
 UINT8\r
@@ -213,7 +214,7 @@ CVfrErrorHandle::HandleError (
 \r
   if (ErrorMsg != NULL) {\r
     GetFileNameLineNum (LineNum, &FileName, &FileLine);\r
-    printf ("%s line %d: error %s %s\n", FileName, FileLine, TokName, ErrorMsg);\r
+    Error (NULL, 0, 3000, "Invalid", "%s line %d: error %s %s", FileName, FileLine, TokName, ErrorMsg);\r
     return 1;\r
   } else {\r
     return 0;\r
index 051524a..fb655c5 100644 (file)
@@ -205,12 +205,12 @@ Returns:
       //
       if ((argv[1][0] == '0') && (tolower (argv[1][1]) == 'x')) {
         if (sscanf (argv[1], "%x", &Offset) != 1) {
-          Error (NULL, 0, 0, argv[1], "invalid offset specified");
+          Error (NULL, 0, 1003, "Invalid option value", "Offset = %s", argv[1]);
           return GetUtilityStatus ();
         }
       } else {
         if (sscanf (argv[1], "%d", &Offset) != 1) {
-          Error (NULL, 0, 0, argv[1], "invalid offset specified");
+          Error (NULL, 0, 1003, "Invalid option value", "Offset = %s", argv[1]);
           return GetUtilityStatus ();
         }
         //
@@ -249,7 +249,7 @@ Returns:
   //
   InputFile = fopen (argv[0], "rb");
   if (InputFile == NULL) {
-    Error (NULL, 0, 0, argv[0], "failed to open input FV file");
+    Error (NULL, 0, 0001, "Error opening the input file", argv[0]);
     return GetUtilityStatus ();
   }
   //
@@ -264,7 +264,7 @@ Returns:
   //
   Status = ReadHeader (InputFile, &FvSize, &ErasePolarity);
   if (EFI_ERROR (Status)) {
-    Error (NULL, 0, 0, argv[0], "failed to parse FV header");
+    Error (NULL, 0, 0003, "error parsing FV image", "%s Header is invalid", argv[0]);
     fclose (InputFile);
     return GetUtilityStatus ();
   }
@@ -273,7 +273,7 @@ Returns:
   //
   FvImage = malloc (FvSize);
   if (FvImage == NULL) {
-    Error (__FILE__, __LINE__, 0, "application error", "memory allocation failed");
+    Error (NULL, 0, 4001, "Resource: Memory can't be allocated", NULL);
     fclose (InputFile);
     return GetUtilityStatus ();
   }
@@ -284,7 +284,7 @@ Returns:
   BytesRead = fread (FvImage, 1, FvSize, InputFile);
   fclose (InputFile);
   if ((unsigned int) BytesRead != FvSize) {
-    Error (NULL, 0, 0, argv[0], "failed to read FV from file");
+    Error (NULL, 0, 0004, "error reading FvImage from", argv[0]);
     free (FvImage);
     return GetUtilityStatus ();
   }
@@ -343,7 +343,7 @@ Returns:
   Key = 0;
   Status = FvBufFindNextFile (Fv, &Key, &CurrentFile);
   if (EFI_ERROR (Status)) {
-    Error (NULL, 0, 0, NULL, "cannot find the first file in the FV image");
+    Error (NULL, 0, 0003, "error parsing FV image", "cannot find the first file in the FV image");
     return GetUtilityStatus ();
   }
   //
@@ -360,7 +360,7 @@ Returns:
     //
     Status = PrintFileInfo (Fv, CurrentFile, ErasePolarity);
     if (EFI_ERROR (Status)) {
-      Error (NULL, 0, 0, NULL, "failed to parse a file in the FV");
+      Error (NULL, 0, 0003, "error parsing FV image", "failed to parse a file in the FV");
       return GetUtilityStatus ();
     }
     //
@@ -370,7 +370,7 @@ Returns:
     if (Status == EFI_NOT_FOUND) {
       CurrentFile = NULL;
     } else if (EFI_ERROR (Status)) {
-      Error (NULL, 0, 0, NULL, "cannot find the next file in the FV image");
+      Error (NULL, 0, 0003, "error parsing FV image", "cannot find the next file in the FV image");
       return GetUtilityStatus ();
     }
   }
@@ -1045,7 +1045,7 @@ Returns:
     Checksum  = (UINT8) (Checksum - FileHeader->IntegrityCheck.Checksum.File);
     Checksum  = (UINT8) (Checksum - FileHeader->State);
     if (Checksum != 0) {
-      Error (NULL, 0, 0, "invalid header checksum", NULL);
+      Error (NULL, 0, 0003, "error parsing FFS file", "FFS file with Guid %s has invalid header checksum", GuidBuffer);
       return EFI_ABORTED;
     }
 
@@ -1058,12 +1058,12 @@ Returns:
       Checksum  = CalculateSum8 ((UINT8 *) FileHeader, FileLength);
       Checksum  = (UINT8) (Checksum - FileHeader->State);
       if (Checksum != 0) {
-        Error (NULL, 0, 0, "invalid file checksum", NULL);
+        Error (NULL, 0, 0003, "error parsing FFS file", "FFS file with Guid %s has invalid file checksum", GuidBuffer);
         return EFI_ABORTED;
       }
     } else {
       if (FileHeader->IntegrityCheck.Checksum.File != FFS_FIXED_CHECKSUM) {
-        Error (NULL, 0, 0, "invalid header checksum -- not set to fixed value of 0x5A", NULL);
+        Error (NULL, 0, 0003, "error parsing FFS file", "FFS file with Guid %s has invalid header checksum -- not set to fixed value of 0x5A", GuidBuffer);
         return EFI_ABORTED;
       }
     }
@@ -1077,7 +1077,8 @@ Returns:
       //
       Tail = (UINT16 *) ((UINTN) FileHeader + GetLength (FileHeader->Size) - sizeof (EFI_FFS_INTEGRITY_CHECK));
       if (FileHeader->IntegrityCheck.TailReference != (UINT16)~(*Tail)) {
-        Error (NULL, 0, 0, "integrity check failed", "tail is not the complement of the header field");
+        Error (NULL, 0, 0003, "error parsing FFS file", \
+        "FFS file with Guid %s failed in the integrity check, tail is not the complement of the header field", GuidBuffer);
         return EFI_ABORTED;
       }
     }
@@ -1085,7 +1086,7 @@ Returns:
     break;
 
   default:
-    Error (NULL, 0, 0, "invalid/unrecognized file state bits", NULL);
+    Error (NULL, 0, 0003, "error parsing FFS file", "FFS file with Guid %s has the invalid/unrecognized file state bits", GuidBuffer);
     return EFI_ABORTED;
   }
 
@@ -1260,7 +1261,7 @@ Returns:
     case EFI_SECTION_FIRMWARE_VOLUME_IMAGE:
       Status = PrintFvInfo (((EFI_FIRMWARE_VOLUME_IMAGE_SECTION*)Ptr) + 1);
       if (EFI_ERROR (Status)) {
-        Error (NULL, 0, 0, "printing of FV section contents failed", NULL);
+        Error (NULL, 0, 0003, "printing of FV section contents failed", NULL);
         return EFI_SECTION_ERROR;
       }
       break;
@@ -1312,12 +1313,12 @@ Returns:
 
         Status            = GetInfoFunction (CompressedBuffer, CompressedLength, &DstSize, &ScratchSize);
         if (EFI_ERROR (Status)) {
-          Error (NULL, 0, 0, "error getting compression info for file", NULL);
+          Error (NULL, 0, 0003, "error getting compression info from compression section", NULL);
           return EFI_SECTION_ERROR;
         }
 
         if (DstSize != UncompressedLength) {
-          Error (NULL, 0, 0, "compression error in the compression section", NULL);
+          Error (NULL, 0, 0003, "compression error in the compression section", NULL);
           return EFI_SECTION_ERROR;
         }
 
@@ -1336,12 +1337,12 @@ Returns:
                   );
         free (ScratchBuffer);
         if (EFI_ERROR (Status)) {
-          Error (NULL, 0, 0, "decompress failed", NULL);
+          Error (NULL, 0, 0003, "decompress failed", NULL);
           free (UncompressedBuffer);
           return EFI_SECTION_ERROR;
         }
       } else {
-        Error (NULL, 0, 0, "unrecognized compression type", "type 0x%X", (UINT32) CompressionType);
+        Error (NULL, 0, 0003, "unrecognized compression type", "type 0x%X", (UINT32) CompressionType);
         return EFI_SECTION_ERROR;
       }
 
@@ -1355,7 +1356,7 @@ Returns:
       }
 
       if (EFI_ERROR (Status)) {
-        Error (NULL, 0, 0, "failed to parse section", NULL);
+        Error (NULL, 0, 0003, "failed to parse section", NULL);
         return EFI_SECTION_ERROR;
       }
       break;
@@ -1418,7 +1419,7 @@ Returns:
         remove (ToolOutputFile);
         free (ToolOutputFile);
         if (EFI_ERROR (Status)) {
-          Error (NULL, 0, 0, "unable to read decoded GUIDED section", NULL);
+          Error (NULL, 0, 0004, "unable to read decoded GUIDED section", NULL);
           return EFI_SECTION_ERROR;
         }
 
@@ -1427,7 +1428,7 @@ Returns:
                   ToolOutputLength
                   );
         if (EFI_ERROR (Status)) {
-          Error (NULL, 0, 0, "parse of decoded GUIDED section failed", NULL);
+          Error (NULL, 0, 0003, "parse of decoded GUIDED section failed", NULL);
           return EFI_SECTION_ERROR;
         }
 
@@ -1447,16 +1448,15 @@ Returns:
                   BufferLength - ((EFI_GUID_DEFINED_SECTION *) Ptr)->DataOffset
                   );
         if (EFI_ERROR (Status)) {
-          Error (NULL, 0, 0, "parse of CRC32 GUIDED section failed", NULL);
+          Error (NULL, 0, 0003, "parse of CRC32 GUIDED section failed", NULL);
           return EFI_SECTION_ERROR;
         }
       } else {
         //
         // We don't know how to parse it now.
         //
-        Error (NULL, 0, 0, "EFI_SECTION_GUID_DEFINED cannot be parsed at this time.", NULL);
-        Error (NULL, 0, 0, "Tool to decode this section should have been defined", NULL);
-        Error (NULL, 0, 0, "in GuidedSectionTools.txt (built in the FV directory).", NULL);
+        Error (NULL, 0, 0003, "Error parsing section", \
+        "EFI_SECTION_GUID_DEFINED cannot be parsed at this time. Tool to decode this section should have been defined in GuidedSectionTools.txt (built in the FV directory).");
         return EFI_UNSUPPORTED;
       }
       break;
@@ -1465,7 +1465,7 @@ Returns:
       //
       // Unknown section, return error
       //
-      Error (NULL, 0, 0, "unrecognized section type found", "section type = 0x%X", (UINT32) Type);
+      Error (NULL, 0, 0003, "unrecognized section type found", "section type = 0x%X", (UINT32) Type);
       return EFI_SECTION_ERROR;
     }
 
@@ -1477,7 +1477,7 @@ Returns:
   }
 
   if (ParsedLength < BufferLength) {
-    Error (NULL, 0, 0, "sections do not completely fill the sectioned buffer being parsed", NULL);
+    Error (NULL, 0, 0003, "sections do not completely fill the sectioned buffer being parsed", NULL);
     return EFI_SECTION_ERROR;
   }