From 09a516bf161c5cabdaa3a67df5aa7fbac667f5f9 Mon Sep 17 00:00:00 2001 From: Dimitry Ivanov Date: Tue, 3 May 2016 14:55:25 -0700 Subject: [PATCH] nativeloader: Add CloseNativeLibrary() method This method is called by art on UnloadNativeLibraries() Bug: http://b/28406866 Change-Id: Ibccff93c83d6ccd3d0a1c0294a64b09281b4e05e --- libnativeloader/include/nativeloader/native_loader.h | 3 +++ libnativeloader/native_loader.cpp | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/libnativeloader/include/nativeloader/native_loader.h b/libnativeloader/include/nativeloader/native_loader.h index d606a760e..2a6aaec50 100644 --- a/libnativeloader/include/nativeloader/native_loader.h +++ b/libnativeloader/include/nativeloader/native_loader.h @@ -43,6 +43,9 @@ void* OpenNativeLibrary(JNIEnv* env, jobject class_loader, jstring library_path); +__attribute__((visibility("default"))) +bool CloseNativeLibrary(void* handle); + #if defined(__ANDROID__) // Look up linker namespace by class_loader. Returns nullptr if // there is no namespace associated with the class_loader. diff --git a/libnativeloader/native_loader.cpp b/libnativeloader/native_loader.cpp index baad197fe..8cf140e03 100644 --- a/libnativeloader/native_loader.cpp +++ b/libnativeloader/native_loader.cpp @@ -255,6 +255,10 @@ void* OpenNativeLibrary(JNIEnv* env, #endif } +bool CloseNativeLibrary(void* handle) { + return dlclose(handle) == 0; +} + #if defined(__ANDROID__) android_namespace_t* FindNamespaceByClassLoader(JNIEnv* env, jobject class_loader) { std::lock_guard guard(g_namespaces_mutex);