Merge "Use libdemangle for function names." am: 5c76fec282 am: 0b65dc85ac
am: 734a59577e
Change-Id: I67d5acc79f0ebc5a6568cb5918de058dbde13e54
diff --git a/libc/bionic/system_properties.cpp b/libc/bionic/system_properties.cpp
index a958699..6906ecd 100644
--- a/libc/bionic/system_properties.cpp
+++ b/libc/bionic/system_properties.cpp
@@ -1051,16 +1051,15 @@
if (!initialize_properties_from_file("/system/etc/selinux/plat_property_contexts")) {
return false;
}
- if (!initialize_properties_from_file("/vendor/etc/selinux/nonplat_property_contexts")) {
- return false;
- }
+ // Don't check for failure here, so we always have a sane list of properties.
+ // E.g. In case of recovery, the vendor partition will not have mounted and we
+ // still need the system / platform properties to function.
+ initialize_properties_from_file("/vendor/etc/selinux/nonplat_property_contexts");
} else {
if (!initialize_properties_from_file("/plat_property_contexts")) {
return false;
}
- if (!initialize_properties_from_file("/nonplat_property_contexts")) {
- return false;
- }
+ initialize_properties_from_file("/nonplat_property_contexts");
}
return true;
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 201e187..8e7a141 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -1776,9 +1776,6 @@
if (local_unload_list.contains(child)) {
continue;
} else if (child->is_linked() && child->get_local_group_root() != root) {
- child->get_parents().remove_if([&] (const soinfo* parent) {
- return parent == si;
- });
external_unload_list.push_back(child);
} else if (child->get_parents().empty()) {
unload_list.push_back(child);
diff --git a/linker/linker_config.cpp b/linker/linker_config.cpp
index 0a9aeab..2bdde1e 100644
--- a/linker/linker_config.cpp
+++ b/linker/linker_config.cpp
@@ -371,6 +371,15 @@
bool is_asan,
const Config** config,
std::string* error_msg) {
+ // TODO(b/38114603) Currently, multiple namespaces does not support ASAN mode
+ // where some symbols should be intercepted via LD_PRELOAD; LD_PRELOADed libs
+ // are not being preloaded into the linked namespaces other than the default
+ // namespace. Until we fix the problem, we temporarily disable ld.config.txt
+ // in ASAN mode.
+ if (is_asan) {
+ return false;
+ }
+
g_config.clear();
std::unordered_map<std::string, PropertyValue> property_map;
diff --git a/linker/tests/linker_config_test.cpp b/linker/tests/linker_config_test.cpp
index 5e51113..b024011 100644
--- a/linker/tests/linker_config_test.cpp
+++ b/linker/tests/linker_config_test.cpp
@@ -174,6 +174,7 @@
run_linker_config_smoke_test(false);
}
-TEST(linker_config, asan_smoke) {
- run_linker_config_smoke_test(true);
-}
+// TODO(b/38114603) revive this test when ld.config.txt is enabled for ASAN mode
+//TEST(linker_config, asan_smoke) {
+// run_linker_config_smoke_test(true);
+//}