//\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
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
- fprintf (DestFile, "%s | %016llX | %s | %s%s\n", Type, (unsigned long long) TokenAddress, Section, BaseToken, Token);\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