audk/ArmVirtPkg
Ard Biesheuvel 04d9d89b7d ArmVirtPkg/ArmVirtPrePiUniCoreRelocatable: revert to PIE linking
In some cases, the CLANG38 toolchain profile in LTO mode emits GOT
based relocations in spite of our attempts to avoid this, by using
hidden visibility, -Bsymbolic etc.

On AARCH64, we managed to work around this by processing the GOT
based relocations in GenFw. As it turns out, the same issue exists
on 32-bit ARM, but unfortunately, we cannot use a similar trick to
get rid of the GOT entry, and the relocation metadata is insufficient
to locate the GOT entry in the binary.

Note that in this particular case, we are interested in PIE linking
only (i.e., producing a .rela section containing dynamic relocations
that the startup code can process directly), and not in position
independent code generation, and by passing the -pie option to the
linker directly using -Wl,-pie (and dropping -shared), we can coerce
the GOLD linker into doing only the former rather than both when it
performs its LTO code generation.

Acked-by: Leif Lindholm <leif.lindholm@linaro.org>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
2019-09-05 10:05:08 -07:00
..
FdtClientDxe ArmVirtPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
HighMemDxe ArmVirtPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
Include ArmVirtPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
Library OvmfPkg: Move XenRealTimeClockLib from ArmVirtPkg 2019-08-21 18:03:50 +02:00
PlatformHasAcpiDtDxe ArmVirtPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
PrePi ArmVirtPkg/ArmVirtPrePiUniCoreRelocatable: revert to PIE linking 2019-09-05 10:05:08 -07:00
VirtioFdtDxe ArmVirtPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
XenAcpiPlatformDxe ArmVirtPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
XenPlatformHasAcpiDtDxe ArmVirtPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
XenioFdtDxe ArmVirtPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
ArmVirt.dsc.inc ArmVirtPkg: handle NETWORK_TLS_ENABLE in ArmVirtQemu* 2019-06-28 18:07:54 +02:00
ArmVirtPkg.dec ArmVirtPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
ArmVirtQemu.dsc ArmVirtPkg: handle NETWORK_TLS_ENABLE in ArmVirtQemu* 2019-06-28 18:07:54 +02:00
ArmVirtQemu.fdf ArmVirtPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
ArmVirtQemuFvMain.fdf.inc ArmVirtPkg: Update DSC/FDF to use NetworkPkg's include fragment file. 2019-05-16 16:45:37 +02:00
ArmVirtQemuKernel.dsc ArmVirtPkg: handle NETWORK_TLS_ENABLE in ArmVirtQemu* 2019-06-28 18:07:54 +02:00
ArmVirtQemuKernel.fdf ArmVirtPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
ArmVirtRules.fdf.inc ArmVirtPkg: Update UefiDecompressLib instance 2019-04-10 14:11:48 +08:00
ArmVirtXen.dsc OvmfPkg: Move XenRealTimeClockLib from ArmVirtPkg 2019-08-21 18:03:50 +02:00
ArmVirtXen.fdf ArmVirtPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00
VarStore.fdf.inc ArmVirtPkg: Replace BSD License with BSD+Patent License 2019-04-09 09:10:21 -07:00