\r
if (ImageContext->PdbPointer) {\r
#ifdef __CC_ARM\r
- #if (__ARMCC_VERSION < 500000)\r
- // Print out the command for the RVD debugger to load symbols for this image\r
- DEBUG ((DEBUG_LOAD | DEBUG_INFO, "load /a /ni /np %a &0x%p\n", DeCygwinPathIfNeeded (ImageContext->PdbPointer, Temp, sizeof (Temp)), (UINTN)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders)));\r
- #else\r
// Print out the command for the DS-5 to load symbols for this image\r
DEBUG ((DEBUG_LOAD | DEBUG_INFO, "add-symbol-file %a 0x%p\n", DeCygwinPathIfNeeded (ImageContext->PdbPointer, Temp, sizeof (Temp)), (UINTN)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders)));\r
- #endif\r
#elif __GNUC__\r
// This may not work correctly if you generate PE/COFF directly as then the Offset would not be required\r
DEBUG ((DEBUG_LOAD | DEBUG_INFO, "add-symbol-file %a 0x%p\n", DeCygwinPathIfNeeded (ImageContext->PdbPointer, Temp, sizeof (Temp)), (UINTN)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders)));\r
+++ /dev/null
-/**@file\r
-\r
-Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-Portions copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>\r
-Portions copyright (c) 2011 - 2012, ARM Ltd. All rights reserved.<BR>\r
-\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#include <PiDxe.h>\r
-#include <Library/PeCoffLib.h>\r
-\r
-#include <Library/BaseLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/PeCoffExtraActionLib.h>\r
-#include <Library/SemihostLib.h>\r
-#include <Library/PrintLib.h>\r
-\r
-/**\r
- Append string to debugger script file, create file if needed.\r
-\r
- This library can show up in multiple places so we need to append the file every time we write to it.\r
- For example Sec can use this to load the DXE core, and the DXE core would use this to load all the\r
- other modules. So we have two instances of the library in the system.\r
-\r
- @param Buffer Buffer to write to file.\r
- @param Length Length of Buffer in bytes.\r
-**/\r
-VOID\r
-WriteStringToFile (\r
- IN VOID *Buffer,\r
- IN UINT32 Length\r
- )\r
-{\r
- // Working around and issue with the code that is commented out. For now send it to the console.\r
- // You can copy the console into a file and source the file as a script and you get symbols.\r
- // This gets you all the symbols except for SEC. To get SEC symbols you need to copy the\r
- // debug print in the SEC into the debugger manually\r
- SemihostWriteString (Buffer);\r
-\r
- /*\r
- I'm currently having issues with this code crashing the debugger. Seems like it should work.\r
-\r
- UINT32 SemihostHandle;\r
- UINT32 SemihostMode = SEMIHOST_FILE_MODE_WRITE | SEMIHOST_FILE_MODE_BINARY | SEMIHOST_FILE_MODE_UPDATE;\r
-\r
- SemihostFileOpen ("c:\rvi_symbols.inc", SemihostMode, &SemihostHandle);\r
- SemihostFileWrite (SemihostHandle, &Length, Buffer);\r
- SemihostFileClose (SemihostHandle);\r
- */\r
-}\r
-\r
-/**\r
- If the build is done on cygwin the paths are cygpaths.\r
- /cygdrive/c/tmp.txt vs c:\tmp.txt so we need to convert\r
- them to work with RVD commands\r
-\r
- @param Name Path to convert if needed\r
-\r
-**/\r
-CHAR8 *\r
-DeCygwinPathIfNeeded (\r
- IN CHAR8 *Name\r
- )\r
-{\r
- CHAR8 *Ptr;\r
- UINTN Index;\r
- UINTN Len;\r
-\r
- Ptr = AsciiStrStr (Name, "/cygdrive/");\r
- if (Ptr == NULL) {\r
- return Name;\r
- }\r
-\r
- Len = AsciiStrLen (Ptr);\r
-\r
- // convert "/cygdrive" to spaces\r
- for (Index = 0; Index < 9; Index++) {\r
- Ptr[Index] = ' ';\r
- }\r
-\r
- // convert /c to c:\r
- Ptr[9] = Ptr[10];\r
- Ptr[10] = ':';\r
-\r
- // switch path separators\r
- for (Index = 11; Index < Len; Index++) {\r
- if (Ptr[Index] == '/') {\r
- Ptr[Index] = '\\';\r
- }\r
- }\r
-\r
- return Name;\r
-}\r
-\r
-/**\r
- Performs additional actions after a PE/COFF image has been loaded and relocated.\r
-\r
- If ImageContext is NULL, then ASSERT().\r
-\r
- @param ImageContext Pointer to the image context structure that describes the\r
- PE/COFF image that has already been loaded and relocated.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-PeCoffLoaderRelocateImageExtraAction (\r
- IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
- )\r
-{\r
- CHAR8 Buffer[256];\r
-\r
- #if (__ARMCC_VERSION < 500000)\r
- AsciiSPrint (Buffer, sizeof (Buffer), "load /a /ni /np \"%a\" &0x%08x\n", ImageContext->PdbPointer, (UINTN)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders));\r
- #else\r
- AsciiSPrint (Buffer, sizeof (Buffer), "add-symbol-file %a 0x%08x\n", ImageContext->PdbPointer, (UINTN)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders));\r
- #endif\r
- DeCygwinPathIfNeeded (&Buffer[16]);\r
-\r
- WriteStringToFile (Buffer, AsciiStrSize (Buffer));\r
-}\r
-\r
-/**\r
- Performs additional actions just before a PE/COFF image is unloaded. Any resources\r
- that were allocated by PeCoffLoaderRelocateImageExtraAction() must be freed.\r
-\r
- If ImageContext is NULL, then ASSERT().\r
-\r
- @param ImageContext Pointer to the image context structure that describes the\r
- PE/COFF image that is being unloaded.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-PeCoffLoaderUnloadImageExtraAction (\r
- IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
- )\r
-{\r
- CHAR8 Buffer[256];\r
-\r
- AsciiSPrint (Buffer, sizeof (Buffer), "unload symbols_only \"%a\"\n", ImageContext->PdbPointer);\r
- DeCygwinPathIfNeeded (Buffer);\r
-\r
- WriteStringToFile (Buffer, AsciiStrSize (Buffer));\r
-}\r