summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhenhua WANG2017-02-26 20:14:45 -0600
committerCalin Juravle2017-03-29 19:34:11 -0500
commite8fb11dfa1b376124d0a1a349c8800799f25606a (patch)
tree6b10f653cd6c76db1966a007aaea26498509a3fa /libnativeloader
parentc169b2018fb72ea31da68616548dcf6582cb0a93 (diff)
downloadplatform-system-core-e8fb11dfa1b376124d0a1a349c8800799f25606a.tar.gz
platform-system-core-e8fb11dfa1b376124d0a1a349c8800799f25606a.tar.xz
platform-system-core-e8fb11dfa1b376124d0a1a349c8800799f25606a.zip
NativeBridge: add "linked namespace" semantic corresponding to linker
For dynamic linking perspective, semantics of NativeBridge needs to align with dynamic linker. This patch adds "linked namespace" semantic which shares some libraries from one namespace to another. Test: make test-art-host-run-test-115-native-bridge Change-Id: I71ce1dde19d61363d5eb9731fd4795a8c315b3a0
Diffstat (limited to 'libnativeloader')
-rw-r--r--libnativeloader/native_loader.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/libnativeloader/native_loader.cpp b/libnativeloader/native_loader.cpp
index 74f2f1d31..f3391d1be 100644
--- a/libnativeloader/native_loader.cpp
+++ b/libnativeloader/native_loader.cpp
@@ -183,6 +183,11 @@ class LibraryNamespaces {
183 return false; 183 return false;
184 } 184 }
185 185
186 if (!NativeBridgeLinkNamespaces(ns, nullptr, public_libraries_.c_str())) {
187 *error_msg = NativeBridgeGetError();
188 return false;
189 }
190
186 native_loader_ns = NativeLoaderNamespace(ns); 191 native_loader_ns = NativeLoaderNamespace(ns);
187 } 192 }
188 193
@@ -324,8 +329,8 @@ class LibraryNamespaces {
324 329
325 // and now initialize native bridge namespaces if necessary. 330 // and now initialize native bridge namespaces if necessary.
326 if (NativeBridgeInitialized()) { 331 if (NativeBridgeInitialized()) {
327 initialized_ = NativeBridgeInitNamespace(public_libraries_.c_str(), 332 initialized_ = NativeBridgeInitAnonymousNamespace(public_libraries_.c_str(),
328 is_native_bridge ? library_path : nullptr); 333 is_native_bridge ? library_path : nullptr);
329 if (!initialized_) { 334 if (!initialized_) {
330 *error_msg = NativeBridgeGetError(); 335 *error_msg = NativeBridgeGetError();
331 } 336 }