]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/DxeIplPeim/DxeLoad.c
1. Sync the latest network stack. Add NetLibCreateIPv4DPathNode () in netlib library.
[mirror_edk2.git] / MdeModulePkg / Core / DxeIplPeim / DxeLoad.c
index e7359e5684824bc7e04ee754792cbbd6df428011..8d3c29a5798fce41a5ab2b0689935487a66e984f 100644 (file)
@@ -538,7 +538,7 @@ Returns:
     // Set gInMemory global variable to TRUE to indicate the dxeipl is shadowed.\r
     //\r
     *(BOOLEAN *) ((UINTN) &gInMemory + (UINTN) DxeIplEntryPoint - (UINTN) _ModuleEntryPoint) = TRUE;\r
-    Status = ((EFI_PEIM_ENTRY_POINT) (UINTN) DxeIplEntryPoint) ((EFI_PEI_FILE_HANDLE *) DxeIplFileHeader, GetPeiServicesTablePointer());\r
+    Status = ((EFI_PEIM_ENTRY_POINT2) (UINTN) DxeIplEntryPoint) ((EFI_PEI_FILE_HANDLE *) DxeIplFileHeader, GetPeiServicesTablePointer());\r
   }\r
 \r
   return Status;\r
@@ -593,15 +593,23 @@ Returns:
   // Preprocess the FFS file to get a pointer to the PE32 information\r
   // in the enclosed PE32 image.\r
   //\r
 Status = PeiProcessFile (\r
-            EFI_SECTION_PE32,\r
+ Status = PeiProcessFile (\r
+            EFI_SECTION_TE,\r
             FfsHeader,\r
             &Pe32Data,\r
             NULL\r
             );\r
-\r
   if (EFI_ERROR (Status)) {\r
-    return Status;\r
+    Status = PeiProcessFile (\r
+              EFI_SECTION_PE32,\r
+              FfsHeader,\r
+              &Pe32Data,\r
+              NULL\r
+              );\r
+    \r
+    if (EFI_ERROR (Status)) {\r
+      return Status;\r
+    }\r
   }\r
   //\r
   // Load the PE image from the FFS file\r
@@ -647,7 +655,7 @@ Returns:
   EFI_STATUS                      Status;\r
   UINT8                           *DstBuffer;\r
   UINT8                           *ScratchBuffer;\r
-  UINT32                          DstBufferSize;\r
+  UINT                          DstBufferSize;\r
   UINT32                          ScratchBufferSize;\r
   EFI_COMMON_SECTION_HEADER       *CmpSection;\r
   UINTN                           CmpSectionLength;\r
@@ -736,6 +744,7 @@ Returns:
         DEBUG ((EFI_D_ERROR, "Extract section content failed - %r\n", Status));\r
         return Status;\r
       }\r
+      \r
       //\r
       // Todo check AuthenticationStatus and do the verify\r
       //\r
@@ -754,7 +763,7 @@ Returns:
         Status = UefiDecompressGetInfo (\r
                    (UINT8 *) ((EFI_COMPRESSION_SECTION *) Section + 1),\r
                    (UINT32) SectionLength - sizeof (EFI_COMPRESSION_SECTION),\r
-                   &DstBufferSize,\r
+                   (UINT32 *) &DstBufferSize,\r
                    &ScratchBufferSize\r
                    );\r
         if (EFI_ERROR (Status)) {\r
@@ -958,7 +967,8 @@ CustomDecompressExtractSection (
   EFI_STATUS      Status;\r
   UINT8           *ScratchBuffer;\r
   UINT32          ScratchSize;\r
-  UINT32          SectionLength;  \r
+  UINT32          SectionLength;\r
+  UINT32          DestinationSize;  \r
   \r
   //\r
   // Set authentic value to zero.\r
@@ -975,7 +985,7 @@ CustomDecompressExtractSection (
              (GUID *) ((UINT8 *) InputSection + sizeof (EFI_COMMON_SECTION_HEADER)),\r
              (UINT8 *) InputSection + sizeof (EFI_GUID_DEFINED_SECTION),\r
              SectionLength - sizeof (EFI_GUID_DEFINED_SECTION),\r
-             OutputSize,\r
+             &DestinationSize,\r
              &ScratchSize\r
              );\r
   if (EFI_ERROR (Status)) {\r
@@ -996,6 +1006,7 @@ CustomDecompressExtractSection (
   //\r
   // Allocate destination buffer\r
   //\r
+  *OutputSize   = (UINTN) DestinationSize;\r
   *OutputBuffer = AllocatePages (EFI_SIZE_TO_PAGES (*OutputSize));\r
   if (*OutputBuffer == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r