From: jljusten Date: Mon, 4 May 2009 20:00:04 +0000 (+0000) Subject: Merge PEI & DXE LzmaCustomDecompressLib. A previous implementation X-Git-Tag: edk2-stable201903~18030 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=19a4a0a0ac0176d6f88788afc5207465e8be983e Merge PEI & DXE LzmaCustomDecompressLib. A previous implementation was causing the LZMA decompression code to request a large buffer, which caused an ASSERT to fail for PEI's AllocatePool. The current implementation, which uses the LzmaDecode function, does not have this issue and therefore both the PEI & DXE versions can use AllocatePool/FreePool. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8236 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/IntelFrameworkModulePkg/IntelFrameworkModulePkg.dsc b/IntelFrameworkModulePkg/IntelFrameworkModulePkg.dsc index a5ed7ec061..31e97a3262 100644 --- a/IntelFrameworkModulePkg/IntelFrameworkModulePkg.dsc +++ b/IntelFrameworkModulePkg/IntelFrameworkModulePkg.dsc @@ -201,8 +201,7 @@ [Components.common] IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.inf - IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaCustomDecompressLib.inf - IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Dxe/LzmaCustomDecompressLib.inf + IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf IntelFrameworkModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf IntelFrameworkModulePkg/Library/PciIncompatibleDeviceSupportLib/PciIncompatibleDeviceSupportLib.inf IntelFrameworkModulePkg/Library/PeiS3Lib/PeiS3Lib.inf diff --git a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Dxe/LzmaCustomDecompressLib.inf b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Dxe/LzmaCustomDecompressLib.inf deleted file mode 100644 index cfeed7c01c..0000000000 --- a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Dxe/LzmaCustomDecompressLib.inf +++ /dev/null @@ -1,55 +0,0 @@ -#/** @file -# LZMA GUIDed Section Extraction Protocol Library -# -# Uefi Decompression library instance -# Copyright (c) 2006, 2009, 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. -# -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = LzmaDxeDecompressLib - FILE_GUID = 35194660-7421-44ad-9636-e44885f092d1 - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = BASE - EDK_RELEASE_VERSION = 0x00020000 - EFI_SPECIFICATION_VERSION = 0x00020000 - - CONSTRUCTOR = LzmaDecompressLibConstructor - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF EBC -# - -[Sources.common] - LzmaDxeMemory.c - ../LzmaDecompress.c - ../Sdk/C/LzFind.c - ../Sdk/C/LzmaDec.c - ../GuidedSectionExtraction.c - -[Packages] - MdePkg/MdePkg.dec - IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec - -[Guids] - gLzmaCustomDecompressGuid - -[LibraryClasses] - BaseLib - DebugLib - BaseMemoryLib - MemoryAllocationLib - ExtractGuidedSectionLib - diff --git a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Dxe/LzmaDxeMemory.c b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Dxe/LzmaDxeMemory.c deleted file mode 100644 index 29733069e0..0000000000 --- a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Dxe/LzmaDxeMemory.c +++ /dev/null @@ -1,47 +0,0 @@ -/** @file - LZMA Memory Allocation for DXE - - Copyright (c) 2006 - 2009, 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. - -**/ - -#include -#include -#include -#include "Sdk/C/Types.h" - -STATIC -VOID * -SzAlloc( - void *p, - size_t size - ) -{ - void *np; - p = p; - np = AllocatePool(size); - return np; -} - -STATIC -VOID -SzFree( - void *p, - void *address - ) -{ - p = p; - if (address != NULL) { - FreePool(address); - } -} - -ISzAlloc g_Alloc = { SzAlloc, SzFree }; - diff --git a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf new file mode 100644 index 0000000000..9b4d78447d --- /dev/null +++ b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf @@ -0,0 +1,54 @@ +#/** @file +# LZMA GUIDed Section Extraction Protocol Library +# +# Uefi Decompression library instance +# Copyright (c) 2006, 2009, 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. +# +# +#**/ + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = LzmaDecompressLib + FILE_GUID = 35194660-7421-44ad-9636-e44885f092d1 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = BASE + EDK_RELEASE_VERSION = 0x00020000 + EFI_SPECIFICATION_VERSION = 0x00020000 + + CONSTRUCTOR = LzmaDecompressLibConstructor + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 IPF EBC +# + +[Sources.common] + LzmaDecompress.c + Sdk/C/LzFind.c + Sdk/C/LzmaDec.c + GuidedSectionExtraction.c + +[Packages] + MdePkg/MdePkg.dec + IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec + +[Guids] + gLzmaCustomDecompressGuid + +[LibraryClasses] + BaseLib + DebugLib + BaseMemoryLib + MemoryAllocationLib + ExtractGuidedSectionLib + diff --git a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c index f1729825c7..439e15beab 100644 --- a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c +++ b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c @@ -29,7 +29,43 @@ #include "Sdk/C/7zVersion.h" #include "Sdk/C/LzmaDec.h" -extern ISzAlloc g_Alloc; +/** + Allocation routine used by LZMA decompression. + + @param p Pointer to the ISzAlloc instance + @param size The size in bytes to be allocated + + @return The allocated pointer address, or NULL on failure +**/ +STATIC +VOID * +SzAlloc ( + void *p, + size_t size + ) +{ + return AllocatePool (size); +} + +/** + Free routine used by LZMA decompression. + + @param p Pointer to the ISzAlloc instance + @param address The address to be freed +**/ +STATIC +VOID +SzFree ( + void *p, + void *address + ) +{ + if (address != NULL) { + FreePool (address); + } +} + +STATIC ISzAlloc g_Alloc = { SzAlloc, SzFree }; #define LZMA_HEADER_SIZE (LZMA_PROPS_SIZE + 8) diff --git a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaCustomDecompressLib.inf b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaCustomDecompressLib.inf deleted file mode 100644 index a9b347be10..0000000000 --- a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaCustomDecompressLib.inf +++ /dev/null @@ -1,55 +0,0 @@ -#/** @file -# LZMA GUIDed Section Extraction Protocol Library -# -# Uefi Decompression library instance -# Copyright (c) 2006, 2009, 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. -# -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = LzmaPeiDecompressLib - FILE_GUID = 6725ae86-6ed1-43bd-aeec-0517c0749d70 - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = BASE - EDK_RELEASE_VERSION = 0x00020000 - EFI_SPECIFICATION_VERSION = 0x00020000 - - CONSTRUCTOR = LzmaDecompressLibConstructor - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF EBC -# - -[Sources.common] - LzmaPeiMemory.c - ../LzmaDecompress.c - ../Sdk/C/LzFind.c - ../Sdk/C/LzmaDec.c - ../GuidedSectionExtraction.c - -[Packages] - MdePkg/MdePkg.dec - IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec - -[Guids] - gLzmaCustomDecompressGuid - -[LibraryClasses] - BaseLib - DebugLib - BaseMemoryLib - MemoryAllocationLib - ExtractGuidedSectionLib - diff --git a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaPeiMemory.c b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaPeiMemory.c deleted file mode 100644 index a6824f17f3..0000000000 --- a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Pei/LzmaPeiMemory.c +++ /dev/null @@ -1,54 +0,0 @@ -/** @file - LZMA Memory Allocation for PEI - - AllocatePool does not work for large blocks during PEI, so we must - use AllocatePages. - - Copyright (c) 2006 - 2009, 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. - -**/ - -#include -#include -#include -#include "Sdk/C/Types.h" - -STATIC -VOID * -SzAlloc( - void *p, - size_t size - ) -{ - void *np; - p = p; - if (size > EFI_PAGE_SIZE) { - np = AllocatePages(EFI_SIZE_TO_PAGES(size)); - } else { - np = AllocatePool(size); - } - return np; -} - -STATIC -VOID -SzFree( - void *p, - void *address - ) -{ - p = p; - if (address != NULL) { - FreePool(address); - } -} - -ISzAlloc g_Alloc = { SzAlloc, SzFree }; - diff --git a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/UefiLzma.h b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/UefiLzma.h index f6db7f15cb..fdd013c5e3 100644 --- a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/UefiLzma.h +++ b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/UefiLzma.h @@ -37,5 +37,7 @@ typedef int ptrdiff_t; #define memcpy CopyMem #define memmove CopyMem +#define _LZMA_SIZE_OPT + #endif // __UEFILZMA_H__