Make PIC/PIE levels compatible for LTO (Soong).

The build system currently uses -fPIC for position independent
libraries, and -fpie for position independent executables. However,
these levels are incompatible and conflict when an executable includes
a static lib with the -fPIC flag - such as when building with
LTO. This CL changes the flag for executables to the compatible -fPIE
instead, which is equivalent for all architectures except PowerPC.

Bug: 30227045
Test: ENABLE_CFI=true m -j40 checkbuild # builds and boots
Change-Id: I95b585b553bc00bc1d4f52f4271c5e30e1007d9b
This commit is contained in:
Vishwath Mohan 2017-04-17 16:21:41 -07:00
parent 3e231fd8bd
commit e87b768200

View file

@ -214,7 +214,7 @@ func (binary *binaryDecorator) linkerFlags(ctx ModuleContext, flags Flags) Flags
// all code is position independent, and then those warnings get promoted to // all code is position independent, and then those warnings get promoted to
// errors. // errors.
if !ctx.Windows() { if !ctx.Windows() {
flags.CFlags = append(flags.CFlags, "-fpie") flags.CFlags = append(flags.CFlags, "-fPIE")
} }
if ctx.toolchain().Bionic() { if ctx.toolchain().Bionic() {