Re: [edk2] MdeModulePkg: DebugAssert enhancement

2015-12-04 Thread Gao, Liming
Reviewed-by: Liming Gao <liming@intel.com>

I would like to help commit your serial patches if no other comments. 

Thanks
Liming
-Original Message-
From: Anbazhagan, Baraneedharan [mailto:anbazha...@hp.com] 
Sent: Friday, December 04, 2015 1:13 AM
To: Kinney, Michael D; Gao, Liming; edk2-devel@lists.01.org
Subject: RE: MdeModulePkg: DebugAssert enhancement

Updated code based on your suggestion to use copy mem and ModuleNameSize 
calculation.


diff --git a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c 
b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
index f1d9827..c3010df 100644
--- a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
+++ b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
@@ -261,6 +261,7 @@ DebugAssert (
   UINTN  HeaderSize;
   UINTN  TotalSize;
   CHAR8  *Temp;
+  UINTN  ModuleNameSize;
   UINTN  FileNameSize;
   UINTN  DescriptionSize;
 
@@ -268,31 +269,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
   //
@@ -300,12 +310,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: Kinney, Michael D [mailto:michael.d.kin...@intel.com]
> Sent: Wednesday, December 02, 2015 8:22 PM
> To: Gao, Liming; Anbazhagan, Baraneedharan; edk2-devel@lists.01.org; Kinney,
> Michael D
> Subject: RE: MdeModulePkg: DebugAssert enhancement
> 
> Baranee,
> 
> I also think the following line could be changed for smaller code gen from:
> 
> +  ModuleNameSize   = AsciiStrLen("[") + AsciiStrLen (gEfiCallerBaseName) +
> AsciiStrLen("] ");
> 
> To:
> 
> +  //
> +  // Compute string size of module name enclosed by []  //
> +  ModuleNameSize   = 2 + AsciiStrSize (gEfiCallerBaseName);
> 
> Mike
> 
> > -Original Message-
> > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of
> > Gao, Liming
> > Sent: Wednesday, December 2, 2015 6:07 PM
> > To: Anbazhagan, Baraneedharan <anbazha...@hp.com>;
> > edk2-devel@lists.01.org
> > Subject: Re: [edk2] MdeModulePkg: DebugAssert enhancement
> >
> > Baranee:
> >   Could you use CopyMem(

Re: [edk2] MdeModulePkg: DebugAssert enhancement

2015-12-04 Thread Anbazhagan, Baraneedharan
lists.01.org;
> > Kinney, Michael D
> > Subject: RE: MdeModulePkg: DebugAssert enhancement
> >
> > Baranee,
> >
> > I also think the following line could be changed for smaller code gen from:
> >
> > +  ModuleNameSize   = AsciiStrLen("[") + AsciiStrLen (gEfiCallerBaseName) +
> > AsciiStrLen("] ");
> >
> > To:
> >
> > +  //
> > +  // Compute string size of module name enclosed by []  //
> > +  ModuleNameSize   = 2 + AsciiStrSize (gEfiCallerBaseName);
> >
> > Mike
> >
> > > -Original Message-
> > > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf
> > > Of Gao, Liming
> > > Sent: Wednesday, December 2, 2015 6:07 PM
> > > To: Anbazhagan, Baraneedharan <anbazha...@hp.com>;
> > > edk2-devel@lists.01.org
> > > Subject: Re: [edk2] MdeModulePkg: DebugAssert enhancement
> > >
> > > Baranee:
> > >   Could you use CopyMem() to fill gEfiCallerBaseName instead of
> > > AsciiSPrint()? This library instance is for size optimization. So,
> > > it uses
> > > CopyMem() to fill FileName and Description.
> > >
> > > Thanks
> > > Liming
> > > -Original Message-
> > > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf
> > > Of Anbazhagan, Baraneedharan
> > > Sent: Wednesday, December 02, 2015 11:42 PM
> > > To: edk2-devel@lists.01.org
> > > Subject: [edk2] MdeModulePkg: 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 <anbazha...@hp.com>
> > > ---
> > >  .../PeiDxeDebugLibReportStatusCode/DebugLib.c  | 58 
> > > ++
> > >  .../PeiDxeDebugLibReportStatusCode.inf |  1 +
> > >  2 files changed, 39 insertions(+), 20 deletions(-)
> > >
> > > diff --git
> > > a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> > > b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> > > index f1d9827..af369ea 100644
> > > --- a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> > > +++ b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> > > @@ -22,6 +22,7 @@
> > >
> > >  #include 
> > >  #include 
> > > +#include 
> > >  #include 
> > >  #include   #include
> > >  @@ -
> > 261,6 +262,7 @@ DebugAssert (
> > >UINTN  HeaderSize;
> > >UINTN  TotalSize;
> > >CHAR8  *Temp;
> > > +  UINTN  ModuleNameSize;
> > >UINTN  FileNameSize;
> > >UINTN  DescriptionSize;
> > >
> > > @@ -268,31 +270,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 {
> > > -  //
> > > - 

Re: [edk2] MdeModulePkg: DebugAssert enhancement

2015-12-03 Thread Anbazhagan, Baraneedharan
Updated code based on your suggestion to use copy mem and ModuleNameSize 
calculation.


diff --git a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c 
b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
index f1d9827..c3010df 100644
--- a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
+++ b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
@@ -261,6 +261,7 @@ DebugAssert (
   UINTN  HeaderSize;
   UINTN  TotalSize;
   CHAR8  *Temp;
+  UINTN  ModuleNameSize;
   UINTN  FileNameSize;
   UINTN  DescriptionSize;
 
@@ -268,31 +269,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
   //
@@ -300,12 +310,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: Kinney, Michael D [mailto:michael.d.kin...@intel.com]
> Sent: Wednesday, December 02, 2015 8:22 PM
> To: Gao, Liming; Anbazhagan, Baraneedharan; edk2-devel@lists.01.org; Kinney,
> Michael D
> Subject: RE: MdeModulePkg: DebugAssert enhancement
> 
> Baranee,
> 
> I also think the following line could be changed for smaller code gen from:
> 
> +  ModuleNameSize   = AsciiStrLen("[") + AsciiStrLen (gEfiCallerBaseName) +
> AsciiStrLen("] ");
> 
> To:
> 
> +  //
> +  // Compute string size of module name enclosed by []  //
> +  ModuleNameSize   = 2 + AsciiStrSize (gEfiCallerBaseName);
> 
> Mike
> 
> > -Original Message-
> > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of
> > Gao, Liming
> > Sent: Wednesday, December 2, 2015 6:07 PM
> > To: Anbazhagan, Baraneedharan <anbazha...@hp.com>;
> > edk2-devel@lists.01.org
> > Subject: Re: [edk2] MdeModulePkg: DebugAssert enhancement
> >
> > Baranee:
> >   Could you use CopyMem() to fill gEfiCallerBaseName instead of
> > AsciiSPrint()? This library instance is for size optimization. So, it
> > uses
> > CopyMem() to fill FileName and Description.
> >
> > Thanks
> > Liming
> > -Original Message-
> > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of
> > Anbazhagan, Baraneedharan
>

Re: [edk2] MdeModulePkg: DebugAssert enhancement

2015-12-02 Thread Gao, Liming
Baranee:
  Could you use CopyMem() to fill gEfiCallerBaseName instead of AsciiSPrint()? 
This library instance is for size optimization. So, it uses CopyMem() to fill 
FileName and Description.

Thanks
Liming
-Original Message-
From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of 
Anbazhagan, Baraneedharan
Sent: Wednesday, December 02, 2015 11:42 PM
To: edk2-devel@lists.01.org
Subject: [edk2] MdeModulePkg: 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 <anbazha...@hp.com>
---
 .../PeiDxeDebugLibReportStatusCode/DebugLib.c  | 58 ++
 .../PeiDxeDebugLibReportStatusCode.inf |  1 +
 2 files changed, 39 insertions(+), 20 deletions(-)

diff --git a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c 
b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
index f1d9827..af369ea 100644
--- a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
+++ b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
@@ -22,6 +22,7 @@
 
 #include 
 #include 
+#include 
 #include 
 #include   #include  @@ 
-261,6 +262,7 @@ DebugAssert (
   UINTN  HeaderSize;
   UINTN  TotalSize;
   CHAR8  *Temp;
+  UINTN  ModuleNameSize;
   UINTN  FileNameSize;
   UINTN  DescriptionSize;
 
@@ -268,31 +270,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
   //
@@ -300,17 +308,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/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
 
b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
index 5544667..50f60c7 100644

Re: [edk2] MdeModulePkg: DebugAssert enhancement

2015-12-02 Thread Kinney, Michael D
Baranee,

I also think the following line could be changed for smaller code gen from:

+  ModuleNameSize   = AsciiStrLen("[") + AsciiStrLen (gEfiCallerBaseName) + 
AsciiStrLen("] ");

To:

+  //
+  // Compute string size of module name enclosed by []
+  //
+  ModuleNameSize   = 2 + AsciiStrSize (gEfiCallerBaseName);

Mike

> -Original Message-
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Gao, 
> Liming
> Sent: Wednesday, December 2, 2015 6:07 PM
> To: Anbazhagan, Baraneedharan <anbazha...@hp.com>; edk2-devel@lists.01.org
> Subject: Re: [edk2] MdeModulePkg: DebugAssert enhancement
> 
> Baranee:
>   Could you use CopyMem() to fill gEfiCallerBaseName instead of 
> AsciiSPrint()? This library instance is for size optimization. So, it uses
> CopyMem() to fill FileName and Description.
> 
> Thanks
> Liming
> -Original Message-
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of 
> Anbazhagan, Baraneedharan
> Sent: Wednesday, December 02, 2015 11:42 PM
> To: edk2-devel@lists.01.org
> Subject: [edk2] MdeModulePkg: 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 <anbazha...@hp.com>
> ---
>  .../PeiDxeDebugLibReportStatusCode/DebugLib.c  | 58 
> ++
>  .../PeiDxeDebugLibReportStatusCode.inf |  1 +
>  2 files changed, 39 insertions(+), 20 deletions(-)
> 
> diff --git a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> index f1d9827..af369ea 100644
> --- a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> +++ b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> @@ -22,6 +22,7 @@
> 
>  #include 
>  #include 
> +#include 
>  #include 
>  #include   #include  @@ 
> -261,6 +262,7 @@ DebugAssert (
>UINTN  HeaderSize;
>UINTN  TotalSize;
>CHAR8  *Temp;
> +  UINTN  ModuleNameSize;
>UINTN  FileNameSize;
>UINTN  DescriptionSize;
> 
> @@ -268,31 +270,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
>//
> @@ -300,17 +308,27 @@ DebugAssert (
>AssertData->LineNumber = (UINT32)LineNumber;
>TotalSize  = sizeof (EFI_DEBUG_ASSERT_DATA);
> 
> -  //
> -  // Copy Ascii FileName inclu