diff options
author | Thomas Palmer <thomas.palmer@hpe.com> | 2016-07-22 10:56:49 +0800 |
---|---|---|
committer | Yonghong Zhu <yonghong.zhu@intel.com> | 2016-07-26 10:21:45 +0800 |
commit | 03630a81488ca30c384c09034caa1a70afb80a0d (patch) | |
tree | b633efdc2de4de978303c0fcc884088804ede7e3 /BaseTools | |
parent | 910e206238e83be352e840d2e668266257fcf7fa (diff) | |
download | edk2-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>
Diffstat (limited to 'BaseTools')
-rw-r--r-- | BaseTools/Scripts/GccBase.lds | 5 |
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)
|