]> git.proxmox.com Git - mirror_edk2.git/commitdiff
EmbeddedPkg BeagleBoardPkg: move special HOB reuse libraries into platform
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Thu, 30 Nov 2017 14:41:07 +0000 (14:41 +0000)
committerArd Biesheuvel <ard.biesheuvel@linaro.org>
Thu, 30 Nov 2017 16:49:11 +0000 (16:49 +0000)
The BeagleBoard platform uses PeCoffLib and CustomDecompressLib
implementations that invoke the library code that resides in the PrePi
module via pointers exposed via special GUIDed HOBs. This is a nice hack,
but not necessarily something we want to carry in reference code.

So as a first step, move the libraries that expose this reused code into
BeagleBoardPkg, and remove it from EmbeddedPkg.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
BeagleBoardPkg/BeagleBoardPkg.dsc
BeagleBoardPkg/Library/DxeHobPeCoffLib/DxeHobPeCoff.c [new file with mode: 0644]
BeagleBoardPkg/Library/DxeHobPeCoffLib/DxeHobPeCoffLib.inf [new file with mode: 0644]
BeagleBoardPkg/Library/LzmaHobCustomDecompressLib/LzmaHobCustomDecompressLib.c [new file with mode: 0644]
BeagleBoardPkg/Library/LzmaHobCustomDecompressLib/LzmaHobCustomDecompressLib.inf [new file with mode: 0644]
EmbeddedPkg/EmbeddedPkg.dsc
EmbeddedPkg/Library/DxeHobPeCoffLib/DxeHobPeCoff.c [deleted file]
EmbeddedPkg/Library/DxeHobPeCoffLib/DxeHobPeCoffLib.inf [deleted file]
EmbeddedPkg/Library/LzmaHobCustomDecompressLib/LzmaHobCustomDecompressLib.c [deleted file]
EmbeddedPkg/Library/LzmaHobCustomDecompressLib/LzmaHobCustomDecompressLib.inf [deleted file]

index 2837ef3c0639f8a54072707c356c0ee1dfaf418a..f74e583999895c7bbb9c58eef5a1f4ae454fcfbd 100644 (file)
   UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf\r
   DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf\r
 #  PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf\r
-  PeCoffLib|EmbeddedPkg/Library/DxeHobPeCoffLib/DxeHobPeCoffLib.inf\r
+  PeCoffLib|BeagleBoardPkg/Library/DxeHobPeCoffLib/DxeHobPeCoffLib.inf\r
 \r
   PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf\r
 \r
   ReportStatusCodeLib|IntelFrameworkModulePkg/Library/DxeReportStatusCodeLibFramework/DxeReportStatusCodeLib.inf\r
   CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf\r
 #  PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf\r
-  PeCoffLib|EmbeddedPkg/Library/DxeHobPeCoffLib/DxeHobPeCoffLib.inf\r
+  PeCoffLib|BeagleBoardPkg/Library/DxeHobPeCoffLib/DxeHobPeCoffLib.inf\r
 \r
 \r
 [LibraryClasses.ARM]\r
     <LibraryClasses>\r
       PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf\r
       NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf\r
-      NULL|EmbeddedPkg/Library/LzmaHobCustomDecompressLib/LzmaHobCustomDecompressLib.inf\r
+      NULL|BeagleBoardPkg/Library/LzmaHobCustomDecompressLib/LzmaHobCustomDecompressLib.inf\r
   }\r
 \r
   ArmPkg/Drivers/CpuDxe/CpuDxe.inf\r
