]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Library/PeCoffLib.h
MdePkg/BaseLib: add PatchInstructionX86()
[mirror_edk2.git] / MdePkg / Include / Library / PeCoffLib.h
index 9a7f3bd2b0393d290cce61ad9cd924cca1373515..5a3f98810af64cf5476ec9f8e97021bb725ca119 100644 (file)
@@ -5,12 +5,11 @@
   IA-32, x86, IPF, and EBC processor types. The library functions are memory-based \r
   and can be ported easily to any environment.\r
   \r
-Copyright (c) 2006 - 2008, Intel Corporation<BR>       \r
-Portions Copyright (c) 2008-2009 Apple Inc.<BR>\r
-All rights reserved. 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
+Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under \r
+the terms and conditions of the BSD License that accompanies this distribution.  \r
+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
@@ -35,6 +34,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define IMAGE_ERROR_SECTION_NOT_LOADED           8\r
 #define IMAGE_ERROR_FAILED_RELOCATION            9\r
 #define IMAGE_ERROR_FAILED_ICACHE_FLUSH          10\r
+#define IMAGE_ERROR_UNSUPPORTED                  11\r
 \r
 /**\r
   Reads contents of a PE/COFF image.\r
@@ -60,9 +60,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
                           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            The specified portion of the PE/COFF image was read and the size \r
-  @retval RETURN_DEVICE_ERROR       The specified portion of the PE/COFF image could not be read due \r
-                                    to a device error.\r
+  @retval RETURN_SUCCESS            The specified portion of the PE/COFF image was \r
+                                    read and the size return in ReadSize.\r
+  @retval RETURN_DEVICE_ERROR       The specified portion of the PE/COFF image \r
+                                    could not be read due to a device error.\r
 \r
 **/\r
 typedef\r
@@ -75,20 +76,20 @@ RETURN_STATUS
   );\r
 \r
 ///\r
-/// Context structure used while PE/COFF image is being loaded and relocated\r
+/// The context structure used while PE/COFF image is being loaded and relocated.\r
 ///\r
 typedef struct {\r
   ///\r
-  /// Is set by PeCoffLoaderGetImageInfo() to the ImageBase in the PE/COFF header\r
+  /// Set by PeCoffLoaderGetImageInfo() to the ImageBase in the PE/COFF header.\r
   ///\r
   PHYSICAL_ADDRESS                  ImageAddress;\r
   ///\r
-  /// Is set by PeCoffLoaderGetImageInfo() to the SizeOfImage in the PE/COFF header.\r
+  /// Set by PeCoffLoaderGetImageInfo() to the SizeOfImage in the PE/COFF header.\r
   /// Image size includes the size of Debug Entry if it is present.\r
   ///\r
   UINT64                            ImageSize;\r
   ///\r
-  /// Is set to zero by PeCoffLoaderGetImageInfo(). If DestinationAddress is non zero,\r
+  /// Is set to zero by PeCoffLoaderGetImageInfo(). If DestinationAddress is non-zero,\r
   /// PeCoffLoaderRelocateImage() will relocate the image using this base address.\r
   /// If the DestinationAddress is zero, the ImageAddress will be used as the base\r
   /// address of relocation.\r
@@ -115,18 +116,18 @@ typedef struct {
   ///\r
   VOID                              *FixupData;\r
   ///\r
-  /// Is set by PeCoffLoaderGetImageInfo() to the Section Alignment in the PE/COFF header\r
+  /// Set by PeCoffLoaderGetImageInfo() to the Section Alignment in the PE/COFF header.\r
   /// If the image is a TE image, then this field is set to 0.\r
   ///\r
   UINT32                            SectionAlignment;\r
   ///\r
   /// Set by PeCoffLoaderGetImageInfo() to offset to the PE/COFF header.\r
-  /// If the PE/COFF image does not start with a DOS header, this value is zero; \r
-  /// otherwise, it's the offset to the PE/COFF header.\r
+  /// If the PE/COFF image does not start with a DOS header, this value is zero. \r
+  /// Otherwise, it's the offset to the PE/COFF header.\r
   ///\r
   UINT32                            PeCoffHeaderOffset;\r
   ///\r
-  /// Set by PeCoffLoaderGetImageInfo() to the Relative Virtual Address of the debug directory\r
+  /// Set by PeCoffLoaderGetImageInfo() to the Relative Virtual Address of the debug directory,\r
   /// if it exists in the image\r
   ///\r
   UINT32                            DebugDirectoryEntryRva;\r
@@ -155,7 +156,7 @@ typedef struct {
   /// Not used by this library class. Other library classes that layer on top of this library \r
   /// class fill in this value as part of their GetImageInfo call.\r
   /// This allows the caller of the library to know what type of memory needs to be allocated\r
-  /// to load and relocate the image\r
+  /// to load and relocate the image.\r
   ///\r
   UINT32                            ImageDataMemoryType;\r
   ///\r
@@ -164,11 +165,11 @@ typedef struct {
   UINT32                            ImageError;\r
   ///\r
   /// Set by PeCoffLoaderLoadImage() to indicate the size of FixupData that the caller must\r
-  /// allocate before calling PeCoffLoaderRelocateImage()\r
+  /// allocate before calling PeCoffLoaderRelocateImage().\r
   ///\r
   UINTN                             FixupDataSize;\r
   ///\r
-  /// Set by PeCoffLoaderGetImageInfo() to the machine type stored in the PE/COFF header\r
+  /// Set by PeCoffLoaderGetImageInfo() to the machine type stored in the PE/COFF header.\r
   ///\r
   UINT16                            Machine;\r
   ///\r
@@ -188,8 +189,8 @@ typedef struct {
   BOOLEAN                           IsTeImage;\r
   ///\r
   /// Set by PeCoffLoaderLoadImage() to the HII resource offset\r
-  /// if the image contains a custom PE/COFF resource with the type 'HII';\r
-  /// otherwise, the entry remains to be 0.\r
+  /// if the image contains a custom PE/COFF resource with the type 'HII'.\r
+  /// Otherwise, the entry remains to be 0.\r
   ///\r
   PHYSICAL_ADDRESS                  HiiResourceData;\r
   ///\r
@@ -213,8 +214,9 @@ typedef struct {
   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
+  @param  ImageContext              The pointer to the image context structure that \r
+                                    describes the PE/COFF image that needs to be \r
+                                    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
@@ -246,7 +248,7 @@ PeCoffLoaderGetImageInfo (
   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
+  @param  ImageContext        The 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
@@ -280,7 +282,7 @@ PeCoffLoaderRelocateImage (
   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
+  @param  ImageContext              The 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
@@ -315,13 +317,13 @@ PeCoffLoaderLoadImage (
   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  FileHandle        The 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
+  @retval RETURN_SUCCESS    The data is read from FileOffset from the Handle into \r
                             the buffer.\r
 **/\r
 RETURN_STATUS\r
@@ -335,7 +337,7 @@ PeCoffLoaderImageReadFromMemory (
 \r
 \r
 /**\r
-  Reapply fixups on a fixed up PE32/PE32+ image to allow virutal calling at EFI\r
+  Reapply fixups on a fixed up PE32/PE32+ image to allow virtual calling at EFI\r
   runtime. \r
   \r
   This function reapplies relocation fixups to the PE/COFF image specified by ImageBase \r
@@ -348,7 +350,7 @@ PeCoffLoaderImageReadFromMemory (
   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
+  @param  ImageBase          The 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