Merge "Move setsid(1) to toybox."
diff --git a/cc/config/global.go b/cc/config/global.go
index ef9ac80..31f64fe 100644
--- a/cc/config/global.go
+++ b/cc/config/global.go
@@ -87,8 +87,6 @@
deviceGlobalLldflags = append(ClangFilterUnknownLldflags(deviceGlobalLdflags),
[]string{
- "-Wl,--pack-dyn-relocs=android+relr",
- "-Wl,--use-android-relr-tags",
"-fuse-ld=lld",
}...)
diff --git a/cc/linker.go b/cc/linker.go
index 3053609..3c51690 100644
--- a/cc/linker.go
+++ b/cc/linker.go
@@ -18,6 +18,7 @@
"android/soong/android"
"android/soong/cc/config"
"fmt"
+ "strconv"
"github.com/google/blueprint"
"github.com/google/blueprint/proptools"
@@ -298,6 +299,23 @@
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
// BaseModuleContext should know if LLD is used?
func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags {
@@ -312,6 +330,13 @@
flags.LdFlags = append(flags.LdFlags, fmt.Sprintf("${config.%sGlobalLldflags}", hod))
if !BoolDefault(linker.Properties.Pack_relocations, true) {
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 {
flags.LdFlags = append(flags.LdFlags, fmt.Sprintf("${config.%sGlobalLdflags}", hod))
diff --git a/cc/sanitize.go b/cc/sanitize.go
index 96c149a..56013b6 100644
--- a/cc/sanitize.go
+++ b/cc/sanitize.go
@@ -49,7 +49,7 @@
cfiStaticLibsMutex sync.Mutex
hwasanStaticLibsMutex sync.Mutex
- intOverflowCflags = []string{"-fsanitize-blacklist=build/soong/cc/config/integer_overflow_blacklist.txt"}
+ intOverflowCflags = []string{"-fsanitize-blacklist=build/soong/cc/config/integer_overflow_blacklist.txt"}
// Pass -Xclang before -fsanitize-minimal-runtime to work around a driver
// check which rejects -fsanitize-minimal-runtime together with
@@ -576,9 +576,12 @@
sanitize.runtimeLibrary = runtimeLibrary
// When linking against VNDK, use the vendor variant of the runtime lib
- sanitize.androidMkRuntimeLibrary = sanitize.runtimeLibrary
if ctx.useVndk() {
sanitize.androidMkRuntimeLibrary = sanitize.runtimeLibrary + vendorSuffix
+ } else if ctx.inRecovery() {
+ sanitize.androidMkRuntimeLibrary = sanitize.runtimeLibrary + recoverySuffix
+ } else {
+ sanitize.androidMkRuntimeLibrary = sanitize.runtimeLibrary
}
}