diff --git a/BeagleBoardPkg/Library/DxeHobPeCoffLib/DxeHobPeCoff.c b/BeagleBoardPkg/Library/DxeHobPeCoffLib/DxeHobPeCoff.c
new file mode 100644 (file)
index 0000000..bcc6948
--- /dev/null
@@ -0,0 +1,288 @@
+/** @file\r
+  PE/COFF Loader Library implementation that wraps a protocol passed up from\r
+  SEC/PEI via a HOB. This is done to save space.\r
+\r
+  Copyright (c) 2010, 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
+\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
+\r
+**/\r
+\r
+#include <PiDxe.h>\r
+#include <Library/DebugLib.h>\r
+#include <Library/HobLib.h>\r
+\r
+#include <Protocol/PeCoffLoader.h>\r
+\r
+\r
+PE_COFF_LOADER_PROTOCOL  *gPeCoffLoader = NULL;\r
+\r
+\r
+/**\r
+  Retrieves information about a PE/COFF image.\r
+\r
+  Computes the PeCoffHeaderOffset, IsTeImage, ImageType, ImageAddress, ImageSize,\r
+  DestinationAddress, RelocationsStripped, SectionAlignment, SizeOfHeaders, and\r
+  DebugDirectoryEntryRva fields of the ImageContext structure.\r
+  If ImageContext is NULL, then return RETURN_INVALID_PARAMETER.\r
+  If the PE/COFF image accessed through the ImageRead service in the ImageContext\r
+  structure is not a supported PE/COFF image type, then return RETURN_UNSUPPORTED.\r
+  If any errors occur while computing the fields of ImageContext,\r
+  then the error status is returned in the ImageError field of ImageContext.\r
+  If the image is a TE image, then SectionAlignment is set to 0.\r
+  The ImageRead and Handle fields of ImageContext structure must be valid prior\r
+  to invoking this service.\r
+\r
+  @param  ImageContext              Pointer to the image context structure that describes the PE/COFF\r
+                                    image that needs to be examined by this function.\r
+\r
+  @retval RETURN_SUCCESS            The information on the PE/COFF image was collected.\r
+  @retval RETURN_INVALID_PARAMETER  ImageContext is NULL.\r
+  @retval RETURN_UNSUPPORTED        The PE/COFF image is not supported.\r
+\r
+**/\r
+RETURN_STATUS\r
+EFIAPI\r
+PeCoffLoaderGetImageInfo (\r
+  IN OUT PE_COFF_LOADER_IMAGE_CONTEXT  *ImageContext\r
+  )\r
+{\r
+  return gPeCoffLoader->GetImageInfo (ImageContext);\r
+}\r
+\r
+\r
+/**\r
+  Applies relocation fixups to a PE/COFF image that was loaded with PeCoffLoaderLoadImage().\r
+\r
+  If the DestinationAddress field of ImageContext is 0, then use the ImageAddress field of\r
+  ImageContext as the relocation base address.  Otherwise, use the DestinationAddress field\r
+  of ImageContext as the relocation base address.  The caller must allocate the relocation\r
+  fixup log buffer and fill in the FixupData field of ImageContext prior to calling this function.\r
+\r
+  The ImageRead, Handle, PeCoffHeaderOffset, IsTeImage, Machine, ImageType, ImageAddress,\r
+  ImageSize, DestinationAddress, RelocationsStripped, SectionAlignment, SizeOfHeaders,\r
+  DebugDirectoryEntryRva, EntryPoint, FixupDataSize, CodeView, PdbPointer, and FixupData of\r
+  the ImageContext structure must be valid prior to invoking this service.\r
+\r
+  If ImageContext is NULL, then ASSERT().\r
+\r
+  Note that if the platform does not maintain coherency between the instruction cache(s) and the data\r
+  cache(s) in hardware, then the caller is responsible for performing cache maintenance operations\r
+  prior to transferring control to a PE/COFF image that is loaded using this library.\r
+\r
+  @param  ImageContext        Pointer to the image context structure that describes the PE/COFF\r
+                              image that is being relocated.\r
+\r
+  @retval RETURN_SUCCESS      The PE/COFF image was relocated.\r
+                              Extended status information is in the ImageError field of ImageContext.\r
+  @retval RETURN_LOAD_ERROR   The image in not a valid PE/COFF image.\r
+                              Extended status information is in the ImageError field of ImageContext.\r
+  @retval RETURN_UNSUPPORTED  A relocation record type is not supported.\r
+                              Extended status information is in the ImageError field of ImageContext.\r
+\r
+**/\r
+RETURN_STATUS\r
+EFIAPI\r
+PeCoffLoaderRelocateImage (\r
+  IN OUT PE_COFF_LOADER_IMAGE_CONTEXT  *ImageContext\r
+  )\r
+{\r
+  return gPeCoffLoader->RelocateImage (ImageContext);\r
+}\r
+\r
+/**\r
+  Loads a PE/COFF image into memory.\r
+\r
+  Loads the PE/COFF image accessed through the ImageRead service of ImageContext into the buffer\r
+  specified by the ImageAddress and ImageSize fields of ImageContext.  The caller must allocate\r
+  the load buffer and fill in the ImageAddress and ImageSize fields prior to calling this function.\r
+  The EntryPoint, FixupDataSize, CodeView, PdbPointer and HiiResourceData fields of ImageContext are computed.\r
+  The ImageRead, Handle, PeCoffHeaderOffset, IsTeImage, Machine, ImageType, ImageAddress, ImageSize,\r
+  DestinationAddress, RelocationsStripped, SectionAlignment, SizeOfHeaders, and DebugDirectoryEntryRva\r
+  fields of the ImageContext structure must be valid prior to invoking this service.\r
+\r
+  If ImageContext is NULL, then ASSERT().\r
+\r
+  Note that if the platform does not maintain coherency between the instruction cache(s) and the data\r
+  cache(s) in hardware, then the caller is responsible for performing cache maintenance operations\r
+  prior to transferring control to a PE/COFF image that is loaded using this library.\r
+\r
+  @param  ImageContext              Pointer to the image context structure that describes the PE/COFF\r
+                                    image that is being loaded.\r
+\r
+  @retval RETURN_SUCCESS            The PE/COFF image was loaded into the buffer specified by\r
+                                    the ImageAddress and ImageSize fields of ImageContext.\r
+                                    Extended status information is in the ImageError field of ImageContext.\r
+  @retval RETURN_BUFFER_TOO_SMALL   The caller did not provide a large enough buffer.\r
+                                    Extended status information is in the ImageError field of ImageContext.\r
+  @retval RETURN_LOAD_ERROR         The PE/COFF image is an EFI Runtime image with no relocations.\r
+                                    Extended status information is in the ImageError field of ImageContext.\r
+  @retval RETURN_INVALID_PARAMETER  The image address is invalid.\r
+                                    Extended status information is in the ImageError field of ImageContext.\r
+\r
+**/\r
+RETURN_STATUS\r
+EFIAPI\r
+PeCoffLoaderLoadImage (\r
+  IN OUT PE_COFF_LOADER_IMAGE_CONTEXT  *ImageContext\r
+  )\r
+{\r
+  return gPeCoffLoader->LoadImage (ImageContext);\r
+}\r
+\r
+\r
+\r
+/**\r
+  Reads contents of a PE/COFF image from a buffer in system memory.\r
+\r
+  This is the default implementation of a PE_COFF_LOADER_READ_FILE function\r
+  that assumes FileHandle pointer to the beginning of a PE/COFF image.\r
+  This function reads contents of the PE/COFF image that starts at the system memory\r
+  address specified by FileHandle. The read operation copies ReadSize bytes from the\r
+  PE/COFF image starting at byte offset FileOffset into the buffer specified by Buffer.\r
+  The size of the buffer actually read is returned in ReadSize.\r
+\r
+  If FileHandle is NULL, then ASSERT().\r
+  If ReadSize is NULL, then ASSERT().\r
+  If Buffer is NULL, then ASSERT().\r
+\r
+  @param  FileHandle        Pointer to base of the input stream\r
+  @param  FileOffset        Offset into the PE/COFF image to begin the read operation.\r
+  @param  ReadSize          On input, the size in bytes of the requested read operation.\r
+                            On output, the number of bytes actually read.\r
+  @param  Buffer            Output buffer that contains the data read from the PE/COFF image.\r
+\r
+  @retval RETURN_SUCCESS    Data is read from FileOffset from the Handle into\r
+                            the buffer.\r
+**/\r
+RETURN_STATUS\r
+EFIAPI\r
+PeCoffLoaderImageReadFromMemory (\r
+  IN     VOID    *FileHandle,\r
+  IN     UINTN   FileOffset,\r
+  IN OUT UINTN   *ReadSize,\r
+  OUT    VOID    *Buffer\r
+  )\r
+{\r
+  return gPeCoffLoader->ReadFromMemory (\r
+                          FileHandle,\r
+                          FileOffset,\r
+                          ReadSize,\r
+                          Buffer\r
+                          );\r
+\r
+}\r
+\r
+\r
+\r
+/**\r
+  Reapply fixups on a fixed up PE32/PE32+ image to allow virutal calling at EFI\r
+  runtime.\r
+\r
+  This function reapplies relocation fixups to the PE/COFF image specified by ImageBase\r
+  and ImageSize so the image will execute correctly when the PE/COFF image is mapped\r
+  to the address specified by VirtualImageBase. RelocationData must be identical\r
+  to the FiuxupData buffer from the PE_COFF_LOADER_IMAGE_CONTEXT structure\r
+  after this PE/COFF image was relocated with PeCoffLoaderRelocateImage().\r
+\r
+  Note that if the platform does not maintain coherency between the instruction cache(s) and the data\r
+  cache(s) in hardware, then the caller is responsible for performing cache maintenance operations\r
+  prior to transferring control to a PE/COFF image that is loaded using this library.\r
+\r
+  @param  ImageBase          Base address of a PE/COFF image that has been loaded\r
+                             and relocated into system memory.\r
+  @param  VirtImageBase      The request virtual address that the PE/COFF image is to\r
+                             be fixed up for.\r
+  @param  ImageSize          The size, in bytes, of the PE/COFF image.\r
+  @param  RelocationData     A pointer to the relocation data that was collected when the PE/COFF\r
+                             image was relocated using PeCoffLoaderRelocateImage().\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+PeCoffLoaderRelocateImageForRuntime (\r
+  IN  PHYSICAL_ADDRESS        ImageBase,\r
+  IN  PHYSICAL_ADDRESS        VirtImageBase,\r
+  IN  UINTN                   ImageSize,\r
+  IN  VOID                    *RelocationData\r
+  )\r
+{\r
+  return gPeCoffLoader->RelocateImageForRuntime (\r
+                          ImageBase,\r
+                          VirtImageBase,\r
+                          ImageSize,\r
+                          RelocationData\r
+                          );\r
+}\r
+\r
+\r
+/**\r
+  Unloads a loaded PE/COFF image from memory and releases its taken resource.\r
+  Releases any environment specific resources that were allocated when the image\r
+  specified by ImageContext was loaded using PeCoffLoaderLoadImage().\r
+\r
+  For NT32 emulator, the PE/COFF image loaded by system needs to release.\r
+  For real platform, the PE/COFF image loaded by Core doesn't needs to be unloaded,\r
+  this function can simply return RETURN_SUCCESS.\r
+\r
+  If ImageContext is NULL, then ASSERT().\r
+\r
+  @param  ImageContext              Pointer to the image context structure that describes the PE/COFF\r
+                                    image to be unloaded.\r
+\r
+  @retval RETURN_SUCCESS            The PE/COFF image was unloaded successfully.\r
+**/\r
+RETURN_STATUS\r
+EFIAPI\r
+PeCoffLoaderUnloadImage (\r
+  IN OUT PE_COFF_LOADER_IMAGE_CONTEXT  *ImageContext\r
+  )\r
+{\r
+  return gPeCoffLoader->UnloadImage (ImageContext);\r
+}\r
+\r
+typedef struct {\r
+  EFI_HOB_GUID_TYPE             Hob;\r
+  VOID                          *Interface;\r
+} PROTOCOL_HOB;\r
+\r
+\r
+/**\r
+  The constructor function caches the pointer of DXE Services Table.\r
+\r
+  The constructor function caches the pointer of DXE Services Table.\r
+  It will ASSERT() if that operation fails.\r
+  It will ASSERT() if the pointer of DXE Services Table is NULL.\r
+  It will always return EFI_SUCCESS.\r
+\r
+  @param  ImageHandle   The firmware allocated handle for the EFI image.\r
+  @param  SystemTable   A pointer to the EFI System Table.\r
+\r
+  @retval EFI_SUCCESS   The constructor always returns EFI_SUCCESS.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+DxeHobPeCoffLibConstructor (\r
+  IN EFI_HANDLE        ImageHandle,\r
+  IN EFI_SYSTEM_TABLE  *SystemTable\r
+  )\r
+{\r
+  PROTOCOL_HOB   *Hob;\r
+\r
+  Hob = GetFirstGuidHob (&gPeCoffLoaderProtocolGuid);\r
+  if (Hob == NULL) {\r
+    return EFI_NOT_FOUND;\r
+  }\r
+\r
+  gPeCoffLoader = Hob->Interface;\r
+  return EFI_SUCCESS;\r
+}\r
+\r
+\r
diff --git a/BeagleBoardPkg/Library/DxeHobPeCoffLib/DxeHobPeCoffLib.inf b/BeagleBoardPkg/Library/DxeHobPeCoffLib/DxeHobPeCoffLib.inf
new file mode 100644 (file)
index 0000000..d6eb1cf
--- /dev/null
@@ -0,0 +1,44 @@
+#/** @file\r
+#  PE/COFF Loader Library implementation that wraps a protocol passed up from\r
+#  SEC/PEI via a HOB. This is done to save space.\r
+#\r
+#  Copyright (c) 2010, 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
+#  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
+#\r
+#\r
+#**/\r
+\r
+[Defines]\r
+  INF_VERSION                    = 0x00010005\r
+  BASE_NAME                      = DxeHobPeCoffLib\r
+  FILE_GUID                      = 671C6FD7-99FB-4EE3-B640-4B1D463BC3B5\r
+  MODULE_TYPE                    = DXE_DRIVER\r
+  VERSION_STRING                 = 1.0\r
+  LIBRARY_CLASS                  = PeCoffLib\r
+  CONSTRUCTOR                    = DxeHobPeCoffLibConstructor\r
+\r
+\r
+#\r
+#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM\r
+#\r
+\r
+[Sources.common]\r
+  DxeHobPeCoff.c\r
+\r
+\r
+[Packages]\r
+  MdePkg/MdePkg.dec\r
+  EmbeddedPkg/EmbeddedPkg.dec\r
+\r
+[LibraryClasses]\r
+  DebugLib\r
+  HobLib\r
+\r
+[Protocols]\r
+  gPeCoffLoaderProtocolGuid\r
diff --git a/BeagleBoardPkg/Library/LzmaHobCustomDecompressLib/LzmaHobCustomDecompressLib.c b/BeagleBoardPkg/Library/LzmaHobCustomDecompressLib/LzmaHobCustomDecompressLib.c
new file mode 100644 (file)
index 0000000..2a91a98
--- /dev/null
@@ -0,0 +1,50 @@
+/** @file\r
+  LZMA Decompress GUIDed Section Extraction Library.\r
+  It wraps Lzma decompress interfaces to GUIDed Section Extraction interfaces\r
+  and registers them into GUIDed handler table.\r
+\r
+  Copyright (c) 2009, Intel Corporation. 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
+\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
+\r
+**/\r
+\r
+#include <PiDxe.h>\r
+#include <Library/HobLib.h>\r
+#include <Library/ExtractGuidedSectionLib.h>\r
+\r
+#include <Guid/ExtractSection.h>\r
+#include <Guid/LzmaDecompress.h>\r
+\r
+\r
+/**\r
+  Register LzmaDecompress and LzmaDecompressGetInfo handlers with LzmaCustomerDecompressGuid.\r
+\r
+  @retval  RETURN_SUCCESS            Register successfully.\r
+  @retval  RETURN_OUT_OF_RESOURCES   No enough memory to store this handler.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+LzmaDecompressLibConstructor (\r
+  )\r
+{\r
+  EXTRACT_SECTION_HOB   *Hob;\r
+\r
+  Hob = GetFirstGuidHob (&gLzmaCustomDecompressGuid);\r
+  if (Hob == NULL) {\r
+    return EFI_NOT_FOUND;\r
+  }\r
+\r
+  // Locate Guided Hob\r
+\r
+  return ExtractGuidedSectionRegisterHandlers (\r
+          &gLzmaCustomDecompressGuid,\r
+          Hob->Data.SectionGetInfo,\r
+          Hob->Data.SectionExtraction\r
+          );\r
+}\r
diff --git a/BeagleBoardPkg/Library/LzmaHobCustomDecompressLib/LzmaHobCustomDecompressLib.inf b/BeagleBoardPkg/Library/LzmaHobCustomDecompressLib/LzmaHobCustomDecompressLib.inf
new file mode 100644 (file)
index 0000000..d64f5a3
--- /dev/null
@@ -0,0 +1,50 @@
+#/** @file\r
+#  LzmaCustomDecompressLib produces LZMA custom decompression algorithm.\r
+#\r
+#  It is based on the LZMA SDK 4.65.\r
+#  LZMA SDK 4.65 was placed in the public domain on 2009-02-03.\r
+#  It was released on the http://www.7-zip.org/sdk.html website.\r
+#\r
+#  Copyright (c) 2009, Intel Corporation. All rights reserved.<BR>\r
+#\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
+#  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
+#\r
+#\r
+#**/\r
+\r
+[Defines]\r
+  INF_VERSION                    = 0x00010005\r
+  BASE_NAME                      = LzmaDecompressLib\r
+  FILE_GUID                      = 35194660-7421-44ad-9636-e44885f092d1\r
+  MODULE_TYPE                    = BASE\r
+  VERSION_STRING                 = 1.0\r
+  LIBRARY_CLASS                  = NULL\r
+  CONSTRUCTOR                    = LzmaDecompressLibConstructor\r
+\r
+#\r
+# The following information is for reference only and not required by the build tools.\r
+#\r
+#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC\r
+#\r
+\r
+[Sources.common]\r
+  LzmaHobCustomDecompressLib.c\r
+\r
+[Packages]\r
+  MdePkg/MdePkg.dec\r
+  MdeModulePkg/MdeModulePkg.dec\r
+  EmbeddedPkg/EmbeddedPkg.dec\r
+\r
+[Guids]\r
+  gLzmaCustomDecompressGuid  ## PRODUCED  ## GUID specifies LZMA custom decompress algorithm.\r
+\r
+[LibraryClasses]\r
+  DebugLib\r
+  HobLib\r
+  ExtractGuidedSectionLib\r
+\r
index 073a1568844ce842c35593517ac39a1714cef34a..af965c2036cb2565c23a882254633adaae17728f 100644 (file)
   EmbeddedPkg/Library/PrePiLib/PrePiLib.inf\r
   EmbeddedPkg/Library/TemplateResetSystemLib/TemplateResetSystemLib.inf\r
   EmbeddedPkg/Library/TemplateRealTimeClockLib/TemplateRealTimeClockLib.inf\r
