summaryrefslogtreecommitdiff
path: root/Conf
diff options
context:
space:
mode:
authorArd Biesheuvel <ard.biesheuvel@linaro.org>2015-08-10 07:55:18 +0000
committerabiesheuvel <abiesheuvel@Edk2>2015-08-10 07:55:18 +0000
commit24d610e67752ac0325c7027e2fea2f8f2ff110e2 (patch)
tree78c88e1cae7fbde6e94a3e9eca4a16dacbe116ed /Conf
parent16d11eed2933e2ef3d611cba2453b9d6484a83e4 (diff)
downloadedk2-platforms-24d610e67752ac0325c7027e2fea2f8f2ff110e2.tar.xz
BaseTools/GenFw: allow AArch64 tiny and small code model relocations
The AArch64 small C model makes extensive use of ADRP/ADD and ADRP/{LDR,STR} pairs to emit PC-relative symbol references with a +/- 4 GB range. Since the relocation pair splits the relative offset into a relative page offset and an absolute offset into a 4 KB page, we need to take extra care to ensure that the target of the relocation preserves its alignment relative to a 4 KB alignment boundary. Also, due to a problem with the --emit-relocs GNU ld option, where it does not recalculate the addends for section relative relocations, the only way to guarantee correct code is by requiring the relative section offset to be equal in the ELF and PE/COFF versions of the binary. This affects both the 'tiny' and 'small' GCC code models. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org> Tested-by: Leif Lindholm <leif.lindholm@linaro.org> Reviewed-by: Liming Gao <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18197 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'Conf')
0 files changed, 0 insertions, 0 deletions