Loading android/api_levels.go +15 −0 Original line number Diff line number Diff line Loading @@ -158,6 +158,21 @@ var NoneApiLevel = ApiLevel{ // The first version that introduced 64-bit ABIs. var FirstLp64Version = uncheckedFinalApiLevel(21) // Android has had various kinds of packed relocations over the years // (http://b/187907243). // // API level 30 is where the now-standard SHT_RELR is available. var FirstShtRelrVersion = uncheckedFinalApiLevel(30) // API level 28 introduced SHT_RELR when it was still Android-only, and used an // Android-specific relocation. var FirstAndroidRelrVersion = uncheckedFinalApiLevel(28) // API level 23 was when we first had the Chrome relocation packer, which is // obsolete and has been removed, but lld can now generate compatible packed // relocations itself. var FirstPackedRelocationsVersion = uncheckedFinalApiLevel(23) // The first API level that does not require NDK code to link // libandroid_support. var FirstNonLibAndroidSupportVersion = uncheckedFinalApiLevel(21) Loading cc/linker.go +10 −11 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ import ( "android/soong/android" "android/soong/cc/config" "fmt" "strconv" "github.com/google/blueprint" "github.com/google/blueprint/proptools" Loading Loading @@ -390,17 +389,17 @@ func (linker *baseLinker) useClangLld(ctx ModuleContext) bool { } // Check whether the SDK version is not older than the specific one func CheckSdkVersionAtLeast(ctx ModuleContext, SdkVersion int) bool { if ctx.sdkVersion() == "current" { func CheckSdkVersionAtLeast(ctx ModuleContext, SdkVersion android.ApiLevel) bool { if ctx.minSdkVersion() == "current" { return true } parsedSdkVersion, err := strconv.Atoi(ctx.sdkVersion()) parsedSdkVersion, err := android.ApiLevelFromUser(ctx, ctx.minSdkVersion()) if err != nil { ctx.PropertyErrorf("sdk_version", "Invalid sdk_version value (must be int or current): %q", ctx.sdkVersion()) ctx.PropertyErrorf("min_sdk_version", "Invalid min_sdk_version value (must be int or current): %q", ctx.minSdkVersion()) } if parsedSdkVersion < SdkVersion { if parsedSdkVersion.LessThan(SdkVersion) { return false } return true Loading @@ -425,13 +424,13 @@ func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags { // 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) { if !ctx.useSdk() || CheckSdkVersionAtLeast(ctx, android.FirstShtRelrVersion) { flags.Global.LdFlags = append(flags.Global.LdFlags, "-Wl,--pack-dyn-relocs=android+relr") } else if CheckSdkVersionAtLeast(ctx, 28) { } else if CheckSdkVersionAtLeast(ctx, android.FirstAndroidRelrVersion) { flags.Global.LdFlags = append(flags.Global.LdFlags, "-Wl,--pack-dyn-relocs=android+relr", "-Wl,--use-android-relr-tags") } else if CheckSdkVersionAtLeast(ctx, 23) { } else if CheckSdkVersionAtLeast(ctx, android.FirstPackedRelocationsVersion) { flags.Global.LdFlags = append(flags.Global.LdFlags, "-Wl,--pack-dyn-relocs=android") } } Loading Loading
android/api_levels.go +15 −0 Original line number Diff line number Diff line Loading @@ -158,6 +158,21 @@ var NoneApiLevel = ApiLevel{ // The first version that introduced 64-bit ABIs. var FirstLp64Version = uncheckedFinalApiLevel(21) // Android has had various kinds of packed relocations over the years // (http://b/187907243). // // API level 30 is where the now-standard SHT_RELR is available. var FirstShtRelrVersion = uncheckedFinalApiLevel(30) // API level 28 introduced SHT_RELR when it was still Android-only, and used an // Android-specific relocation. var FirstAndroidRelrVersion = uncheckedFinalApiLevel(28) // API level 23 was when we first had the Chrome relocation packer, which is // obsolete and has been removed, but lld can now generate compatible packed // relocations itself. var FirstPackedRelocationsVersion = uncheckedFinalApiLevel(23) // The first API level that does not require NDK code to link // libandroid_support. var FirstNonLibAndroidSupportVersion = uncheckedFinalApiLevel(21) Loading
cc/linker.go +10 −11 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ import ( "android/soong/android" "android/soong/cc/config" "fmt" "strconv" "github.com/google/blueprint" "github.com/google/blueprint/proptools" Loading Loading @@ -390,17 +389,17 @@ func (linker *baseLinker) useClangLld(ctx ModuleContext) bool { } // Check whether the SDK version is not older than the specific one func CheckSdkVersionAtLeast(ctx ModuleContext, SdkVersion int) bool { if ctx.sdkVersion() == "current" { func CheckSdkVersionAtLeast(ctx ModuleContext, SdkVersion android.ApiLevel) bool { if ctx.minSdkVersion() == "current" { return true } parsedSdkVersion, err := strconv.Atoi(ctx.sdkVersion()) parsedSdkVersion, err := android.ApiLevelFromUser(ctx, ctx.minSdkVersion()) if err != nil { ctx.PropertyErrorf("sdk_version", "Invalid sdk_version value (must be int or current): %q", ctx.sdkVersion()) ctx.PropertyErrorf("min_sdk_version", "Invalid min_sdk_version value (must be int or current): %q", ctx.minSdkVersion()) } if parsedSdkVersion < SdkVersion { if parsedSdkVersion.LessThan(SdkVersion) { return false } return true Loading @@ -425,13 +424,13 @@ func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags { // 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) { if !ctx.useSdk() || CheckSdkVersionAtLeast(ctx, android.FirstShtRelrVersion) { flags.Global.LdFlags = append(flags.Global.LdFlags, "-Wl,--pack-dyn-relocs=android+relr") } else if CheckSdkVersionAtLeast(ctx, 28) { } else if CheckSdkVersionAtLeast(ctx, android.FirstAndroidRelrVersion) { flags.Global.LdFlags = append(flags.Global.LdFlags, "-Wl,--pack-dyn-relocs=android+relr", "-Wl,--use-android-relr-tags") } else if CheckSdkVersionAtLeast(ctx, 23) { } else if CheckSdkVersionAtLeast(ctx, android.FirstPackedRelocationsVersion) { flags.Global.LdFlags = append(flags.Global.LdFlags, "-Wl,--pack-dyn-relocs=android") } } Loading