Merge "Searches for debugfs_static in search path"
diff --git a/core/main.mk b/core/main.mk
index a3d594b..776acf1 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -697,10 +697,23 @@
 $(call select-bitness-of-target-host-required-modules,HOST,TARGET)
 _nonexistent_required := $(sort $(_nonexistent_required))
 
+check_missing_required_modules := true
+ifneq (,$(filter true,$(ALLOW_MISSING_DEPENDENCIES) $(BUILD_BROKEN_MISSING_REQUIRED_MODULES)))
+  check_missing_required_modules :=
+endif # ALLOW_MISSING_DEPENDENCIES == true || BUILD_BROKEN_MISSING_REQUIRED_MODULES == true
+
+# Some executables are skipped in ASAN SANITIZE_TARGET build, thus breaking their dependencies.
+ifneq (,$(filter address,$(SANITIZE_TARGET)))
+  check_missing_required_modules :=
+endif # SANITIZE_TARGET has ASAN
+
 # HOST OS darwin build is broken, disable this check for darwin for now.
-# TODO(b/162102724): Remove this
-ifeq (,$(filter $(HOST_OS),darwin))
-ifeq (,$(filter true,$(ALLOW_MISSING_DEPENDENCIES) $(BUILD_BROKEN_MISSING_REQUIRED_MODULES)))
+# TODO(b/162102724): Remove this when darwin host has no broken dependency.
+ifneq (,$(filter $(HOST_OS),darwin))
+  check_missing_required_modules :=
+endif # HOST_OS == darwin
+
+ifeq (true,$(check_missing_required_modules))
 ifneq (,$(_nonexistent_required))
   $(warning Missing required dependencies:)
   $(foreach r_i,$(_nonexistent_required), \
@@ -710,8 +723,7 @@
   $(warning Set BUILD_BROKEN_MISSING_REQUIRED_MODULES := true to bypass this check if this is intentional)
   $(error Build failed)
 endif # _nonexistent_required != empty
-endif # ALLOW_MISSING_DEPENDENCIES != true && BUILD_BROKEN_MISSING_REQUIRED_MODULES != true
-endif # HOST_OS != darwin
+endif # check_missing_required_modules == true
 
 define add-required-deps
 $(1): | $(2)
diff --git a/rbesetup.sh b/rbesetup.sh
index f9317a3..adcf081 100644
--- a/rbesetup.sh
+++ b/rbesetup.sh
@@ -33,4 +33,15 @@
   fi
 }
 
+# This function sets RBE specific environment variables needed for the build to
+# executed by RBE. This file should be sourced once per checkout of Android code.
+function _set_rbe_vars() {
+  export USE_RBE="true"
+  export RBE_CXX_EXEC_STRATEGY="remote_local_fallback"
+  export RBE_JAVAC=1
+  export RBE_R8=1
+  export RBE_D8=1
+}
+
 _export_metrics_uploader
+_set_rbe_vars
diff --git a/target/board/generic_arm64/BoardConfig.mk b/target/board/generic_arm64/BoardConfig.mk
index 22108fa..2f41540 100644
--- a/target/board/generic_arm64/BoardConfig.mk
+++ b/target/board/generic_arm64/BoardConfig.mk
@@ -59,8 +59,11 @@
 BOARD_USES_RECOVERY_AS_BOOT := true
 
 BOARD_KERNEL-5.4_BOOTIMAGE_PARTITION_SIZE := 67108864
+BOARD_KERNEL-5.4-ALLSYMS_BOOTIMAGE_PARTITION_SIZE := 67108864
 BOARD_KERNEL-5.4-GZ_BOOTIMAGE_PARTITION_SIZE := 47185920
+BOARD_KERNEL-5.4-GZ-ALLSYMS_BOOTIMAGE_PARTITION_SIZE := 47185920
 BOARD_KERNEL-5.4-LZ4_BOOTIMAGE_PARTITION_SIZE := 53477376
