From: Thomas Palmer Date: Fri, 22 Jul 2016 02:56:49 +0000 (+0800) Subject: Preserve hii section in GCC binaries X-Git-Tag: edk2-stable201903~6218 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=03630a81488ca30c384c09034caa1a70afb80a0d;p=mirror_edk2.git Preserve hii section in GCC binaries According to UEFI spec: Once an image is loaded, LoadImage() installs EFI_HII_PACKAGE_LIST_PROTOCOL on the handle if the image contains a custom PE/COFF resource with the type 'HII'. The protocol's interface pointer points to the HII package list which is contained in the resource's data. This is controlled by the UEFI_HII_RESOURCE_SECTION define in the INF file. When present the HII resource is linked with the module binary. Unfortunately GCC-built binaries have been stripping the .hii section entirely. See "[edk2] HII gEfiHiiPackageListProtocolGuid problem with GCC48(VS2012x86 works)" http://thread.gmane.org/gmane.comp.bios.tianocore.devel/13438 http://thread.gmane.org/gmane.comp.bios.tianocore.devel/14899 This patch tells the linker to preserve the .hii sections Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Thomas Palmer Acked-by: Laszlo Ersek Tested-by: Bruce Cran Reviewed-by: Bruce Cran Reviewed-by: Yonghong Zhu Reviewed-by: Liming Gao --- diff --git a/BaseTools/Scripts/GccBase.lds b/BaseTools/Scripts/GccBase.lds index 32310bc75d..7e4cdde9bf 100644 --- a/BaseTools/Scripts/GccBase.lds +++ b/BaseTools/Scripts/GccBase.lds @@ -4,6 +4,7 @@ Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.
Copyright (c) 2015, Linaro Ltd. All rights reserved.
+ (C) Copyright 2016 Hewlett Packard Enterprise Development LP
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License that accompanies this distribution. @@ -57,6 +58,10 @@ SECTIONS { *(.rela .rela.*) } + .hii : ALIGN(CONSTANT(COMMONPAGESIZE)) { + KEEP (*(.hii)) + } + /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink)