Merge "Do not generate SHT_RELR relocations before API 28"
am: 89df00c216
Change-Id: I76f45bbea868f137906074dfda233ecad02d9caa
This commit is contained in:
@@ -87,8 +87,6 @@ var (
|
|||||||
|
|
||||||
deviceGlobalLldflags = append(ClangFilterUnknownLldflags(deviceGlobalLdflags),
|
deviceGlobalLldflags = append(ClangFilterUnknownLldflags(deviceGlobalLdflags),
|
||||||
[]string{
|
[]string{
|
||||||
"-Wl,--pack-dyn-relocs=android+relr",
|
|
||||||
"-Wl,--use-android-relr-tags",
|
|
||||||
"-fuse-ld=lld",
|
"-fuse-ld=lld",
|
||||||
}...)
|
}...)
|
||||||
|
|
||||||
|
25
cc/linker.go
25
cc/linker.go
@@ -18,6 +18,7 @@ import (
|
|||||||
"android/soong/android"
|
"android/soong/android"
|
||||||
"android/soong/cc/config"
|
"android/soong/cc/config"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
"github.com/google/blueprint"
|
"github.com/google/blueprint"
|
||||||
"github.com/google/blueprint/proptools"
|
"github.com/google/blueprint/proptools"
|
||||||
@@ -298,6 +299,23 @@ func (linker *baseLinker) useClangLld(ctx ModuleContext) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check whether the SDK version is not older than the specific one
|
||||||
|
func CheckSdkVersionAtLeast(ctx ModuleContext, SdkVersion int) bool {
|
||||||
|
if ctx.sdkVersion() == "current" {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
parsedSdkVersion, err := strconv.Atoi(ctx.sdkVersion())
|
||||||
|
if err != nil {
|
||||||
|
ctx.PropertyErrorf("sdk_version",
|
||||||
|
"Invalid sdk_version value (must be int or current): %q",
|
||||||
|
ctx.sdkVersion())
|
||||||
|
}
|
||||||
|
if parsedSdkVersion < SdkVersion {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// ModuleContext extends BaseModuleContext
|
// ModuleContext extends BaseModuleContext
|
||||||
// BaseModuleContext should know if LLD is used?
|
// BaseModuleContext should know if LLD is used?
|
||||||
func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags {
|
func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags {
|
||||||
@@ -312,6 +330,13 @@ func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags {
|
|||||||
flags.LdFlags = append(flags.LdFlags, fmt.Sprintf("${config.%sGlobalLldflags}", hod))
|
flags.LdFlags = append(flags.LdFlags, fmt.Sprintf("${config.%sGlobalLldflags}", hod))
|
||||||
if !BoolDefault(linker.Properties.Pack_relocations, true) {
|
if !BoolDefault(linker.Properties.Pack_relocations, true) {
|
||||||
flags.LdFlags = append(flags.LdFlags, "-Wl,--pack-dyn-relocs=none")
|
flags.LdFlags = append(flags.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) {
|
||||||
|
flags.LdFlags = append(flags.LdFlags, "-Wl,--pack-dyn-relocs=android+relr")
|
||||||
|
flags.LdFlags = append(flags.LdFlags, "-Wl,--use-android-relr-tags")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
flags.LdFlags = append(flags.LdFlags, fmt.Sprintf("${config.%sGlobalLdflags}", hod))
|
flags.LdFlags = append(flags.LdFlags, fmt.Sprintf("${config.%sGlobalLdflags}", hod))
|
||||||
|
Reference in New Issue
Block a user