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>
\r
Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR>\r
Copyright (c) 2015, Linaro Ltd. All rights reserved.<BR>\r
+ (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
\r
This program and the accompanying materials are licensed and made available under\r
the terms and conditions of the BSD License that accompanies this distribution.\r
*(.rela .rela.*)\r
}\r
\r
+ .hii : ALIGN(CONSTANT(COMMONPAGESIZE)) {\r
+ KEEP (*(.hii))\r
+ }\r
+\r
/DISCARD/ : {\r
*(.note.GNU-stack)\r
*(.gnu_debuglink)\r