summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Palmer <thomas.palmer@hpe.com>2016-07-22 10:56:49 +0800
committerYonghong Zhu <yonghong.zhu@intel.com>2016-07-26 10:21:45 +0800
commit03630a81488ca30c384c09034caa1a70afb80a0d (patch)
treeb633efdc2de4de978303c0fcc884088804ede7e3
parent910e206238e83be352e840d2e668266257fcf7fa (diff)
downloadedk2-03630a81488ca30c384c09034caa1a70afb80a0d.tar.gz
edk2-03630a81488ca30c384c09034caa1a70afb80a0d.tar.bz2
edk2-03630a81488ca30c384c09034caa1a70afb80a0d.zip
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 <thomas.palmer@hpe.com> Acked-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Bruce Cran <bruce.cran@gmail.com> Reviewed-by: Bruce Cran <bruce.cran@gmail.com> Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
-rw-r--r--BaseTools/Scripts/GccBase.lds5
1 files changed, 5 insertions, 0 deletions
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.<BR>
Copyright (c) 2015, Linaro Ltd. All rights reserved.<BR>
+ (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
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)