]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Library/DebugPeCoffExtraActionLib/DebugPeCoffExtraActionLib.c
ArmPkg: DebugPeCoffExtraActionLib: debugger commands are not errors
[mirror_edk2.git] / ArmPkg / Library / DebugPeCoffExtraActionLib / DebugPeCoffExtraActionLib.c
old mode 100755 (executable)
new mode 100644 (file)
index 5bfa0ad..3379744
@@ -2,13 +2,9 @@
 \r
 Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
 Portions copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
+Portions copyright (c) 2011 - 2012, ARM Ltd. All rights reserved.<BR>\r
 \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -23,7 +19,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 \r
 /**\r
-  If the build is done on cygwin the paths are cygpaths. \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
@@ -32,37 +28,33 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 **/\r
 CHAR8 *\r
 DeCygwinPathIfNeeded (\r
-  IN  CHAR8   *Name\r
+  IN  CHAR8   *Name,\r
+  IN  CHAR8   *Temp,\r
+  IN  UINTN   Size\r
   )\r
 {\r
   CHAR8   *Ptr;\r
   UINTN   Index;\r
-  UINTN   Len;\r
-  \r
+  UINTN   Index2;\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
+  for (Index = 9, Index2 = 0; (Index < (Size + 9)) && (Ptr[Index] != '\0'); Index++, Index2++) {\r
+    Temp[Index2] = Ptr[Index];\r
+    if (Temp[Index2] == '/') {\r
+      Temp[Index2] = '\\' ;\r
   }\r
 \r
-  // convert /c to c:\r
-  Ptr[9]  = Ptr[10];\r
-  Ptr[10] = ':';\r
-  \r
-  // switch path seperators\r
-  for (Index = 11; Index < Len; Index++) {\r
-    if (Ptr[Index] == '/') {\r
-      Ptr[Index] = '\\' ;\r
+    if (Index2 == 1) {\r
+      Temp[Index2 - 1] = Ptr[Index];\r
+      Temp[Index2] = ':';\r
     }\r
   }\r
 \r
-  return Name;\r
+  return Temp;\r
 }\r
 \r
 \r
@@ -81,15 +73,28 @@ PeCoffLoaderRelocateImageExtraAction (
   IN OUT PE_COFF_LOADER_IMAGE_CONTEXT  *ImageContext\r
   )\r
 {\r
+#if !defined(MDEPKG_NDEBUG)\r
+  CHAR8 Temp[512];\r
+#endif\r
+\r
+  if (ImageContext->PdbPointer) {\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", DeCygwinPathIfNeeded (ImageContext->PdbPointer), (UINTN)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders)));\r
+#if (__ARMCC_VERSION < 500000)\r
+    // Print out the command for the RVD debugger to load symbols for this image\r
+    DEBUG ((EFI_D_LOAD | EFI_D_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 ((EFI_D_LOAD | EFI_D_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 directlyas then the Offset would not be required\r
-  DEBUG ((EFI_D_ERROR, "add-symbol-file %a 0x%08x\n", DeCygwinPathIfNeeded (ImageContext->PdbPointer), (UINTN)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders)));\r
+    // This may not work correctly if you generate PE/COFF directlyas then the Offset would not be required\r
+    DEBUG ((EFI_D_LOAD | EFI_D_INFO, "add-symbol-file %a 0x%p\n", DeCygwinPathIfNeeded (ImageContext->PdbPointer, Temp, sizeof (Temp)), (UINTN)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders)));\r
 #else\r
-  DEBUG ((EFI_D_ERROR, "Loading driver at 0x%11p EntryPoint=0x%11p ", (VOID *)(UINTN) ImageContext->ImageAddress, FUNCTION_ENTRY_POINT (ImageContext->EntryPoint)));\r
+    DEBUG ((EFI_D_LOAD | EFI_D_INFO, "Loading driver at 0x%11p EntryPoint=0x%11p\n", (VOID *)(UINTN) ImageContext->ImageAddress, FUNCTION_ENTRY_POINT (ImageContext->EntryPoint)));\r
 #endif\r
+  } else {\r
+    DEBUG ((EFI_D_LOAD | EFI_D_INFO, "Loading driver at 0x%11p EntryPoint=0x%11p\n", (VOID *)(UINTN) ImageContext->ImageAddress, FUNCTION_ENTRY_POINT (ImageContext->EntryPoint)));\r
+  }\r
 }\r
 \r
 \r
@@ -97,9 +102,9 @@ PeCoffLoaderRelocateImageExtraAction (
 /**\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
+\r
   If ImageContext is NULL, then ASSERT().\r
-  \r
+\r
   @param  ImageContext  Pointer to the image context structure that describes the\r
                         PE/COFF image that is being unloaded.\r
 \r
@@ -110,13 +115,21 @@ PeCoffLoaderUnloadImageExtraAction (
   IN OUT PE_COFF_LOADER_IMAGE_CONTEXT  *ImageContext\r
   )\r
 {\r
+#if !defined(MDEPKG_NDEBUG)\r
+  CHAR8 Temp[512];\r
+#endif\r
+\r
+  if (ImageContext->PdbPointer) {\r
 #ifdef __CC_ARM\r
-  // Print out the command for the RVD debugger to load symbols for this image\r
-  DEBUG ((EFI_D_ERROR, "unload symbols_only %a", DeCygwinPathIfNeeded (ImageContext->PdbPointer)));\r
+    // Print out the command for the RVD debugger to load symbols for this image\r
+    DEBUG ((DEBUG_LOAD | DEBUG_INFO, "unload symbols_only %a\n", DeCygwinPathIfNeeded (ImageContext->PdbPointer, Temp, sizeof (Temp))));\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, "remove-symbol-file %a 0x%08x\n", DeCygwinPathIfNeeded (ImageContext->PdbPointer), (UINTN)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders)));\r
+    // This may not work correctly if you generate PE/COFF directlyas then the Offset would not be required\r
+    DEBUG ((DEBUG_LOAD | DEBUG_INFO, "remove-symbol-file %a 0x%08x\n", DeCygwinPathIfNeeded (ImageContext->PdbPointer, Temp, sizeof (Temp)), (UINTN)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders)));\r
 #else\r
-  DEBUG ((EFI_D_ERROR, "Unloading %a", ImageContext->PdbPointer));\r
+    DEBUG ((DEBUG_LOAD | DEBUG_INFO, "Unloading %a\n", ImageContext->PdbPointer));\r
 #endif\r
+  } else {\r
+    DEBUG ((DEBUG_LOAD | DEBUG_INFO, "Unloading driver at 0x%11p\n", (VOID *)(UINTN) ImageContext->ImageAddress));\r
+  }\r
 }\r