Always setup the native bridge library
... even if the string is empty. This will initialize the native bridge
library but mark it as unavailable.
- also, rename native_bridge_library_path to
native_bridge_library_filename to be closer to the actual meaning (it's
just the filename without any path).
Bug: 16404669
(cherry picked from commit I94628639691459d48d1fbf0841f36b68d51818e7)
Change-Id: I94628639691459d48d1fbf0841f36b68d51818e7
diff --git a/runtime/parsed_options.cc b/runtime/parsed_options.cc
index 26360d7..97332fc 100644
--- a/runtime/parsed_options.cc
+++ b/runtime/parsed_options.cc
@@ -613,7 +613,7 @@
return false;
}
} else if (StartsWith(option, "-XX:NativeBridge=")) {
- if (!ParseStringAfterChar(option, '=', &native_bridge_library_path_)) {
+ if (!ParseStringAfterChar(option, '=', &native_bridge_library_filename_)) {
return false;
}
} else if (StartsWith(option, "-ea") ||
diff --git a/runtime/parsed_options.h b/runtime/parsed_options.h
index 1afd610..5c71f98 100644
--- a/runtime/parsed_options.h
+++ b/runtime/parsed_options.h
@@ -46,7 +46,7 @@
bool check_jni_;
bool force_copy_;
std::string jni_trace_;
- std::string native_bridge_library_path_;
+ std::string native_bridge_library_filename_;
CompilerCallbacks* compiler_callbacks_;
bool is_zygote_;
bool must_relocate_;
diff --git a/runtime/runtime.cc b/runtime/runtime.cc
index ee8cbe1..84df444 100644
--- a/runtime/runtime.cc
+++ b/runtime/runtime.cc
@@ -712,11 +712,12 @@
self->ClearException();
// Look for a native bridge.
- native_bridge_library_path_ = options->native_bridge_library_path_;
- if (!native_bridge_library_path_.empty()) {
- android::SetupNativeBridge(native_bridge_library_path_.c_str(), &native_bridge_art_callbacks_);
- VLOG(startup) << "Runtime::Setup native bridge library: " << native_bridge_library_path_;
- }
+ native_bridge_library_filename_ = options->native_bridge_library_filename_;
+ android::SetupNativeBridge(native_bridge_library_filename_.c_str(), &native_bridge_art_callbacks_);
+ VLOG(startup) << "Runtime::Setup native bridge library: "
+ << (native_bridge_library_filename_.empty() ?
+ "(empty)" : native_bridge_library_filename_);
+
VLOG(startup) << "Runtime::Init exiting";
return true;
}
diff --git a/runtime/runtime.h b/runtime/runtime.h
index 34ccdcb..259691a 100644
--- a/runtime/runtime.h
+++ b/runtime/runtime.h
@@ -617,13 +617,14 @@
bool implicit_so_checks_; // StackOverflow checks are implicit.
bool implicit_suspend_checks_; // Thread suspension checks are implicit.
- // The path to the native bridge library. If this is not empty the native bridge will be
- // initialized and loaded from the pointed path.
+ // The filename to the native bridge library. If this is not empty the native bridge will be
+ // initialized and loaded from the given file (initialized and available). An empty value means
+ // that there's no native bridge (initialized but not available).
//
// The native bridge allows running native code compiled for a foreign ISA. The way it works is,
// if standard dlopen fails to load native library associated with native activity, it calls to
// the native bridge to load it and then gets the trampoline for the entry to native activity.
- std::string native_bridge_library_path_;
+ std::string native_bridge_library_filename_;
// Native bridge library runtime callbacks. They represent the runtime interface to native bridge.
//