diff --git a/android/androidmk.go b/android/androidmk.go
index 704b560..0ea7564 100644
--- a/android/androidmk.go
+++ b/android/androidmk.go
@@ -237,7 +237,7 @@
 			fmt.Fprintln(&data.preamble, "LOCAL_ODM_MODULE := true")
 		}
 		if Bool(amod.commonProperties.Product_specific) {
-			fmt.Fprintln(&data.preamble, "LOCAL_OEM_MODULE := true")
+			fmt.Fprintln(&data.preamble, "LOCAL_PRODUCT_MODULE := true")
 		}
 		if amod.commonProperties.Owner != nil {
 			fmt.Fprintln(&data.preamble, "LOCAL_MODULE_OWNER :=", *amod.commonProperties.Owner)
diff --git a/android/config.go b/android/config.go
index 2ce7f48..b5ec975 100644
--- a/android/config.go
+++ b/android/config.go
@@ -676,11 +676,11 @@
 	return "odm"
 }
 
-func (c *deviceConfig) OemPath() string {
-	if c.config.ProductVariables.OemPath != nil {
-		return *c.config.ProductVariables.OemPath
+func (c *deviceConfig) ProductPath() string {
+	if c.config.ProductVariables.ProductPath != nil {
+		return *c.config.ProductVariables.ProductPath
 	}
-	return "oem"
+	return "product"
 }
 
 func (c *deviceConfig) BtConfigIncludeDir() string {
diff --git a/android/module.go b/android/module.go
index 0fb9479..14b9f41 100644
--- a/android/module.go
+++ b/android/module.go
@@ -232,8 +232,8 @@
 	Device_specific *bool
 
 	// whether this module is specific to a software configuration of a product (e.g. country,
-	// network operator, etc). When set to true, it is installed into /oem (or /system/oem if
-	// oem partition does not exist).
+	// network operator, etc). When set to true, it is installed into /product (or
+	// /system/product if product partition does not exist).
 	Product_specific *bool
 
 	// init.rc files to be installed if this module is installed
diff --git a/android/paths.go b/android/paths.go
index 4d9c858..e941e96 100644
--- a/android/paths.go
+++ b/android/paths.go
@@ -850,7 +850,7 @@
 		} else if ctx.DeviceSpecific() {
 			partition = ctx.DeviceConfig().OdmPath()
 		} else if ctx.ProductSpecific() {
-			partition = ctx.DeviceConfig().OemPath()
+			partition = ctx.DeviceConfig().ProductPath()
 		} else {
 			partition = "system"
 		}
diff --git a/android/paths_test.go b/android/paths_test.go
index 110974f..61a172f 100644
--- a/android/paths_test.go
+++ b/android/paths_test.go
@@ -264,7 +264,7 @@
 			out: "target/product/test_device/odm/bin/my_test",
 		},
 		{
-			name: "oem binary",
+			name: "product binary",
 			ctx: &moduleInstallPathContextImpl{
 				androidBaseContextImpl: androidBaseContextImpl{
 					target: deviceTarget,
@@ -272,7 +272,7 @@
 				},
 			},
 			in:  []string{"bin", "my_test"},
-			out: "target/product/test_device/oem/bin/my_test",
+			out: "target/product/test_device/product/bin/my_test",
 		},
 
 		{
@@ -311,7 +311,7 @@
 			out: "target/product/test_device/data/nativetest/my_test",
 		},
 		{
-			name: "oem native test binary",
+			name: "product native test binary",
 			ctx: &moduleInstallPathContextImpl{
 				androidBaseContextImpl: androidBaseContextImpl{
 					target: deviceTarget,
@@ -359,7 +359,7 @@
 			out: "target/product/test_device/data/asan/odm/bin/my_test",
 		},
 		{
-			name: "sanitized oem binary",
+			name: "sanitized product binary",
 			ctx: &moduleInstallPathContextImpl{
 				androidBaseContextImpl: androidBaseContextImpl{
 					target: deviceTarget,
@@ -368,7 +368,7 @@
 				inSanitizerDir: true,
 			},
 			in:  []string{"bin", "my_test"},
-			out: "target/product/test_device/data/asan/oem/bin/my_test",
+			out: "target/product/test_device/data/asan/product/bin/my_test",
 		},
 
 		{
@@ -410,7 +410,7 @@
 			out: "target/product/test_device/data/asan/data/nativetest/my_test",
 		},
 		{
-			name: "sanitized oem native test binary",
+			name: "sanitized product native test binary",
 			ctx: &moduleInstallPathContextImpl{
 				androidBaseContextImpl: androidBaseContextImpl{
 					target: deviceTarget,
diff --git a/android/variable.go b/android/variable.go
index 40fa45e..2c2a0cf 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -174,9 +174,9 @@
 	CFIExcludePaths *[]string `json:",omitempty"`
 	CFIIncludePaths *[]string `json:",omitempty"`
 
-	VendorPath *string `json:",omitempty"`
-	OdmPath    *string `json:",omitempty"`
-	OemPath    *string `json:",omitempty"`
+	VendorPath  *string `json:",omitempty"`
+	OdmPath     *string `json:",omitempty"`
+	ProductPath *string `json:",omitempty"`
 
 	ClangTidy  *bool   `json:",omitempty"`
 	TidyChecks *string `json:",omitempty"`
diff --git a/androidmk/cmd/androidmk/android.go b/androidmk/cmd/androidmk/android.go
index 3e134b6..960f103 100644
--- a/androidmk/cmd/androidmk/android.go
+++ b/androidmk/cmd/androidmk/android.go
@@ -128,6 +128,7 @@
 
 			"LOCAL_JAVA_RESOURCE_DIRS":    "java_resource_dirs",
 			"LOCAL_JAVACFLAGS":            "javacflags",
+			"LOCAL_ERROR_PRONE_FLAGS":     "errorprone.javacflags",
 			"LOCAL_DX_FLAGS":              "dxflags",
 			"LOCAL_JAVA_LIBRARIES":        "libs",
 			"LOCAL_STATIC_JAVA_LIBRARIES": "static_libs",
@@ -157,7 +158,7 @@
 			"LOCAL_PROPRIETARY_MODULE":       "proprietary",
 			"LOCAL_VENDOR_MODULE":            "vendor",
 			"LOCAL_ODM_MODULE":               "device_specific",
-			"LOCAL_OEM_MODULE":               "product_specific",
+			"LOCAL_PRODUCT_MODULE":           "product_specific",
 			"LOCAL_EXPORT_PACKAGE_RESOURCES": "export_package_resources",
 			"LOCAL_PRIVILEGED_MODULE":        "privileged",
 
diff --git a/androidmk/cmd/androidmk/androidmk_test.go b/androidmk/cmd/androidmk/androidmk_test.go
index c85aaaa..3252791 100644
--- a/androidmk/cmd/androidmk/androidmk_test.go
+++ b/androidmk/cmd/androidmk/androidmk_test.go
@@ -474,6 +474,24 @@
 			}
 		`,
 	},
+	{
+		desc: "errorprone options for java library",
+		in: `
+			include $(CLEAR_VARS)
+			LOCAL_ERROR_PRONE_FLAGS := -Xep:AsyncCallableReturnsNull:ERROR -Xep:AsyncFunctionReturnsNull:ERROR
+			include $(BUILD_JAVA_LIBRARY)
+		`,
+		expected: `
+			java_library {
+				errorprone: {
+					javacflags: [
+						"-Xep:AsyncCallableReturnsNull:ERROR",
+						"-Xep:AsyncFunctionReturnsNull:ERROR",
+					],
+				},
+			}
+		`,
+	},
 }
 
 func reformatBlueprint(input string) string {
diff --git a/cc/builder.go b/cc/builder.go
index fe35d5c..0646132 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -289,7 +289,7 @@
 
 // Generate rules for compiling multiple .c, .cpp, or .S files to individual .o files
 func TransformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles android.Paths,
-	flags builderFlags, pathDeps android.Paths, genDeps android.Paths) Objects {
+	flags builderFlags, pathDeps android.Paths, cFlagsDeps android.Paths) Objects {
 
 	objFiles := make(android.Paths, len(srcFiles))
 	var tidyFiles android.Paths
@@ -362,8 +362,8 @@
 				Description: "yasm " + srcFile.Rel(),
 				Output:      objFile,
 				Input:       srcFile,
-				Implicits:   pathDeps,
-				OrderOnly:   genDeps,
+				Implicits:   cFlagsDeps,
+				OrderOnly:   pathDeps,
 				Args: map[string]string{
 					"asFlags": flags.yasmFlags,
 				},
@@ -375,8 +375,8 @@
 				Description: "windres " + srcFile.Rel(),
 				Output:      objFile,
 				Input:       srcFile,
-				Implicits:   pathDeps,
-				OrderOnly:   genDeps,
+				Implicits:   cFlagsDeps,
+				OrderOnly:   pathDeps,
 				Args: map[string]string{
 					"windresCmd": gccCmd(flags.toolchain, "windres"),
 					"flags":      flags.toolchain.WindresFlags(),
@@ -444,8 +444,8 @@
 			Output:          objFile,
 			ImplicitOutputs: implicitOutputs,
 			Input:           srcFile,
-			Implicits:       pathDeps,
-			OrderOnly:       genDeps,
+			Implicits:       cFlagsDeps,
+			OrderOnly:       pathDeps,
 			Args: map[string]string{
 				"cFlags": moduleCflags,
 				"ccCmd":  ccCmd,
diff --git a/cc/cc.go b/cc/cc.go
index 9b1f220..9cc7dfa 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -1510,17 +1510,12 @@
 		mod := mctx.CreateVariations(vendorMode)
 		vendor := mod[0].(*Module)
 		vendor.Properties.UseVndk = true
-	} else if prebuilt, ok := m.linker.(*vndkPrebuiltLibraryDecorator); ok {
+	} else if _, ok := m.linker.(*vndkPrebuiltLibraryDecorator); ok {
 		// Make vendor variants only for the versions in BOARD_VNDK_VERSION and
 		// PRODUCT_EXTRA_VNDK_VERSIONS.
 		mod := mctx.CreateVariations(vendorMode)
 		vendor := mod[0].(*Module)
 		vendor.Properties.UseVndk = true
-		arches := mctx.DeviceConfig().Arches()
-		if len(arches) == 0 || arches[0].ArchType.String() != prebuilt.arch() {
-			vendor.Properties.PreventInstall = true
-			vendor.Properties.HideFromMake = true
-		}
 	} else if m.hasVendorVariant() && !vendorSpecific {
 		// This will be available in both /system and /vendor
 		// or a /system directory that is available to vendor.
diff --git a/cc/compiler.go b/cc/compiler.go
index 7e8e8b8..9b69114 100644
--- a/cc/compiler.go
+++ b/cc/compiler.go
@@ -160,7 +160,7 @@
 type baseCompiler struct {
 	Properties BaseCompilerProperties
 	Proto      android.ProtoProperties
-	genDeps    android.Paths
+	cFlagsDeps android.Paths
 	pathDeps   android.Paths
 	flags      builderFlags
 
@@ -548,16 +548,16 @@
 	srcs := append(android.Paths(nil), compiler.srcsBeforeGen...)
 
 	srcs, genDeps := genSources(ctx, srcs, buildFlags)
-	pathDeps = append(pathDeps, flags.CFlagsDeps...)
+	pathDeps = append(pathDeps, genDeps...)
 
 	compiler.pathDeps = pathDeps
-	compiler.genDeps = genDeps
+	compiler.cFlagsDeps = flags.CFlagsDeps
 
 	// Save src, buildFlags and context
 	compiler.srcs = srcs
 
 	// Compile files listed in c.Properties.Srcs into objects
-	objs := compileObjs(ctx, buildFlags, "", srcs, pathDeps, genDeps)
+	objs := compileObjs(ctx, buildFlags, "", srcs, pathDeps, compiler.cFlagsDeps)
 
 	if ctx.Failed() {
 		return Objects{}
@@ -568,7 +568,7 @@
 
 // Compile a list of source files into objects a specified subdirectory
 func compileObjs(ctx android.ModuleContext, flags builderFlags,
-	subdir string, srcFiles, pathDeps android.Paths, genDeps android.Paths) Objects {
+	subdir string, srcFiles, pathDeps android.Paths, cFlagsDeps android.Paths) Objects {
 
-	return TransformSourceToObj(ctx, subdir, srcFiles, flags, pathDeps, genDeps)
+	return TransformSourceToObj(ctx, subdir, srcFiles, flags, pathDeps, cFlagsDeps)
 }
diff --git a/cc/config/global.go b/cc/config/global.go
index 5e99cde..3784824 100644
--- a/cc/config/global.go
+++ b/cc/config/global.go
@@ -201,7 +201,7 @@
 		}
 		return ClangDefaultShortVersion, nil
 	})
-	pctx.StaticVariable("ClangAsanLibDir", "${ClangPath}/lib64/clang/${ClangShortVersion}/lib/linux")
+	pctx.StaticVariable("ClangAsanLibDir", "${ClangBase}/linux-x86/${ClangVersion}/lib64/clang/${ClangShortVersion}/lib/linux")
 	if runtime.GOOS == "darwin" {
 		pctx.StaticVariable("LLVMGoldPlugin", "${ClangPath}/lib64/LLVMgold.dylib")
 	} else {
diff --git a/cc/library.go b/cc/library.go
index 00282fc..54c5476 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -384,11 +384,11 @@
 	if library.static() {
 		srcs := android.PathsForModuleSrc(ctx, library.Properties.Static.Srcs)
 		objs = objs.Append(compileObjs(ctx, buildFlags, android.DeviceStaticLibrary,
-			srcs, library.baseCompiler.pathDeps, library.baseCompiler.genDeps))
+			srcs, library.baseCompiler.pathDeps, library.baseCompiler.cFlagsDeps))
 	} else if library.shared() {
 		srcs := android.PathsForModuleSrc(ctx, library.Properties.Shared.Srcs)
 		objs = objs.Append(compileObjs(ctx, buildFlags, android.DeviceSharedLibrary,
-			srcs, library.baseCompiler.pathDeps, library.baseCompiler.genDeps))
+			srcs, library.baseCompiler.pathDeps, library.baseCompiler.cFlagsDeps))
 	}
 
 	return objs
@@ -676,8 +676,8 @@
 			}
 			library.reexportFlags(flags)
 			library.reuseExportedFlags = append(library.reuseExportedFlags, flags...)
-			library.reexportDeps(library.baseCompiler.genDeps) // TODO: restrict to aidl deps
-			library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.genDeps...)
+			library.reexportDeps(library.baseCompiler.pathDeps) // TODO: restrict to aidl deps
+			library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.pathDeps...)
 		}
 	}
 
@@ -689,8 +689,8 @@
 			}
 			library.reexportFlags(flags)
 			library.reuseExportedFlags = append(library.reuseExportedFlags, flags...)
-			library.reexportDeps(library.baseCompiler.genDeps) // TODO: restrict to proto deps
-			library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.genDeps...)
+			library.reexportDeps(library.baseCompiler.pathDeps) // TODO: restrict to proto deps
+			library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.pathDeps...)
 		}
 	}
 
diff --git a/cc/vndk_prebuilt.go b/cc/vndk_prebuilt.go
index 99e35f3..9c9545d 100644
--- a/cc/vndk_prebuilt.go
+++ b/cc/vndk_prebuilt.go
@@ -110,6 +110,10 @@
 }
 
 func (p *vndkPrebuiltLibraryDecorator) install(ctx ModuleContext, file android.Path) {
+	arches := ctx.DeviceConfig().Arches()
+	if len(arches) == 0 || arches[0].ArchType.String() != p.arch() {
+		return
+	}
 	if p.shared() {
 		if ctx.isVndkSp() {
 			p.baseInstaller.subDir = "vndk-sp-" + p.version()
diff --git a/java/builder.go b/java/builder.go
index bf826e1..7273290 100644
--- a/java/builder.go
+++ b/java/builder.go
@@ -155,6 +155,8 @@
 	aidlFlags     string
 	javaVersion   string
 
+	errorProneExtraJavacFlags string
+
 	kotlincFlags     string
 	kotlincClasspath classpath
 
@@ -210,6 +212,14 @@
 		ctx.ModuleErrorf("cannot build with Error Prone, missing external/error_prone?")
 	}
 
+	if len(flags.errorProneExtraJavacFlags) > 0 {
+		if len(flags.javacFlags) > 0 {
+			flags.javacFlags = flags.errorProneExtraJavacFlags + " " + flags.javacFlags
+		} else {
+			flags.javacFlags = flags.errorProneExtraJavacFlags
+		}
+	}
+
 	transformJavaToClasses(ctx, outputFile, -1, srcFiles, srcJars, flags, nil,
 		"errorprone", "errorprone", errorprone)
 }
diff --git a/java/java.go b/java/java.go
index 65e3b41..a6769e7 100644
--- a/java/java.go
+++ b/java/java.go
@@ -142,6 +142,11 @@
 		Exclude_filter []string
 	}
 
+	Errorprone struct {
+		// List of javac flags that should only be used when running errorprone.
+		Javacflags []string
+	}
+
 	Proto struct {
 		// List of extra options that will be passed to the proto generator.
 		Output_params []string
@@ -646,6 +651,10 @@
 		flags.javacFlags = "$javacFlags"
 	}
 
+	if len(j.properties.Errorprone.Javacflags) > 0 {
+		flags.errorProneExtraJavacFlags = strings.Join(j.properties.Errorprone.Javacflags, " ")
+	}
+
 	// javaVersion flag.
 	sdk := sdkStringToNumber(ctx, String(j.deviceProperties.Sdk_version))
 	if j.properties.Java_version != nil {
diff --git a/java/system_modules.go b/java/system_modules.go
index 196d041..943eaeb 100644
--- a/java/system_modules.go
+++ b/java/system_modules.go
@@ -137,6 +137,10 @@
 				fmt.Fprintln(w, makevar, ":=", system.outputFile.String())
 				fmt.Fprintln(w, ".KATI_READONLY", ":=", makevar)
 				fmt.Fprintln(w, name+":", "$("+makevar+")")
+				fmt.Fprintln(w)
+				makevar = "SOONG_SYSTEM_MODULES_LIBS_" + name
+				fmt.Fprintln(w, makevar, ":=", strings.Join(system.properties.Libs, " "))
+				fmt.Fprintln(w, ".KATI_READONLY :=", makevar)
 			}
 		},
 	}
diff --git a/ui/build/soong.go b/ui/build/soong.go
index 6dafd27..cbb75c7 100644
--- a/ui/build/soong.go
+++ b/ui/build/soong.go
@@ -35,7 +35,7 @@
 		cmd.Environment.Set("BLUEPRINTDIR", "./build/blueprint")
 		cmd.Environment.Set("BOOTSTRAP", "./build/blueprint/bootstrap.bash")
 		cmd.Environment.Set("BUILDDIR", config.SoongOutDir())
-		cmd.Environment.Set("GOROOT", filepath.Join("./prebuilts/go", config.HostPrebuiltTag()))
+		cmd.Environment.Set("GOROOT", "./"+filepath.Join("prebuilts/go", config.HostPrebuiltTag()))
 		cmd.Environment.Set("BLUEPRINT_LIST_FILE", filepath.Join(config.FileListDir(), "Android.bp.list"))
 		cmd.Environment.Set("NINJA_BUILDDIR", config.OutDir())
 		cmd.Environment.Set("SRCDIR", ".")
@@ -99,7 +99,6 @@
 		if config.IsVerbose() {
 			cmd.Args = append(cmd.Args, "-v")
 		}
-		cmd.Environment.Set("GOROOT", filepath.Join("./prebuilts/go", config.HostPrebuiltTag()))
 		cmd.Sandbox = soongSandbox
 		cmd.Stdin = ctx.Stdin()
 		cmd.Stdout = ctx.Stdout()