+BOARD_KERNEL-5.4-LZ4-ALLSYMS_BOOTIMAGE_PARTITION_SIZE := 53477376
 BOARD_KERNEL-MAINLINE_BOOTIMAGE_PARTITION_SIZE := 67108864
 BOARD_KERNEL-MAINLINE-GZ_BOOTIMAGE_PARTITION_SIZE := 47185920
 BOARD_KERNEL-MAINLINE-LZ4_BOOTIMAGE_PARTITION_SIZE := 53477376
@@ -72,6 +75,9 @@
 
 BOARD_KERNEL_BINARIES := kernel-5.4 kernel-5.4-gz kernel-5.4-lz4 \
     kernel-mainline kernel-mainline-gz kernel-mainline-lz4
+ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
+BOARD_KERNEL_BINARIES += kernel-5.4-allsyms kernel-5.4-gz-allsyms kernel-5.4-lz4-allsyms
+endif
 
 # Some vendors still haven't cleaned up all device specific directories under
 # root!
diff --git a/target/board/generic_arm64/device.mk b/target/board/generic_arm64/device.mk
index d8d06cd..dfa146a 100644
--- a/target/board/generic_arm64/device.mk
+++ b/target/board/generic_arm64/device.mk
@@ -21,3 +21,10 @@
     kernel/prebuilts/mainline/arm64/kernel-mainline:kernel-mainline \
     kernel/prebuilts/mainline/arm64/kernel-mainline-gz:kernel-mainline-gz \
     kernel/prebuilts/mainline/arm64/kernel-mainline-lz4:kernel-mainline-lz4
+
+ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
+PRODUCT_COPY_FILES += \
+    device/google/cuttlefish_kernel/5.4-arm64/kernel-5.4:kernel-5.4-allsyms \
+    device/google/cuttlefish_kernel/5.4-arm64/kernel-5.4-gz:kernel-5.4-gz-allsyms \
+    device/google/cuttlefish_kernel/5.4-arm64/kernel-5.4-lz4:kernel-5.4-lz4-allsyms
+endif
diff --git a/target/product/base_vendor.mk b/target/product/base_vendor.mk
index b3368d6..47c4e23 100644
--- a/target/product/base_vendor.mk
+++ b/target/product/base_vendor.mk
@@ -66,11 +66,11 @@
     passwd_vendor \
     selinux_policy_nonsystem \
     shell_and_utilities_vendor \
-    vndservice \
 
 # Base module when shipping api level is less than or equal to 29
 PRODUCT_PACKAGES_SHIPPING_API_LEVEL_29 += \
     android.hardware.configstore@1.1-service \
+    vndservice \
     vndservicemanager \
 
 # VINTF data for vendor image
diff --git a/target/product/generic_system.mk b/target/product/generic_system.mk
index e59e93e..bf74c4a 100644
--- a/target/product/generic_system.mk
+++ b/target/product/generic_system.mk
@@ -114,6 +114,11 @@
 PRODUCT_HOST_PACKAGES += \
     tinyplay
 
+# Enable configurable audio policy
+PRODUCT_PACKAGES += \
+    libaudiopolicyengineconfigurable \
+    libpolicy-subsystem
+
 # Include all zygote init scripts. "ro.zygote" will select one of them.
 PRODUCT_COPY_FILES += \
     system/core/rootdir/init.zygote32.rc:system/etc/init/hw/init.zygote32.rc \
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index 89900d3..56785d6 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -3176,8 +3176,8 @@
        'recovery_sha1': recovery_img.sha1,
        'boot_type': boot_type,
        'boot_device': boot_device + '$(getprop ro.boot.slot_suffix)',
-       'recovery_type': recovery_type + '$(getprop ro.boot.slot_suffix)',
-       'recovery_device': recovery_device,
+       'recovery_type': recovery_type,
+       'recovery_device': recovery_device + '$(getprop ro.boot.slot_suffix)',
        'bonus_args': bonus_args}
 
   # The install script location moved from /system/etc to /system/bin in the L