Snap for 8191477 from d07c89f8541e47836f4d11f248b218f32f36e541 to tm-release

Change-Id: I71acb2ac43b5a9e09a81dcf39ad3f9bfcdc9075b
diff --git a/modules/namespace.cc b/modules/namespace.cc
index 92fd878..6cbc111 100644
--- a/modules/namespace.cc
+++ b/modules/namespace.cc
@@ -54,6 +54,10 @@
 
 void InitializeWithApex(Namespace& ns, const ApexInfo& apex_info) {
   ns.AddSearchPath(apex_info.path + "/${LIB}");
+  if (apex_info.InVendor()) {
+    ns.AddSearchPath(apex_info.path + "/${LIB}/hw");
+    ns.AddSearchPath(apex_info.path + "/${LIB}/egl");
+  }
   ns.AddPermittedPath(apex_info.path + "/${LIB}");
   ns.AddPermittedPath("/system/${LIB}");
   for (const auto& permitted_path : apex_info.permitted_paths) {
diff --git a/testdata/golden_output/guest/com.vendor.service1/ld.config.txt b/testdata/golden_output/guest/com.vendor.service1/ld.config.txt
index e7d97b6..c0a77b4 100644
--- a/testdata/golden_output/guest/com.vendor.service1/ld.config.txt
+++ b/testdata/golden_output/guest/com.vendor.service1/ld.config.txt
@@ -3,10 +3,14 @@
 additional.namespaces = com_android_adbd,com_android_art,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,rs,system,vendor,vndk
 namespace.default.isolated = true
 namespace.default.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.default.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.default.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.default.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.default.permitted.paths += /system/${LIB}
 namespace.default.permitted.paths += /vendor/${LIB}/egl
 namespace.default.asan.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.default.asan.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.default.asan.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.default.asan.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.default.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.default.asan.permitted.paths += /system/${LIB}
diff --git a/testdata/golden_output/guest/com.vendor.service2/ld.config.txt b/testdata/golden_output/guest/com.vendor.service2/ld.config.txt
index 8cbb01a..e0947f5 100644
--- a/testdata/golden_output/guest/com.vendor.service2/ld.config.txt
+++ b/testdata/golden_output/guest/com.vendor.service2/ld.config.txt
@@ -3,9 +3,13 @@
 additional.namespaces = com_android_adbd,com_android_art,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,com_vendor_service1,rs,system,vendor,vndk
 namespace.default.isolated = true
 namespace.default.search.paths = /apex/com.vendor.service2/${LIB}
+namespace.default.search.paths += /apex/com.vendor.service2/${LIB}/hw
+namespace.default.search.paths += /apex/com.vendor.service2/${LIB}/egl
 namespace.default.permitted.paths = /apex/com.vendor.service2/${LIB}
 namespace.default.permitted.paths += /system/${LIB}
 namespace.default.asan.search.paths = /apex/com.vendor.service2/${LIB}
+namespace.default.asan.search.paths += /apex/com.vendor.service2/${LIB}/hw
+namespace.default.asan.search.paths += /apex/com.vendor.service2/${LIB}/egl
 namespace.default.asan.permitted.paths = /apex/com.vendor.service2/${LIB}
 namespace.default.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.default.asan.permitted.paths += /system/${LIB}
@@ -188,10 +192,14 @@
 namespace.com_android_runtime.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
 namespace.com_vendor_service1.isolated = true
 namespace.com_vendor_service1.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.permitted.paths += /system/${LIB}
 namespace.com_vendor_service1.permitted.paths += /vendor/${LIB}/egl
 namespace.com_vendor_service1.asan.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.asan.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /system/${LIB}
diff --git a/testdata/golden_output/guest/ld.config.txt b/testdata/golden_output/guest/ld.config.txt
index 530aa16..53793e9 100644
--- a/testdata/golden_output/guest/ld.config.txt
+++ b/testdata/golden_output/guest/ld.config.txt
@@ -730,10 +730,14 @@
 namespace.com_android_runtime.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
 namespace.com_vendor_service1.isolated = true
 namespace.com_vendor_service1.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.permitted.paths += /system/${LIB}
 namespace.com_vendor_service1.permitted.paths += /vendor/${LIB}/egl
 namespace.com_vendor_service1.asan.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.asan.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /system/${LIB}
diff --git a/testdata/golden_output/legacy/com.vendor.service1/ld.config.txt b/testdata/golden_output/legacy/com.vendor.service1/ld.config.txt
index 497b603..143de38 100644
--- a/testdata/golden_output/legacy/com.vendor.service1/ld.config.txt
+++ b/testdata/golden_output/legacy/com.vendor.service1/ld.config.txt
@@ -3,10 +3,14 @@
 additional.namespaces = com_android_adbd,com_android_art,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,system,vendor
 namespace.default.isolated = true
 namespace.default.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.default.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.default.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.default.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.default.permitted.paths += /system/${LIB}
 namespace.default.permitted.paths += /vendor/${LIB}/egl
 namespace.default.asan.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.default.asan.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.default.asan.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.default.asan.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.default.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.default.asan.permitted.paths += /system/${LIB}
diff --git a/testdata/golden_output/legacy/com.vendor.service2/ld.config.txt b/testdata/golden_output/legacy/com.vendor.service2/ld.config.txt
index b25fc97..22fedf0 100644
--- a/testdata/golden_output/legacy/com.vendor.service2/ld.config.txt
+++ b/testdata/golden_output/legacy/com.vendor.service2/ld.config.txt
@@ -3,9 +3,13 @@
 additional.namespaces = com_android_adbd,com_android_art,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,com_vendor_service1,system,vendor
 namespace.default.isolated = true
 namespace.default.search.paths = /apex/com.vendor.service2/${LIB}
+namespace.default.search.paths += /apex/com.vendor.service2/${LIB}/hw
+namespace.default.search.paths += /apex/com.vendor.service2/${LIB}/egl
 namespace.default.permitted.paths = /apex/com.vendor.service2/${LIB}
 namespace.default.permitted.paths += /system/${LIB}
 namespace.default.asan.search.paths = /apex/com.vendor.service2/${LIB}
+namespace.default.asan.search.paths += /apex/com.vendor.service2/${LIB}/hw
+namespace.default.asan.search.paths += /apex/com.vendor.service2/${LIB}/egl
 namespace.default.asan.permitted.paths = /apex/com.vendor.service2/${LIB}
 namespace.default.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.default.asan.permitted.paths += /system/${LIB}
@@ -188,10 +192,14 @@
 namespace.com_android_runtime.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
 namespace.com_vendor_service1.isolated = true
 namespace.com_vendor_service1.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.permitted.paths += /system/${LIB}
 namespace.com_vendor_service1.permitted.paths += /vendor/${LIB}/egl
 namespace.com_vendor_service1.asan.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.asan.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /system/${LIB}
diff --git a/testdata/golden_output/product-enabled/com.vendor.service1/ld.config.txt b/testdata/golden_output/product-enabled/com.vendor.service1/ld.config.txt
index e7d97b6..c0a77b4 100644
--- a/testdata/golden_output/product-enabled/com.vendor.service1/ld.config.txt
+++ b/testdata/golden_output/product-enabled/com.vendor.service1/ld.config.txt
@@ -3,10 +3,14 @@
 additional.namespaces = com_android_adbd,com_android_art,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,rs,system,vendor,vndk
 namespace.default.isolated = true
 namespace.default.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.default.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.default.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.default.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.default.permitted.paths += /system/${LIB}
 namespace.default.permitted.paths += /vendor/${LIB}/egl
 namespace.default.asan.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.default.asan.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.default.asan.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.default.asan.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.default.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.default.asan.permitted.paths += /system/${LIB}
diff --git a/testdata/golden_output/product-enabled/com.vendor.service2/ld.config.txt b/testdata/golden_output/product-enabled/com.vendor.service2/ld.config.txt
index 8cbb01a..e0947f5 100644
--- a/testdata/golden_output/product-enabled/com.vendor.service2/ld.config.txt
+++ b/testdata/golden_output/product-enabled/com.vendor.service2/ld.config.txt
@@ -3,9 +3,13 @@
 additional.namespaces = com_android_adbd,com_android_art,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,com_vendor_service1,rs,system,vendor,vndk
 namespace.default.isolated = true
 namespace.default.search.paths = /apex/com.vendor.service2/${LIB}
+namespace.default.search.paths += /apex/com.vendor.service2/${LIB}/hw
+namespace.default.search.paths += /apex/com.vendor.service2/${LIB}/egl
 namespace.default.permitted.paths = /apex/com.vendor.service2/${LIB}
 namespace.default.permitted.paths += /system/${LIB}
 namespace.default.asan.search.paths = /apex/com.vendor.service2/${LIB}
+namespace.default.asan.search.paths += /apex/com.vendor.service2/${LIB}/hw
+namespace.default.asan.search.paths += /apex/com.vendor.service2/${LIB}/egl
 namespace.default.asan.permitted.paths = /apex/com.vendor.service2/${LIB}
 namespace.default.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.default.asan.permitted.paths += /system/${LIB}
@@ -188,10 +192,14 @@
 namespace.com_android_runtime.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
 namespace.com_vendor_service1.isolated = true
 namespace.com_vendor_service1.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.permitted.paths += /system/${LIB}
 namespace.com_vendor_service1.permitted.paths += /vendor/${LIB}/egl
 namespace.com_vendor_service1.asan.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.asan.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /system/${LIB}
diff --git a/testdata/golden_output/product-enabled/ld.config.txt b/testdata/golden_output/product-enabled/ld.config.txt
index 530aa16..53793e9 100644
--- a/testdata/golden_output/product-enabled/ld.config.txt
+++ b/testdata/golden_output/product-enabled/ld.config.txt
@@ -730,10 +730,14 @@
 namespace.com_android_runtime.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
 namespace.com_vendor_service1.isolated = true
 namespace.com_vendor_service1.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.permitted.paths += /system/${LIB}
 namespace.com_vendor_service1.permitted.paths += /vendor/${LIB}/egl
 namespace.com_vendor_service1.asan.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.asan.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /system/${LIB}
diff --git a/testdata/golden_output/stage2/com.vendor.service1/ld.config.txt b/testdata/golden_output/stage2/com.vendor.service1/ld.config.txt
index f41fee0..7a3e136 100644
--- a/testdata/golden_output/stage2/com.vendor.service1/ld.config.txt
+++ b/testdata/golden_output/stage2/com.vendor.service1/ld.config.txt
@@ -3,10 +3,14 @@
 additional.namespaces = com_android_adbd,com_android_art,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,rs,system,vendor,vndk
 namespace.default.isolated = true
 namespace.default.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.default.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.default.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.default.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.default.permitted.paths += /system/${LIB}
 namespace.default.permitted.paths += /vendor/${LIB}/egl
 namespace.default.asan.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.default.asan.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.default.asan.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.default.asan.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.default.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.default.asan.permitted.paths += /system/${LIB}
diff --git a/testdata/golden_output/stage2/com.vendor.service2/ld.config.txt b/testdata/golden_output/stage2/com.vendor.service2/ld.config.txt
index 638257b..d38dab5 100644
--- a/testdata/golden_output/stage2/com.vendor.service2/ld.config.txt
+++ b/testdata/golden_output/stage2/com.vendor.service2/ld.config.txt
@@ -3,9 +3,13 @@
 additional.namespaces = com_android_adbd,com_android_art,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,com_vendor_service1,rs,system,vendor,vndk
 namespace.default.isolated = true
 namespace.default.search.paths = /apex/com.vendor.service2/${LIB}
+namespace.default.search.paths += /apex/com.vendor.service2/${LIB}/hw
+namespace.default.search.paths += /apex/com.vendor.service2/${LIB}/egl
 namespace.default.permitted.paths = /apex/com.vendor.service2/${LIB}
 namespace.default.permitted.paths += /system/${LIB}
 namespace.default.asan.search.paths = /apex/com.vendor.service2/${LIB}
+namespace.default.asan.search.paths += /apex/com.vendor.service2/${LIB}/hw
+namespace.default.asan.search.paths += /apex/com.vendor.service2/${LIB}/egl
 namespace.default.asan.permitted.paths = /apex/com.vendor.service2/${LIB}
 namespace.default.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.default.asan.permitted.paths += /system/${LIB}
@@ -188,10 +192,14 @@
 namespace.com_android_runtime.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
 namespace.com_vendor_service1.isolated = true
 namespace.com_vendor_service1.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.permitted.paths += /system/${LIB}
 namespace.com_vendor_service1.permitted.paths += /vendor/${LIB}/egl
 namespace.com_vendor_service1.asan.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.asan.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /system/${LIB}
diff --git a/testdata/golden_output/stage2/ld.config.txt b/testdata/golden_output/stage2/ld.config.txt
index ee04895..f38f3ec 100644
--- a/testdata/golden_output/stage2/ld.config.txt
+++ b/testdata/golden_output/stage2/ld.config.txt
@@ -680,10 +680,14 @@
 namespace.com_android_runtime.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
 namespace.com_vendor_service1.isolated = true
 namespace.com_vendor_service1.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.permitted.paths += /system/${LIB}
 namespace.com_vendor_service1.permitted.paths += /vendor/${LIB}/egl
 namespace.com_vendor_service1.asan.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.asan.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /system/${LIB}
diff --git a/testdata/golden_output/vndk-in-system/com.vendor.service1/ld.config.txt b/testdata/golden_output/vndk-in-system/com.vendor.service1/ld.config.txt
index 2692e4d..4c3948e 100644
--- a/testdata/golden_output/vndk-in-system/com.vendor.service1/ld.config.txt
+++ b/testdata/golden_output/vndk-in-system/com.vendor.service1/ld.config.txt
@@ -3,10 +3,14 @@
 additional.namespaces = com_android_adbd,com_android_art,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,rs,system,vendor,vndk,vndk_in_system
 namespace.default.isolated = true
 namespace.default.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.default.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.default.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.default.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.default.permitted.paths += /system/${LIB}
 namespace.default.permitted.paths += /vendor/${LIB}/egl
 namespace.default.asan.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.default.asan.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.default.asan.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.default.asan.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.default.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.default.asan.permitted.paths += /system/${LIB}
diff --git a/testdata/golden_output/vndk-in-system/com.vendor.service2/ld.config.txt b/testdata/golden_output/vndk-in-system/com.vendor.service2/ld.config.txt
index fa2427b..ed3ee2e 100644
--- a/testdata/golden_output/vndk-in-system/com.vendor.service2/ld.config.txt
+++ b/testdata/golden_output/vndk-in-system/com.vendor.service2/ld.config.txt
@@ -3,9 +3,13 @@
 additional.namespaces = com_android_adbd,com_android_art,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,com_vendor_service1,rs,system,vendor,vndk,vndk_in_system
 namespace.default.isolated = true
 namespace.default.search.paths = /apex/com.vendor.service2/${LIB}
+namespace.default.search.paths += /apex/com.vendor.service2/${LIB}/hw
+namespace.default.search.paths += /apex/com.vendor.service2/${LIB}/egl
 namespace.default.permitted.paths = /apex/com.vendor.service2/${LIB}
 namespace.default.permitted.paths += /system/${LIB}
 namespace.default.asan.search.paths = /apex/com.vendor.service2/${LIB}
+namespace.default.asan.search.paths += /apex/com.vendor.service2/${LIB}/hw
+namespace.default.asan.search.paths += /apex/com.vendor.service2/${LIB}/egl
 namespace.default.asan.permitted.paths = /apex/com.vendor.service2/${LIB}
 namespace.default.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.default.asan.permitted.paths += /system/${LIB}
@@ -188,10 +192,14 @@
 namespace.com_android_runtime.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
 namespace.com_vendor_service1.isolated = true
 namespace.com_vendor_service1.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.permitted.paths += /system/${LIB}
 namespace.com_vendor_service1.permitted.paths += /vendor/${LIB}/egl
 namespace.com_vendor_service1.asan.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.asan.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /system/${LIB}
diff --git a/testdata/golden_output/vndk-in-system/ld.config.txt b/testdata/golden_output/vndk-in-system/ld.config.txt
index 40613eb..73e3cc7 100644
--- a/testdata/golden_output/vndk-in-system/ld.config.txt
+++ b/testdata/golden_output/vndk-in-system/ld.config.txt
@@ -731,10 +731,14 @@
 namespace.com_android_runtime.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so
 namespace.com_vendor_service1.isolated = true
 namespace.com_vendor_service1.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.permitted.paths += /system/${LIB}
 namespace.com_vendor_service1.permitted.paths += /vendor/${LIB}/egl
 namespace.com_vendor_service1.asan.search.paths = /apex/com.vendor.service1/${LIB}
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/hw
+namespace.com_vendor_service1.asan.search.paths += /apex/com.vendor.service1/${LIB}/egl
 namespace.com_vendor_service1.asan.permitted.paths = /apex/com.vendor.service1/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /data/asan/system/${LIB}
 namespace.com_vendor_service1.asan.permitted.paths += /system/${LIB}