//\r
// Copy the Format string into the record\r
//\r
- AsciiStrCpy (FormatString, Format);\r
+ AsciiStrCpyS (FormatString, sizeof(Buffer) - (4 + sizeof(EFI_DEBUG_INFO) + 12 * sizeof(UINT64)), Format);\r
\r
//\r
// The first 12 * sizeof (UINT64) bytes following EFI_DEBUG_INFO are for variable arguments\r
if ((*Format == 'p') && (sizeof (VOID *) > 4)) {\r
Long = TRUE;\r
}\r
- if (*Format == 'p' || *Format == 'X' || *Format == 'x' || *Format == 'd') {\r
+ if (*Format == 'p' || *Format == 'X' || *Format == 'x' || *Format == 'd' || *Format == 'u') {\r
if (Long) {\r
BASE_ARG (BaseListMarker, INT64) = VA_ARG (VaListMarker, INT64);\r
} else {\r
UINTN HeaderSize;\r
UINTN TotalSize;\r
CHAR8 *Temp;\r
+ UINTN ModuleNameSize;\r
UINTN FileNameSize;\r
UINTN DescriptionSize;\r
\r
// Get string size\r
//\r
HeaderSize = sizeof (EFI_DEBUG_ASSERT_DATA);\r
+ //\r
+ // Compute string size of module name enclosed by []\r
+ //\r
+ ModuleNameSize = 2 + AsciiStrSize (gEfiCallerBaseName);\r
FileNameSize = AsciiStrSize (FileName);\r
DescriptionSize = AsciiStrSize (Description);\r
\r
//\r
// Make sure it will all fit in the passed in buffer.\r
//\r
- if (HeaderSize + FileNameSize + DescriptionSize > sizeof (Buffer)) {\r
+ if (HeaderSize + ModuleNameSize + FileNameSize + DescriptionSize > sizeof (Buffer)) {\r
//\r
- // FileName + Description is too long to be filled into buffer. \r
+ // remove module name if it's too long to be filled into buffer\r
//\r
- if (HeaderSize + FileNameSize < sizeof (Buffer)) {\r
- //\r
- // Description has enough buffer to be truncated. \r
- //\r
- DescriptionSize = sizeof (Buffer) - HeaderSize - FileNameSize;\r
- } else {\r
+ ModuleNameSize = 0;\r
+ if (HeaderSize + FileNameSize + DescriptionSize > sizeof (Buffer)) {\r
//\r
- // FileName is too long to be filled into buffer.\r
- // FileName will be truncated. Reserved one byte for Description NULL terminator.\r
+ // FileName + Description is too long to be filled into buffer.\r
//\r
- DescriptionSize = 1;\r
- FileNameSize = sizeof (Buffer) - HeaderSize - DescriptionSize;\r
+ if (HeaderSize + FileNameSize < sizeof (Buffer)) {\r
+ //\r
+ // Description has enough buffer to be truncated.\r
+ //\r
+ DescriptionSize = sizeof (Buffer) - HeaderSize - FileNameSize;\r
+ } else {\r
+ //\r
+ // FileName is too long to be filled into buffer.\r
+ // FileName will be truncated. Reserved one byte for Description NULL terminator.\r
+ //\r
+ DescriptionSize = 1;\r
+ FileNameSize = sizeof (Buffer) - HeaderSize - DescriptionSize;\r
+ }\r
}\r
}\r
- \r
//\r
// Fill in EFI_DEBUG_ASSERT_DATA\r
//\r
AssertData->LineNumber = (UINT32)LineNumber;\r
TotalSize = sizeof (EFI_DEBUG_ASSERT_DATA);\r
\r
+ Temp = (CHAR8 *)(AssertData + 1);\r
+\r
+ //\r
+ // Copy Ascii [ModuleName].\r
+ //\r
+ if (ModuleNameSize != 0) {\r
+ CopyMem(Temp, "[", 1);\r
+ CopyMem(Temp + 1, gEfiCallerBaseName, ModuleNameSize - 3);\r
+ CopyMem(Temp + ModuleNameSize - 2, "] ", 2);\r
+ }\r
+\r
//\r
// Copy Ascii FileName including NULL terminator.\r
//\r
- Temp = CopyMem (AssertData + 1, FileName, FileNameSize);\r
+ Temp = CopyMem (Temp + ModuleNameSize, FileName, FileNameSize);\r
Temp[FileNameSize - 1] = 0;\r
- TotalSize += FileNameSize;\r
+ TotalSize += (ModuleNameSize + FileNameSize);\r
\r
//\r
// Copy Ascii Description include NULL terminator.\r