diff --git a/android/arch.go b/android/arch.go
index d84c829..6971bc8 100644
--- a/android/arch.go
+++ b/android/arch.go
@@ -201,7 +201,7 @@
 	osArchTypeMap = map[OsType][]ArchType{
 		Linux:       []ArchType{X86, X86_64},
 		LinuxBionic: []ArchType{X86_64},
-		Darwin:      []ArchType{X86, X86_64},
+		Darwin:      []ArchType{X86_64},
 		Windows:     []ArchType{X86, X86_64},
 		Android:     []ArchType{Arm, Arm64, Mips, Mips64, X86, X86_64},
 	}
diff --git a/cc/config/x86_darwin_host.go b/cc/config/x86_darwin_host.go
index 4ec2b31..694137d 100644
--- a/cc/config/x86_darwin_host.go
+++ b/cc/config/x86_darwin_host.go
@@ -37,28 +37,14 @@
 		"-isysroot ${macSdkRoot}",
 		"-mmacosx-version-min=${macMinVersion}",
 		"-DMACOSX_DEPLOYMENT_TARGET=${macMinVersion}",
+
+		"-m64",
 	}
 
 	darwinLdflags = []string{
 		"-isysroot ${macSdkRoot}",
 		"-Wl,-syslibroot,${macSdkRoot}",
 		"-mmacosx-version-min=${macMinVersion}",
-	}
-
-	// Extended cflags
-	darwinX86Cflags = []string{
-		"-m32",
-	}
-
-	darwinX8664Cflags = []string{
-		"-m64",
-	}
-
-	darwinX86Ldflags = []string{
-		"-m32",
-	}
-
-	darwinX8664Ldflags = []string{
 		"-m64",
 	}
 
@@ -67,27 +53,16 @@
 		"-fstack-protector-strong",
 	}...)
 
-	darwinX86ClangCflags = append(ClangFilterUnknownCflags(darwinX86Cflags), []string{
-		"-msse3",
-	}...)
-
 	darwinClangLdflags = ClangFilterUnknownCflags(darwinLdflags)
 
 	darwinClangLldflags = ClangFilterUnknownLldflags(darwinClangLdflags)
 
