- DEBUG ((EFI_D_ERROR, "UART Enabled\n"));\r
-\r
- DEBUG_CODE_BEGIN ();\r
- //\r
- // On a debug build print out information about the SEC. This is really info about\r
- // the PE/COFF file we are currently running from. Useful for loading symbols in a\r
- // debugger. Remember our image is really part of the FV.\r
- //\r
- RETURN_STATUS Status;\r
- EFI_PEI_FV_HANDLE VolumeHandle;\r
- EFI_PEI_FILE_HANDLE FileHandle;\r
- VOID *PeCoffImage;\r
- UINT32 Offset;\r
- CHAR8 *FilePath;\r
- FfsAnyFvFindFirstFile (EFI_FV_FILETYPE_SECURITY_CORE, &VolumeHandle, &FileHandle);\r
- Status = FfsFindSectionData (EFI_SECTION_TE, FileHandle, &PeCoffImage);\r
- if (EFI_ERROR (Status)) {\r
- // Usually is a TE (PI striped down PE/COFF), but could be a full PE/COFF\r
- Status = FfsFindSectionData (EFI_SECTION_PE32, FileHandle, &PeCoffImage);\r
- }\r
- if (!EFI_ERROR (Status)) {\r
- Offset = PeCoffGetSizeOfHeaders (PeCoffImage);\r
- FilePath = PeCoffLoaderGetPdbPointer (PeCoffImage);\r
- if (FilePath != NULL) {\r
- \r
- // \r
- // In general you should never have to use #ifdef __CC_ARM in the code. It\r
- // is hidden in the away in the MdePkg. But here we would like to print differnt things\r
- // for different toolchains. \r
- //\r
-#ifdef __CC_ARM\r
- // Print out the command for the RVD debugger to load symbols for this image\r
- DEBUG ((EFI_D_ERROR, "load /a /ni /np %a &0x%08x\n", SecDeCygwinPathIfNeeded (FilePath), (CHAR8 *)PeCoffImage + Offset));\r
-#elif __GNUC__\r
- // This may not work correctly if you generate PE/COFF directlyas then the Offset would not be required\r
- DEBUG ((EFI_D_ERROR, "add-symbol-file %a 0x%08x\n", FilePath, PeCoffImage + Offset));\r
-#else\r
- DEBUG ((EFI_D_ERROR, "SEC starts at 0x%08x with an entry point at 0x%08x %a\n", PeCoffImage, _ModuleEntryPoint, FilePath));\r
-#endif\r
- }\r
- }\r
-\r
- \r
- DEBUG_CODE_END ();\r
-\r