-  EmbeddedPkg/Library/LzmaHobCustomDecompressLib/LzmaHobCustomDecompressLib.inf\r
   EmbeddedPkg/Library/CoherentDmaLib/CoherentDmaLib.inf\r
   EmbeddedPkg/Library/NonCoherentDmaLib/NonCoherentDmaLib.inf\r
   EmbeddedPkg/Library/DxeDtPlatformDtbLoaderLibDefault/DxeDtPlatformDtbLoaderLibDefault.inf\r
 \r
   EmbeddedPkg/Library/AcpiLib/AcpiLib.inf\r
   EmbeddedPkg/Library/DebugAgentTimerLibNull/DebugAgentTimerLibNull.inf\r
-  EmbeddedPkg/Library/DxeHobPeCoffLib/DxeHobPeCoffLib.inf\r
   EmbeddedPkg/Library/FdtLib/FdtLib.inf\r
   EmbeddedPkg/Library/GdbDebugAgent/GdbDebugAgent.inf\r
   EmbeddedPkg/Library/PrePiHobLib/PrePiHobLib.inf\r
diff --git a/EmbeddedPkg/Library/DxeHobPeCoffLib/DxeHobPeCoff.c b/EmbeddedPkg/Library/DxeHobPeCoffLib/DxeHobPeCoff.c
deleted file mode 100644 (file)
index bcc6948..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-/** @file\r
-  PE/COFF Loader Library implementation that wraps a protocol passed up from\r
-  SEC/PEI via a HOB. This is done to save space.\r
-\r
-  Copyright (c) 2010, 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
-\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
-\r
-**/\r
-\r
-#include <PiDxe.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/HobLib.h>\r
-\r
-#include <Protocol/PeCoffLoader.h>\r
-\r
-\r
-PE_COFF_LOADER_PROTOCOL  *gPeCoffLoader = NULL;\r
-\r
-\r
-/**\r
-  Retrieves information about a PE/COFF image.\r
-\r
-  Computes the PeCoffHeaderOffset, IsTeImage, ImageType, ImageAddress, ImageSize,\r
-  DestinationAddress, RelocationsStripped, SectionAlignment, SizeOfHeaders, and\r
-  DebugDirectoryEntryRva fields of the ImageContext structure.\r
-  If ImageContext is NULL, then return RETURN_INVALID_PARAMETER.\r
-  If the PE/COFF image accessed through the ImageRead service in the ImageContext\r
-  structure is not a supported PE/COFF image type, then return RETURN_UNSUPPORTED.\r
-  If any errors occur while computing the fields of ImageContext,\r
-  then the error status is returned in the ImageError field of ImageContext.\r
-  If the image is a TE image, then SectionAlignment is set to 0.\r
-  The ImageRead and Handle fields of ImageContext structure must be valid prior\r
-  to invoking this service.\r
-\r
-  @param  ImageContext              Pointer to the image context structure that describes the PE/COFF\r
-                                    image that needs to be examined by this function.\r
-\r
-  @retval RETURN_SUCCESS            The information on the PE/COFF image was collected.\r
-  @retval RETURN_INVALID_PARAMETER  ImageContext is NULL.\r
-  @retval RETURN_UNSUPPORTED        The PE/COFF image is not supported.\r
-\r
-**/\r
-RETURN_STATUS\r
-EFIAPI\r
-PeCoffLoaderGetImageInfo (\r
-  IN OUT PE_COFF_LOADER_IMAGE_CONTEXT  *ImageContext\r
-  )\r
-{\r
-  return gPeCoffLoader->GetImageInfo (ImageContext);\r
-}\r
-\r
-\r
-/**\r
-  Applies relocation fixups to a PE/COFF image that was loaded with PeCoffLoaderLoadImage().\r
-\r
-  If the DestinationAddress field of ImageContext is 0, then use the ImageAddress field of\r
-  ImageContext as the relocation base address.  Otherwise, use the DestinationAddress field\r
-  of ImageContext as the relocation base address.  The caller must allocate the relocation\r
-  fixup log buffer and fill in the FixupData field of ImageContext prior to calling this function.\r
-\r
-  The ImageRead, Handle, PeCoffHeaderOffset, IsTeImage, Machine, ImageType, ImageAddress,\r
-  ImageSize, DestinationAddress, RelocationsStripped, SectionAlignment, SizeOfHeaders,\r
-  DebugDirectoryEntryRva, EntryPoint, FixupDataSize, CodeView, PdbPointer, and FixupData of\r
-  the ImageContext structure must be valid prior to invoking this service.\r
-\r
-  If ImageContext is NULL, then ASSERT().\r
-\r
-  Note that if the platform does not maintain coherency between the instruction cache(s) and the data\r
-  cache(s) in hardware, then the caller is responsible for performing cache maintenance operations\r
-  prior to transferring control to a PE/COFF image that is loaded using this library.\r
-\r
-  @param  ImageContext        Pointer to the image context structure that describes the PE/COFF\r
-                              image that is being relocated.\r
-\r
-  @retval RETURN_SUCCESS      The PE/COFF image was relocated.\r
-                              Extended status information is in the ImageError field of ImageContext.\r
-  @retval RETURN_LOAD_ERROR   The image in not a valid PE/COFF image.\r
-                              Extended status information is in the ImageError field of ImageContext.\r
-  @retval RETURN_UNSUPPORTED  A relocation record type is not supported.\r
-                              Extended status information is in the ImageError field of ImageContext.\r
-\r
-**/\r
-RETURN_STATUS\r
-EFIAPI\r
-PeCoffLoaderRelocateImage (\r
-  IN OUT PE_COFF_LOADER_IMAGE_CONTEXT  *ImageContext\r
-  )\r
-{\r
-  return gPeCoffLoader->RelocateImage (ImageContext);\r
-}\r
-\r
-/**\r
-  Loads a PE/COFF image into memory.\r
-\r
-  Loads the PE/COFF image accessed through the ImageRead service of ImageContext into the buffer\r
-  specified by the ImageAddress and ImageSize fields of ImageContext.  The caller must allocate\r
-  the load buffer and fill in the ImageAddress and ImageSize fields prior to calling this function.\r
-  The EntryPoint, FixupDataSize, CodeView, PdbPointer and HiiResourceData fields of ImageContext are computed.\r
-  The ImageRead, Handle, PeCoffHeaderOffset, IsTeImage, Machine, ImageType, ImageAddress, ImageSize,\r
-  DestinationAddress, RelocationsStripped, SectionAlignment, SizeOfHeaders, and DebugDirectoryEntryRva\r
-  fields of the ImageContext structure must be valid prior to invoking this service.\r
-\r
-  If ImageContext is NULL, then ASSERT().\r
-\r
-  Note that if the platform does not maintain coherency between the instruction cache(s) and the data\r
-  cache(s) in hardware, then the caller is responsible for performing cache maintenance operations\r
-  prior to transferring control to a PE/COFF image that is loaded using this library.\r
-\r
-  @param  ImageContext              Pointer to the image context structure that describes the PE/COFF\r
-                                    image that is being loaded.\r
-\r
-  @retval RETURN_SUCCESS            The PE/COFF image was loaded into the buffer specified by\r
-                                    the ImageAddress and ImageSize fields of ImageContext.\r
-                                    Extended status information is in the ImageError field of ImageContext.\r
-  @retval RETURN_BUFFER_TOO_SMALL   The caller did not provide a large enough buffer.\r
-                                    Extended status information is in the ImageError field of ImageContext.\r
-  @retval RETURN_LOAD_ERROR         The PE/COFF image is an EFI Runtime image with no relocations.\r
-                                    Extended status information is in the ImageError field of ImageContext.\r
-  @retval RETURN_INVALID_PARAMETER  The image address is invalid.\r
-                                    Extended status information is in the ImageError field of ImageContext.\r
-\r
-**/\r
-RETURN_STATUS\r
-EFIAPI\r
-PeCoffLoaderLoadImage (\r
-  IN OUT PE_COFF_LOADER_IMAGE_CONTEXT  *ImageContext\r
-  )\r
-{\r
-  return gPeCoffLoader->LoadImage (ImageContext);\r
-}\r
-\r
-\r
-\r
-/**\r
-  Reads contents of a PE/COFF image from a buffer in system memory.\r
-\r
-  This is the default implementation of a PE_COFF_LOADER_READ_FILE function\r
-  that assumes FileHandle pointer to the beginning of a PE/COFF image.\r
-  This function reads contents of the PE/COFF image that starts at the system memory\r
-  address specified by FileHandle. The read operation copies ReadSize bytes from the\r
-  PE/COFF image starting at byte offset FileOffset into the buffer specified by Buffer.\r
-  The size of the buffer actually read is returned in ReadSize.\r
-\r
-  If FileHandle is NULL, then ASSERT().\r
-  If ReadSize is NULL, then ASSERT().\r
-  If Buffer is NULL, then ASSERT().\r
-\r
-  @param  FileHandle        Pointer to base of the input stream\r
-  @param  FileOffset        Offset into the PE/COFF image to begin the read operation.\r
-  @param  ReadSize          On input, the size in bytes of the requested read operation.\r
-                            On output, the number of bytes actually read.\r
-  @param  Buffer            Output buffer that contains the data read from the PE/COFF image.\r
-\r
-  @retval RETURN_SUCCESS    Data is read from FileOffset from the Handle into\r
-                            the buffer.\r
-**/\r
-RETURN_STATUS\r
-EFIAPI\r
-PeCoffLoaderImageReadFromMemory (\r
-  IN     VOID    *FileHandle,\r
-  IN     UINTN   FileOffset,\r
-  IN OUT UINTN   *ReadSize,\r
-  OUT    VOID    *Buffer\r
-  )\r
-{\r
-  return gPeCoffLoader->ReadFromMemory (\r
-                          FileHandle,\r
-                          FileOffset,\r
-                          ReadSize,\r
-                          Buffer\r
-                          );\r
-\r
-}\r
-\r
-\r
-\r
-/**\r
-  Reapply fixups on a fixed up PE32/PE32+ image to allow virutal calling at EFI\r
-  runtime.\r
-\r
-  This function reapplies relocation fixups to the PE/COFF image specified by ImageBase\r
-  and ImageSize so the image will execute correctly when the PE/COFF image is mapped\r
-  to the address specified by VirtualImageBase. RelocationData must be identical\r
-  to the FiuxupData buffer from the PE_COFF_LOADER_IMAGE_CONTEXT structure\r
-  after this PE/COFF image was relocated with PeCoffLoaderRelocateImage().\r
-\r
-  Note that if the platform does not maintain coherency between the instruction cache(s) and the data\r
-  cache(s) in hardware, then the caller is responsible for performing cache maintenance operations\r
-  prior to transferring control to a PE/COFF image that is loaded using this library.\r
-\r
-  @param  ImageBase          Base address of a PE/COFF image that has been loaded\r
-                             and relocated into system memory.\r
-  @param  VirtImageBase      The request virtual address that the PE/COFF image is to\r
-                             be fixed up for.\r
-  @param  ImageSize          The size, in bytes, of the PE/COFF image.\r
-  @param  RelocationData     A pointer to the relocation data that was collected when the PE/COFF\r
-                             image was relocated using PeCoffLoaderRelocateImage().\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-PeCoffLoaderRelocateImageForRuntime (\r
-  IN  PHYSICAL_ADDRESS        ImageBase,\r
-  IN  PHYSICAL_ADDRESS        VirtImageBase,\r
-  IN  UINTN                   ImageSize,\r
-  IN  VOID                    *RelocationData\r
-  )\r
-{\r
-  return gPeCoffLoader->RelocateImageForRuntime (\r
-                          ImageBase,\r
-                          VirtImageBase,\r
-                          ImageSize,\r
-                          RelocationData\r
-                          );\r
-}\r
-\r
-\r
-/**\r
-  Unloads a loaded PE/COFF image from memory and releases its taken resource.\r
-  Releases any environment specific resources that were allocated when the image\r
-  specified by ImageContext was loaded using PeCoffLoaderLoadImage().\r
-\r
-  For NT32 emulator, the PE/COFF image loaded by system needs to release.\r
-  For real platform, the PE/COFF image loaded by Core doesn't needs to be unloaded,\r
-  this function can simply return RETURN_SUCCESS.\r
-\r
-  If ImageContext is NULL, then ASSERT().\r
-\r
-  @param  ImageContext              Pointer to the image context structure that describes the PE/COFF\r
-                                    image to be unloaded.\r
-\r
-  @retval RETURN_SUCCESS            The PE/COFF image was unloaded successfully.\r
-**/\r
-RETURN_STATUS\r
-EFIAPI\r
-PeCoffLoaderUnloadImage (\r
-  IN OUT PE_COFF_LOADER_IMAGE_CONTEXT  *ImageContext\r
-  )\r
-{\r
-  return gPeCoffLoader->UnloadImage (ImageContext);\r
-}\r
-\r
-typedef struct {\r
-  EFI_HOB_GUID_TYPE             Hob;\r
-  VOID                          *Interface;\r
-} PROTOCOL_HOB;\r
-\r
-\r
-/**\r
-  The constructor function caches the pointer of DXE Services Table.\r
-\r
-  The constructor function caches the pointer of DXE Services Table.\r
-  It will ASSERT() if that operation fails.\r
-  It will ASSERT() if the pointer of DXE Services Table is NULL.\r
-  It will always return EFI_SUCCESS.\r
-\r
-  @param  ImageHandle   The firmware allocated handle for the EFI image.\r
-  @param  SystemTable   A pointer to the EFI System Table.\r
-\r
-  @retval EFI_SUCCESS   The constructor always returns EFI_SUCCESS.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-DxeHobPeCoffLibConstructor (\r
-  IN EFI_HANDLE        ImageHandle,\r
-  IN EFI_SYSTEM_TABLE  *SystemTable\r
-  )\r
-{\r
-  PROTOCOL_HOB   *Hob;\r
-\r
-  Hob = GetFirstGuidHob (&gPeCoffLoaderProtocolGuid);\r
-  if (Hob == NULL) {\r
-    return EFI_NOT_FOUND;\r
-  }\r
-\r
-  gPeCoffLoader = Hob->Interface;\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-\r
diff --git a/EmbeddedPkg/Library/DxeHobPeCoffLib/DxeHobPeCoffLib.inf b/EmbeddedPkg/Library/DxeHobPeCoffLib/DxeHobPeCoffLib.inf
deleted file mode 100644 (file)
index d6eb1cf..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#/** @file\r
-#  PE/COFF Loader Library implementation that wraps a protocol passed up from\r
-#  SEC/PEI via a HOB. This is done to save space.\r
-#\r
-#  Copyright (c) 2010, 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
-#  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
-#\r
-#\r
-#**/\r
-\r
-[Defines]\r
-  INF_VERSION                    = 0x00010005\r
-  BASE_NAME                      = DxeHobPeCoffLib\r
-  FILE_GUID                      = 671C6FD7-99FB-4EE3-B640-4B1D463BC3B5\r
-  MODULE_TYPE                    = DXE_DRIVER\r
-  VERSION_STRING                 = 1.0\r
-  LIBRARY_CLASS                  = PeCoffLib\r
-  CONSTRUCTOR                    = DxeHobPeCoffLibConstructor\r
-\r
-\r
-#\r
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM\r
-#\r
-\r
-[Sources.common]\r
-  DxeHobPeCoff.c\r
-\r
-\r
-[Packages]\r
-  MdePkg/MdePkg.dec\r
-  EmbeddedPkg/EmbeddedPkg.dec\r
-\r
-[LibraryClasses]\r
-  DebugLib\r
-  HobLib\r
-\r
-[Protocols]\r
-  gPeCoffLoaderProtocolGuid\r
diff --git a/EmbeddedPkg/Library/LzmaHobCustomDecompressLib/LzmaHobCustomDecompressLib.c b/EmbeddedPkg/Library/LzmaHobCustomDecompressLib/LzmaHobCustomDecompressLib.c
deleted file mode 100644 (file)
index 2a91a98..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/** @file\r
-  LZMA Decompress GUIDed Section Extraction Library.\r
-  It wraps Lzma decompress interfaces to GUIDed Section Extraction interfaces\r
-  and registers them into GUIDed handler table.\r
-\r
-  Copyright (c) 2009, Intel Corporation. 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
-\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
-\r
-**/\r
-\r
-#include <PiDxe.h>\r
-#include <Library/HobLib.h>\r
-#include <Library/ExtractGuidedSectionLib.h>\r
-\r
-#include <Guid/ExtractSection.h>\r
-#include <Guid/LzmaDecompress.h>\r
-\r
-\r
-/**\r
-  Register LzmaDecompress and LzmaDecompressGetInfo handlers with LzmaCustomerDecompressGuid.\r
-\r
-  @retval  RETURN_SUCCESS            Register successfully.\r
-  @retval  RETURN_OUT_OF_RESOURCES   No enough memory to store this handler.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-LzmaDecompressLibConstructor (\r
-  )\r
-{\r
-  EXTRACT_SECTION_HOB   *Hob;\r
-\r
-  Hob = GetFirstGuidHob (&gLzmaCustomDecompressGuid);\r
-  if (Hob == NULL) {\r
-    return EFI_NOT_FOUND;\r
-  }\r
-\r
-  // Locate Guided Hob\r
-\r
-  return ExtractGuidedSectionRegisterHandlers (\r
-          &gLzmaCustomDecompressGuid,\r
-          Hob->Data.SectionGetInfo,\r
-          Hob->Data.SectionExtraction\r
-          );\r
-}\r
diff --git a/EmbeddedPkg/Library/LzmaHobCustomDecompressLib/LzmaHobCustomDecompressLib.inf b/EmbeddedPkg/Library/LzmaHobCustomDecompressLib/LzmaHobCustomDecompressLib.inf
deleted file mode 100644 (file)
index d64f5a3..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#/** @file\r
-#  LzmaCustomDecompressLib produces LZMA custom decompression algorithm.\r
-#\r
-#  It is based on the LZMA SDK 4.65.\r
-#  LZMA SDK 4.65 was placed in the public domain on 2009-02-03.\r
-#  It was released on the http://www.7-zip.org/sdk.html website.\r
-#\r
-#  Copyright (c) 2009, Intel Corporation. All rights reserved.<BR>\r
-#\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
-#  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
-#\r
-#\r
-#**/\r
-\r
-[Defines]\r
-  INF_VERSION                    = 0x00010005\r
-  BASE_NAME                      = LzmaDecompressLib\r
-  FILE_GUID                      = 35194660-7421-44ad-9636-e44885f092d1\r
-  MODULE_TYPE                    = BASE\r
-  VERSION_STRING                 = 1.0\r
-  LIBRARY_CLASS                  = NULL\r
-  CONSTRUCTOR                    = LzmaDecompressLibConstructor\r
-\r
-#\r
-# The following information is for reference only and not required by the build tools.\r
-#\r
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC\r
-#\r
-\r
-[Sources.common]\r
-  LzmaHobCustomDecompressLib.c\r
-\r
-[Packages]\r
-  MdePkg/MdePkg.dec\r
-  MdeModulePkg/MdeModulePkg.dec\r
-  EmbeddedPkg/EmbeddedPkg.dec\r
-\r
-[Guids]\r
-  gLzmaCustomDecompressGuid  ## PRODUCED  ## GUID specifies LZMA custom decompress algorithm.\r
-\r
-[LibraryClasses]\r
-  DebugLib\r
-  HobLib\r
-  ExtractGuidedSectionLib\r
-\r