-	darwinX86ClangLdflags = ClangFilterUnknownCflags(darwinX86Ldflags)
-
-	darwinX86ClangLldflags = ClangFilterUnknownLldflags(darwinX86ClangLdflags)
-
-	darwinX8664ClangLdflags = ClangFilterUnknownCflags(darwinX8664Ldflags)
-
-	darwinX8664ClangLldflags = ClangFilterUnknownLldflags(darwinX8664ClangLdflags)
-
 	darwinSupportedSdkVersions = []string{
 		"10.10",
 		"10.11",
 		"10.12",
 		"10.13",
+		"10.14",
 	}
 
 	darwinAvailableLibraries = append(
@@ -149,21 +124,7 @@
 	pctx.StaticVariable("DarwinClangLdflags", strings.Join(darwinClangLdflags, " "))
 	pctx.StaticVariable("DarwinClangLldflags", strings.Join(darwinClangLldflags, " "))
 
-	// Extended cflags
-	pctx.StaticVariable("DarwinX86Cflags", strings.Join(darwinX86Cflags, " "))
-	pctx.StaticVariable("DarwinX8664Cflags", strings.Join(darwinX8664Cflags, " "))
-	pctx.StaticVariable("DarwinX86Ldflags", strings.Join(darwinX86Ldflags, " "))
-	pctx.StaticVariable("DarwinX8664Ldflags", strings.Join(darwinX8664Ldflags, " "))
-
-	pctx.StaticVariable("DarwinX86ClangCflags", strings.Join(darwinX86ClangCflags, " "))
-	pctx.StaticVariable("DarwinX8664ClangCflags",
-		strings.Join(ClangFilterUnknownCflags(darwinX8664Cflags), " "))
-	pctx.StaticVariable("DarwinX86ClangLdflags", strings.Join(darwinX86ClangLdflags, " "))
-	pctx.StaticVariable("DarwinX86ClangLldflags", strings.Join(darwinX86ClangLldflags, " "))
-	pctx.StaticVariable("DarwinX8664ClangLdflags", strings.Join(darwinX8664ClangLdflags, " "))
-	pctx.StaticVariable("DarwinX8664ClangLldflags", strings.Join(darwinX8664ClangLldflags, " "))
-	pctx.StaticVariable("DarwinX86YasmFlags", "-f macho -m x86")
-	pctx.StaticVariable("DarwinX8664YasmFlags", "-f macho -m amd64")
+	pctx.StaticVariable("DarwinYasmFlags", "-f macho -m amd64")
 }
 
 func xcrun(ctx android.PackageVarContext, args ...string) string {
@@ -202,23 +163,10 @@
 
 type toolchainDarwin struct {
 	cFlags, ldFlags string
-}
-
-type toolchainDarwinX86 struct {
-	toolchain32Bit
-	toolchainDarwin
-}
-
-type toolchainDarwinX8664 struct {
 	toolchain64Bit
-	toolchainDarwin
 }
 
-func (t *toolchainDarwinX86) Name() string {
-	return "x86"
-}
-
-func (t *toolchainDarwinX8664) Name() string {
+func (t *toolchainDarwin) Name() string {
 	return "x86_64"
 }
 
@@ -235,71 +183,43 @@
 }
 
 func (t *toolchainDarwin) Cflags() string {
-	return "${config.DarwinCflags} ${config.DarwinX86Cflags}"
-}
-
-func (t *toolchainDarwinX8664) Cflags() string {
-	return "${config.DarwinCflags} ${config.DarwinX8664Cflags}"
+	return "${config.DarwinCflags}"
 }
 
 func (t *toolchainDarwin) Cppflags() string {
 	return ""
 }
 
-func (t *toolchainDarwinX86) Ldflags() string {
-	return "${config.DarwinLdflags} ${config.DarwinX86Ldflags}"
-}
-
-func (t *toolchainDarwinX8664) Ldflags() string {
-	return "${config.DarwinLdflags} ${config.DarwinX8664Ldflags}"
+func (t *toolchainDarwin) Ldflags() string {
+	return "${config.DarwinLdflags}"
 }
 
 func (t *toolchainDarwin) IncludeFlags() string {
 	return ""
 }
 
-func (t *toolchainDarwinX86) ClangTriple() string {
-	return "i686-apple-darwin"
-}
-
-func (t *toolchainDarwinX86) ClangCflags() string {
-	return "${config.DarwinClangCflags} ${config.DarwinX86ClangCflags}"
-}
-
-func (t *toolchainDarwinX8664) ClangTriple() string {
+func (t *toolchainDarwin) ClangTriple() string {
 	return "x86_64-apple-darwin"
 }
 
-func (t *toolchainDarwinX8664) ClangCflags() string {
-	return "${config.DarwinClangCflags} ${config.DarwinX8664ClangCflags}"
+func (t *toolchainDarwin) ClangCflags() string {
+	return "${config.DarwinClangCflags}"
 }
 
 func (t *toolchainDarwin) ClangCppflags() string {
 	return ""
 }
 
-func (t *toolchainDarwinX86) ClangLdflags() string {
-	return "${config.DarwinClangLdflags} ${config.DarwinX86ClangLdflags}"
+func (t *toolchainDarwin) ClangLdflags() string {
+	return "${config.DarwinClangLdflags}"
 }
 
-func (t *toolchainDarwinX86) ClangLldflags() string {
-	return "${config.DarwinClangLldflags} ${config.DarwinX86ClangLldflags}"
+func (t *toolchainDarwin) ClangLldflags() string {
+	return "${config.DarwinClangLldflags}"
 }
 
-func (t *toolchainDarwinX8664) ClangLdflags() string {
-	return "${config.DarwinClangLdflags} ${config.DarwinX8664ClangLdflags}"
-}
-
-func (t *toolchainDarwinX8664) ClangLldflags() string {
-	return "${config.DarwinClangLldflags} ${config.DarwinX8664ClangLldflags}"
-}
-
-func (t *toolchainDarwinX86) YasmFlags() string {
-	return "${config.DarwinX86YasmFlags}"
-}
-
-func (t *toolchainDarwinX8664) YasmFlags() string {
-	return "${config.DarwinX8664YasmFlags}"
+func (t *toolchainDarwin) YasmFlags() string {
+	return "${config.DarwinYasmFlags}"
 }
 
 func (t *toolchainDarwin) ShlibSuffix() string {
@@ -318,18 +238,12 @@
 	return "${config.MacToolPath}"
 }
 
-var toolchainDarwinX86Singleton Toolchain = &toolchainDarwinX86{}
-var toolchainDarwinX8664Singleton Toolchain = &toolchainDarwinX8664{}
+var toolchainDarwinSingleton Toolchain = &toolchainDarwin{}
 
-func darwinX86ToolchainFactory(arch android.Arch) Toolchain {
-	return toolchainDarwinX86Singleton
-}
-
-func darwinX8664ToolchainFactory(arch android.Arch) Toolchain {
-	return toolchainDarwinX8664Singleton
+func darwinToolchainFactory(arch android.Arch) Toolchain {
+	return toolchainDarwinSingleton
 }
 
 func init() {
-	registerToolchainFactory(android.Darwin, android.X86, darwinX86ToolchainFactory)
-	registerToolchainFactory(android.Darwin, android.X86_64, darwinX8664ToolchainFactory)
+	registerToolchainFactory(android.Darwin, android.X86_64, darwinToolchainFactory)
 }
diff --git a/cc/makevars.go b/cc/makevars.go
index 5b9ac1d..c4ef5f1 100644
--- a/cc/makevars.go
+++ b/cc/makevars.go
@@ -127,6 +127,8 @@
 	ctx.Strict("ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS", strings.Join(asanLdflags, " "))
 	ctx.Strict("ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES", strings.Join(asanLibs, " "))
 
+	ctx.Strict("HWADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS", strings.Join(hwasanCflags, " "))
+
 	ctx.Strict("CFI_EXTRA_CFLAGS", strings.Join(cfiCflags, " "))
 	ctx.Strict("CFI_EXTRA_LDFLAGS", strings.Join(cfiLdflags, " "))
 
diff --git a/java/builder.go b/java/builder.go
index ff5de09..68fba86 100644
--- a/java/builder.go
+++ b/java/builder.go
@@ -66,7 +66,6 @@
 				`${config.GenKotlinBuildFileCmd} $classpath $outDir $out.rsp $srcJarDir/list > $outDir/kotlinc-build.xml &&` +
 				`${config.KotlincCmd} $kotlincFlags ` +
 				`-jvm-target $kotlinJvmTarget -Xbuild-file=$outDir/kotlinc-build.xml && ` +
-				`rm $outDir/kotlinc-build.xml && ` +
 				`${config.SoongZipCmd} -jar -o $out -C $outDir -D $outDir`,
 			CommandDeps: []string{
 				"${config.KotlincCmd}",
diff --git a/java/droiddoc.go b/java/droiddoc.go
index 52db705..070d5c1 100644
--- a/java/droiddoc.go
+++ b/java/droiddoc.go
@@ -904,6 +904,7 @@
 	if String(d.properties.Dex_api_filename) != "" {
 		d.dexApiFile = android.PathForModuleOut(ctx, String(d.properties.Dex_api_filename))
 		doclavaFlags += " -dexApi " + d.dexApiFile.String()
+		MetalavaFlags += " --dex-api " + d.dexApiFile.String()
 		*implicitOutputs = append(*implicitOutputs, d.dexApiFile)
 	}
 
diff --git a/java/java.go b/java/java.go
index 7f82c77..295863f 100644
--- a/java/java.go
+++ b/java/java.go
@@ -86,10 +86,6 @@
 	// ext, and framework for device targets)
 	No_framework_libs *bool
 
-	// Use renamed kotlin stdlib (com.android.kotlin.*). This allows kotlin usage without colliding
-	// with app-provided kotlin stdlib.
-	Renamed_kotlin_stdlib *bool
-
 	// list of module-specific flags that will be used for javac compiles
 	Javacflags []string `android:"arch_variant"`
 
@@ -1025,8 +1021,6 @@
 		}
 	}
 
-	var stripFiles []string
-
 	var kotlinJars android.Paths
 
 	if srcFiles.HasExt(".kt") {
@@ -1035,7 +1029,6 @@
 		// won't emit any classes for them.
 
 		flags.kotlincFlags = "-no-stdlib"
-
 		if ctx.Device() {
 			flags.kotlincFlags += " -no-jdk"
 		}
@@ -1060,18 +1053,7 @@
 
 		// Jar kotlin classes into the final jar after javac
 		kotlinJars = append(kotlinJars, kotlinJar)
-
-		if Bool(j.properties.Renamed_kotlin_stdlib) {
-			// Remove any kotlin-reflect related files
-			// TODO(pszczepaniak): Support kotlin-reflect
-			stripFiles = append(stripFiles,
-				"**/*.kotlin_module",
-				"**/*.kotlin_builtins")
-		} else {
-			// Only add kotlin-stdlib if not using (on-device) renamed stdlib
-			// (it's expected to be on device bootclasspath)
-			kotlinJars = append(kotlinJars, deps.kotlinStdlib...)
-		}
+		kotlinJars = append(kotlinJars, deps.kotlinStdlib...)
 	}
 
 	jars := append(android.Paths(nil), kotlinJars...)
@@ -1207,21 +1189,10 @@
 	} else {
 		combinedJar := android.PathForModuleOut(ctx, "combined", jarName)
 		TransformJarsToJar(ctx, combinedJar, "for javac", jars, manifest,
-			false, stripFiles, nil)
+			false, nil, nil)
 		outputFile = combinedJar
 	}
 
-	// Use renamed kotlin standard library?
-	if srcFiles.HasExt(".kt") && Bool(j.properties.Renamed_kotlin_stdlib) {
-		jarjarFile := android.PathForModuleOut(ctx, "kotlin-renamed", jarName)
-		TransformJarJar(ctx, jarjarFile, outputFile,
-			android.PathForSource(ctx, "external/kotlinc/jarjar-rules.txt"))
-		outputFile = jarjarFile
-		if ctx.Failed() {
-			return
-		}
-	}
-
 	// jarjar implementation jar if necessary
 	if j.properties.Jarjar_rules != nil {
 		jarjar_rules := android.PathForModuleSrc(ctx, *j.properties.Jarjar_rules)
diff --git a/java/java_test.go b/java/java_test.go
index c9f3dbf..3ace528 100644
--- a/java/java_test.go
+++ b/java/java_test.go
@@ -209,8 +209,6 @@
 		"bar-doc/IFoo.aidl":              nil,
 		"bar-doc/known_oj_tags.txt":      nil,
 		"external/doclava/templates-sdk": nil,
-
-		"external/kotlinc/jarjar-rules.txt": nil,
 	}
 
 	for k, v := range fs {
@@ -823,12 +821,6 @@
 			name: "baz",
 			srcs: ["c.java"],
 		}
-
-		java_library {
-			name: "blorg",
-			renamed_kotlin_stdlib: true,
-			srcs: ["b.kt"],
-		}
 		`)
 
 	fooKotlinc := ctx.ModuleForTests("foo", "android_common").Rule("kotlinc")
@@ -871,12 +863,6 @@
 		t.Errorf(`expected %q in bar implicits %v`,
 			bazHeaderJar.Output.String(), barKotlinc.Implicits.Strings())
 	}
-
-	blorgRenamedJar := ctx.ModuleForTests("blorg", "android_common").Output("kotlin-renamed/blorg.jar")
-	if blorgRenamedJar.Implicit.String() != "external/kotlinc/jarjar-rules.txt" {
-		t.Errorf(`expected external/kotlinc/jarjar-rules.txt in blorg implicit %q`,
-			blorgRenamedJar.Implicit.String())
-	}
 }
 
 func TestTurbine(t *testing.T) {
diff --git a/scripts/build-ndk-prebuilts.sh b/scripts/build-ndk-prebuilts.sh
index e3552a0..7f6e2c9 100755
--- a/scripts/build-ndk-prebuilts.sh
+++ b/scripts/build-ndk-prebuilts.sh
@@ -62,7 +62,6 @@
         "armeabi-v7a"
     ],
     "HostArch": "x86_64",
-    "HostSecondaryArch": "x86",
     "Malloc_not_svelte": false,
     "Safestack": false
 }
diff --git a/ui/build/cleanbuild.go b/ui/build/cleanbuild.go
index a076b66..4dee638 100644
--- a/ui/build/cleanbuild.go
+++ b/ui/build/cleanbuild.go
@@ -102,6 +102,7 @@
 		productOut("skin"),
 		productOut("obj/NOTICE_FILES"),
 		productOut("obj/PACKAGING"),
+		productOut("ramdisk"),
 		productOut("recovery"),
 		productOut("root"),
 		productOut("system"),
diff --git a/ui/build/paths/config.go b/ui/build/paths/config.go
index 51fa8fe..610af17 100644
--- a/ui/build/paths/config.go
+++ b/ui/build/paths/config.go
@@ -129,6 +129,7 @@
 	"sum":       Allowed,
 	"tar":       Allowed,
 	"tail":      Allowed,
+	"todos":     Allowed,
 	"touch":     Allowed,
 	"tr":        Allowed,
 	"true":      Allowed,
