arm-trusted-firmware/lib
Soby Mathew 931f7c6156 PIE: Position Independant Executable support for BL31
This patch introduces Position Independant Executable(PIE) support
in TF-A. As a initial prototype, only BL31 can support PIE. A trivial
dynamic linker is implemented which supports fixing up Global Offset
Table(GOT) and Dynamic relocations(.rela.dyn). The fixup_gdt_reloc()
helper function implements this linker and this needs to be called
early in the boot sequence prior to invoking C functions. The GOT is
placed in the RO section of BL31 binary for improved security and the
BL31 linker script is modified to export the appropriate symbols
required for the dynamic linker.

The C compiler always generates PC relative addresses to linker symbols
and hence referencing symbols exporting constants are a problem when
relocating the binary. Hence the reference to the
`__PERCPU_TIMESTAMP_SIZE__` symbol in PMF is removed and is now calculated
at runtime based on start and end addresses.

Change-Id: I1228583ff92cf432963b7cef052e95d995cca93d
Signed-off-by: Soby Mathew <soby.mathew@arm.com>
2018-10-29 09:54:32 +00:00
..
aarch32 libc: armclang: Implement compiler printf symbols 2018-08-22 10:26:05 +01:00
aarch64 PIE: Position Independant Executable support for BL31 2018-10-29 09:54:32 +00:00
compiler-rt libc: Fix all includes in codebase 2018-08-22 10:26:05 +01:00
coreboot coreboot: Add support for CBMEM console 2018-01-19 15:21:12 -08:00
cpus Make errata reporting mandatory for CPU files 2018-10-29 09:54:32 +00:00
el3_runtime AArch64: Enable lower ELs to use pointer authentication 2018-10-16 08:31:13 +01:00
extensions Mark BL31 initialization functions 2018-10-03 11:47:30 +01:00
libc libc: Integrate strrchr in libc 2018-10-23 18:27:45 +01:00
libfdt libfdt: Import version v1.4.7 2018-10-23 18:34:40 +01:00
locks Remove all other deprecated interfaces and files 2018-09-28 15:31:53 +01:00
optee Fixed ARM-software/tf-issues#603 2018-08-23 14:44:18 -06:00
pmf PIE: Position Independant Executable support for BL31 2018-10-29 09:54:32 +00:00
psci Merge pull request #1624 from glneo/less-cache-flushing 2018-10-12 14:16:57 +01:00
romlib PIE: Use PC relative adrp/adr for symbol reference 2018-10-29 09:54:31 +00:00
semihosting Use SPDX license identifiers 2017-05-03 09:39:28 +01:00
stack_protector Use SPDX license identifiers 2017-05-03 09:39:28 +01:00
utils Fix MISRA rule 8.3 2018-07-10 11:17:51 +01:00
xlat_tables xlat: Fix checks in mmap_add() and mmap_add_ctx() 2018-10-08 16:15:21 +01:00
xlat_tables_v2 PIE: Use PC relative adrp/adr for symbol reference 2018-10-29 09:54:31 +00:00
zlib zlib: Fix build error when LOG_LEVEL=50 2018-02-08 09:36:48 +01:00