summaryrefslogtreecommitdiffstats
path: root/MdePkg/Library
diff options
context:
space:
mode:
authorqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>2006-06-19 07:40:23 +0000
committerqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>2006-06-19 07:40:23 +0000
commitcd14fe3dcf9445a2b3c9e8e3eef78c23c4d2b7cd (patch)
tree0589e6abd2e8169447050529e3d77e9a47999b17 /MdePkg/Library
parentf0147869353782c3413148bbccc1925ed2ade622 (diff)
downloadedk2-cd14fe3dcf9445a2b3c9e8e3eef78c23c4d2b7cd.tar.gz
edk2-cd14fe3dcf9445a2b3c9e8e3eef78c23c4d2b7cd.tar.bz2
edk2-cd14fe3dcf9445a2b3c9e8e3eef78c23c4d2b7cd.zip
1. PostCodeLib.
Rename BasePostCodeLib80 to BasePostCodeLibPort80. Fix typos in macro POST_CODE() and POST_CODE_WITH_DESCRIPTION() 2. DebugLib Change the parameter type of LineNumber of DebugAssert() from “INTN” to “UINTN” to follow MWG. Add type cast “(EFI_GUID *)” in macro ASSERT_PROTCOL_ALREADY_INSTALLED () to follow MWG. 3. BasePeCoffLib/ Add library function header for all the interfaces in MWG. Add missing ASSERT()s. 4. PciLib Add ASSERT()s in PciRead/WriteBuffer() to check cross PCI function access. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@557 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdePkg/Library')
-rw-r--r--MdePkg/Library/BaseDebugLibNull/DebugLib.c2
-rw-r--r--MdePkg/Library/BaseDebugLibReportStatusCode/DebugLib.c2
-rw-r--r--MdePkg/Library/BasePciCf8Lib/PciLib.c2
-rw-r--r--MdePkg/Library/BasePciExpressLib/PciLib.c2
-rw-r--r--MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.msa1
-rw-r--r--MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c31
-rw-r--r--MdePkg/Library/BasePeCoffLib/BasePeCoff.c154
-rw-r--r--MdePkg/Library/BasePeCoffLib/BasePeCoffLib.msa5
-rw-r--r--MdePkg/Library/BasePostCodeLibPort80/BasePostCodeLibPort80.mbd30
-rw-r--r--MdePkg/Library/BasePostCodeLibPort80/BasePostCodeLibPort80.msa50
-rw-r--r--MdePkg/Library/BasePostCodeLibPort80/PostCode.c123
-rw-r--r--MdePkg/Library/BasePostCodeLibPort80/build.xml47
-rw-r--r--MdePkg/Library/UefiDebugLibConOut/DebugLib.c2
-rw-r--r--MdePkg/Library/UefiDebugLibStdErr/DebugLib.c2
14 files changed, 371 insertions, 82 deletions
diff --git a/MdePkg/Library/BaseDebugLibNull/DebugLib.c b/MdePkg/Library/BaseDebugLibNull/DebugLib.c
index 9081b632d8..db0b0a97a7 100644
--- a/MdePkg/Library/BaseDebugLibNull/DebugLib.c
+++ b/MdePkg/Library/BaseDebugLibNull/DebugLib.c
@@ -83,7 +83,7 @@ VOID
EFIAPI
DebugAssert (
IN CONST CHAR8 *FileName,
- IN INTN LineNumber,
+ IN UINTN LineNumber,
IN CONST CHAR8 *Description
)
{
diff --git a/MdePkg/Library/BaseDebugLibReportStatusCode/DebugLib.c b/MdePkg/Library/BaseDebugLibReportStatusCode/DebugLib.c
index a239e91d9d..b06a75660f 100644
--- a/MdePkg/Library/BaseDebugLibReportStatusCode/DebugLib.c
+++ b/MdePkg/Library/BaseDebugLibReportStatusCode/DebugLib.c
@@ -114,7 +114,7 @@ VOID
EFIAPI
DebugAssert (
IN CONST CHAR8 *FileName,
- IN INTN LineNumber,
+ IN UINTN LineNumber,
IN CONST CHAR8 *Description
)
{
diff --git a/MdePkg/Library/BasePciCf8Lib/PciLib.c b/MdePkg/Library/BasePciCf8Lib/PciLib.c
index 2f82fbe2c8..7b52a7c925 100644
--- a/MdePkg/Library/BasePciCf8Lib/PciLib.c
+++ b/MdePkg/Library/BasePciCf8Lib/PciLib.c
@@ -1299,6 +1299,7 @@ PciCf8ReadBuffer (
UINTN EndAddress;
ASSERT_INVALID_PCI_ADDRESS (StartAddress, 0);
+ ASSERT (((StartAddress & 0xFFF) + Size) <= 0x100);
ASSERT (Buffer != NULL);
EndAddress = StartAddress + Size;
@@ -1386,6 +1387,7 @@ PciCf8WriteBuffer (
UINTN EndAddress;
ASSERT_INVALID_PCI_ADDRESS (StartAddress, 0);
+ ASSERT (((StartAddress & 0xFFF) + Size) <= 0x100);
ASSERT (Buffer != NULL);
EndAddress = StartAddress + Size;
diff --git a/MdePkg/Library/BasePciExpressLib/PciLib.c b/MdePkg/Library/BasePciExpressLib/PciLib.c
index 125da5793b..e6b43a9907 100644
--- a/MdePkg/Library/BasePciExpressLib/PciLib.c
+++ b/MdePkg/Library/BasePciExpressLib/PciLib.c
@@ -1196,6 +1196,7 @@ PciExpressReadBuffer (
UINTN EndAddress;
ASSERT_INVALID_PCI_ADDRESS (StartAddress);
+ ASSERT (((StartAddress & 0xFFF) + Size) <= 0x1000);
ASSERT (Buffer != NULL);
EndAddress = StartAddress + Size;
@@ -1282,6 +1283,7 @@ PciExpressWriteBuffer (
UINTN EndAddress;
ASSERT_INVALID_PCI_ADDRESS (StartAddress);
+ ASSERT (((StartAddress & 0xFFF) + Size) <= 0x1000);
ASSERT (Buffer != NULL);
EndAddress = StartAddress + Size;
diff --git a/MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.msa b/MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.msa
index 1f92c24449..e8cc214548 100644
--- a/MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.msa
+++ b/MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.msa
@@ -33,6 +33,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
</MsaLibHeader>
<LibraryClassDefinitions>
<LibraryClass Usage="ALWAYS_PRODUCED">PeCoffGetEntryPointLib</LibraryClass>
+ <LibraryClass Usage="ALWAYS_CONSUMED">DebugLib</LibraryClass>
</LibraryClassDefinitions>
<SourceFiles>
<Filename>PeCoffGetEntryPoint.c</Filename>
diff --git a/MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c b/MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c
index d5ff7db009..b740bd6e7c 100644
--- a/MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c
+++ b/MdePkg/Library/BasePeCoffGetEntryPointLib/PeCoffGetEntryPoint.c
@@ -17,38 +17,49 @@
/**
- Loads a PE/COFF image into memory.
+ Retrieves and returns a pointer to the entry point to a PE/COFF image that has been loaded
+ into system memory with the PE/COFF Loader Library functions.
- @param Pe32Data Pointer to a PE/COFF Image
-
- @param EntryPoint Pointer to the entry point of the PE/COFF image
+ Retrieves the entry point to the PE/COFF image specified by Pe32Data and returns this entry
+ point in EntryPoint. If the entry point could not be retrieved from the PE/COFF image, then
+ return RETURN_INVALID_PARAMETER. Otherwise return RETURN_SUCCESS.
+ If Pe32Data is NULL, then ASSERT().
+ If EntryPoint is NULL, then ASSERT().
- @retval EFI_SUCCESS if the EntryPoint was returned
- @retval EFI_INVALID_PARAMETER if the EntryPoint could not be found from Pe32Data
+ @param Pe32Data Pointer to the PE/COFF image that is loaded in system memory.
+ @param EntryPoint Pointer to entry point to the PE/COFF image to return.
+
+ @retval RETURN_SUCCESS EntryPoint was returned.
+ @retval RETURN_INVALID_PARAMETER The entry point could not be found in the PE/COFF image.
**/
RETURN_STATUS
EFIAPI
PeCoffLoaderGetEntryPoint (
- IN VOID *Pe32Data,
- IN OUT VOID **EntryPoint
+ IN VOID *Pe32Data,
+ OUT VOID **EntryPoint
)
{
EFI_IMAGE_DOS_HEADER *DosHeader;
EFI_IMAGE_NT_HEADERS *PeHeader;
+ ASSERT (Pe32Data != NULL);
+ ASSERT (EntryPoint != NULL);
+
DosHeader = (EFI_IMAGE_DOS_HEADER *)Pe32Data;
+
if (DosHeader->e_magic == EFI_IMAGE_DOS_SIGNATURE) {
//
- // DOS image header is present, so read the PE header after the DOS image header
+ // DOS image header is present, so read the PE header after the DOS image header.
//
PeHeader = (EFI_IMAGE_NT_HEADERS *) ((UINTN) Pe32Data + (UINTN) ((DosHeader->e_lfanew) & 0x0ffff));
} else {
//
- // DOS image header is not present, so PE header is at the image base
+ // DOS image header is not present, so PE header is at the image base.
//
PeHeader = (EFI_IMAGE_NT_HEADERS *) Pe32Data;
}
+
*EntryPoint = (VOID *) ((UINTN) Pe32Data + (UINTN) (PeHeader->OptionalHeader.AddressOfEntryPoint & 0x0ffffffff));
return RETURN_SUCCESS;
}
diff --git a/MdePkg/Library/BasePeCoffLib/BasePeCoff.c b/MdePkg/Library/BasePeCoffLib/BasePeCoff.c
index c7f3354637..e91e9a6c2f 100644
--- a/MdePkg/Library/BasePeCoffLib/BasePeCoff.c
+++ b/MdePkg/Library/BasePeCoffLib/BasePeCoff.c
@@ -34,7 +34,7 @@ PeCoffLoaderCheckImageType (
);
STATIC
-VOID *
+VOID *
PeCoffLoaderImageAddress (
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,
IN UINTN Address
@@ -53,15 +53,12 @@ PeCoffLoaderRelocateImageEx (
/**
Retrieves the PE or TE Header from a PE/COFF or TE image.
- @param ImageContext The context of the image being loaded.
-
- @param PeHdr The buffer in which to return the PE header.
-
- @param TeHdr The buffer in which to return the TE header.
+ @param ImageContext The context of the image being loaded.
+ @param PeHdr The buffer in which to return the PE header.
+ @param TeHdr The buffer in which to return the TE header.
- @return
- RETURN_SUCCESS if the PE or TE Header is read,
- Otherwise, the error status from reading the PE/COFF or TE image using the ImageRead function.
+ @retval RETURN_SUCCESS The PE or TE Header is read.
+ @retval Other The error status from reading the PE/COFF or TE image using the ImageRead function.
**/
STATIC
@@ -72,7 +69,7 @@ PeCoffLoaderGetPeHeader (
OUT EFI_TE_IMAGE_HEADER *TeHdr
)
{
- RETURN_STATUS Status;
+ RETURN_STATUS Status;
EFI_IMAGE_DOS_HEADER DosHdr;
UINTN Size;
@@ -82,11 +79,11 @@ PeCoffLoaderGetPeHeader (
//
Size = sizeof (EFI_IMAGE_DOS_HEADER);
Status = ImageContext->ImageRead (
- ImageContext->Handle,
- 0,
- &Size,
- &DosHdr
- );
+ ImageContext->Handle,
+ 0,
+ &Size,
+ &DosHdr
+ );
if (RETURN_ERROR (Status)) {
ImageContext->ImageError = IMAGE_ERROR_IMAGE_READ;
return Status;
@@ -104,11 +101,11 @@ PeCoffLoaderGetPeHeader (
//
Size = sizeof (EFI_IMAGE_NT_HEADERS);
Status = ImageContext->ImageRead (
- ImageContext->Handle,
- ImageContext->PeCoffHeaderOffset,
- &Size,
- PeHdr
- );
+ ImageContext->Handle,
+ ImageContext->PeCoffHeaderOffset,
+ &Size,
+ PeHdr
+ );
if (RETURN_ERROR (Status)) {
ImageContext->ImageError = IMAGE_ERROR_IMAGE_READ;
return Status;
@@ -119,11 +116,11 @@ PeCoffLoaderGetPeHeader (
if (PeHdr->Signature != EFI_IMAGE_NT_SIGNATURE) {
Size = sizeof (EFI_TE_IMAGE_HEADER);
Status = ImageContext->ImageRead (
- ImageContext->Handle,
- 0,
- &Size,
- TeHdr
- );
+ ImageContext->Handle,
+ 0,
+ &Size,
+ TeHdr
+ );
if (TeHdr->Signature != EFI_TE_IMAGE_HEADER_SIGNATURE) {
return RETURN_UNSUPPORTED;
}
@@ -137,14 +134,12 @@ PeCoffLoaderGetPeHeader (
/**
Checks the PE or TE header of a PE/COFF or TE image to determine if it supported.
- @param ImageContext The context of the image being loaded.
-
- @param PeHdr The buffer in which to return the PE header.
-
- @param TeHdr The buffer in which to return the TE header.
+ @param ImageContext The context of the image being loaded.
+ @param PeHdr The buffer in which to return the PE header.
+ @param TeHdr The buffer in which to return the TE header.
- @retval RETURN_SUCCESS if the PE/COFF or TE image is supported
- @retval RETURN_UNSUPPORTED of the PE/COFF or TE image is not supported.
+ @retval RETURN_SUCCESS The PE/COFF or TE image is supported.
+ @retval RETURN_UNSUPPORTED The PE/COFF or TE image is not supported.
**/
STATIC
@@ -185,16 +180,24 @@ PeCoffLoaderCheckImageType (
}
/**
- Retrieves information on a PE/COFF image.
+ Retrieves information about a PE/COFF image.
- @param This Calling context
- @param ImageContext The context of the image being loaded
+ Computes the PeCoffHeaderOffset, ImageAddress, ImageSize, DestinationAddress, CodeView,
+ PdbPointer, RelocationsStripped, SectionAlignment, SizeOfHeaders, and DebugDirectoryEntryRva
+ fields of the ImageContext structure. If ImageContext is NULL, then return RETURN_INVALID_PARAMETER.
+ If the PE/COFF image accessed through the ImageRead service in the ImageContext structure is not
+ a supported PE/COFF image type, then return RETURN_UNSUPPORTED. If any errors occur while
+ computing the fields of ImageContext, then the error status is returned in the ImageError field of
+ ImageContext.
- @retval RETURN_SUCCESS The information on the PE/COFF image was collected.
+ @param ImageContext Pointer to the image context structure that describes the PE/COFF
+ image that needs to be examined by this function.
+
+ @retval RETURN_SUCCESS The information on the PE/COFF image was collected.
@retval RETURN_INVALID_PARAMETER ImageContext is NULL.
- @retval RETURN_UNSUPPORTED The PE/COFF image is not supported.
- @retval Otherwise The error status from reading the PE/COFF image using the
- ImageContext->ImageRead() function
+ @retval RETURN_UNSUPPORTED The PE/COFF image is not supported.
+ @retval Others The error status from reading the PE/COFF image
+ using the ImageContext->ImageRead() function.
**/
RETURN_STATUS
@@ -203,7 +206,7 @@ PeCoffLoaderGetImageInfo (
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
)
{
- RETURN_STATUS Status;
+ RETURN_STATUS Status;
EFI_IMAGE_NT_HEADERS PeHdr;
EFI_TE_IMAGE_HEADER TeHdr;
EFI_IMAGE_DATA_DIRECTORY *DebugDirectoryEntry;
@@ -368,7 +371,7 @@ PeCoffLoaderGetImageInfo (
//
// Read section header from file
//
- Size = sizeof (EFI_IMAGE_SECTION_HEADER);
+ Size = sizeof (EFI_IMAGE_SECTION_HEADER);
Status = ImageContext->ImageRead (
ImageContext->Handle,
SectionHeaderOffset,
@@ -383,10 +386,10 @@ PeCoffLoaderGetImageInfo (
if (DebugDirectoryEntryRva >= SectionHeader.VirtualAddress &&
DebugDirectoryEntryRva < SectionHeader.VirtualAddress + SectionHeader.Misc.VirtualSize) {
DebugDirectoryEntryFileOffset = DebugDirectoryEntryRva -
- SectionHeader.VirtualAddress +
- SectionHeader.PointerToRawData +
- sizeof (EFI_TE_IMAGE_HEADER) -
- TeHdr.StrippedSize;
+ SectionHeader.VirtualAddress +
+ SectionHeader.PointerToRawData +
+ sizeof (EFI_TE_IMAGE_HEADER) -
+ TeHdr.StrippedSize;
//
// File offset of the debug directory was found, if this is not the last
@@ -448,11 +451,10 @@ PeCoffLoaderGetImageInfo (
/**
Converts an image address to the loaded address.
- @param ImageContext The context of the image being loaded.
-
- @param Address The address to be converted to the loaded address.
+ @param ImageContext The context of the image being loaded.
+ @param Address The address to be converted to the loaded address.
- @return NULL if the address can not be converted, otherwise, the converted address
+ @return The converted address or NULL if the address can not be converted.
**/
STATIC
@@ -471,15 +473,23 @@ PeCoffLoaderImageAddress (
}
/**
- Relocates a PE/COFF image in memory.
+ Applies relocation fixups to a PE/COFF image that was loaded with PeCoffLoaderLoadImage().
- @param This Calling context.
-
- @param ImageContext Contains information on the loaded image to relocate.
+ If the DestinationAddress field of ImageContext is 0, then use the ImageAddress field of
+ ImageContext as the relocation base address. Otherwise, use the DestinationAddress field
+ of ImageContext as the relocation base address. The caller must allocate the relocation
+ fixup log buffer and fill in the FixupData field of ImageContext prior to calling this function.
+ If ImageContext is NULL, then ASSERT().
+
+ @param ImageContext Pointer to the image context structure that describes the PE/COFF
+ image that is being relocated.
- @retval RETURN_SUCCESS if the PE/COFF image was relocated.
- @retval RETURN_LOAD_ERROR if the image is not a valid PE/COFF image.
- @retval RETURN_UNSUPPORTED not support.
+ @retval RETURN_SUCCESS The PE/COFF image was relocated.
+ Extended status information is in the ImageError field of ImageContext.
+ @retval RETURN_LOAD_ERROR The image in not a valid PE/COFF image.
+ Extended status information is in the ImageError field of ImageContext.
+ @retval RETURN_UNSUPPORTED A relocation record type is not supported.
+ Extended status information is in the ImageError field of ImageContext.
**/
RETURN_STATUS
@@ -504,6 +514,8 @@ PeCoffLoaderRelocateImage (
CHAR8 *FixupData;
PHYSICAL_ADDRESS BaseAddress;
+ ASSERT (ImageContext != NULL);
+
PeHdr = NULL;
TeHdr = NULL;
//
@@ -522,7 +534,7 @@ PeCoffLoaderRelocateImage (
// If the destination address is not 0, use that rather than the
// image address as the relocation target.
//
- if (ImageContext->DestinationAddress) {
+ if (ImageContext->DestinationAddress != 0) {
BaseAddress = ImageContext->DestinationAddress;
} else {
BaseAddress = ImageContext->ImageAddress;
@@ -531,6 +543,7 @@ PeCoffLoaderRelocateImage (
if (!(ImageContext->IsTeImage)) {
PeHdr = (EFI_IMAGE_NT_HEADERS *)((UINTN)ImageContext->ImageAddress +
ImageContext->PeCoffHeaderOffset);
+
Adjust = (UINT64) BaseAddress - PeHdr->OptionalHeader.ImageBase;
PeHdr->OptionalHeader.ImageBase = (UINTN)BaseAddress;
@@ -670,14 +683,23 @@ PeCoffLoaderRelocateImage (
/**
Loads a PE/COFF image into memory.
- @param This Calling context.
-
- @param ImageContext Contains information on image to load into memory.
+ Loads the PE/COFF image accessed through the ImageRead service of ImageContext into the buffer
+ specified by the ImageAddress and ImageSize fields of ImageContext. The caller must allocate
+ the load buffer and fill in the ImageAddress and ImageSize fields prior to calling this function.
+ The EntryPoint, FixupDataSize, CodeView, and PdbPointer fields of ImageContext are computed.
+
+ @param ImageContext Pointer to the image context structure that describes the PE/COFF
+ image that is being loaded.
- @retval RETURN_SUCCESS if the PE/COFF image was loaded.
- @retval RETURN_BUFFER_TOO_SMALL if the caller did not provide a large enough buffer.
- @retval RETURN_LOAD_ERROR if the image is a runtime driver with no relocations.
- @retval RETURN_INVALID_PARAMETER if the image address is invalid.
+ @retval RETURN_SUCCESS The PE/COFF image was loaded into the buffer specified by
+ the ImageAddress and ImageSize fields of ImageContext.
+ Extended status information is in the ImageError field of ImageContext.
+ @retval RETURN_BUFFER_TOO_SMALL The caller did not provide a large enough buffer.
+ Extended status information is in the ImageError field of ImageContext.
+ @retval RETURN_LOAD_ERROR The PE/COFF image is an EFI Runtime image with no relocations.
+ Extended status information is in the ImageError field of ImageContext.
+ @retval RETURN_INVALID_PARAMETER The image address is invalid.
+ Extended status information is in the ImageError field of ImageContext.
**/
RETURN_STATUS
@@ -686,10 +708,10 @@ PeCoffLoaderLoadImage (
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
)
{
- RETURN_STATUS Status;
+ RETURN_STATUS Status;
EFI_IMAGE_NT_HEADERS *PeHdr;
EFI_TE_IMAGE_HEADER *TeHdr;
- PE_COFF_LOADER_IMAGE_CONTEXT CheckContext;
+ PE_COFF_LOADER_IMAGE_CONTEXT CheckContext;
EFI_IMAGE_SECTION_HEADER *FirstSection;
EFI_IMAGE_SECTION_HEADER *Section;
UINTN NumberOfSections;
diff --git a/MdePkg/Library/BasePeCoffLib/BasePeCoffLib.msa b/MdePkg/Library/BasePeCoffLib/BasePeCoffLib.msa
index 6efb3533d1..f4d1005324 100644
--- a/MdePkg/Library/BasePeCoffLib/BasePeCoffLib.msa
+++ b/MdePkg/Library/BasePeCoffLib/BasePeCoffLib.msa
@@ -34,6 +34,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
<LibraryClassDefinitions>
<LibraryClass Usage="ALWAYS_PRODUCED">PeCoffLib</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">BaseMemoryLib</LibraryClass>
+ <LibraryClass Usage="ALWAYS_CONSUMED">DebugLib</LibraryClass>
</LibraryClassDefinitions>
<SourceFiles>
<Filename>BasePeCoff.c</Filename>
@@ -44,10 +45,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
<Filename>x64/PeCoffLoaderEx.c</Filename>
</Arch>
<Arch ArchType="IPF">
- <Filename>ipf/PeCoffLoaderEx.c</Filename>
+ <Filename>Ipf/PeCoffLoaderEx.c</Filename>
</Arch>
<Arch ArchType="EBC">
- <Filename>ebc/PeCoffLoaderEx.c</Filename>
+ <Filename>Ebc/PeCoffLoaderEx.c</Filename>
</Arch>
</SourceFiles>
<Includes>
diff --git a/MdePkg/Library/BasePostCodeLibPort80/BasePostCodeLibPort80.mbd b/MdePkg/Library/BasePostCodeLibPort80/BasePostCodeLibPort80.mbd
new file mode 100644
index 0000000000..42bc6ae54d
--- /dev/null
+++ b/MdePkg/Library/BasePostCodeLibPort80/BasePostCodeLibPort80.mbd
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+-->
+<LibraryModuleBuildDescription xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.TianoCore.org/2006/Edk2.0 http://www.TianoCore.org/2006/Edk2.0/SurfaceArea.xsd">
+ <MbdLibHeader>
+ <BaseName>BasePostCodeLibPort80</BaseName>
+ <Guid>55c61087-7367-4546-bc32-4937c5e6aff3</Guid>
+ <Version>0</Version>
+ <Description>FIX ME!</Description>
+ <Copyright>Copyright (c) 2004-2006, Intel Corporation</Copyright>
+ <License>
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+ </License>
+ <Created>2006-03-09 23:16</Created>
+ <Modified>2006-03-19 15:17</Modified>
+ </MbdLibHeader>
+</LibraryModuleBuildDescription>
diff --git a/MdePkg/Library/BasePostCodeLibPort80/BasePostCodeLibPort80.msa b/MdePkg/Library/BasePostCodeLibPort80/BasePostCodeLibPort80.msa
new file mode 100644
index 0000000000..096ed56e38
--- /dev/null
+++ b/MdePkg/Library/BasePostCodeLibPort80/BasePostCodeLibPort80.msa
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+-->
+<LibraryModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.TianoCore.org/2006/Edk2.0 http://www.TianoCore.org/2006/Edk2.0/SurfaceArea.xsd">
+ <MsaLibHeader>
+ <BaseName>BasePostCodeLibPort80</BaseName>
+ <ModuleType>BASE</ModuleType>
+ <ComponentType>LIBRARY</ComponentType>
+ <Guid>55c61087-7367-4546-bc32-4937c5e6aff3</Guid>
+ <Version>0</Version>
+ <Abstract>Component description file for the entry point to a EFIDXE Drivers</Abstract>
+ <Description>FIX ME!</Description>
+ <Copyright>Copyright (c) 2004-2006, Intel Corporation</Copyright>
+ <License>
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+ </License>
+ <Created>2006-03-09 23:16</Created>
+ <Updated>2006-03-19 15:17</Updated>
+ <Specification>0</Specification>
+ </MsaLibHeader>
+ <LibraryClassDefinitions>
+ <LibraryClass Usage="ALWAYS_PRODUCED">PostCodeLib</LibraryClass>
+ <LibraryClass Usage="ALWAYS_CONSUMED">PcdLib</LibraryClass>
+ <LibraryClass Usage="ALWAYS_CONSUMED">IoLib</LibraryClass>
+ </LibraryClassDefinitions>
+ <SourceFiles>
+ <Filename>PostCode.c</Filename>
+ </SourceFiles>
+ <Includes>
+ <PackageName>MdePkg</PackageName>
+ </Includes>
+ <PcdCoded>
+ <PcdEntry PcdItemType="FIXED_AT_BUILD">
+ <C_Name>PcdPostCodePropertyMask</C_Name>
+ </PcdEntry>
+ </PcdCoded>
+</LibraryModuleSurfaceArea>
diff --git a/MdePkg/Library/BasePostCodeLibPort80/PostCode.c b/MdePkg/Library/BasePostCodeLibPort80/PostCode.c
new file mode 100644
index 0000000000..93c24d5eb6
--- /dev/null
+++ b/MdePkg/Library/BasePostCodeLibPort80/PostCode.c
@@ -0,0 +1,123 @@
+/** @file
+ Report Status Code Library Post Code functions for DXE Phase.
+
+ Copyright (c) 2006, Intel Corporation<BR>
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+
+/**
+ Sends an 32-bit value to a POST card.
+
+ Sends the 32-bit value specified by Value to a POST card, and returns Value.
+ Some implementations of this library function may perform I/O operations
+ directly to a POST card device. Other implementations may send Value to
+ ReportStatusCode(), and the status code reporting mechanism will eventually
+ display the 32-bit value on the status reporting device.
+
+ PostCode() must actively prevent recursion. If PostCode() is called while
+ processing another any other Report Status Code Library function, then
+ PostCode() must return Value immediately.
+
+ @param Value The 32-bit value to write to the POST card.
+
+ @return Value
+
+**/
+UINT32
+EFIAPI
+PostCode (
+ IN UINT32 Value
+ )
+{
+ IoWrite8 (0x80, (UINT8)(Value));
+ return Value;
+}
+
+
+/**
+ Sends an 32-bit value to a POST and associated ASCII string.
+
+ Sends the 32-bit value specified by Value to a POST card, and returns Value.
+ If Description is not NULL, then the ASCII string specified by Description is
+ also passed to the handler that displays the POST card value. Some
+ implementations of this library function may perform I/O operations directly
+ to a POST card device. Other implementations may send Value to ReportStatusCode(),
+ and the status code reporting mechanism will eventually display the 32-bit
+ value on the status reporting device.
+
+ PostCodeWithDescription()must actively prevent recursion. If
+ PostCodeWithDescription() is called while processing another any other Report
+ Status Code Library function, then PostCodeWithDescription() must return Value
+ immediately.
+
+ @param Value The 32-bit value to write to the POST card.
+ @param Description Pointer to an ASCII string that is a description of the
+ POST code value. This is an optional parameter that may
+ be NULL.
+
+ @return Value
+
+**/
+UINT32
+EFIAPI
+PostCodeWithDescription (
+ IN UINT32 Value,
+ IN CONST CHAR8 *Description OPTIONAL
+ )
+{
+ IoWrite8 (0x80, (UINT8)(Value));
+ return Value;
+}
+
+
+/**
+ Returns TRUE if POST Codes are enabled.
+
+ This function returns TRUE if the POST_CODE_PROPERTY_POST_CODE_ENABLED
+ bit of PcdPostCodePropertyMask is set. Otherwise FALSE is returned.
+
+ @retval TRUE The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of
+ PcdPostCodeProperyMask is set.
+ @retval FALSE The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of
+ PcdPostCodeProperyMask is clear.
+
+**/
+BOOLEAN
+EFIAPI
+PostCodeEnabled (
+ VOID
+ )
+{
+ return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
+}
+
+
+/**
+ Returns TRUE if POST code descriptions are enabled.
+
+ This function returns TRUE if the
+ POST_CODE_PROPERTY_POST_CODE_ENABLED bit of
+ PcdPostCodePropertyMask is set. Otherwise FALSE is returned.
+
+ @retval TRUE The POST_CODE_PROPERTY_POST_CODE_ENABLED
+ bit of PcdPostCodeProperyMask is set.
+ @retval FALSE The POST_CODE_PROPERTY_POST_CODE_ENABLED
+ bit of PcdPostCodeProperyMask is clear.
+
+**/
+BOOLEAN
+EFIAPI
+PostCodeDescriptionEnabled (
+ VOID
+ )
+{
+ return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
+}
diff --git a/MdePkg/Library/BasePostCodeLibPort80/build.xml b/MdePkg/Library/BasePostCodeLibPort80/build.xml
new file mode 100644
index 0000000000..0b96d7c3c7
--- /dev/null
+++ b/MdePkg/Library/BasePostCodeLibPort80/build.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.-->
+<project basedir="." default="BasePostCodeLibPort80"><!--Apply external ANT tasks-->
+ <taskdef resource="GenBuild.tasks"/>
+ <taskdef resource="net/sf/antcontrib/antlib.xml"/>
+ <property environment="env"/>
+ <property name="WORKSPACE_DIR" value="${env.WORKSPACE}"/>
+ <import file="${WORKSPACE_DIR}/Tools/Conf/BuildMacro.xml"/><!--MODULE_RELATIVE PATH is relative to PACKAGE_DIR-->
+ <property name="MODULE_RELATIVE_PATH" value="Library/BasePostCodeLibPort80"/>
+ <property name="MODULE_DIR" value="${PACKAGE_DIR}/${MODULE_RELATIVE_PATH}"/>
+ <property name="COMMON_FILE" value="${WORKSPACE_DIR}/Tools/Conf/Common.xml"/>
+ <target name="BasePostCodeLibPort80">
+ <GenBuild baseName="BasePostCodeLibPort80" mbdFilename="${MODULE_DIR}/BasePostCodeLibPort80.mbd" msaFilename="${MODULE_DIR}/BasePostCodeLibPort80.msa"/>
+ </target>
+ <target depends="BasePostCodeLib80_clean" name="clean"/>
+ <target depends="BasePostCodeLib80_cleanall" name="cleanall"/>
+ <target name="BasePostCodeLib80_clean">
+ <OutputDirSetup baseName="BasePostCodeLibPort80" mbdFilename="${MODULE_DIR}/BasePostCodeLibPort80.mbd" msaFilename="${MODULE_DIR}/BasePostCodeLibPort80.msa"/>
+ <if>
+ <available file="${DEST_DIR_OUTPUT}/BasePostCodeLib80_build.xml"/>
+ <then>
+ <ant antfile="${DEST_DIR_OUTPUT}/BasePostCodeLib80_build.xml" target="clean"/>
+ </then>
+ </if>
+ <delete dir="${DEST_DIR_OUTPUT}" excludes="*.xml"/>
+ </target>
+ <target name="BasePostCodeLib80_cleanall">
+ <OutputDirSetup baseName="BasePostCodeLibPort80" mbdFilename="${MODULE_DIR}/BasePostCodeLibPort80.mbd" msaFilename="${MODULE_DIR}/BasePostCodeLibPort80.msa"/>
+ <if>
+ <available file="${DEST_DIR_OUTPUT}/BasePostCodeLib80_build.xml"/>
+ <then>
+ <ant antfile="${DEST_DIR_OUTPUT}/BasePostCodeLib80_build.xml" target="cleanall"/>
+ </then>
+ </if>
+ <delete dir="${DEST_DIR_OUTPUT}"/>
+ <delete dir="${DEST_DIR_DEBUG}"/>
+ <delete>
+ <fileset dir="${BIN_DIR}" includes="**BasePostCodeLibPort80*"/>
+ </delete>
+ </target>
+</project> \ No newline at end of file
diff --git a/MdePkg/Library/UefiDebugLibConOut/DebugLib.c b/MdePkg/Library/UefiDebugLibConOut/DebugLib.c
index 97db1f41ba..5e828b4c6a 100644
--- a/MdePkg/Library/UefiDebugLibConOut/DebugLib.c
+++ b/MdePkg/Library/UefiDebugLibConOut/DebugLib.c
@@ -98,7 +98,7 @@ VOID
EFIAPI
DebugAssert (
IN CONST CHAR8 *FileName,
- IN INTN LineNumber,
+ IN UINTN LineNumber,
IN CONST CHAR8 *Description
)
{
diff --git a/MdePkg/Library/UefiDebugLibStdErr/DebugLib.c b/MdePkg/Library/UefiDebugLibStdErr/DebugLib.c
index 986c5234cc..6b834ec3e6 100644
--- a/MdePkg/Library/UefiDebugLibStdErr/DebugLib.c
+++ b/MdePkg/Library/UefiDebugLibStdErr/DebugLib.c
@@ -98,7 +98,7 @@ VOID
EFIAPI
DebugAssert (
IN CONST CHAR8 *FileName,
- IN INTN LineNumber,
+ IN UINTN LineNumber,
IN CONST CHAR8 *Description
)
{