Use SHT_RELR relocations where possible.
Ideally we'll want to move this logic to the toolchain itself, but right now the linker doesn't even know it's targeting Android, let alone which API level. Bug: http://b/147452927 Test: treehugger Change-Id: I6c5c822d0767e789fa0e2c8e5668fddfd90680bb
This commit is contained in:
parent
aa4c712989
commit
8df4b3dc6b
10
cc/linker.go
10
cc/linker.go
|
@ -421,9 +421,13 @@ func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags {
|
|||
if !BoolDefault(linker.Properties.Pack_relocations, true) {
|
||||
flags.Global.LdFlags = append(flags.Global.LdFlags, "-Wl,--pack-dyn-relocs=none")
|
||||
} else if ctx.Device() {
|
||||
// The SHT_RELR relocations is only supported by API level >= 28.
|
||||
// Do not turn this on if older version NDK is used.
|
||||
if !ctx.useSdk() || CheckSdkVersionAtLeast(ctx, 28) {
|
||||
// SHT_RELR relocations are only supported at API level >= 30.
|
||||
// ANDROID_RELR relocations were supported at API level >= 28.
|
||||
// Relocation packer was supported at API level >= 23.
|
||||
// Do the best we can...
|
||||
if !ctx.useSdk() || CheckSdkVersionAtLeast(ctx, 30) {
|
||||
flags.Global.LdFlags = append(flags.Global.LdFlags, "-Wl,--pack-dyn-relocs=android+relr")
|
||||
} else if CheckSdkVersionAtLeast(ctx, 28) {
|
||||
flags.Global.LdFlags = append(flags.Global.LdFlags,
|
||||
"-Wl,--pack-dyn-relocs=android+relr",
|
||||
"-Wl,--use-android-relr-tags")
|
||||
|
|
Loading…
Reference in New Issue