REF: https://bugzilla.tianocore.org/show_bug.cgi?id=569
The PdbStringOffset should be set to 0 for no PDB case,
then SmiHandlerProfileInfo can use it to know whether
there is PCD info or not.
Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
//\r
// Method 1: Get the name string from image PDB\r
//\r
//\r
// Method 1: Get the name string from image PDB\r
//\r
- if (ImageStruct->Header.Length > sizeof (SMM_CORE_IMAGE_DATABASE_STRUCTURE)) {\r
- GetShortPdbFileName ((CHAR8 *) (ImageStruct + 1), mNameString);\r
+ if (ImageStruct->PdbStringOffset != 0) {\r
+ GetShortPdbFileName ((CHAR8 *) ((UINTN) ImageStruct + ImageStruct->PdbStringOffset), mNameString);\r
return mNameString;\r
}\r
\r
return mNameString;\r
}\r
\r
Print(L" FvFile=\"%g\"", &ImageStruct->FileGuid);\r
Print(L" RefId=\"0x%x\"", ImageStruct->ImageRef);\r
Print(L">\n");\r
Print(L" FvFile=\"%g\"", &ImageStruct->FileGuid);\r
Print(L" RefId=\"0x%x\"", ImageStruct->ImageRef);\r
Print(L">\n");\r
- PdbString = (CHAR8 *)((UINTN)ImageStruct + ImageStruct->PdbStringOffset);\r
- Print(L" <Pdb>%a</Pdb>\n", PdbString);\r
+ if (ImageStruct->PdbStringOffset != 0) {\r
+ PdbString = (CHAR8 *)((UINTN)ImageStruct + ImageStruct->PdbStringOffset);\r
+ Print(L" <Pdb>%a</Pdb>\n", PdbString);\r
+ }\r
Print(L" </Image>\n");\r
}\r
\r
Print(L" </Image>\n");\r
}\r
\r
ImageStruct->EntryPoint = mImageStruct[Index].EntryPoint;\r
ImageStruct->ImageBase = mImageStruct[Index].ImageBase;\r
ImageStruct->ImageSize = mImageStruct[Index].ImageSize;\r
ImageStruct->EntryPoint = mImageStruct[Index].EntryPoint;\r
ImageStruct->ImageBase = mImageStruct[Index].ImageBase;\r
ImageStruct->ImageSize = mImageStruct[Index].ImageSize;\r
- ImageStruct->PdbStringOffset = sizeof(SMM_CORE_IMAGE_DATABASE_STRUCTURE);\r
- CopyMem ((VOID *)((UINTN)ImageStruct + ImageStruct->PdbStringOffset), mImageStruct[Index].PdbString, mImageStruct[Index].PdbStringSize);\r
+ if (mImageStruct[Index].PdbStringSize != 0) {\r
+ ImageStruct->PdbStringOffset = sizeof(SMM_CORE_IMAGE_DATABASE_STRUCTURE);\r
+ CopyMem ((VOID *)((UINTN)ImageStruct + ImageStruct->PdbStringOffset), mImageStruct[Index].PdbString, mImageStruct[Index].PdbStringSize);\r
+ } else {\r
+ ImageStruct->PdbStringOffset = 0;\r
+ }\r
ImageStruct = (SMM_CORE_IMAGE_DATABASE_STRUCTURE *)((UINTN)ImageStruct + ImageStruct->Header.Length);\r
Size += sizeof(SMM_CORE_IMAGE_DATABASE_STRUCTURE) + mImageStruct[Index].PdbStringSize;\r
}\r
ImageStruct = (SMM_CORE_IMAGE_DATABASE_STRUCTURE *)((UINTN)ImageStruct + ImageStruct->Header.Length);\r
Size += sizeof(SMM_CORE_IMAGE_DATABASE_STRUCTURE) + mImageStruct[Index].PdbStringSize;\r
}\r