]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Dxe/Image/Image.c
MdeModulePkg/DxeCore: defer PE/COFF emulator registration to StartImage
[mirror_edk2.git] / MdeModulePkg / Core / Dxe / Image / Image.c
index 22a87ecf6d7ce1b3ef8e682929af338f5a937547..d86da89ee704b1800de6db7ba4f981dd7e18b11c 100644 (file)
@@ -756,17 +756,6 @@ CoreLoadPeImage (
   // Get the image entry point.\r
   //\r
   Image->EntryPoint   = (EFI_IMAGE_ENTRY_POINT)(UINTN)Image->ImageContext.EntryPoint;\r
-  if (Image->PeCoffEmu != NULL) {\r
-    Status = Image->PeCoffEmu->RegisterImage (Image->PeCoffEmu,\r
-                                 Image->ImageBasePage,\r
-                                 EFI_PAGES_TO_SIZE (Image->NumberOfPages),\r
-                                 &Image->EntryPoint);\r
-    if (EFI_ERROR (Status)) {\r
-      DEBUG ((DEBUG_LOAD | DEBUG_ERROR,\r
-        "CoreLoadPeImage: Failed to register foreign image with emulator.\n"));\r
-      goto Done;\r
-    }\r
-  }\r
 \r
   //\r
   // Fill in the image information for the Loaded Image Protocol\r
@@ -1603,6 +1592,19 @@ CoreStartImage (
     return EFI_UNSUPPORTED;\r
   }\r
 \r
+  if (Image->PeCoffEmu != NULL) {\r
+    Status = Image->PeCoffEmu->RegisterImage (Image->PeCoffEmu,\r
+                                 Image->ImageBasePage,\r
+                                 EFI_PAGES_TO_SIZE (Image->NumberOfPages),\r
+                                 &Image->EntryPoint);\r
+    if (EFI_ERROR (Status)) {\r
+      DEBUG ((DEBUG_LOAD | DEBUG_ERROR,\r
+        "CoreLoadPeImage: Failed to register foreign image with emulator - %r\n",\r
+          Status));\r
+      return Status;\r
+    }\r
+  }\r
+\r
   PERF_START_IMAGE_BEGIN (Handle);\r
 \r
 \r