/**\r
\r
-Copyright (c) 1999 - 2008, Intel Corporation. All rights reserved\r
-This software and associated documentation (if any) is furnished\r
-under a license and may only be used or copied in accordance\r
-with the terms of the license. Except as permitted by such\r
-license, no part of this software or documentation may be\r
-reproduced, stored in a retrieval system, or transmitted in any\r
-form or by any means without the express written consent of\r
-Intel Corporation.\r
+Copyright (c) 1999 - 2010, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available \r
+under the terms and conditions of the BSD License which accompanies this \r
+distribution. The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
\r
Module Name:\r
CHAR8 StrPtr[40];\r
CHAR8 *Token;\r
UINTN Length;\r
- UINT32 Major;\r
- UINT32 Minor;\r
+ unsigned Major;\r
+ unsigned Minor;\r
\r
Major = 0;\r
Minor = 0;\r
\r
Routine Description:\r
\r
- This function intializes the relevant global variable which is being\r
+ This function initializes the relevant global variable which is being\r
used to store the information retrieved from INF file. This also initializes\r
the VTF symbol file.\r
\r
\r
Routine Description:\r
\r
- This function intializes the relevant global variable which is being\r
+ This function initializes the relevant global variable which is being\r
used to store the information retrieved from INF file.\r
\r
Arguments:\r
VtfInfo->LocationType = SECOND_VTF;\r
} else {\r
VtfInfo->LocationType = NONE;\r
- Warning(UTILITY_NAME, 0, 0001, "Unknown location for component.", VtfInfo->CompName);\r
}\r
} else if (strnicmp (*TokenStr, "COMP_TYPE", 9) == 0) {\r
TokenStr++;\r
if (AsciiStringToUint64 (*TokenStr, FALSE, &StringValue) != EFI_SUCCESS) {\r
- Error (NULL, 0, 5001, "Cannot get: \"0x%x\".", *TokenStr);\r
+ Error (NULL, 0, 5001, "Cannot get: \"0x%s\".", *TokenStr);\r
return ;\r
}\r
\r
//\r
// Update the SYM file for this component based on it's start address.\r
//\r
- Status = UpdateSymFile (CompStartAddress, SymFileName, VtfInfo->CompSymName);\r
+ Status = UpdateSymFile (CompStartAddress, SymFileName, VtfInfo->CompSymName, FileSize);\r
if (EFI_ERROR (Status)) {\r
\r
//\r
//\r
// Update the SYM file for this component based on it's start address.\r
//\r
- Status = UpdateSymFile (PalStartAddress, SymFileName, VtfInfo->CompSymName);\r
+ Status = UpdateSymFile (PalStartAddress, SymFileName, VtfInfo->CompSymName, FileSize);\r
if (EFI_ERROR (Status)) {\r
\r
//\r
FileHeader->IntegrityCheck.Checksum.File = 0;\r
FileHeader->State = 0;\r
FileHeader->IntegrityCheck.Checksum.Header = CalculateChecksum8 ((UINT8 *) FileHeader, sizeof (EFI_FFS_FILE_HEADER));\r
- FileHeader->IntegrityCheck.Checksum.File = CalculateChecksum8 ((UINT8 *) FileHeader, TotalVtfSize);\r
+ FileHeader->IntegrityCheck.Checksum.File = CalculateChecksum8 ((UINT8 *) (FileHeader + 1), TotalVtfSize - sizeof (EFI_FFS_FILE_HEADER));\r
FileHeader->State = EFI_FILE_HEADER_CONSTRUCTION | EFI_FILE_HEADER_VALID | EFI_FILE_DATA_VALID;\r
\r
return EFI_SUCCESS;\r
\r
Fv1BaseAddress = StartAddress1;\r
Fv1EndAddress = Fv1BaseAddress + Size1;\r
- if (Fv1EndAddress != 0x100000000 || Size1 < 0x100000) {\r
+ if (Fv1EndAddress != 0x100000000ULL || Size1 < 0x100000) {\r
Error (NULL, 0, 2000, "Invalid parameter", "Error BaseAddress and Size parameters!");\r
if (Size1 < 0x100000) {\r
Error (NULL, 0, 2000, "Invalid parameter", "The FwVolumeSize must be larger than 1M!");\r
UpdateSymFile (\r
IN UINT64 BaseAddress,\r
IN CHAR8 *DestFileName,\r
- IN CHAR8 *SourceFileName\r
+ IN CHAR8 *SourceFileName,\r
+ IN UINT64 FileSize\r
+\r
)\r
/*++\r
\r
BaseAddress - The base address for the new SYM tokens.\r
DestFileName - The destination file.\r
SourceFileName - The source file.\r
+ FileSize - Size of bin file.\r
\r
Returns:\r
\r
CHAR8 Token[_MAX_PATH];\r
CHAR8 BaseToken[_MAX_PATH];\r
UINT64 TokenAddress;\r
- long StartLocation;\r
+ long StartLocation;\r
\r
//\r
// Verify input parameters.\r
// Get the token address\r
//\r
AsciiStringToUint64 (Address, TRUE, &TokenAddress);\r
+ if (TokenAddress > FileSize) {\r
+ //\r
+ // Symbol offset larger than FileSize. This Symbol can't be in Bin file. Don't print them.\r
+ //\r
+ break;\r
+ }\r
\r
//\r
// Add the base address, the size of the FFS file header and the size of the peim header.\r
//\r
TokenAddress += BaseAddress &~IPF_CACHE_BIT;\r
\r
-#ifdef __GNUC__\r
- fprintf (DestFile, "%s | %016lX | %s | %s%s\n", Type, TokenAddress, Section, BaseToken, Token);\r
-#else\r
- fprintf (DestFile, "%s | %016I64X | %s | %s%s\n", Type, TokenAddress, Section, BaseToken, Token);\r
-#endif\r
+ fprintf (DestFile, "%s | %016llX | ", Type, (unsigned long long) TokenAddress);\r
+ fprintf (DestFile, "%s | %s\n %s\n", Section, Token, BaseToken); \r
}\r
}\r
\r
//\r
// Copyright declaration\r
//\r
- fprintf (stdout, "Copyright (c) 2007 - 2009, Intel Corporation. All rights reserved.\n\n");\r
+ fprintf (stdout, "Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.\n\n");\r
//\r
// Details Option\r
//\r
break;\r
\r
case EFI_ABORTED:\r
- Error (NULL, 0, 3000, "Invaild", "Error detected while creating the file image.");\r
+ Error (NULL, 0, 3000, "Invalid", "Error detected while creating the file image.");\r
break;\r
\r
case EFI_OUT_OF_RESOURCES:\r
break;\r
\r
case EFI_VOLUME_CORRUPTED:\r
- Error (NULL, 0, 3000, "Invaild", "No base address was specified.");\r
+ Error (NULL, 0, 3000, "Invalid", "No base address was specified.");\r
break;\r
\r
default:\r
- Error (NULL, 0, 3000, "Invaild", "GenVtfImage function returned unknown status %x.",Status );\r
+ Error (NULL, 0, 3000, "Invalid", "GenVtfImage function returned unknown status %x.", (int) Status );\r
break;\r
}\r
}\r