Updated patch to use CopyMem instead of AsciiSPrint based on code review
feedback.
---
.../PeiDxeDebugLibReportStatusCode/DebugLib.c | 51 +++++++++++++++-------
1 file changed, 36 insertions(+), 15 deletions(-)
diff --git
a/IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
b/IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
index cfdd2f5..4e89d92 100644
--- a/IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
+++ b/IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
@@ -268,6 +268,7 @@ DebugAssert (
UINTN HeaderSize;
UINTN TotalSize;
CHAR8 *Temp;
+ UINTN ModuleNameSize;
UINTN FileNameSize;
UINTN DescriptionSize;
@@ -275,31 +276,40 @@ DebugAssert (
// Get string size
//
HeaderSize = sizeof (EFI_DEBUG_ASSERT_DATA);
+ //
+ // Compute string size of module name enclosed by []
+ //
+ ModuleNameSize = 2 + AsciiStrSize (gEfiCallerBaseName);
FileNameSize = AsciiStrSize (FileName);
DescriptionSize = AsciiStrSize (Description);
//
// Make sure it will all fit in the passed in buffer.
//
- if (HeaderSize + FileNameSize + DescriptionSize > sizeof (Buffer)) {
+ if (HeaderSize + ModuleNameSize + FileNameSize + DescriptionSize > sizeof
(Buffer)) {
//
- // FileName + Description is too long to be filled into buffer.
+ // remove module name if it's too long to be filled into buffer
//
- if (HeaderSize + FileNameSize < sizeof (Buffer)) {
- //
- // Description has enough buffer to be truncated.
- //
- DescriptionSize = sizeof (Buffer) - HeaderSize - FileNameSize;
- } else {
+ ModuleNameSize = 0;
+ if (HeaderSize + FileNameSize + DescriptionSize > sizeof (Buffer)) {
//
- // FileName is too long to be filled into buffer.
- // FileName will be truncated. Reserved one byte for Description NULL
terminator.
+ // FileName + Description is too long to be filled into buffer.
//
- DescriptionSize = 1;
- FileNameSize = sizeof (Buffer) - HeaderSize - DescriptionSize;
+ if (HeaderSize + FileNameSize < sizeof (Buffer)) {
+ //
+ // Description has enough buffer to be truncated.
+ //
+ DescriptionSize = sizeof (Buffer) - HeaderSize - FileNameSize;
+ } else {
+ //
+ // FileName is too long to be filled into buffer.
+ // FileName will be truncated. Reserved one byte for Description NULL
terminator.
+ //
+ DescriptionSize = 1;
+ FileNameSize = sizeof (Buffer) - HeaderSize - DescriptionSize;
+ }
}
}
-
//
// Fill in EFI_DEBUG_ASSERT_DATA
//
@@ -307,12 +317,23 @@ DebugAssert (
AssertData->LineNumber = (UINT32)LineNumber;
TotalSize = sizeof (EFI_DEBUG_ASSERT_DATA);
+ Temp = (CHAR8 *)(AssertData + 1);
+
+ //
+ // Copy Ascii [ModuleName].
+ //
+ if (ModuleNameSize != 0) {
+ CopyMem(Temp, "[", 1);
+ CopyMem(Temp + 1, gEfiCallerBaseName, ModuleNameSize - 3);
+ CopyMem(Temp + ModuleNameSize - 2, "] ", 2);
+ }
+
//
// Copy Ascii FileName including NULL terminator.
//
- Temp = CopyMem (AssertData + 1, FileName, FileNameSize);
+ Temp = CopyMem (Temp + ModuleNameSize, FileName, FileNameSize);
Temp[FileNameSize - 1] = 0;
- TotalSize += FileNameSize;
+ TotalSize += (ModuleNameSize + FileNameSize);
//
// Copy Ascii Description include NULL terminator.
--
2.6.3.windows.1
> -----Original Message-----
> From: edk2-devel [mailto:[email protected]] On Behalf Of
> Anbazhagan, Baraneedharan
> Sent: Wednesday, December 02, 2015 9:42 AM
> To: [email protected]
> Subject: [edk2] IntelFrameworkModulePkg: DebugAssert enhancement
>
> If the assert happens in a library, then it's hard to determine which module
> using that
> library is generating that assert.
> Use gEfiCallerBaseName in DebugAssert to display the module name.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Baraneedharan Anbazhagan <[email protected]>
> ---
> .../PeiDxeDebugLibReportStatusCode/DebugLib.c | 58
> ++++++++++++++--------
> .../PeiDxeDebugLibReportStatusCode.inf | 1 +
> 2 files changed, 39 insertions(+), 20 deletions(-)
>
> diff --git
> a/IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> b/IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> index cfdd2f5..0435a6f 100644
> ---
> a/IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> +++ b/IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/Deb
> +++ ugLib.c
> @@ -22,6 +22,7 @@
>
> #include <Library/DebugLib.h>
> #include <Library/BaseLib.h>
> +#include <Library/PrintLib.h>
> #include <Library/BaseMemoryLib.h>
> #include <Library/ReportStatusCodeLib.h> #include <Library/PcdLib.h> @@
> -268,6
> +269,7 @@ DebugAssert (
> UINTN HeaderSize;
> UINTN TotalSize;
> CHAR8 *Temp;
> + UINTN ModuleNameSize;
> UINTN FileNameSize;
> UINTN DescriptionSize;
>
> @@ -275,31 +277,37 @@ DebugAssert (
> // Get string size
> //
> HeaderSize = sizeof (EFI_DEBUG_ASSERT_DATA);
> + ModuleNameSize = AsciiStrLen("[") + AsciiStrLen (gEfiCallerBaseName) +
> AsciiStrLen("] ");
> FileNameSize = AsciiStrSize (FileName);
> DescriptionSize = AsciiStrSize (Description);
>
> //
> // Make sure it will all fit in the passed in buffer.
> //
> - if (HeaderSize + FileNameSize + DescriptionSize > sizeof (Buffer)) {
> + if (HeaderSize + ModuleNameSize + FileNameSize + DescriptionSize >
> + sizeof (Buffer)) {
> //
> - // FileName + Description is too long to be filled into buffer.
> + // remove module name if it's too long to be filled into buffer
> //
> - if (HeaderSize + FileNameSize < sizeof (Buffer)) {
> + ModuleNameSize = 0;
> + if (HeaderSize + FileNameSize + DescriptionSize > sizeof (Buffer))
> + {
> //
> - // Description has enough buffer to be truncated.
> + // FileName + Description is too long to be filled into buffer.
> //
> - DescriptionSize = sizeof (Buffer) - HeaderSize - FileNameSize;
> - } else {
> - //
> - // FileName is too long to be filled into buffer.
> - // FileName will be truncated. Reserved one byte for Description NULL
> terminator.
> - //
> - DescriptionSize = 1;
> - FileNameSize = sizeof (Buffer) - HeaderSize - DescriptionSize;
> + if (HeaderSize + FileNameSize < sizeof (Buffer)) {
> + //
> + // Description has enough buffer to be truncated.
> + //
> + DescriptionSize = sizeof (Buffer) - HeaderSize - FileNameSize;
> + } else {
> + //
> + // FileName is too long to be filled into buffer.
> + // FileName will be truncated. Reserved one byte for Description NULL
> terminator.
> + //
> + DescriptionSize = 1;
> + FileNameSize = sizeof (Buffer) - HeaderSize - DescriptionSize;
> + }
> }
> }
> -
> //
> // Fill in EFI_DEBUG_ASSERT_DATA
> //
> @@ -307,17 +315,27 @@ DebugAssert (
> AssertData->LineNumber = (UINT32)LineNumber;
> TotalSize = sizeof (EFI_DEBUG_ASSERT_DATA);
>
> - //
> - // Copy Ascii FileName including NULL terminator.
> - //
> - Temp = CopyMem (AssertData + 1, FileName, FileNameSize);
> - Temp[FileNameSize - 1] = 0;
> - TotalSize += FileNameSize;
> + Temp = (CHAR8 *)(AssertData + 1);
> + if (ModuleNameSize != 0) {
> + //
> + // Copy Ascii ModuleName & FileName including NULL terminator
> + //
> + AsciiSPrint(Temp, ModuleNameSize + FileNameSize, "[%a] %a",
> gEfiCallerBaseName, FileName);
> + TotalSize += (ModuleNameSize + FileNameSize); } else {
> + //
> + // Copy Ascii FileName including NULL terminator.
> + //
> + Temp = CopyMem (Temp, FileName, FileNameSize);
> + Temp[FileNameSize - 1] = 0;
> + TotalSize += FileNameSize;
> + }
> +
>
> //
> // Copy Ascii Description include NULL terminator.
> //
> - Temp = CopyMem (Temp + FileNameSize, Description, DescriptionSize);
> + Temp = CopyMem (Temp + ModuleNameSize + FileNameSize, Description,
> DescriptionSize);
> Temp[DescriptionSize - 1] = 0;
> TotalSize += DescriptionSize;
>
> diff --git
> a/IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebug
> LibReportStatusCode.inf
> b/IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebug
> LibReportStatusCode.inf
> index 5544667..50f60c7 100644
> ---
> a/IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebug
> LibReportStatusCode.inf
> +++
> b/IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebug
> LibReportStatusCode.inf
> @@ -43,6 +43,7 @@
> BaseMemoryLib
> BaseLib
> DebugPrintErrorLevelLib
> + PrintLib
>
> [Pcd]
> gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue ##
> SOMETIMES_CONSUMES
> --
> 2.6.3.windows.1
>
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel