\r
DEBUG_CODE_BEGIN ();\r
CHAR8 *AsciiString;\r
- CHAR8 AsciiBuffer[512];\r
+ CHAR8 EfiFileName[512];\r
INT32 Index;\r
- INT32 Index1;\r
+ INT32 StartIndex;\r
\r
//\r
// Print debug message: Loading PEIM at 0x12345678 EntryPoint=0x12345688 Driver.efi\r
AsciiString = PeCoffLoaderGetPdbPointer (Pe32Data);\r
\r
if (AsciiString != NULL) {\r
- for (Index = (INT32) AsciiStrLen (AsciiString) - 1; Index >= 0; Index --) {\r
+ StartIndex = 0;\r
+ for (Index = 0; AsciiString[Index] != 0; Index++) {\r
if (AsciiString[Index] == '\\' || AsciiString[Index] == '/') {\r
- break;\r
+ StartIndex = Index + 1;\r
}\r
}\r
\r
- if (Index != 0) {\r
- for (Index1 = 0; AsciiString[Index + 1 + Index1] != '.'; Index1 ++) {\r
- AsciiBuffer [Index1] = AsciiString[Index + 1 + Index1];\r
+ //\r
+ // Copy the PDB file name to our temporary string, and replace .pdb with .efi\r
+ // The PDB file name is limited in the range of 0~511.\r
+ // If the length is bigger than 511, trim the redudant characters to avoid overflow in array boundary.\r
+ //\r
+ for (Index = 0; Index < sizeof (EfiFileName) - 4; Index++) {\r
+ EfiFileName[Index] = AsciiString[Index + StartIndex];\r
+ if (EfiFileName[Index] == 0) {\r
+ EfiFileName[Index] = '.';\r
+ }\r
+ if (EfiFileName[Index] == '.') {\r
+ EfiFileName[Index + 1] = 'e';\r
+ EfiFileName[Index + 2] = 'f';\r
+ EfiFileName[Index + 3] = 'i';\r
+ EfiFileName[Index + 4] = 0;\r
+ break;\r
}\r
- AsciiBuffer [Index1] = '\0';\r
- DEBUG ((EFI_D_INFO | EFI_D_LOAD, "%a.efi", AsciiBuffer));\r
}\r
+\r
+ if (Index == sizeof (EfiFileName) - 4) {\r
+ EfiFileName[Index] = 0;\r
+ }\r
+\r
+ DEBUG ((EFI_D_INFO | EFI_D_LOAD, "%a", EfiFileName));\r
}\r
\r
DEBUG_CODE_END ();\r