audk/BaseTools/Conf
Ard Biesheuvel c2d56a894b BaseTools/GCC AARCH64: force disable PIC code generation
As a security measure, some distro toolchains now default to PIC code
generation, allowing executables (as opposed to shared libraries) using
the objects to be built as PIE binaries, which can be loaded at a random
virtual offset.

However, our ELF to PE/COFF generation code does not deal with the
resulting relocation types (i.e., GOT based), and so the use of PIC code
leads to GenFw errors.

Given that
a) our non-PIC PE/COFF executables are already relocatable,
b) PIC code leads to all symbol references to be indirected via GOT
   entries containing absolute addresses, each requiring an entry in the
   relocation table,
c) the AArch64 ISA makes it perfectly feasible to built PIE executables
   from non-PIC code,

there is absolutely no upside to using PIC code for building EDK2 modules,
and so we're better off simply disabling it unconditionally.

Note that when running under the OS, the GOT has an additional advantage,
i.e., that all .text/.rodata pages remain clean and so can be shared between
processes. This does not apply to the UEFI environment, however.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Laszlo Ersek <lersek@redhat.com>
2017-03-31 10:34:34 +01:00
..
XMLSchema BaseTools/Conf/XMLSchema: Reformat XML using Visual Studio 2013 2016-02-19 09:44:32 +08:00
Empty_Package_Information_Data_File.ini Sync BaseTools Branch (version r2271) to EDKII main trunk. 2011-08-26 07:46:26 +00:00
FrameworkDatabase.template Sync EDKII BaseTools to BaseTools project r1971 2010-05-18 05:04:32 +00:00
ReadMe.txt Restoring $WORKSPACE/BaseTools location, as the plan is to deprecate 2007-10-17 01:54:36 +00:00
build_rule.template BaseTools: support generating image package from BMP/JPEG/PNG files 2016-09-27 09:43:28 +08:00
target.template Sync BaseTool trunk (version r2599) into EDKII BaseTools. 2013-08-23 02:18:16 +00:00
tools_def.template BaseTools/GCC AARCH64: force disable PIC code generation 2017-03-31 10:34:34 +01:00

ReadMe.txt

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This directory contains the template files for the next generation of the
EDK II Build infrastructure.  These files will be copied into the WORKSPACE's
Conf directory if and only if the target files do not exist.

These files may be updated frequently.

The XMLSchema directory contains the EDK II Packaging XML definitions.  The
schema may change in the future.  It differs somewhat from the early versions
of the XML Schema.