Merge "Add sanitizer runtime library to recovery when needed."
diff --git a/android/config.go b/android/config.go
index abb07ce..54c9da8 100644
--- a/android/config.go
+++ b/android/config.go
@@ -581,6 +581,10 @@
return Bool(c.productVariables.Debuggable)
}
+func (c *config) Eng() bool {
+ return Bool(c.productVariables.Eng)
+}
+
func (c *config) DevicePrefer32BitApps() bool {
return Bool(c.productVariables.DevicePrefer32BitApps)
}
diff --git a/android/variable.go b/android/variable.go
index 4534774..f496008 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -54,10 +54,6 @@
Cflags []string
}
- Device_uses_hwc2 struct {
- Cflags []string
- }
-
Override_rs_driver struct {
Cflags []string
}
@@ -190,7 +186,6 @@
UseGoma *bool `json:",omitempty"`
Debuggable *bool `json:",omitempty"`
Eng *bool `json:",omitempty"`
- Device_uses_hwc2 *bool `json:",omitempty"`
Treble_linker_namespaces *bool `json:",omitempty"`
Enforce_vintf_manifest *bool `json:",omitempty"`
Pdk *bool `json:",omitempty"`
diff --git a/cc/config/global.go b/cc/config/global.go
index 8fd5914..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",
}...)
@@ -114,7 +112,7 @@
}
CStdVersion = "gnu99"
- CppStdVersion = "gnu++14"
+ CppStdVersion = "gnu++17"
ExperimentalCStdVersion = "gnu11"
ExperimentalCppStdVersion = "gnu++2a"
diff --git a/cc/config/x86_windows_host.go b/cc/config/x86_windows_host.go
index 6300a1b..e23c0a0 100644
--- a/cc/config/x86_windows_host.go
+++ b/cc/config/x86_windows_host.go
@@ -140,6 +140,9 @@
pctx.StaticVariable("WindowsX8664ClangCppflags", strings.Join(windowsX8664ClangCppflags, " "))
pctx.StaticVariable("WindowsIncludeFlags", strings.Join(windowsIncludeFlags, " "))
+ // Yasm flags
+ pctx.StaticVariable("WindowsX86YasmFlags", "-f win32 -m x86")
+ pctx.StaticVariable("WindowsX8664YasmFlags", "-f win64 -m amd64")
}
type toolchainWindows struct {
@@ -228,6 +231,14 @@
return "${config.WindowsClangLldflags} ${config.WindowsX8664ClangLldflags}"
}
+func (t *toolchainWindowsX86) YasmFlags() string {
+ return "${config.WindowsX86YasmFlags}"
+}
+
+func (t *toolchainWindowsX8664) YasmFlags() string {
+ return "${config.WindowsX8664YasmFlags}"
+}
+
func (t *toolchainWindows) ShlibSuffix() string {
return ".dll"
}
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/stl.go b/cc/stl.go
index 9dc8107..4870870 100644
--- a/cc/stl.go
+++ b/cc/stl.go
@@ -251,7 +251,7 @@
android.Linux: []string{"-lgcc_s", "-lgcc", "-lc", "-lgcc_s", "-lgcc"},
android.Darwin: []string{"-lc", "-lSystem"},
android.Windows: []string{"-Wl,--start-group", "-lmingw32", "-lgcc", "-lgcc_eh",
- "-lmoldname", "-lmingwex", "-lmsvcr110", "-lmsvcrt", "-lpthread",
+ "-lmoldname", "-lmingwex", "-lmsvcrt", "-lucrt", "-lpthread",
"-ladvapi32", "-lshell32", "-luser32", "-lkernel32", "-lpsapi",
"-Wl,--end-group"},
}
diff --git a/java/dex.go b/java/dex.go
index 5cec325..a6d486a 100644
--- a/java/dex.go
+++ b/java/dex.go
@@ -160,6 +160,11 @@
// TODO(ccross): if this is an instrumentation test of an obfuscated app, use the
// dictionary of the app and move the app from libraryjars to injars.
+ // Don't strip out debug information for eng builds.
+ if ctx.Config().Eng() {
+ r8Flags = append(r8Flags, "--debug")
+ }
+
return r8Flags, r8Deps
}
diff --git a/ui/build/paths/config.go b/ui/build/paths/config.go
index 5f28b38..89d012e 100644
--- a/ui/build/paths/config.go
+++ b/ui/build/paths/config.go
@@ -113,7 +113,6 @@
"mktemp": Allowed,
"mv": Allowed,
"openssl": Allowed,
- "paste": Allowed,
"patch": Allowed,
"pgrep": Allowed,
"pkill": Allowed,
@@ -135,7 +134,6 @@
"sort": Allowed,
"stat": Allowed,
"tar": Allowed,
- "tee": Allowed,
"timeout": Allowed,
"todos": Allowed,
"touch": Allowed,
@@ -145,7 +143,6 @@
"wc": Allowed,
"which": Allowed,
"xargs": Allowed,
- "xxd": Allowed,
"xz": Allowed,
"zip": Allowed,
"zipinfo": Allowed,
@@ -170,14 +167,17 @@
"env": Toybox,
"id": Toybox,
"od": Toybox,
+ "paste": Toybox,
"pwd": Toybox,
"rmdir": Toybox,
"sleep": Toybox,
"tail": Toybox,
+ "tee": Toybox,
"true": Toybox,
"uname": Toybox,
"uniq": Toybox,
"whoami": Toybox,
+ "xxd": Toybox,
}
func init() {